OLD | NEW |
---|---|
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 "content/public/renderer/render_view.h" | 7 #include "content/public/renderer/render_view.h" |
8 #include "content/public/renderer/render_view_visitor.h" | 8 #include "content/public/renderer/render_view_visitor.h" |
9 #include "extensions/common/api/messaging/message.h" | 9 #include "extensions/common/api/messaging/message.h" |
10 #include "extensions/common/constants.h" | 10 #include "extensions/common/constants.h" |
11 #include "extensions/common/extension_messages.h" | 11 #include "extensions/common/extension_messages.h" |
12 #include "extensions/common/permissions/permissions_data.h" | |
13 #include "extensions/common/url_pattern_set.h" | |
12 #include "extensions/renderer/api/automation/automation_api_helper.h" | 14 #include "extensions/renderer/api/automation/automation_api_helper.h" |
13 #include "extensions/renderer/console.h" | 15 #include "extensions/renderer/console.h" |
14 #include "extensions/renderer/dispatcher.h" | 16 #include "extensions/renderer/dispatcher.h" |
15 #include "extensions/renderer/messaging_bindings.h" | 17 #include "extensions/renderer/messaging_bindings.h" |
16 #include "third_party/WebKit/public/platform/WebURLRequest.h" | 18 #include "third_party/WebKit/public/platform/WebURLRequest.h" |
17 #include "third_party/WebKit/public/web/WebConsoleMessage.h" | 19 #include "third_party/WebKit/public/web/WebConsoleMessage.h" |
18 #include "third_party/WebKit/public/web/WebDocument.h" | 20 #include "third_party/WebKit/public/web/WebDocument.h" |
19 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 21 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
20 #include "third_party/WebKit/public/web/WebView.h" | 22 #include "third_party/WebKit/public/web/WebView.h" |
21 | 23 |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
143 IPC_MESSAGE_HANDLER(ExtensionMsg_SetFrameName, OnSetFrameName) | 145 IPC_MESSAGE_HANDLER(ExtensionMsg_SetFrameName, OnSetFrameName) |
144 IPC_MESSAGE_HANDLER(ExtensionMsg_SetTabId, OnSetTabId) | 146 IPC_MESSAGE_HANDLER(ExtensionMsg_SetTabId, OnSetTabId) |
145 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateBrowserWindowId, | 147 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateBrowserWindowId, |
146 OnUpdateBrowserWindowId) | 148 OnUpdateBrowserWindowId) |
147 IPC_MESSAGE_HANDLER(ExtensionMsg_NotifyRenderViewType, | 149 IPC_MESSAGE_HANDLER(ExtensionMsg_NotifyRenderViewType, |
148 OnNotifyRendererViewType) | 150 OnNotifyRendererViewType) |
149 IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole, | 151 IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole, |
150 OnAddMessageToConsole) | 152 OnAddMessageToConsole) |
151 IPC_MESSAGE_HANDLER(ExtensionMsg_AppWindowClosed, | 153 IPC_MESSAGE_HANDLER(ExtensionMsg_AppWindowClosed, |
152 OnAppWindowClosed) | 154 OnAppWindowClosed) |
155 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateTabSpecificPermissions, | |
156 OnUpdateTabSpecificPermissions) | |
157 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions, | |
158 OnClearTabSpecificPermissions) | |
153 IPC_MESSAGE_UNHANDLED(handled = false) | 159 IPC_MESSAGE_UNHANDLED(handled = false) |
154 IPC_END_MESSAGE_MAP() | 160 IPC_END_MESSAGE_MAP() |
155 return handled; | 161 return handled; |
156 } | 162 } |
157 | 163 |
158 void ExtensionHelper::DidCreateDocumentElement(WebLocalFrame* frame) { | 164 void ExtensionHelper::DidCreateDocumentElement(WebLocalFrame* frame) { |
159 dispatcher_->DidCreateDocumentElement(frame); | 165 dispatcher_->DidCreateDocumentElement(frame); |
160 } | 166 } |
161 | 167 |
162 void ExtensionHelper::DraggableRegionsChanged(blink::WebFrame* frame) { | 168 void ExtensionHelper::DraggableRegionsChanged(blink::WebFrame* frame) { |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
258 v8::Handle<v8::Context> v8_context = | 264 v8::Handle<v8::Context> v8_context = |
259 render_view()->GetWebView()->mainFrame()->mainWorldScriptContext(); | 265 render_view()->GetWebView()->mainFrame()->mainWorldScriptContext(); |
260 ScriptContext* script_context = | 266 ScriptContext* script_context = |
261 dispatcher_->script_context_set().GetByV8Context(v8_context); | 267 dispatcher_->script_context_set().GetByV8Context(v8_context); |
262 if (!script_context) | 268 if (!script_context) |
263 return; | 269 return; |
264 script_context->module_system()->CallModuleMethod("app.window", | 270 script_context->module_system()->CallModuleMethod("app.window", |
265 "onAppWindowClosed"); | 271 "onAppWindowClosed"); |
266 } | 272 } |
267 | 273 |
274 void ExtensionHelper::OnUpdateTabSpecificPermissions( | |
275 const GURL& url, | |
276 const std::string& extension_id, | |
277 const extensions::URLPatternSet& origin_set) { | |
278 // Check against the URL to avoid races. | |
279 GURL active_url(render_view()->GetWebView()->mainFrame()->document().url()); | |
280 if (active_url != url) | |
281 return; | |
282 | |
283 const Extension* extension = dispatcher_->extensions()->GetByID(extension_id); | |
284 if (!extension) | |
285 return; | |
286 | |
287 extension->permissions_data()->UpdateTabSpecificPermissions( | |
288 tab_id_, | |
289 new extensions::PermissionSet(extensions::APIPermissionSet(), | |
290 extensions::ManifestPermissionSet(), | |
291 origin_set, | |
292 extensions::URLPatternSet())); | |
293 } | |
294 | |
295 void ExtensionHelper::OnClearTabSpecificPermissions( | |
296 const std::vector<std::string>& extension_ids) { | |
297 for (std::vector<std::string>::const_iterator it = extension_ids.begin(); | |
not at google - send to devlin
2014/11/18 15:44:41
Convert this to foreach syntax while you're here?
| |
298 it != extension_ids.end(); | |
299 ++it) { | |
300 const extensions::Extension* extension = | |
301 dispatcher_->extensions()->GetByID(*it); | |
302 if (extension) | |
303 extension->permissions_data()->ClearTabSpecificPermissions(tab_id_); | |
304 } | |
305 } | |
306 | |
268 } // namespace extensions | 307 } // namespace extensions |
OLD | NEW |