1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_TEST_SPEECH_MOCK_GOOGLE_STREAMING_SERVER_H_
6 #define CONTENT_TEST_SPEECH_MOCK_GOOGLE_STREAMING_SERVER_H_
8 #include "base/compiler_specific.h"
9 #include "content/public/common/speech_recognition_result.h"
10 #include "net/url_request/test_url_fetcher_factory.h"
14 struct SpeechRecognitionResult
;
16 // Provides a mock implementation of the Google remote streaming speech
17 // recognition webservice, exploiting the TestURLFetcher to extract request
18 // parameters and provide forged JSON responses back to the client.
19 // It is intended for closing the server-side loop in speech tests that involve
20 // the GoogleStreamingRemoteEngine client.
21 class MockGoogleStreamingServer
: public net::TestURLFetcherDelegateForTests
{
25 virtual void OnClientConnected() = 0;
26 virtual void OnClientAudioUpload() = 0;
27 virtual void OnClientAudioUploadComplete() = 0;
28 virtual void OnClientDisconnected() = 0;
31 explicit MockGoogleStreamingServer(Delegate
* delegate
);
32 virtual ~MockGoogleStreamingServer();
34 // net::TestURLFetcherDelegateForTests implementation.
35 virtual void OnRequestStart(int fetcher_id
) OVERRIDE
;
36 virtual void OnChunkUpload(int fetcher_id
) OVERRIDE
;
37 virtual void OnRequestEnd(int fetcher_id
) OVERRIDE
;
39 void SimulateResult(const content::SpeechRecognitionResult
& result
);
40 void SimulateServerFailure();
41 void SimulateMalformedResponse();
43 // Retrieves the language parmeter for the request (e.g., lang=en-US).
44 const std::string
& GetRequestLanguage() const;
46 // Retrieves the grammar parmeter for the request (e.g., lm=http://url/g.xml).
47 const std::string
& GetRequestGrammar() const;
50 void SimulateServerResponse(bool success
, const std::string
& http_response
);
51 net::TestURLFetcher
* GetURLFetcher(bool downstream
) const;
54 int kDownstreamUrlFetcherId
;
55 int kUpstreamUrlFetcherId
;
56 net::TestURLFetcherFactory url_fetcher_factory_
;
58 // Request arguments extracted by the HTTP query string.
59 std::string request_language
;
60 std::string request_grammar
;
62 DISALLOW_COPY_AND_ASSIGN(MockGoogleStreamingServer
);
65 } // namespace content
67 #endif // CONTENT_TEST_SPEECH_MOCK_GOOGLE_STREAMING_SERVER_H_