diff options
author | klm@google.com <klm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-10 23:04:17 +0000 |
---|---|---|
committer | klm@google.com <klm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-10 23:04:17 +0000 |
commit | 28f4eacb9694d569698179732785999e26430de9 (patch) | |
tree | 9c0e87b54943e260c494d601cd45ef30b6c8d772 /chrome/test | |
parent | 9e21d7250184a87c550a3c87d8adabc03c692246 (diff) | |
download | chromium_src-28f4eacb9694d569698179732785999e26430de9.zip chromium_src-28f4eacb9694d569698179732785999e26430de9.tar.gz chromium_src-28f4eacb9694d569698179732785999e26430de9.tar.bz2 |
Pass DevToolsClient* to DevToolsEventListener callbacks. DevToolsClient returns its WebView id.
Contributed by klm@google.com (Michael Klepikov)
Review URL: https://chromiumcodereview.appspot.com/13928023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193489 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
24 files changed, 171 insertions, 102 deletions
diff --git a/chrome/test/chromedriver/chrome/devtools_client.h b/chrome/test/chromedriver/chrome/devtools_client.h index a87a161..58c8ef6 100644 --- a/chrome/test/chromedriver/chrome/devtools_client.h +++ b/chrome/test/chromedriver/chrome/devtools_client.h @@ -24,6 +24,8 @@ class DevToolsClient { virtual ~DevToolsClient() {} + virtual const std::string& GetId() = 0; + // Connect to DevTools if the DevToolsClient is disconnected. virtual Status ConnectIfNecessary() = 0; diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl.cc b/chrome/test/chromedriver/chrome/devtools_client_impl.cc index 79386f4..68efbc4 100644 --- a/chrome/test/chromedriver/chrome/devtools_client_impl.cc +++ b/chrome/test/chromedriver/chrome/devtools_client_impl.cc @@ -62,9 +62,11 @@ InspectorCommandResponse::~InspectorCommandResponse() {} DevToolsClientImpl::DevToolsClientImpl( const SyncWebSocketFactory& factory, const std::string& url, + const std::string& id, const FrontendCloserFunc& frontend_closer_func) : socket_(factory.Run().Pass()), url_(url), + id_(id), frontend_closer_func_(frontend_closer_func), parser_func_(base::Bind(&internal::ParseInspectorMessage)), unnotified_event_(NULL), @@ -74,10 +76,12 @@ DevToolsClientImpl::DevToolsClientImpl( DevToolsClientImpl::DevToolsClientImpl( const SyncWebSocketFactory& factory, const std::string& url, + const std::string& id, const FrontendCloserFunc& frontend_closer_func, const ParserFunc& parser_func) : socket_(factory.Run().Pass()), url_(url), + id_(id), frontend_closer_func_(frontend_closer_func), parser_func_(parser_func), unnotified_event_(NULL), @@ -97,6 +101,10 @@ void DevToolsClientImpl::SetParserFuncForTesting( parser_func_ = parser_func; } +const std::string& DevToolsClientImpl::GetId() { + return id_; +} + Status DevToolsClientImpl::ConnectIfNecessary() { if (stack_count_) return Status(kUnknownError, "cannot connect when nested"); @@ -251,7 +259,7 @@ Status DevToolsClientImpl::EnsureListenersNotifiedOfConnect() { while (unnotified_connect_listeners_.size()) { DevToolsEventListener* listener = unnotified_connect_listeners_.front(); unnotified_connect_listeners_.pop_front(); - Status status = listener->OnConnected(); + Status status = listener->OnConnected(this); if (status.IsError()) return status; } @@ -262,7 +270,8 @@ Status DevToolsClientImpl::EnsureListenersNotifiedOfEvent() { while (unnotified_event_listeners_.size()) { DevToolsEventListener* listener = unnotified_event_listeners_.front(); unnotified_event_listeners_.pop_front(); - listener->OnEvent(unnotified_event_->method, *unnotified_event_->params); + listener->OnEvent(this, + unnotified_event_->method, *unnotified_event_->params); } return Status(kOk); } diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl.h b/chrome/test/chromedriver/chrome/devtools_client_impl.h index 9696a0bd..63ea611 100644 --- a/chrome/test/chromedriver/chrome/devtools_client_impl.h +++ b/chrome/test/chromedriver/chrome/devtools_client_impl.h @@ -54,6 +54,7 @@ class DevToolsClientImpl : public DevToolsClient { typedef base::Callback<Status()> FrontendCloserFunc; DevToolsClientImpl(const SyncWebSocketFactory& factory, const std::string& url, + const std::string& id, const FrontendCloserFunc& frontend_closer_func); typedef base::Callback<bool( @@ -64,6 +65,7 @@ class DevToolsClientImpl : public DevToolsClient { internal::InspectorCommandResponse*)> ParserFunc; DevToolsClientImpl(const SyncWebSocketFactory& factory, const std::string& url, + const std::string& id, const FrontendCloserFunc& frontend_closer_func, const ParserFunc& parser_func); @@ -72,6 +74,7 @@ class DevToolsClientImpl : public DevToolsClient { void SetParserFuncForTesting(const ParserFunc& parser_func); // Overridden from DevToolsClient: + virtual const std::string& GetId() OVERRIDE; virtual Status ConnectIfNecessary() OVERRIDE; virtual Status SendCommand(const std::string& method, const base::DictionaryValue& params) OVERRIDE; @@ -97,6 +100,7 @@ class DevToolsClientImpl : public DevToolsClient { scoped_ptr<SyncWebSocket> socket_; GURL url_; + const std::string id_; FrontendCloserFunc frontend_closer_func_; ParserFunc parser_func_; std::list<DevToolsEventListener*> listeners_; diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc b/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc index 08a693d..8fff903 100644 --- a/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc +++ b/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc @@ -93,7 +93,8 @@ scoped_ptr<SyncWebSocket> CreateMockSyncWebSocket() { TEST(DevToolsClientImpl, SendCommand) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; params.SetInteger("param", 1); @@ -103,7 +104,8 @@ TEST(DevToolsClientImpl, SendCommand) { TEST(DevToolsClientImpl, SendCommandAndGetResult) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; params.SetInteger("param", 1); @@ -150,7 +152,8 @@ class MockSyncWebSocket2 : public SyncWebSocket { TEST(DevToolsClientImpl, ConnectIfNecessaryConnectFails) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket2>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); ASSERT_EQ(kDisconnected, client.ConnectIfNecessary().code()); } @@ -192,7 +195,8 @@ class MockSyncWebSocket3 : public SyncWebSocket { TEST(DevToolsClientImpl, SendCommandSendFails) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket3>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; ASSERT_TRUE(client.SendCommand("method", params).IsError()); @@ -235,7 +239,8 @@ class MockSyncWebSocket4 : public SyncWebSocket { TEST(DevToolsClientImpl, SendCommandReceiveNextMessageFails) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket4>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; ASSERT_TRUE(client.SendCommand("method", params).IsError()); @@ -329,11 +334,12 @@ class MockListener : public DevToolsEventListener { EXPECT_TRUE(called_); } - virtual Status OnConnected() OVERRIDE { + virtual Status OnConnected(DevToolsClient* client) OVERRIDE { return Status(kOk); } - virtual void OnEvent(const std::string& method, + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE { called_ = true; EXPECT_STREQ("method", method.c_str()); @@ -437,7 +443,8 @@ Status AlwaysError(bool* is_met) { TEST(DevToolsClientImpl, SendCommandOnlyConnectsOnce) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnCommand)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; @@ -448,7 +455,8 @@ TEST(DevToolsClientImpl, SendCommandOnlyConnectsOnce) { TEST(DevToolsClientImpl, SendCommandBadResponse) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnBadResponse)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; @@ -458,7 +466,8 @@ TEST(DevToolsClientImpl, SendCommandBadResponse) { TEST(DevToolsClientImpl, SendCommandBadId) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnCommandBadId)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; @@ -468,7 +477,8 @@ TEST(DevToolsClientImpl, SendCommandBadId) { TEST(DevToolsClientImpl, SendCommandResponseError) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnCommandError)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); base::DictionaryValue params; @@ -480,7 +490,8 @@ TEST(DevToolsClientImpl, SendCommandEventBeforeResponse) { base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); MockListener listener; bool first = true; - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnEventThenResponse, &first)); client.AddListener(&listener); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); @@ -572,7 +583,8 @@ TEST(DevToolsClientImpl, HandleEventsUntil) { MockListener listener; SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnEvent)); client.AddListener(&listener); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); @@ -583,7 +595,8 @@ TEST(DevToolsClientImpl, HandleEventsUntil) { TEST(DevToolsClientImpl, WaitForNextEventCommand) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnCommand)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); Status status = client.HandleEventsUntil(base::Bind(&AlwaysTrue)); @@ -593,7 +606,8 @@ TEST(DevToolsClientImpl, WaitForNextEventCommand) { TEST(DevToolsClientImpl, WaitForNextEventError) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnError)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); Status status = client.HandleEventsUntil(base::Bind(&AlwaysTrue)); @@ -603,7 +617,8 @@ TEST(DevToolsClientImpl, WaitForNextEventError) { TEST(DevToolsClientImpl, WaitForNextEventConditionalFuncReturnsError) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc), + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc), base::Bind(&ReturnEvent)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); Status status = client.HandleEventsUntil(base::Bind(&AlwaysError)); @@ -614,7 +629,8 @@ TEST(DevToolsClientImpl, NestedCommandsWithOutOfOrderResults) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); int recurse_count = 0; - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); client.SetParserFuncForTesting( base::Bind(&ReturnOutOfOrderResponses, &recurse_count, &client)); @@ -646,7 +662,9 @@ class OnConnectedListener : public DevToolsEventListener { EXPECT_TRUE(on_event_called_); } - virtual Status OnConnected() OVERRIDE { + virtual Status OnConnected(DevToolsClient* client) OVERRIDE { + EXPECT_EQ(client_, client); + EXPECT_STREQ("onconnected-id", client->GetId().c_str()); EXPECT_FALSE(on_connected_called_); EXPECT_FALSE(on_event_called_); on_connected_called_ = true; @@ -654,8 +672,11 @@ class OnConnectedListener : public DevToolsEventListener { return client_->SendCommand(method_, params); } - virtual void OnEvent(const std::string& method, + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE { + EXPECT_EQ(client_, client); + EXPECT_STREQ("onconnected-id", client->GetId().c_str()); EXPECT_TRUE(on_connected_called_); on_event_called_ = true; } @@ -733,7 +754,8 @@ class OnConnectedSyncWebSocket : public SyncWebSocket { TEST(DevToolsClientImpl, ProcessOnConnectedFirstOnCommand) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<OnConnectedSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "onconnected-id", + base::Bind(&CloserFunc)); OnConnectedListener listener1("DOM.getDocument", &client); OnConnectedListener listener2("Runtime.enable", &client); OnConnectedListener listener3("Page.enable", &client); @@ -748,7 +770,8 @@ TEST(DevToolsClientImpl, ProcessOnConnectedFirstOnCommand) { TEST(DevToolsClientImpl, ProcessOnConnectedFirstOnHandleEventsUntil) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<OnConnectedSyncWebSocket>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "onconnected-id", + base::Bind(&CloserFunc)); OnConnectedListener listener1("DOM.getDocument", &client); OnConnectedListener listener2("Runtime.enable", &client); OnConnectedListener listener3("Page.enable", &client); @@ -802,10 +825,11 @@ class OtherEventListener : public DevToolsEventListener { OtherEventListener() : received_event_(false) {} virtual ~OtherEventListener() {} - virtual Status OnConnected() OVERRIDE { + virtual Status OnConnected(DevToolsClient* client) OVERRIDE { return Status(kOk); } - virtual void OnEvent(const std::string& method, + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE { received_event_ = true; } @@ -821,12 +845,15 @@ class OnEventListener : public DevToolsEventListener { other_listener_(other_listener) {} virtual ~OnEventListener() {} - virtual Status OnConnected() OVERRIDE { + virtual Status OnConnected(DevToolsClient* client) OVERRIDE { + EXPECT_EQ(client_, client); return Status(kOk); } - virtual void OnEvent(const std::string& method, + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE { + ASSERT_EQ(client_, client); client_->SendCommand("method", params); EXPECT_TRUE(other_listener_->received_event_); } @@ -841,7 +868,8 @@ class OnEventListener : public DevToolsEventListener { TEST(DevToolsClientImpl, ProcessOnEventFirst) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket5>); - DevToolsClientImpl client(factory, "http://url", base::Bind(&CloserFunc)); + DevToolsClientImpl client(factory, "http://url", "id", + base::Bind(&CloserFunc)); OtherEventListener listener2; OnEventListener listener1(&client, &listener2); client.AddListener(&listener1); @@ -888,7 +916,7 @@ TEST(DevToolsClientImpl, Reconnect) { SyncWebSocketFactory factory = base::Bind(&CreateMockSyncWebSocket<DisconnectedSyncWebSocket>); bool is_called = false; - DevToolsClientImpl client(factory, "http://url", + DevToolsClientImpl client(factory, "http://url", "id", base::Bind(&CheckCloserFuncCalled, &is_called)); ASSERT_FALSE(is_called); ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); diff --git a/chrome/test/chromedriver/chrome/devtools_event_listener.h b/chrome/test/chromedriver/chrome/devtools_event_listener.h index c3ff730..6ce0385 100644 --- a/chrome/test/chromedriver/chrome/devtools_event_listener.h +++ b/chrome/test/chromedriver/chrome/devtools_event_listener.h @@ -11,6 +11,7 @@ namespace base { class DictionaryValue; } +class DevToolsClient; class Status; // Listens to WebKit Inspector events and DevTools debugger connection. @@ -18,9 +19,10 @@ class DevToolsEventListener { public: virtual ~DevToolsEventListener() {} - virtual Status OnConnected() = 0; + virtual Status OnConnected(DevToolsClient* client) = 0; - virtual void OnEvent(const std::string& method, + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) = 0; }; diff --git a/chrome/test/chromedriver/chrome/devtools_http_client.cc b/chrome/test/chromedriver/chrome/devtools_http_client.cc index 3cfcdae..4954826 100644 --- a/chrome/test/chromedriver/chrome/devtools_http_client.cc +++ b/chrome/test/chromedriver/chrome/devtools_http_client.cc @@ -94,6 +94,7 @@ scoped_ptr<DevToolsClient> DevToolsHttpClient::CreateClient( return scoped_ptr<DevToolsClient>(new DevToolsClientImpl( socket_factory_, web_socket_url_prefix_ + id, + id, base::Bind( &DevToolsHttpClient::CloseFrontends, base::Unretained(this), id))); } @@ -158,6 +159,7 @@ Status DevToolsHttpClient::CloseFrontends(const std::string& for_client_id) { scoped_ptr<DevToolsClient> client(new DevToolsClientImpl( socket_factory_, web_socket_url_prefix_ + *it, + *it, base::Bind(&FakeCloseFrontends))); scoped_ptr<WebViewImpl> web_view(new WebViewImpl(*it, client.Pass())); diff --git a/chrome/test/chromedriver/chrome/dom_tracker.cc b/chrome/test/chromedriver/chrome/dom_tracker.cc index 3a73ec3..31eb046 100644 --- a/chrome/test/chromedriver/chrome/dom_tracker.cc +++ b/chrome/test/chromedriver/chrome/dom_tracker.cc @@ -12,9 +12,9 @@ #include "chrome/test/chromedriver/chrome/devtools_client.h" #include "chrome/test/chromedriver/chrome/status.h" -DomTracker::DomTracker(DevToolsClient* client) : client_(client) { - DCHECK(client_); - client_->AddListener(this); +DomTracker::DomTracker(DevToolsClient* client) { + DCHECK(client); + client->AddListener(this); } DomTracker::~DomTracker() {} @@ -27,15 +27,16 @@ Status DomTracker::GetFrameIdForNode( return Status(kOk); } -Status DomTracker::OnConnected() { +Status DomTracker::OnConnected(DevToolsClient* client) { node_to_frame_map_.clear(); // Fetch the root document node so that Inspector will push DOM node // information to the client. base::DictionaryValue params; - return client_->SendCommand("DOM.getDocument", params); + return client->SendCommand("DOM.getDocument", params); } -void DomTracker::OnEvent(const std::string& method, +void DomTracker::OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) { if (method == "DOM.setChildNodes") { const base::Value* nodes; @@ -62,7 +63,7 @@ void DomTracker::OnEvent(const std::string& method, } else if (method == "DOM.documentUpdated") { node_to_frame_map_.clear(); base::DictionaryValue params; - client_->SendCommand("DOM.getDocument", params); + client->SendCommand("DOM.getDocument", params); } } diff --git a/chrome/test/chromedriver/chrome/dom_tracker.h b/chrome/test/chromedriver/chrome/dom_tracker.h index e1611a3..fdccb55 100644 --- a/chrome/test/chromedriver/chrome/dom_tracker.h +++ b/chrome/test/chromedriver/chrome/dom_tracker.h @@ -29,12 +29,12 @@ class DomTracker : public DevToolsEventListener { Status GetFrameIdForNode(int node_id, std::string* frame_id); // Overridden from DevToolsEventListener: - virtual Status OnConnected() OVERRIDE; - virtual void OnEvent(const std::string& method, + virtual Status OnConnected(DevToolsClient* client) OVERRIDE; + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE; private: - DevToolsClient* client_; bool ProcessNodeList(const base::Value* nodes); bool ProcessNode(const base::Value* node); diff --git a/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc b/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc index cd1c41b..d7684924 100644 --- a/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc +++ b/chrome/test/chromedriver/chrome/dom_tracker_unittest.cc @@ -61,13 +61,13 @@ TEST(DomTracker, GetFrameIdForNode) { "}]"; base::DictionaryValue params; params.Set("nodes", base::JSONReader::Read(nodes)); - tracker.OnEvent("DOM.setChildNodes", params); + tracker.OnEvent(&client, "DOM.setChildNodes", params); ASSERT_TRUE(tracker.GetFrameIdForNode(101, &frame_id).IsError()); ASSERT_TRUE(frame_id.empty()); ASSERT_TRUE(tracker.GetFrameIdForNode(102, &frame_id).IsOk()); ASSERT_STREQ("f", frame_id.c_str()); - tracker.OnEvent("DOM.documentUpdated", params); + tracker.OnEvent(&client, "DOM.documentUpdated", params); ASSERT_TRUE(tracker.GetFrameIdForNode(102, &frame_id).IsError()); ASSERT_STREQ("DOM.getDocument", client.PopSentCommand().c_str()); } @@ -79,14 +79,14 @@ TEST(DomTracker, ChildNodeInserted) { base::DictionaryValue params; params.Set("node", base::JSONReader::Read("{\"nodeId\":1}")); - tracker.OnEvent("DOM.childNodeInserted", params); + tracker.OnEvent(&client, "DOM.childNodeInserted", params); ASSERT_TRUE(tracker.GetFrameIdForNode(1, &frame_id).IsError()); ASSERT_TRUE(frame_id.empty()); params.Clear(); params.Set("node", base::JSONReader::Read( "{\"nodeId\":2,\"frameId\":\"f\"}")); - tracker.OnEvent("DOM.childNodeInserted", params); + tracker.OnEvent(&client, "DOM.childNodeInserted", params); ASSERT_TRUE(tracker.GetFrameIdForNode(2, &frame_id).IsOk()); ASSERT_STREQ("f", frame_id.c_str()); } diff --git a/chrome/test/chromedriver/chrome/frame_tracker.cc b/chrome/test/chromedriver/chrome/frame_tracker.cc index 42dcbb9..03a24cb 100644 --- a/chrome/test/chromedriver/chrome/frame_tracker.cc +++ b/chrome/test/chromedriver/chrome/frame_tracker.cc @@ -12,9 +12,9 @@ #include "chrome/test/chromedriver/chrome/devtools_client.h" #include "chrome/test/chromedriver/chrome/status.h" -FrameTracker::FrameTracker(DevToolsClient* client) : client_(client) { - DCHECK(client_); - client_->AddListener(this); +FrameTracker::FrameTracker(DevToolsClient* client) { + DCHECK(client); + client->AddListener(this); } FrameTracker::~FrameTracker() {} @@ -27,17 +27,18 @@ Status FrameTracker::GetContextIdForFrame( return Status(kOk); } -Status FrameTracker::OnConnected() { +Status FrameTracker::OnConnected(DevToolsClient* client) { frame_to_context_map_.clear(); // Enable runtime events to allow tracking execution context creation. base::DictionaryValue params; - Status status = client_->SendCommand("Runtime.enable", params); + Status status = client->SendCommand("Runtime.enable", params); if (status.IsError()) return status; - return client_->SendCommand("Page.enable", params); + return client->SendCommand("Page.enable", params); } -void FrameTracker::OnEvent(const std::string& method, +void FrameTracker::OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) { if (method == "Runtime.executionContextCreated") { const base::DictionaryValue* context; diff --git a/chrome/test/chromedriver/chrome/frame_tracker.h b/chrome/test/chromedriver/chrome/frame_tracker.h index 28c92df..41415e6 100644 --- a/chrome/test/chromedriver/chrome/frame_tracker.h +++ b/chrome/test/chromedriver/chrome/frame_tracker.h @@ -30,12 +30,12 @@ class FrameTracker : public DevToolsEventListener { Status GetContextIdForFrame(const std::string& frame_id, int* context_id); // Overridden from DevToolsEventListener: - virtual Status OnConnected() OVERRIDE; - virtual void OnEvent(const std::string& method, + virtual Status OnConnected(DevToolsClient* client) OVERRIDE; + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE; private: - DevToolsClient* client_; std::map<std::string, int> frame_to_context_map_; DISALLOW_COPY_AND_ASSIGN(FrameTracker); diff --git a/chrome/test/chromedriver/chrome/frame_tracker_unittest.cc b/chrome/test/chromedriver/chrome/frame_tracker_unittest.cc index ea43a0d..8500441 100644 --- a/chrome/test/chromedriver/chrome/frame_tracker_unittest.cc +++ b/chrome/test/chromedriver/chrome/frame_tracker_unittest.cc @@ -21,7 +21,7 @@ TEST(FrameTracker, GetContextIdForFrame) { const char context[] = "{\"id\":100,\"frameId\":\"f\"}"; base::DictionaryValue params; params.Set("context", base::JSONReader::Read(context)); - tracker.OnEvent("Runtime.executionContextCreated", params); + tracker.OnEvent(&client, "Runtime.executionContextCreated", params); ASSERT_EQ(kNoSuchFrame, tracker.GetContextIdForFrame("foo", &context_id).code()); ASSERT_EQ(-1, context_id); @@ -30,10 +30,10 @@ TEST(FrameTracker, GetContextIdForFrame) { base::DictionaryValue nav_params; nav_params.SetString("frame.parentId", "1"); - tracker.OnEvent("Page.frameNavigated", nav_params); + tracker.OnEvent(&client, "Page.frameNavigated", nav_params); ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk()); nav_params.Clear(); - tracker.OnEvent("Page.frameNavigated", nav_params); + tracker.OnEvent(&client, "Page.frameNavigated", nav_params); ASSERT_EQ(kNoSuchFrame, tracker.GetContextIdForFrame("f", &context_id).code()); } @@ -45,13 +45,13 @@ TEST(FrameTracker, CanUpdateFrameContextId) { const char context[] = "{\"id\":1,\"frameId\":\"f\"}"; base::DictionaryValue params; params.Set("context", base::JSONReader::Read(context)); - tracker.OnEvent("Runtime.executionContextCreated", params); + tracker.OnEvent(&client, "Runtime.executionContextCreated", params); int context_id = -1; ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk()); ASSERT_EQ(1, context_id); params.SetInteger("context.id", 2); - tracker.OnEvent("Runtime.executionContextCreated", params); + tracker.OnEvent(&client, "Runtime.executionContextCreated", params); ASSERT_TRUE(tracker.GetContextIdForFrame("f", &context_id).IsOk()); ASSERT_EQ(2, context_id); } diff --git a/chrome/test/chromedriver/chrome/geolocation_override_manager.cc b/chrome/test/chromedriver/chrome/geolocation_override_manager.cc index 4162662..45de85d 100644 --- a/chrome/test/chromedriver/chrome/geolocation_override_manager.cc +++ b/chrome/test/chromedriver/chrome/geolocation_override_manager.cc @@ -24,11 +24,12 @@ Status GeolocationOverrideManager::OverrideGeolocation( return ApplyOverrideIfNeeded(); } -Status GeolocationOverrideManager::OnConnected() { +Status GeolocationOverrideManager::OnConnected(DevToolsClient* client) { return ApplyOverrideIfNeeded(); } -void GeolocationOverrideManager::OnEvent(const std::string& method, +void GeolocationOverrideManager::OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) { if (method == "Page.frameNavigated") { const base::Value* unused_value; diff --git a/chrome/test/chromedriver/chrome/geolocation_override_manager.h b/chrome/test/chromedriver/chrome/geolocation_override_manager.h index fe07b63..4778266 100644 --- a/chrome/test/chromedriver/chrome/geolocation_override_manager.h +++ b/chrome/test/chromedriver/chrome/geolocation_override_manager.h @@ -30,8 +30,9 @@ class GeolocationOverrideManager : public DevToolsEventListener { Status OverrideGeolocation(const Geoposition& geoposition); // Overridden from DevToolsEventListener: - virtual Status OnConnected() OVERRIDE; - virtual void OnEvent(const std::string& method, + virtual Status OnConnected(DevToolsClient* client) OVERRIDE; + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE; private: diff --git a/chrome/test/chromedriver/chrome/geolocation_override_manager_unittest.cc b/chrome/test/chromedriver/chrome/geolocation_override_manager_unittest.cc index bb37814..371eb94 100644 --- a/chrome/test/chromedriver/chrome/geolocation_override_manager_unittest.cc +++ b/chrome/test/chromedriver/chrome/geolocation_override_manager_unittest.cc @@ -87,12 +87,12 @@ TEST(GeolocationOverrideManager, SendsCommandOnConnect) { RecorderDevToolsClient client; GeolocationOverrideManager manager(&client); ASSERT_EQ(0u, client.commands_.size()); - ASSERT_EQ(kOk, manager.OnConnected().code()); + ASSERT_EQ(kOk, manager.OnConnected(&client).code()); Geoposition geoposition = {1, 2, 3}; manager.OverrideGeolocation(geoposition); ASSERT_EQ(1u, client.commands_.size()); - ASSERT_EQ(kOk, manager.OnConnected().code()); + ASSERT_EQ(kOk, manager.OnConnected(&client).code()); ASSERT_EQ(2u, client.commands_.size()); ASSERT_NO_FATAL_FAILURE( AssertGeolocationCommand(client.commands_[1], geoposition)); @@ -102,19 +102,19 @@ TEST(GeolocationOverrideManager, SendsCommandOnNavigation) { RecorderDevToolsClient client; GeolocationOverrideManager manager(&client); base::DictionaryValue main_frame_params; - manager.OnEvent("Page.frameNavigated", main_frame_params); + manager.OnEvent(&client, "Page.frameNavigated", main_frame_params); ASSERT_EQ(0u, client.commands_.size()); Geoposition geoposition = {1, 2, 3}; manager.OverrideGeolocation(geoposition); ASSERT_EQ(1u, client.commands_.size()); - manager.OnEvent("Page.frameNavigated", main_frame_params); + manager.OnEvent(&client, "Page.frameNavigated", main_frame_params); ASSERT_EQ(2u, client.commands_.size()); ASSERT_NO_FATAL_FAILURE( AssertGeolocationCommand(client.commands_[1], geoposition)); base::DictionaryValue sub_frame_params; sub_frame_params.SetString("frame.parentId", "id"); - manager.OnEvent("Page.frameNavigated", sub_frame_params); + manager.OnEvent(&client, "Page.frameNavigated", sub_frame_params); ASSERT_EQ(2u, client.commands_.size()); } diff --git a/chrome/test/chromedriver/chrome/javascript_dialog_manager.cc b/chrome/test/chromedriver/chrome/javascript_dialog_manager.cc index a8eb7cd..70df9d6 100644 --- a/chrome/test/chromedriver/chrome/javascript_dialog_manager.cc +++ b/chrome/test/chromedriver/chrome/javascript_dialog_manager.cc @@ -50,13 +50,14 @@ Status JavaScriptDialogManager::HandleDialog(bool accept, return Status(kOk); } -Status JavaScriptDialogManager::OnConnected() { +Status JavaScriptDialogManager::OnConnected(DevToolsClient* client) { unhandled_dialog_queue_.clear(); base::DictionaryValue params; return client_->SendCommand("Page.enable", params); } -void JavaScriptDialogManager::OnEvent(const std::string& method, +void JavaScriptDialogManager::OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) { if (method == "Page.javascriptDialogOpening") { std::string message; diff --git a/chrome/test/chromedriver/chrome/javascript_dialog_manager.h b/chrome/test/chromedriver/chrome/javascript_dialog_manager.h index fbc8329..01daf74 100644 --- a/chrome/test/chromedriver/chrome/javascript_dialog_manager.h +++ b/chrome/test/chromedriver/chrome/javascript_dialog_manager.h @@ -32,8 +32,9 @@ class JavaScriptDialogManager : public DevToolsEventListener { Status HandleDialog(bool accept, const std::string& text); // Overridden from DevToolsEventListener: - virtual Status OnConnected() OVERRIDE; - virtual void OnEvent(const std::string& method, + virtual Status OnConnected(DevToolsClient* client) OVERRIDE; + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE; private: diff --git a/chrome/test/chromedriver/chrome/javascript_dialog_manager_unittest.cc b/chrome/test/chromedriver/chrome/javascript_dialog_manager_unittest.cc index 1333090..dc2194f 100644 --- a/chrome/test/chromedriver/chrome/javascript_dialog_manager_unittest.cc +++ b/chrome/test/chromedriver/chrome/javascript_dialog_manager_unittest.cc @@ -51,7 +51,7 @@ TEST(JavaScriptDialogManager, HandleDialogPassesParams) { JavaScriptDialogManager manager(&client); base::DictionaryValue params; params.SetString("message", "hi"); - manager.OnEvent("Page.javascriptDialogOpening", params); + manager.OnEvent(&client, "Page.javascriptDialogOpening", params); ASSERT_EQ(kOk, manager.HandleDialog(false, "text").code()); std::string text; client.params_.GetString("promptText", &text); @@ -64,12 +64,12 @@ TEST(JavaScriptDialogManager, ReconnectClearsStateAndSendsEnable) { JavaScriptDialogManager manager(&client); base::DictionaryValue params; params.SetString("message", "hi"); - manager.OnEvent("Page.javascriptDialogOpening", params); + manager.OnEvent(&client, "Page.javascriptDialogOpening", params); ASSERT_TRUE(manager.IsDialogOpen()); std::string message; ASSERT_EQ(kOk, manager.GetDialogMessage(&message).code()); - ASSERT_TRUE(manager.OnConnected().IsOk()); + ASSERT_TRUE(manager.OnConnected(&client).IsOk()); ASSERT_EQ("Page.enable", client.method_); ASSERT_FALSE(manager.IsDialogOpen()); ASSERT_EQ(kNoAlertOpen, manager.GetDialogMessage(&message).code()); @@ -94,7 +94,7 @@ class FakeDevToolsClient : public StubDevToolsClient { scoped_ptr<base::DictionaryValue>* result) OVERRIDE { while (closing_count_ > 0) { base::DictionaryValue empty; - listener_->OnEvent("Page.javascriptDialogClosing", empty); + listener_->OnEvent(this, "Page.javascriptDialogClosing", empty); closing_count_--; } return Status(kOk); @@ -119,7 +119,7 @@ TEST(JavaScriptDialogManager, OneDialog) { std::string message; ASSERT_EQ(kNoAlertOpen, manager.GetDialogMessage(&message).code()); - manager.OnEvent("Page.javascriptDialogOpening", params); + manager.OnEvent(&client, "Page.javascriptDialogOpening", params); ASSERT_TRUE(manager.IsDialogOpen()); ASSERT_EQ(kOk, manager.GetDialogMessage(&message).code()); ASSERT_EQ("hi", message); @@ -136,9 +136,9 @@ TEST(JavaScriptDialogManager, TwoDialogs) { JavaScriptDialogManager manager(&client); base::DictionaryValue params; params.SetString("message", "1"); - manager.OnEvent("Page.javascriptDialogOpening", params); + manager.OnEvent(&client, "Page.javascriptDialogOpening", params); params.SetString("message", "2"); - manager.OnEvent("Page.javascriptDialogOpening", params); + manager.OnEvent(&client, "Page.javascriptDialogOpening", params); std::string message; ASSERT_EQ(kOk, manager.GetDialogMessage(&message).code()); @@ -166,12 +166,12 @@ TEST(JavaScriptDialogManager, OneDialogManualClose) { std::string message; ASSERT_EQ(kNoAlertOpen, manager.GetDialogMessage(&message).code()); - manager.OnEvent("Page.javascriptDialogOpening", params); + manager.OnEvent(&client, "Page.javascriptDialogOpening", params); ASSERT_TRUE(manager.IsDialogOpen()); ASSERT_EQ(kOk, manager.GetDialogMessage(&message).code()); ASSERT_EQ("hi", message); - manager.OnEvent("Page.javascriptDialogClosing", params); + manager.OnEvent(&client, "Page.javascriptDialogClosing", params); ASSERT_FALSE(manager.IsDialogOpen()); ASSERT_EQ(kNoAlertOpen, manager.GetDialogMessage(&message).code()); ASSERT_EQ(kNoAlertOpen, manager.HandleDialog(false, std::string()).code()); diff --git a/chrome/test/chromedriver/chrome/navigation_tracker.cc b/chrome/test/chromedriver/chrome/navigation_tracker.cc index 1553ac4..981d747 100644 --- a/chrome/test/chromedriver/chrome/navigation_tracker.cc +++ b/chrome/test/chromedriver/chrome/navigation_tracker.cc @@ -66,7 +66,7 @@ Status NavigationTracker::IsPendingNavigation(const std::string& frame_id, return Status(kOk); } -Status NavigationTracker::OnConnected() { +Status NavigationTracker::OnConnected(DevToolsClient* client) { loading_state_ = kUnknown; scheduled_frame_set_.clear(); @@ -75,7 +75,8 @@ Status NavigationTracker::OnConnected() { return client_->SendCommand("Page.enable", empty_params); } -void NavigationTracker::OnEvent(const std::string& method, +void NavigationTracker::OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) { // Chrome does not send Page.frameStoppedLoading until all frames have // run their onLoad handlers (including frames created during the handlers). diff --git a/chrome/test/chromedriver/chrome/navigation_tracker.h b/chrome/test/chromedriver/chrome/navigation_tracker.h index 2664a64..2484741 100644 --- a/chrome/test/chromedriver/chrome/navigation_tracker.h +++ b/chrome/test/chromedriver/chrome/navigation_tracker.h @@ -36,8 +36,9 @@ class NavigationTracker : public DevToolsEventListener { Status IsPendingNavigation(const std::string& frame_id, bool* is_pending); // Overridden from DevToolsEventListener: - virtual Status OnConnected() OVERRIDE; - virtual void OnEvent(const std::string& method, + virtual Status OnConnected(DevToolsClient* client) OVERRIDE; + virtual void OnEvent(DevToolsClient* client, + const std::string& method, const base::DictionaryValue& params) OVERRIDE; private: diff --git a/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc b/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc index 19a78ef3..08a64ca 100644 --- a/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc +++ b/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc @@ -29,9 +29,9 @@ TEST(NavigationTracker, FrameLoadStartStop) { NavigationTracker tracker(&client); base::DictionaryValue params; - tracker.OnEvent("Page.frameStartedLoading", params); + tracker.OnEvent(&client, "Page.frameStartedLoading", params); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true)); - tracker.OnEvent("Page.frameStoppedLoading", params); + tracker.OnEvent(&client, "Page.frameStoppedLoading", params); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", false)); } @@ -44,13 +44,13 @@ TEST(NavigationTracker, NavigationScheduledThenLoaded) { params_scheduled.SetInteger("delay", 0); params_scheduled.SetString("frameId", "f"); - tracker.OnEvent("Page.frameScheduledNavigation", params_scheduled); + tracker.OnEvent(&client, "Page.frameScheduledNavigation", params_scheduled); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true)); - tracker.OnEvent("Page.frameStartedLoading", params); + tracker.OnEvent(&client, "Page.frameStartedLoading", params); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true)); - tracker.OnEvent("Page.frameClearedScheduledNavigation", params); + tracker.OnEvent(&client, "Page.frameClearedScheduledNavigation", params); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true)); - tracker.OnEvent("Page.frameStoppedLoading", params); + tracker.OnEvent(&client, "Page.frameStoppedLoading", params); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", false)); } @@ -61,7 +61,7 @@ TEST(NavigationTracker, NavigationScheduledForOtherFrame) { params_scheduled.SetInteger("delay", 0); params_scheduled.SetString("frameId", "other"); - tracker.OnEvent("Page.frameScheduledNavigation", params_scheduled); + tracker.OnEvent(&client, "Page.frameScheduledNavigation", params_scheduled); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", false)); } @@ -74,9 +74,9 @@ TEST(NavigationTracker, NavigationScheduledThenCancelled) { params_scheduled.SetInteger("delay", 0); params_scheduled.SetString("frameId", "f"); - tracker.OnEvent("Page.frameScheduledNavigation", params_scheduled); + tracker.OnEvent(&client, "Page.frameScheduledNavigation", params_scheduled); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", true)); - tracker.OnEvent("Page.frameClearedScheduledNavigation", params); + tracker.OnEvent(&client, "Page.frameClearedScheduledNavigation", params); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", false)); } @@ -87,7 +87,7 @@ TEST(NavigationTracker, NavigationScheduledTooFarAway) { base::DictionaryValue params_scheduled; params_scheduled.SetInteger("delay", 10); params_scheduled.SetString("frameId", "f"); - tracker.OnEvent("Page.frameScheduledNavigation", params_scheduled); + tracker.OnEvent(&client, "Page.frameScheduledNavigation", params_scheduled); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "f", false)); } @@ -98,15 +98,15 @@ TEST(NavigationTracker, DiscardScheduledNavigationsOnMainFrameCommit) { base::DictionaryValue params_scheduled; params_scheduled.SetString("frameId", "subframe"); params_scheduled.SetInteger("delay", 0); - tracker.OnEvent("Page.frameScheduledNavigation", params_scheduled); + tracker.OnEvent(&client, "Page.frameScheduledNavigation", params_scheduled); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "subframe", true)); base::DictionaryValue params_navigated; params_navigated.SetString("frame.parentId", "something"); - tracker.OnEvent("Page.frameNavigated", params_navigated); + tracker.OnEvent(&client, "Page.frameNavigated", params_navigated); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "subframe", true)); params_navigated.Clear(); - tracker.OnEvent("Page.frameNavigated", params_navigated); + tracker.OnEvent(&client, "Page.frameNavigated", params_navigated); ASSERT_NO_FATAL_FAILURE(AssertPendingState(&tracker, "subframe", false)); } @@ -154,7 +154,8 @@ class DeterminingLoadStateDevToolsClient : public StubDevToolsClient { const base::DictionaryValue& params, scoped_ptr<base::DictionaryValue>* result) OVERRIDE { if (send_event_first_.length()) { - listeners_.front()->OnEvent(send_event_first_, *send_event_first_params_); + listeners_.front()->OnEvent(this, + send_event_first_, *send_event_first_params_); } base::DictionaryValue result_dict; diff --git a/chrome/test/chromedriver/chrome/stub_devtools_client.cc b/chrome/test/chromedriver/chrome/stub_devtools_client.cc index 629ff29..f8ef401 100644 --- a/chrome/test/chromedriver/chrome/stub_devtools_client.cc +++ b/chrome/test/chromedriver/chrome/stub_devtools_client.cc @@ -7,10 +7,16 @@ #include "base/values.h" #include "chrome/test/chromedriver/chrome/status.h" -StubDevToolsClient::StubDevToolsClient() {} +StubDevToolsClient::StubDevToolsClient() : id_("stub-id") {} + +StubDevToolsClient::StubDevToolsClient(const std::string id) : id_(id) {} StubDevToolsClient::~StubDevToolsClient() {} +const std::string& StubDevToolsClient::GetId() { + return id_; +} + Status StubDevToolsClient::ConnectIfNecessary() { return Status(kOk); } diff --git a/chrome/test/chromedriver/chrome/stub_devtools_client.h b/chrome/test/chromedriver/chrome/stub_devtools_client.h index 0c3457a..f070e6c 100644 --- a/chrome/test/chromedriver/chrome/stub_devtools_client.h +++ b/chrome/test/chromedriver/chrome/stub_devtools_client.h @@ -20,10 +20,12 @@ class Status; class StubDevToolsClient : public DevToolsClient { public: + explicit StubDevToolsClient(const std::string id); StubDevToolsClient(); virtual ~StubDevToolsClient(); // Overridden from DevToolsClient: + virtual const std::string& GetId() OVERRIDE; virtual Status ConnectIfNecessary() OVERRIDE; virtual Status SendCommand(const std::string& method, const base::DictionaryValue& params) OVERRIDE; @@ -36,6 +38,7 @@ class StubDevToolsClient : public DevToolsClient { const ConditionalFunc& conditional_func) OVERRIDE; protected: + const std::string id_; std::list<DevToolsEventListener*> listeners_; }; diff --git a/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc b/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc index ecdc85b..0aa34c47 100644 --- a/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc +++ b/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc @@ -17,7 +17,7 @@ namespace { class FakeDevToolsClient : public DevToolsClient { public: - FakeDevToolsClient() : status_(kOk) {} + FakeDevToolsClient() : id_("fake-id"), status_(kOk) {} virtual ~FakeDevToolsClient() {} void set_status(const Status& status) { @@ -29,6 +29,9 @@ class FakeDevToolsClient : public DevToolsClient { } // Overridden from DevToolsClient: + virtual const std::string& GetId() OVERRIDE { + return id_; + } virtual Status ConnectIfNecessary() OVERRIDE { return Status(kOk); } @@ -52,6 +55,7 @@ class FakeDevToolsClient : public DevToolsClient { } private: + const std::string id_; Status status_; base::DictionaryValue result_; }; |