summaryrefslogtreecommitdiffstats
path: root/chrome/test
diff options
context:
space:
mode:
authorklm@google.com <klm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-10 23:04:17 +0000
committerklm@google.com <klm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-10 23:04:17 +0000
commit28f4eacb9694d569698179732785999e26430de9 (patch)
tree9c0e87b54943e260c494d601cd45ef30b6c8d772 /chrome/test
parent9e21d7250184a87c550a3c87d8adabc03c692246 (diff)
downloadchromium_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')
-rw-r--r--chrome/test/chromedriver/chrome/devtools_client.h2
-rw-r--r--chrome/test/chromedriver/chrome/devtools_client_impl.cc13
-rw-r--r--chrome/test/chromedriver/chrome/devtools_client_impl.h4
-rw-r--r--chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc82
-rw-r--r--chrome/test/chromedriver/chrome/devtools_event_listener.h6
-rw-r--r--chrome/test/chromedriver/chrome/devtools_http_client.cc2
-rw-r--r--chrome/test/chromedriver/chrome/dom_tracker.cc15
-rw-r--r--chrome/test/chromedriver/chrome/dom_tracker.h6
-rw-r--r--chrome/test/chromedriver/chrome/dom_tracker_unittest.cc8
-rw-r--r--chrome/test/chromedriver/chrome/frame_tracker.cc15
-rw-r--r--chrome/test/chromedriver/chrome/frame_tracker.h6
-rw-r--r--chrome/test/chromedriver/chrome/frame_tracker_unittest.cc10
-rw-r--r--chrome/test/chromedriver/chrome/geolocation_override_manager.cc5
-rw-r--r--chrome/test/chromedriver/chrome/geolocation_override_manager.h5
-rw-r--r--chrome/test/chromedriver/chrome/geolocation_override_manager_unittest.cc10
-rw-r--r--chrome/test/chromedriver/chrome/javascript_dialog_manager.cc5
-rw-r--r--chrome/test/chromedriver/chrome/javascript_dialog_manager.h5
-rw-r--r--chrome/test/chromedriver/chrome/javascript_dialog_manager_unittest.cc18
-rw-r--r--chrome/test/chromedriver/chrome/navigation_tracker.cc5
-rw-r--r--chrome/test/chromedriver/chrome/navigation_tracker.h5
-rw-r--r--chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc29
-rw-r--r--chrome/test/chromedriver/chrome/stub_devtools_client.cc8
-rw-r--r--chrome/test/chromedriver/chrome/stub_devtools_client.h3
-rw-r--r--chrome/test/chromedriver/chrome/web_view_impl_unittest.cc6
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_;
};