Index: chrome/test/chromedriver/session_unittest.cc |
diff --git a/chrome/test/chromedriver/session_unittest.cc b/chrome/test/chromedriver/session_unittest.cc |
index 23fb779bd26a14b3667c4bf6837393e7300eb1dd..9d31e12d88c5386a796d203af70c39722774f24a 100644 |
--- a/chrome/test/chromedriver/session_unittest.cc |
+++ b/chrome/test/chromedriver/session_unittest.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/test/chromedriver/chrome/stub_chrome.h" |
#include "chrome/test/chromedriver/chrome/stub_web_view.h" |
#include "chrome/test/chromedriver/session.h" |
+#include "chrome/test/chromedriver/util.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace { |
@@ -32,6 +33,29 @@ class MockChrome : public StubChrome { |
StubWebView web_view_; |
}; |
+class MockCommandListener : public CommandListener { |
+ public: |
+ MockCommandListener() : called_(false) {} |
+ virtual ~MockCommandListener() {} |
+ |
+ virtual Status BeforeCommand(const std::string& command_name) OVERRIDE { |
+ called_ = true; |
+ EXPECT_STREQ("cmd", command_name.c_str()); |
+ return Status(kOk); |
+ } |
+ |
+ void VerifyCalled() { |
+ EXPECT_TRUE(called_); |
+ } |
+ |
+ void VerifyNotCalled() { |
+ EXPECT_FALSE(called_); |
+ } |
+ |
+ private: |
+ bool called_; |
+}; |
+ |
} // namespace |
TEST(Session, GetTargetWindowNoChrome) { |
@@ -101,3 +125,17 @@ TEST(Session, SwitchToTopFrame) { |
session.SwitchToTopFrame(); |
ASSERT_EQ(std::string(), session.GetCurrentFrameId()); |
} |
+ |
+TEST(Session, OnCommand) { |
+ Session session("1"); |
+ // Listeners are owned by and will be destroyed by session |
+ MockCommandListener* listener1 = new MockCommandListener(); |
+ MockCommandListener* listener2 = new MockCommandListener(); |
+ session.AddListener(listener1); |
+ session.AddListener(listener2); |
+ listener1->VerifyNotCalled(); |
+ listener2->VerifyNotCalled(); |
+ NotifySessionListenersBeforeCommand(&session, "cmd"); |
+ listener1->VerifyCalled(); |
+ listener2->VerifyCalled(); |
+} |