OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/renderer_host/render_view_host.h" | 5 #include "chrome/browser/renderer_host/render_view_host.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 | 138 |
139 // The process may (if we're sharing a process with another host that already | 139 // The process may (if we're sharing a process with another host that already |
140 // initialized it) or may not (we have our own process or the old process | 140 // initialized it) or may not (we have our own process or the old process |
141 // crashed) have been initialized. Calling Init multiple times will be | 141 // crashed) have been initialized. Calling Init multiple times will be |
142 // ignored, so this is safe. | 142 // ignored, so this is safe. |
143 if (!process()->Init()) | 143 if (!process()->Init()) |
144 return false; | 144 return false; |
145 DCHECK(process()->channel()); | 145 DCHECK(process()->channel()); |
146 DCHECK(process()->profile()); | 146 DCHECK(process()->profile()); |
147 | 147 |
148 if (enabled_bindings_ & BindingsPolicy::DOM_UI) { | 148 if (BindingsPolicy::is_dom_ui_enabled(enabled_bindings_)) { |
149 ChildProcessSecurityPolicy::GetInstance()->GrantDOMUIBindings( | 149 ChildProcessSecurityPolicy::GetInstance()->GrantDOMUIBindings( |
150 process()->pid()); | 150 process()->pid()); |
151 } | 151 } |
152 | 152 |
| 153 if (BindingsPolicy::is_extension_enabled(enabled_bindings_)) { |
| 154 ChildProcessSecurityPolicy::GetInstance()->GrantExtensionBindings( |
| 155 process()->pid()); |
| 156 } |
| 157 |
153 renderer_initialized_ = true; | 158 renderer_initialized_ = true; |
154 | 159 |
155 #if defined(OS_WIN) | 160 #if defined(OS_WIN) |
156 HANDLE modal_dialog_event_handle; | 161 HANDLE modal_dialog_event_handle; |
157 HANDLE renderer_process_handle = process()->process().handle(); | 162 HANDLE renderer_process_handle = process()->process().handle(); |
158 if (renderer_process_handle == NULL) | 163 if (renderer_process_handle == NULL) |
159 renderer_process_handle = GetCurrentProcess(); | 164 renderer_process_handle = GetCurrentProcess(); |
160 | 165 |
161 BOOL result = DuplicateHandle(GetCurrentProcess(), | 166 BOOL result = DuplicateHandle(GetCurrentProcess(), |
162 modal_dialog_event_->handle(), | 167 modal_dialog_event_->handle(), |
(...skipping 1254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1417 const std::string& origin, | 1422 const std::string& origin, |
1418 const std::string& target) { | 1423 const std::string& target) { |
1419 Send(new ViewMsg_HandleMessageFromExternalHost(routing_id(), message, origin, | 1424 Send(new ViewMsg_HandleMessageFromExternalHost(routing_id(), message, origin, |
1420 target)); | 1425 target)); |
1421 } | 1426 } |
1422 | 1427 |
1423 void RenderViewHost::OnExtensionRequest(const std::string& name, | 1428 void RenderViewHost::OnExtensionRequest(const std::string& name, |
1424 const std::string& args, | 1429 const std::string& args, |
1425 int request_id, | 1430 int request_id, |
1426 bool has_callback) { | 1431 bool has_callback) { |
1427 // TODO(aa): Here is where we can check that this renderer was supposed to be | 1432 if (!BindingsPolicy::is_extension_enabled(enabled_bindings_)) { |
1428 // able to call extension APIs. | 1433 NOTREACHED() << "Blocked unauthorized use of extension bindings."; |
| 1434 return; |
| 1435 } |
| 1436 |
1429 DCHECK(extension_function_dispatcher_.get()); | 1437 DCHECK(extension_function_dispatcher_.get()); |
1430 extension_function_dispatcher_->HandleRequest(name, args, request_id, | 1438 extension_function_dispatcher_->HandleRequest(name, args, request_id, |
1431 has_callback); | 1439 has_callback); |
1432 } | 1440 } |
1433 | 1441 |
1434 void RenderViewHost::SendExtensionResponse(int request_id, bool success, | 1442 void RenderViewHost::SendExtensionResponse(int request_id, bool success, |
1435 const std::string& response, | 1443 const std::string& response, |
1436 const std::string& error) { | 1444 const std::string& error) { |
1437 Send(new ViewMsg_ExtensionResponse(routing_id(), request_id, success, | 1445 Send(new ViewMsg_ExtensionResponse(routing_id(), request_id, success, |
1438 response, error)); | 1446 response, error)); |
1439 } | 1447 } |
1440 | 1448 |
1441 void RenderViewHost::OnExtensionPostMessage( | 1449 void RenderViewHost::OnExtensionPostMessage( |
1442 int port_id, const std::string& message) { | 1450 int port_id, const std::string& message) { |
1443 URLRequestContext* context = process()->profile()->GetRequestContext(); | 1451 URLRequestContext* context = process()->profile()->GetRequestContext(); |
1444 ExtensionMessageService::GetInstance(context)-> | 1452 ExtensionMessageService::GetInstance(context)-> |
1445 PostMessageFromRenderer(port_id, message); | 1453 PostMessageFromRenderer(port_id, message); |
1446 } | 1454 } |
1447 | 1455 |
1448 void RenderViewHost::OnAccessibilityFocusChange(int acc_obj_id) { | 1456 void RenderViewHost::OnAccessibilityFocusChange(int acc_obj_id) { |
1449 #if defined(OS_WIN) | 1457 #if defined(OS_WIN) |
1450 BrowserAccessibilityManager::GetInstance()-> | 1458 BrowserAccessibilityManager::GetInstance()-> |
1451 ChangeAccessibilityFocus(acc_obj_id, process()->pid(), routing_id()); | 1459 ChangeAccessibilityFocus(acc_obj_id, process()->pid(), routing_id()); |
1452 #else | 1460 #else |
1453 // TODO(port): accessibility not yet implemented. See http://crbug.com/8288. | 1461 // TODO(port): accessibility not yet implemented. See http://crbug.com/8288. |
1454 #endif | 1462 #endif |
1455 } | 1463 } |
OLD | NEW |