Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2057)

Unified Diff: chrome/test/chromedriver/devtools_client_impl.cc

Issue 11975003: [ChromeDriver] Add support for attaching multiple DevToolsEventListeners to a DevToolsClient. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added OVERRIDE. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/chromedriver/devtools_client_impl.cc
diff --git a/chrome/test/chromedriver/devtools_client_impl.cc b/chrome/test/chromedriver/devtools_client_impl.cc
index ea28aa96f589ec09c20fb2a956edc52428cfe8b2..9177170198a1cc97b9a58a211f08028e6c8704b1 100644
--- a/chrome/test/chromedriver/devtools_client_impl.cc
+++ b/chrome/test/chromedriver/devtools_client_impl.cc
@@ -27,11 +27,9 @@ InspectorCommandResponse::~InspectorCommandResponse() {}
DevToolsClientImpl::DevToolsClientImpl(
const SyncWebSocketFactory& factory,
- const std::string& url,
- DevToolsEventListener* listener)
+ const std::string& url)
: socket_(factory.Run().Pass()),
url_(url),
- listener_(listener),
parser_func_(base::Bind(&internal::ParseInspectorMessage)),
connected_(false),
next_id_(1) {}
@@ -39,11 +37,9 @@ DevToolsClientImpl::DevToolsClientImpl(
DevToolsClientImpl::DevToolsClientImpl(
const SyncWebSocketFactory& factory,
const std::string& url,
- DevToolsEventListener* listener,
const ParserFunc& parser_func)
: socket_(factory.Run().Pass()),
url_(url),
- listener_(listener),
parser_func_(parser_func),
connected_(false),
next_id_(1) {}
@@ -71,6 +67,11 @@ Status DevToolsClientImpl::SendCommandAndGetResult(
return Status(kOk);
}
+void DevToolsClientImpl::AddListener(DevToolsEventListener* listener) {
+ DCHECK(listener);
+ listeners_.push_back(listener);
+}
+
Status DevToolsClientImpl::SendCommandInternal(
const std::string& method,
const base::DictionaryValue& params,
@@ -102,8 +103,7 @@ Status DevToolsClientImpl::SendCommandInternal(
if (!parser_func_.Run(message, command_id, &type, &event, &response))
return Status(kUnknownError, "bad inspector message: " + message);
if (type == internal::kEventMessageType) {
- if (listener_)
- listener_->OnEvent(event.method, *event.params);
+ NotifyEventListeners(event.method, *event.params);
} else {
if (response.id != command_id) {
return Status(kUnknownError,
@@ -118,6 +118,15 @@ Status DevToolsClientImpl::SendCommandInternal(
}
}
+void DevToolsClientImpl::NotifyEventListeners(
+ const std::string& method,
+ const base::DictionaryValue& params) {
+ for (std::list<DevToolsEventListener*>::iterator iter = listeners_.begin();
+ iter != listeners_.end(); ++iter) {
+ (*iter)->OnEvent(method, params);
+ }
+}
+
namespace internal {
bool ParseInspectorMessage(
« no previous file with comments | « chrome/test/chromedriver/devtools_client_impl.h ('k') | chrome/test/chromedriver/devtools_client_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698