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

Unified Diff: chrome/renderer/extensions/user_script_scheduler.cc

Issue 10863002: Added check to prevent extensions from injecting scrips into other extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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/renderer/extensions/user_script_scheduler.cc
diff --git a/chrome/renderer/extensions/user_script_scheduler.cc b/chrome/renderer/extensions/user_script_scheduler.cc
index 4a561157f3891413ac2643849bac392127ae9fbf..3d98aea437cfcd075ca54593e7576ccfec1ca147 100644
--- a/chrome/renderer/extensions/user_script_scheduler.cc
+++ b/chrome/renderer/extensions/user_script_scheduler.cc
@@ -161,7 +161,7 @@ void UserScriptScheduler::ExecuteCodeImpl(
for (std::vector<WebFrame*>::iterator frame_it = frame_vector.begin();
frame_it != frame_vector.end(); ++frame_it) {
- WebFrame* frame = *frame_it;
+ WebFrame* child_frame = *frame_it;
if (params.is_javascript) {
// We recheck access here in the renderer for extra safety against races
// with navigation.
@@ -173,11 +173,12 @@ void UserScriptScheduler::ExecuteCodeImpl(
//
// For child frames, we just skip ones the extension doesn't have access
// to and carry on.
- if (!extension->CanExecuteScriptOnPage(frame->document().url(),
+ if (!extension->CanExecuteScriptOnPage(child_frame->document().url(),
+ frame_->document().url(),
extension_helper->tab_id(),
NULL,
NULL)) {
- if (frame->parent()) {
+ if (child_frame->parent()) {
continue;
} else {
render_view->Send(new ExtensionHostMsg_ExecuteCodeFinished(
@@ -185,7 +186,7 @@ void UserScriptScheduler::ExecuteCodeImpl(
params.request_id,
ExtensionErrorUtils::FormatErrorMessage(
extension_manifest_errors::kCannotAccessPage,
- frame->document().url().spec()),
+ child_frame->document().url().spec()),
-1,
GURL(""),
execution_results));
@@ -205,14 +206,14 @@ void UserScriptScheduler::ExecuteCodeImpl(
v8_converter->SetUndefinedAllowed(true);
v8::Handle<v8::Value> script_value;
if (params.in_main_world) {
- script_value = frame->executeScriptAndReturnValue(source);
+ script_value = child_frame->executeScriptAndReturnValue(source);
} else {
WebKit::WebVector<v8::Local<v8::Value> > results;
std::vector<WebScriptSource> sources;
sources.push_back(source);
- frame->executeScriptInIsolatedWorld(
+ child_frame->executeScriptInIsolatedWorld(
dispatcher_->user_script_slave()->
- GetIsolatedWorldIdForExtension(extension, frame),
+ GetIsolatedWorldIdForExtension(extension, child_frame),
&sources.front(), sources.size(), EXTENSION_GROUP_CONTENT_SCRIPTS,
&results);
// We only expect one value back since we only pushed one source
@@ -226,7 +227,7 @@ void UserScriptScheduler::ExecuteCodeImpl(
script_value.Clear();
}
} else {
- frame->document().insertUserStyleSheet(
+ child_frame->document().insertUserStyleSheet(
WebString::fromUTF8(params.code),
// Author level is consistent with WebView::addUserStyleSheet.
WebDocument::UserStyleAuthorLevel);

Powered by Google App Engine
This is Rietveld 408576698