Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "chrome/browser/extensions/component_loader.h" | 9 #include "chrome/browser/extensions/component_loader.h" |
| 10 #include "chrome/browser/extensions/extension_apitest.h" | 10 #include "chrome/browser/extensions/extension_apitest.h" |
| 11 #include "chrome/browser/extensions/extension_service.h" | 11 #include "chrome/browser/extensions/extension_service.h" |
| 12 #include "chrome/browser/extensions/extension_system.h" | 12 #include "chrome/browser/extensions/extension_system.h" |
| 13 #include "chrome/browser/speech/extension_api/tts_extension_api.h" | 13 #include "chrome/browser/speech/extension_api/tts_extension_api.h" |
| 14 #include "chrome/browser/speech/tts_controller.h" | 14 #include "chrome/browser/speech/tts_controller.h" |
| 15 #include "chrome/browser/speech/tts_platform.h" | 15 #include "chrome/browser/speech/tts_platform.h" |
| 16 #include "chrome/common/chrome_switches.h" | 16 #include "chrome/common/chrome_switches.h" |
| 17 #include "net/base/network_change_notifier.h" | |
| 17 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 20 |
| 20 // Needed for CreateFunctor. | 21 // Needed for CreateFunctor. |
| 21 #define GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING | 22 #define GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING |
| 22 #include "testing/gmock_mutant.h" | 23 #include "testing/gmock_mutant.h" |
| 23 | 24 |
| 24 using ::testing::AnyNumber; | 25 using ::testing::AnyNumber; |
| 25 using ::testing::CreateFunctor; | 26 using ::testing::CreateFunctor; |
| 26 using ::testing::DoAll; | 27 using ::testing::DoAll; |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 138 return; | 139 return; |
| 139 } | 140 } |
| 140 | 141 |
| 141 controller->OnTtsEvent(utterance_id, event_type, char_index, message); | 142 controller->OnTtsEvent(utterance_id, event_type, char_index, message); |
| 142 } | 143 } |
| 143 | 144 |
| 144 private: | 145 private: |
| 145 base::WeakPtrFactory<MockTtsPlatformImpl> ptr_factory_; | 146 base::WeakPtrFactory<MockTtsPlatformImpl> ptr_factory_; |
| 146 }; | 147 }; |
| 147 | 148 |
| 149 class FakeNetworkOnlineStateForTest : public net::NetworkChangeNotifier { | |
| 150 public: | |
| 151 explicit FakeNetworkOnlineStateForTest(bool online) : online_(online) {} | |
| 152 virtual ~FakeNetworkOnlineStateForTest() {} | |
| 153 | |
| 154 virtual ConnectionType GetCurrentConnectionType() const OVERRIDE { | |
| 155 return online_ ? | |
| 156 net::NetworkChangeNotifier::CONNECTION_ETHERNET : | |
| 157 net::NetworkChangeNotifier::CONNECTION_NONE; | |
| 158 } | |
| 159 | |
| 160 private: | |
| 161 bool online_; | |
| 162 DISALLOW_COPY_AND_ASSIGN(FakeNetworkOnlineStateForTest); | |
| 163 }; | |
| 164 | |
| 148 class TtsApiTest : public ExtensionApiTest { | 165 class TtsApiTest : public ExtensionApiTest { |
| 149 public: | 166 public: |
| 150 virtual void SetUpInProcessBrowserTestFixture() { | 167 virtual void SetUpInProcessBrowserTestFixture() { |
| 151 ExtensionApiTest::SetUpInProcessBrowserTestFixture(); | 168 ExtensionApiTest::SetUpInProcessBrowserTestFixture(); |
| 152 TtsController::GetInstance()->SetPlatformImpl(&mock_platform_impl_); | 169 TtsController::GetInstance()->SetPlatformImpl(&mock_platform_impl_); |
| 153 EXPECT_CALL(mock_platform_impl_, GetVoices(_)) | 170 EXPECT_CALL(mock_platform_impl_, GetVoices(_)) |
| 154 .Times(AnyNumber()); | 171 .Times(AnyNumber()); |
| 155 } | 172 } |
| 156 | 173 |
| 157 protected: | 174 protected: |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 374 | 391 |
| 375 IN_PROC_BROWSER_TEST_F(TtsApiTest, LangMatching) { | 392 IN_PROC_BROWSER_TEST_F(TtsApiTest, LangMatching) { |
| 376 EXPECT_CALL(mock_platform_impl_, IsSpeaking()); | 393 EXPECT_CALL(mock_platform_impl_, IsSpeaking()); |
| 377 EXPECT_CALL(mock_platform_impl_, StopSpeaking()) | 394 EXPECT_CALL(mock_platform_impl_, StopSpeaking()) |
| 378 .WillRepeatedly(Return(true)); | 395 .WillRepeatedly(Return(true)); |
| 379 | 396 |
| 380 ASSERT_TRUE(RunExtensionTest("tts_engine/lang_matching")) << message_; | 397 ASSERT_TRUE(RunExtensionTest("tts_engine/lang_matching")) << message_; |
| 381 } | 398 } |
| 382 | 399 |
| 383 IN_PROC_BROWSER_TEST_F(TtsApiTest, NetworkSpeechEngine) { | 400 IN_PROC_BROWSER_TEST_F(TtsApiTest, NetworkSpeechEngine) { |
| 401 // Simulate online network state. | |
| 402 net::NetworkChangeNotifier::DisableForTest disable_for_test; | |
| 403 FakeNetworkOnlineStateForTest fake_online_state(true); | |
|
not at google - send to devlin
2013/11/04 23:30:43
how... does this get installed? but sure.
dmazzoni
2013/11/04 23:38:15
It's a little odd, but a NetworkChangeNotifier reg
not at google - send to devlin
2013/11/04 23:40:45
You could make the DisableForTest a member of Fake
| |
| 404 | |
| 384 ExtensionService* service = extensions::ExtensionSystem::Get( | 405 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 385 profile())->extension_service(); | 406 profile())->extension_service(); |
| 386 service->component_loader()->AddNetworkSpeechSynthesisExtension(); | 407 service->component_loader()->AddNetworkSpeechSynthesisExtension(); |
| 387 ASSERT_TRUE(RunExtensionTest("tts_engine/network_speech_engine")) << message_; | 408 ASSERT_TRUE(RunExtensionTest("tts_engine/network_speech_engine")) << message_; |
| 388 } | 409 } |
| 389 | 410 |
| 411 IN_PROC_BROWSER_TEST_F(TtsApiTest, NoNetworkSpeechEngineWhenOffline) { | |
| 412 // Simulate offline network state. | |
| 413 net::NetworkChangeNotifier::DisableForTest disable_for_test; | |
| 414 FakeNetworkOnlineStateForTest fake_online_state(false); | |
| 415 | |
| 416 ExtensionService* service = extensions::ExtensionSystem::Get( | |
| 417 profile())->extension_service(); | |
| 418 service->component_loader()->AddNetworkSpeechSynthesisExtension(); | |
| 419 // Test should fail when offline. | |
| 420 ASSERT_FALSE(RunExtensionTest("tts_engine/network_speech_engine")); | |
| 421 } | |
| 422 | |
| 390 // http://crbug.com/122474 | 423 // http://crbug.com/122474 |
| 391 IN_PROC_BROWSER_TEST_F(TtsApiTest, EngineApi) { | 424 IN_PROC_BROWSER_TEST_F(TtsApiTest, EngineApi) { |
| 392 ASSERT_TRUE(RunExtensionTest("tts_engine/engine_api")) << message_; | 425 ASSERT_TRUE(RunExtensionTest("tts_engine/engine_api")) << message_; |
| 393 } | 426 } |
| 394 | 427 |
| 395 } // namespace extensions | 428 } // namespace extensions |
| OLD | NEW |