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

Unified Diff: extensions/renderer/extension_helper.cc

Issue 321993003: Refactor renderer-side script injection (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Missing files Created 6 years, 6 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: extensions/renderer/extension_helper.cc
diff --git a/extensions/renderer/extension_helper.cc b/extensions/renderer/extension_helper.cc
index 4162dda384075b0e65ceef6514352b1173655a83..95d1f8a324aa5de63b3a358c926660703a8fc4cd 100644
--- a/extensions/renderer/extension_helper.cc
+++ b/extensions/renderer/extension_helper.cc
@@ -4,7 +4,6 @@
#include "extensions/renderer/extension_helper.h"
-#include "base/lazy_instance.h"
#include "content/public/renderer/render_view.h"
#include "content/public/renderer/render_view_visitor.h"
#include "extensions/common/api/messaging/message.h"
@@ -13,13 +12,10 @@
#include "extensions/renderer/console.h"
#include "extensions/renderer/dispatcher.h"
#include "extensions/renderer/messaging_bindings.h"
-#include "extensions/renderer/user_script_scheduler.h"
-#include "extensions/renderer/user_script_slave.h"
#include "third_party/WebKit/public/platform/WebURLRequest.h"
#include "third_party/WebKit/public/web/WebConsoleMessage.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
-#include "third_party/WebKit/public/web/WebScopedUserGesture.h"
#include "third_party/WebKit/public/web/WebView.h"
using content::ConsoleMessageLevel;
@@ -28,19 +24,11 @@ using blink::WebDataSource;
using blink::WebFrame;
using blink::WebLocalFrame;
using blink::WebURLRequest;
-using blink::WebScopedUserGesture;
using blink::WebView;
namespace extensions {
namespace {
-// Keeps a mapping from the frame pointer to a UserScriptScheduler object.
-// We store this mapping per process, because a frame can jump from one
-// document to another with adoptNode, and so having the object be a
-// RenderViewObserver means it might miss some notifications after it moves.
-typedef std::map<WebFrame*, UserScriptScheduler*> SchedulerMap;
-static base::LazyInstance<SchedulerMap> g_schedulers =
- LAZY_INSTANCE_INITIALIZER;
// A RenderViewVisitor class that iterates through the set of available
// views, looking for a view of the given type, in the given browser window
@@ -149,7 +137,6 @@ bool ExtensionHelper::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnExtensionDeliverMessage)
IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect,
OnExtensionDispatchOnDisconnect)
- IPC_MESSAGE_HANDLER(ExtensionMsg_ExecuteCode, OnExecuteCode)
IPC_MESSAGE_HANDLER(ExtensionMsg_SetTabId, OnSetTabId)
IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateBrowserWindowId,
OnUpdateBrowserWindowId)
@@ -159,44 +146,15 @@ bool ExtensionHelper::OnMessageReceived(const IPC::Message& message) {
OnAddMessageToConsole)
IPC_MESSAGE_HANDLER(ExtensionMsg_AppWindowClosed,
OnAppWindowClosed)
- IPC_MESSAGE_HANDLER(ExtensionMsg_GrantContentScriptPermission,
- OnGrantContentScriptPermission)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
-void ExtensionHelper::DidFinishDocumentLoad(WebLocalFrame* frame) {
- dispatcher_->user_script_slave()->InjectScripts(
- frame, UserScript::DOCUMENT_END);
-
- SchedulerMap::iterator i = g_schedulers.Get().find(frame);
- if (i != g_schedulers.Get().end())
- i->second->DidFinishDocumentLoad();
-}
-
-void ExtensionHelper::DidFinishLoad(blink::WebLocalFrame* frame) {
- SchedulerMap::iterator i = g_schedulers.Get().find(frame);
- if (i != g_schedulers.Get().end())
- i->second->DidFinishLoad();
-}
-
void ExtensionHelper::DidCreateDocumentElement(WebLocalFrame* frame) {
- dispatcher_->user_script_slave()->InjectScripts(
- frame, UserScript::DOCUMENT_START);
- SchedulerMap::iterator i = g_schedulers.Get().find(frame);
- if (i != g_schedulers.Get().end())
- i->second->DidCreateDocumentElement();
-
dispatcher_->DidCreateDocumentElement(frame);
}
-void ExtensionHelper::DidStartProvisionalLoad(blink::WebLocalFrame* frame) {
- SchedulerMap::iterator i = g_schedulers.Get().find(frame);
- if (i != g_schedulers.Get().end())
- i->second->DidStartProvisionalLoad();
-}
-
void ExtensionHelper::DraggableRegionsChanged(blink::WebFrame* frame) {
blink::WebVector<blink::WebDraggableRegion> webregions =
frame->document().draggableRegions();
@@ -210,19 +168,6 @@ void ExtensionHelper::DraggableRegionsChanged(blink::WebFrame* frame) {
Send(new ExtensionHostMsg_UpdateDraggableRegions(routing_id(), regions));
}
-void ExtensionHelper::FrameDetached(WebFrame* frame) {
- // This could be called before DidCreateDataSource, in which case the frame
- // won't be in the map.
- SchedulerMap::iterator i = g_schedulers.Get().find(frame);
- if (i == g_schedulers.Get().end())
- return;
-
- delete i->second;
- g_schedulers.Get().erase(i);
-
- dispatcher_->user_script_slave()->FrameDetached(frame);
-}
-
void ExtensionHelper::DidMatchCSS(
blink::WebLocalFrame* frame,
const blink::WebVector<blink::WebString>& newly_matching_selectors,
@@ -231,16 +176,6 @@ void ExtensionHelper::DidMatchCSS(
frame, newly_matching_selectors, stopped_matching_selectors);
}
-void ExtensionHelper::DidCreateDataSource(WebLocalFrame* frame,
- WebDataSource* ds) {
- // Check first if we created a scheduler for the frame, since this function
- // gets called for navigations within the document.
- if (g_schedulers.Get().count(frame))
- return;
-
- g_schedulers.Get()[frame] = new UserScriptScheduler(frame, dispatcher_);
-}
-
void ExtensionHelper::OnExtensionResponse(int request_id,
bool success,
const base::ListValue& response,
@@ -289,28 +224,6 @@ void ExtensionHelper::OnExtensionDispatchOnDisconnect(
dispatcher_->script_context_set(), port_id, error_message, render_view());
}
-void ExtensionHelper::OnExecuteCode(
- const ExtensionMsg_ExecuteCode_Params& params) {
- WebView* webview = render_view()->GetWebView();
- WebFrame* main_frame = webview->mainFrame();
- if (!main_frame) {
- base::ListValue val;
- Send(new ExtensionHostMsg_ExecuteCodeFinished(routing_id(),
- params.request_id,
- "No main frame",
- -1,
- GURL(std::string()),
- val));
- return;
- }
-
- // chrome.tabs.executeScript() only supports execution in either the top frame
- // or all frames. We handle both cases in the top frame.
- SchedulerMap::iterator i = g_schedulers.Get().find(main_frame);
- if (i != g_schedulers.Get().end())
- i->second->ExecuteCode(params);
-}
-
void ExtensionHelper::OnNotifyRendererViewType(ViewType type) {
view_type_ = type;
}
@@ -342,9 +255,4 @@ void ExtensionHelper::OnAppWindowClosed() {
"onAppWindowClosed");
}
-void ExtensionHelper::OnGrantContentScriptPermission(int request_id) {
- dispatcher_->user_script_slave()->OnContentScriptGrantedPermission(
- render_view(), request_id);
-}
-
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698