Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / hotword_private / hotword_private_apitest.cc
index bd7c08f..8773ee5 100644 (file)
@@ -8,6 +8,7 @@
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/extensions/extension_test_message_listener.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/search/hotword_client.h"
 #include "chrome/browser/search/hotword_service.h"
 #include "chrome/browser/search/hotword_service_factory.h"
 #include "chrome/common/pref_names.h"
@@ -38,6 +39,37 @@ class MockHotwordService : public HotwordService {
   DISALLOW_COPY_AND_ASSIGN(MockHotwordService);
 };
 
+class MockHotwordClient : public HotwordClient {
+ public:
+  MockHotwordClient()
+      : last_enabled_(false),
+        state_changed_count_(0),
+        recognized_count_(0) {
+  }
+
+  virtual ~MockHotwordClient() {}
+
+  virtual void OnHotwordStateChanged(bool enabled) OVERRIDE {
+    last_enabled_ = enabled;
+    state_changed_count_++;
+  }
+
+  virtual void OnHotwordRecognized() OVERRIDE {
+    recognized_count_++;
+  }
+
+  bool last_enabled() const { return last_enabled_; }
+  int state_changed_count() const { return state_changed_count_; }
+  int recognized_count() const { return recognized_count_; }
+
+ private:
+  bool last_enabled_;
+  int state_changed_count_;
+  int recognized_count_;
+
+  DISALLOW_COPY_AND_ASSIGN(MockHotwordClient);
+};
+
 class HotwordPrivateApiTest : public ExtensionApiTest {
  public:
   HotwordPrivateApiTest() {}
@@ -69,12 +101,12 @@ IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, SetEnabled) {
   EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(prefs::kHotwordSearchEnabled));
 
   ExtensionTestMessageListener listenerTrue("ready", false);
-  EXPECT_TRUE(RunComponentExtensionTest("setEnabledTrue")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("setEnabledTrue")) << message_;
   EXPECT_TRUE(listenerTrue.WaitUntilSatisfied());
   EXPECT_TRUE(profile()->GetPrefs()->GetBoolean(prefs::kHotwordSearchEnabled));
 
   ExtensionTestMessageListener listenerFalse("ready", false);
-  EXPECT_TRUE(RunComponentExtensionTest("setEnabledFalse")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("setEnabledFalse")) << message_;
   EXPECT_TRUE(listenerFalse.WaitUntilSatisfied());
   EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(prefs::kHotwordSearchEnabled));
 }
@@ -85,16 +117,16 @@ IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, SetAudioLoggingEnabled) {
       prefs::kHotwordAudioLoggingEnabled));
 
   ExtensionTestMessageListener listenerTrue("ready", false);
-  EXPECT_TRUE(
-      RunComponentExtensionTest("setAudioLoggingEnableTrue")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("setAudioLoggingEnableTrue"))
+      << message_;
   EXPECT_TRUE(listenerTrue.WaitUntilSatisfied());
   EXPECT_TRUE(profile()->GetPrefs()->GetBoolean(
       prefs::kHotwordAudioLoggingEnabled));
   EXPECT_TRUE(service()->IsOptedIntoAudioLogging());
 
   ExtensionTestMessageListener listenerFalse("ready", false);
-  EXPECT_TRUE(
-      RunComponentExtensionTest("setAudioLoggingEnableFalse")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("setAudioLoggingEnableFalse"))
+      << message_;
   EXPECT_TRUE(listenerFalse.WaitUntilSatisfied());
   EXPECT_FALSE(profile()->GetPrefs()->GetBoolean(
       prefs::kHotwordAudioLoggingEnabled));
@@ -102,20 +134,20 @@ IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, SetAudioLoggingEnabled) {
 }
 
 IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, GetStatus) {
-  EXPECT_TRUE(RunComponentExtensionTest("getEnabled")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("getEnabled")) << message_;
 }
 
 IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, IsAvailableTrue) {
   service()->setServiceAvailable(true);
   ExtensionTestMessageListener listener("available: true", false);
-  EXPECT_TRUE(RunComponentExtensionTest("isAvailable")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("isAvailable")) << message_;
   EXPECT_TRUE(listener.WaitUntilSatisfied());
 }
 
 IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, IsAvailableFalse) {
   service()->setServiceAvailable(false);
   ExtensionTestMessageListener listener("available: false", false);
-  EXPECT_TRUE(RunComponentExtensionTest("isAvailable")) << message_;
+  ASSERT_TRUE(RunComponentExtensionTest("isAvailable")) << message_;
   EXPECT_TRUE(listener.WaitUntilSatisfied());
 }
 
@@ -123,11 +155,31 @@ IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, OnEnabledChanged) {
   // Trigger the pref registrar.
   extensions::HotwordPrivateEventService::GetFactoryInstance();
   ExtensionTestMessageListener listener("ready", false);
-  LoadExtensionAsComponent(
-      test_data_dir_.AppendASCII("onEnabledChanged"));
+  ASSERT_TRUE(
+      LoadExtensionAsComponent(test_data_dir_.AppendASCII("onEnabledChanged")));
   EXPECT_TRUE(listener.WaitUntilSatisfied());
 
   ExtensionTestMessageListener listenerNotification("notification", false);
   profile()->GetPrefs()->SetBoolean(prefs::kHotwordSearchEnabled, true);
   EXPECT_TRUE(listenerNotification.WaitUntilSatisfied());
 }
+
+IN_PROC_BROWSER_TEST_F(HotwordPrivateApiTest, HotwordSession) {
+  extensions::HotwordPrivateEventService::GetFactoryInstance();
+  ExtensionTestMessageListener listener("ready", false);
+  LoadExtensionAsComponent(
+      test_data_dir_.AppendASCII("hotwordSession"));
+  EXPECT_TRUE(listener.WaitUntilSatisfied());
+
+  ExtensionTestMessageListener listenerStopReady("stopReady", false);
+  ExtensionTestMessageListener listenerStopped("stopped", false);
+  MockHotwordClient client;
+  service()->RequestHotwordSession(&client);
+  EXPECT_TRUE(listenerStopReady.WaitUntilSatisfied());
+  service()->StopHotwordSession(&client);
+  EXPECT_TRUE(listenerStopped.WaitUntilSatisfied());
+
+  EXPECT_TRUE(client.last_enabled());
+  EXPECT_EQ(1, client.state_changed_count());
+  EXPECT_EQ(1, client.recognized_count());
+}