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

Side by Side Diff: extensions/renderer/extension_helper.cc

Issue 288053002: Block content scripts from executing until user grants permission (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase after ScriptInjection refactor Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/renderer/extension_helper.h" 5 #include "extensions/renderer/extension_helper.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "content/public/renderer/render_view.h" 8 #include "content/public/renderer/render_view.h"
9 #include "content/public/renderer/render_view_visitor.h" 9 #include "content/public/renderer/render_view_visitor.h"
10 #include "extensions/common/api/messaging/message.h" 10 #include "extensions/common/api/messaging/message.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 OnExtensionDispatchOnDisconnect) 151 OnExtensionDispatchOnDisconnect)
152 IPC_MESSAGE_HANDLER(ExtensionMsg_ExecuteCode, OnExecuteCode) 152 IPC_MESSAGE_HANDLER(ExtensionMsg_ExecuteCode, OnExecuteCode)
153 IPC_MESSAGE_HANDLER(ExtensionMsg_SetTabId, OnSetTabId) 153 IPC_MESSAGE_HANDLER(ExtensionMsg_SetTabId, OnSetTabId)
154 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateBrowserWindowId, 154 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateBrowserWindowId,
155 OnUpdateBrowserWindowId) 155 OnUpdateBrowserWindowId)
156 IPC_MESSAGE_HANDLER(ExtensionMsg_NotifyRenderViewType, 156 IPC_MESSAGE_HANDLER(ExtensionMsg_NotifyRenderViewType,
157 OnNotifyRendererViewType) 157 OnNotifyRendererViewType)
158 IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole, 158 IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole,
159 OnAddMessageToConsole) 159 OnAddMessageToConsole)
160 IPC_MESSAGE_HANDLER(ExtensionMsg_AppWindowClosed, 160 IPC_MESSAGE_HANDLER(ExtensionMsg_AppWindowClosed,
161 OnAppWindowClosed); 161 OnAppWindowClosed)
162 IPC_MESSAGE_HANDLER(ExtensionMsg_GrantContentScriptPermission,
163 OnGrantContentScriptPermission)
162 IPC_MESSAGE_UNHANDLED(handled = false) 164 IPC_MESSAGE_UNHANDLED(handled = false)
163 IPC_END_MESSAGE_MAP() 165 IPC_END_MESSAGE_MAP()
164 return handled; 166 return handled;
165 } 167 }
166 168
167 void ExtensionHelper::DidFinishDocumentLoad(WebLocalFrame* frame) { 169 void ExtensionHelper::DidFinishDocumentLoad(WebLocalFrame* frame) {
168 dispatcher_->user_script_slave()->InjectScripts( 170 dispatcher_->user_script_slave()->InjectScripts(
169 frame, UserScript::DOCUMENT_END); 171 frame, UserScript::DOCUMENT_END);
170 172
171 SchedulerMap::iterator i = g_schedulers.Get().find(frame); 173 SchedulerMap::iterator i = g_schedulers.Get().find(frame);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 212
211 void ExtensionHelper::FrameDetached(WebFrame* frame) { 213 void ExtensionHelper::FrameDetached(WebFrame* frame) {
212 // This could be called before DidCreateDataSource, in which case the frame 214 // This could be called before DidCreateDataSource, in which case the frame
213 // won't be in the map. 215 // won't be in the map.
214 SchedulerMap::iterator i = g_schedulers.Get().find(frame); 216 SchedulerMap::iterator i = g_schedulers.Get().find(frame);
215 if (i == g_schedulers.Get().end()) 217 if (i == g_schedulers.Get().end())
216 return; 218 return;
217 219
218 delete i->second; 220 delete i->second;
219 g_schedulers.Get().erase(i); 221 g_schedulers.Get().erase(i);
222
223 dispatcher_->user_script_slave()->NotifyFrameDetached(frame);
220 } 224 }
221 225
222 void ExtensionHelper::DidMatchCSS( 226 void ExtensionHelper::DidMatchCSS(
223 blink::WebLocalFrame* frame, 227 blink::WebLocalFrame* frame,
224 const blink::WebVector<blink::WebString>& newly_matching_selectors, 228 const blink::WebVector<blink::WebString>& newly_matching_selectors,
225 const blink::WebVector<blink::WebString>& stopped_matching_selectors) { 229 const blink::WebVector<blink::WebString>& stopped_matching_selectors) {
226 dispatcher_->DidMatchCSS( 230 dispatcher_->DidMatchCSS(
227 frame, newly_matching_selectors, stopped_matching_selectors); 231 frame, newly_matching_selectors, stopped_matching_selectors);
228 } 232 }
229 233
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 v8::Handle<v8::Context> v8_context = 343 v8::Handle<v8::Context> v8_context =
340 render_view()->GetWebView()->mainFrame()->mainWorldScriptContext(); 344 render_view()->GetWebView()->mainFrame()->mainWorldScriptContext();
341 ScriptContext* script_context = 345 ScriptContext* script_context =
342 dispatcher_->script_context_set().GetByV8Context(v8_context); 346 dispatcher_->script_context_set().GetByV8Context(v8_context);
343 if (!script_context) 347 if (!script_context)
344 return; 348 return;
345 script_context->module_system()->CallModuleMethod("app.window", 349 script_context->module_system()->CallModuleMethod("app.window",
346 "onAppWindowClosed"); 350 "onAppWindowClosed");
347 } 351 }
348 352
353 void ExtensionHelper::OnGrantContentScriptPermission(int request_id) {
354 dispatcher_->user_script_slave()->OnContentScriptGrantedPermission(
355 render_view(), request_id);
356 }
357
349 } // namespace extensions 358 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698