diff options
author | mvrable@chromium.org <mvrable@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-24 21:58:23 +0000 |
---|---|---|
committer | mvrable@chromium.org <mvrable@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-24 21:58:23 +0000 |
commit | 9f07b0424413bff3c6b60a7e554ffc976a48a53e (patch) | |
tree | 5d853f1e485e8b08bd55f0f00c38437afc3af7f8 | |
parent | ae68d4acecca92ed7d7897a243efeed288802a0e (diff) | |
download | chromium_src-9f07b0424413bff3c6b60a7e554ffc976a48a53e.zip chromium_src-9f07b0424413bff3c6b60a7e554ffc976a48a53e.tar.gz chromium_src-9f07b0424413bff3c6b60a7e554ffc976a48a53e.tar.bz2 |
[Activity log] DOMActivityLogger::log now takes URL/title arguments
When calling into DOMActivityLogger::log, the current location and title
for the page should always be passed in--otherwise, when a
DOMActivityLogger is re-used across multiple pages stale data can be
logged.
This is the second in a set of related changes--the previous change,
https://codereview.chromium.org/23817008/, updates the blink code. This
change is intended to be committed after that change lands in blink.
BUG=294500
Review URL: https://chromiumcodereview.appspot.com/24243011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225077 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/renderer/extensions/dispatcher.cc | 7 | ||||
-rw-r--r-- | chrome/renderer/extensions/dom_activity_logger.cc | 24 | ||||
-rw-r--r-- | chrome/renderer/extensions/dom_activity_logger.h | 21 | ||||
-rw-r--r-- | chrome/renderer/extensions/user_script_scheduler.cc | 13 | ||||
-rw-r--r-- | chrome/renderer/extensions/user_script_slave.cc | 6 |
5 files changed, 25 insertions, 46 deletions
diff --git a/chrome/renderer/extensions/dispatcher.cc b/chrome/renderer/extensions/dispatcher.cc index 1b3e9cf..69feffb 100644 --- a/chrome/renderer/extensions/dispatcher.cc +++ b/chrome/renderer/extensions/dispatcher.cc @@ -1241,13 +1241,8 @@ void Dispatcher::OnActivateExtension(const std::string& extension_id) { if (is_webkit_initialized_) { InitOriginPermissions(extension); - // DOMActivity logger for a main world controlled by an extension (as in - // the case of an extension background page, options page, popup etc.) - // gets an empty title. DOMActivityLogger::AttachToWorld(DOMActivityLogger::kMainWorldId, - extension_id, - extension->url(), - string16()); + extension_id); } } diff --git a/chrome/renderer/extensions/dom_activity_logger.cc b/chrome/renderer/extensions/dom_activity_logger.cc index 9650758..394fc4f 100644 --- a/chrome/renderer/extensions/dom_activity_logger.cc +++ b/chrome/renderer/extensions/dom_activity_logger.cc @@ -12,24 +12,26 @@ #include "content/public/renderer/render_thread.h" #include "content/public/renderer/v8_value_converter.h" #include "third_party/WebKit/public/platform/WebString.h" +#include "third_party/WebKit/public/platform/WebURL.h" #include "third_party/WebKit/public/web/WebDOMActivityLogger.h" #include "v8/include/v8.h" using content::V8ValueConverter; +using WebKit::WebString; +using WebKit::WebURL; namespace extensions { -DOMActivityLogger::DOMActivityLogger(const std::string& extension_id, - const GURL& url, - const string16& title) - : extension_id_(extension_id), url_(url), title_(title) { -} // namespace extensions +DOMActivityLogger::DOMActivityLogger(const std::string& extension_id) + : extension_id_(extension_id) {} void DOMActivityLogger::log( const WebString& api_name, int argc, const v8::Handle<v8::Value> argv[], - const WebString& call_type) { + const WebString& call_type, + const WebURL& url, + const WebString& title) { scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); ActivityLogConverterStrategy strategy; converter->SetFunctionAllowed(true); @@ -40,8 +42,8 @@ void DOMActivityLogger::log( i, converter->FromV8Value(argv[i], v8::Context::GetCurrent())); } ExtensionHostMsg_DOMAction_Params params; - params.url = url_; - params.url_title = title_; + params.url = url; + params.url_title = title; params.api_call = api_name.utf8(); params.arguments.Swap(argv_list_value.get()); const std::string type = call_type.utf8(); @@ -57,14 +59,12 @@ void DOMActivityLogger::log( } void DOMActivityLogger::AttachToWorld(int world_id, - const std::string& extension_id, - const GURL& url, - const string16& title) { + const std::string& extension_id) { #if defined(ENABLE_EXTENSIONS) // If there is no logger registered for world_id, construct a new logger // and register it with world_id. if (!WebKit::hasDOMActivityLogger(world_id)) { - DOMActivityLogger* logger = new DOMActivityLogger(extension_id, url, title); + DOMActivityLogger* logger = new DOMActivityLogger(extension_id); WebKit::setDOMActivityLogger(world_id, logger); } #endif diff --git a/chrome/renderer/extensions/dom_activity_logger.h b/chrome/renderer/extensions/dom_activity_logger.h index 0c9ea5a..a188bec 100644 --- a/chrome/renderer/extensions/dom_activity_logger.h +++ b/chrome/renderer/extensions/dom_activity_logger.h @@ -9,12 +9,11 @@ #include "base/strings/string_piece.h" #include "third_party/WebKit/public/platform/WebString.h" +#include "third_party/WebKit/public/platform/WebURL.h" #include "third_party/WebKit/public/web/WebDOMActivityLogger.h" #include "url/gurl.h" #include "v8/include/v8.h" -using WebKit::WebString; - // Used to log DOM API calls from within WebKit. The events are sent via IPC to // extensions::ActivityLog for recording and display. namespace extensions { @@ -22,31 +21,27 @@ namespace extensions { class DOMActivityLogger: public WebKit::WebDOMActivityLogger { public: static const int kMainWorldId = 0; - DOMActivityLogger(const std::string& extension_id, - const GURL& url, - const string16& title); + explicit DOMActivityLogger(const std::string& extension_id); // Marshalls the arguments into an ExtensionHostMsg_DOMAction_Params // and sends it over to the browser (via IPC) for appending it to the // extension activity log. // (Overrides the log method in WebKit::WebDOMActivityLogger) - virtual void log(const WebString& api_name, + virtual void log(const WebKit::WebString& api_name, int argc, const v8::Handle<v8::Value> argv[], - const WebString& call_type); + const WebKit::WebString& call_type, + const WebKit::WebURL& url, + const WebKit::WebString& title); // Check (using the WebKit API) if there is no logger attached to the world // corresponding to world_id, and if so, construct a new logger and attach it. - // worl_id = 0 indicates the main world. + // world_id = 0 indicates the main world. static void AttachToWorld(int world_id, - const std::string& extension_id, - const GURL& url, - const string16& title); + const std::string& extension_id); private: std::string extension_id_; - GURL url_; - string16 title_; DISALLOW_COPY_AND_ASSIGN(DOMActivityLogger); }; diff --git a/chrome/renderer/extensions/user_script_scheduler.cc b/chrome/renderer/extensions/user_script_scheduler.cc index 2c6e5a2..86dc7d3 100644 --- a/chrome/renderer/extensions/user_script_scheduler.cc +++ b/chrome/renderer/extensions/user_script_scheduler.cc @@ -207,11 +207,8 @@ void UserScriptScheduler::ExecuteCodeImpl( v8::Local<v8::Value> script_value; if (params.in_main_world) { - DOMActivityLogger::AttachToWorld( - DOMActivityLogger::kMainWorldId, - extension->id(), - UserScriptSlave::GetDataSourceURLForFrame(child_frame), - child_frame->document().title()); + DOMActivityLogger::AttachToWorld(DOMActivityLogger::kMainWorldId, + extension->id()); script_value = child_frame->executeScriptAndReturnValue(source); } else { WebKit::WebVector<v8::Local<v8::Value> > results; @@ -220,11 +217,7 @@ void UserScriptScheduler::ExecuteCodeImpl( int isolated_world_id = dispatcher_->user_script_slave()->GetIsolatedWorldIdForExtension( extension, child_frame); - DOMActivityLogger::AttachToWorld( - isolated_world_id, - extension->id(), - UserScriptSlave::GetDataSourceURLForFrame(child_frame), - child_frame->document().title()); + DOMActivityLogger::AttachToWorld(isolated_world_id, extension->id()); child_frame->executeScriptInIsolatedWorld( isolated_world_id, &sources.front(), sources.size(), EXTENSION_GROUP_CONTENT_SCRIPTS, &results); diff --git a/chrome/renderer/extensions/user_script_slave.cc b/chrome/renderer/extensions/user_script_slave.cc index 16af7a3..ceb3dae 100644 --- a/chrome/renderer/extensions/user_script_slave.cc +++ b/chrome/renderer/extensions/user_script_slave.cc @@ -334,11 +334,7 @@ void UserScriptSlave::InjectScripts(WebFrame* frame, int isolated_world_id = GetIsolatedWorldIdForExtension(extension, frame); PerfTimer exec_timer; - DOMActivityLogger::AttachToWorld( - isolated_world_id, - extension->id(), - UserScriptSlave::GetDataSourceURLForFrame(frame), - frame->document().title()); + DOMActivityLogger::AttachToWorld(isolated_world_id, extension->id()); frame->executeScriptInIsolatedWorld( isolated_world_id, &sources.front(), sources.size(), EXTENSION_GROUP_CONTENT_SCRIPTS); |