summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormvrable@chromium.org <mvrable@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-24 21:58:23 +0000
committermvrable@chromium.org <mvrable@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-24 21:58:23 +0000
commit9f07b0424413bff3c6b60a7e554ffc976a48a53e (patch)
tree5d853f1e485e8b08bd55f0f00c38437afc3af7f8
parentae68d4acecca92ed7d7897a243efeed288802a0e (diff)
downloadchromium_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.cc7
-rw-r--r--chrome/renderer/extensions/dom_activity_logger.cc24
-rw-r--r--chrome/renderer/extensions/dom_activity_logger.h21
-rw-r--r--chrome/renderer/extensions/user_script_scheduler.cc13
-rw-r--r--chrome/renderer/extensions/user_script_slave.cc6
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);