diff options
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 91efbf4..043a2b9 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -14,6 +14,7 @@ #include "base/string_piece.h" #include "base/string_util.h" #include "build/build_config.h" +#include "chrome/common/bindings_policy.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/gfx/favicon_size.h" #include "chrome/common/gfx/color_utils.h" @@ -158,9 +159,7 @@ class RenderViewExtraRequestData : public WebRequest::ExtraData { RenderView::RenderView(RenderThreadBase* render_thread) : RenderWidget(render_thread, true), - enable_dom_automation_(false), - enable_dom_ui_bindings_(false), - enable_external_host_bindings_(false), + enabled_bindings_(0), target_url_status_(TARGET_NONE), is_loading_(false), navigation_gesture_(NavigationGestureUnknown), @@ -312,8 +311,8 @@ void RenderView::Init(gfx::NativeViewId parent_hwnd, modal_dialog_event_.reset(modal_dialog_event); const CommandLine& command_line = *CommandLine::ForCurrentProcess(); - enable_dom_automation_ = - command_line.HasSwitch(switches::kDomAutomationController); + if (command_line.HasSwitch(switches::kDomAutomationController)) + enabled_bindings_ |= BindingsPolicy::DOM_AUTOMATION; disable_popup_blocking_ = command_line.HasSwitch(switches::kDisablePopupBlocking); @@ -382,8 +381,6 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(ViewMsg_DragTargetDragOver, OnDragTargetDragOver) IPC_MESSAGE_HANDLER(ViewMsg_DragTargetDragLeave, OnDragTargetDragLeave) IPC_MESSAGE_HANDLER(ViewMsg_DragTargetDrop, OnDragTargetDrop) - IPC_MESSAGE_HANDLER(ViewMsg_AllowDomAutomationBindings, - OnAllowDomAutomationBindings) IPC_MESSAGE_HANDLER(ViewMsg_AllowBindings, OnAllowBindings) IPC_MESSAGE_HANDLER(ViewMsg_SetDOMUIProperty, OnSetDOMUIProperty) IPC_MESSAGE_HANDLER(ViewMsg_DragSourceEndedOrMoved, @@ -1531,18 +1528,23 @@ void RenderView::BindDOMAutomationController(WebFrame* webframe) { void RenderView::WindowObjectCleared(WebFrame* webframe) { external_js_object_.set_render_view(this); external_js_object_.BindToJavascript(webframe, L"external"); - if (enable_dom_automation_) + if (BindingsPolicy::is_dom_automation_enabled(enabled_bindings_)) BindDOMAutomationController(webframe); - if (enable_dom_ui_bindings_) { + if (BindingsPolicy::is_dom_ui_enabled(enabled_bindings_)) { dom_ui_bindings_.set_message_sender(this); dom_ui_bindings_.set_routing_id(routing_id_); dom_ui_bindings_.BindToJavascript(webframe, L"chrome"); } - if (enable_external_host_bindings_) { + if (BindingsPolicy::is_external_host_enabled(enabled_bindings_)) { external_host_bindings_.set_message_sender(this); external_host_bindings_.set_routing_id(routing_id_); external_host_bindings_.BindToJavascript(webframe, L"externalHost"); } + if (BindingsPolicy::is_extension_enabled(enabled_bindings_)) { + extension_bindings_.set_message_sender(this); + extension_bindings_.set_routing_id(routing_id_); + extension_bindings_.BindToJavascript(webframe, L"extension"); + } #ifdef CHROME_PERSONALIZATION Personalization::ConfigureRendererPersonalization(personalization_, this, @@ -1578,7 +1580,7 @@ WindowOpenDisposition RenderView::DispositionForNavigationAction( if (frame == webview->GetMainFrame() && !request->GetExtraData()) { // When we received such unsolicited navigations, we sometimes want to // punt them up to the browser to handle. - if (enable_dom_ui_bindings_ || + if (BindingsPolicy::is_dom_ui_enabled(enabled_bindings_) || frame->GetInViewSourceMode() || url.SchemeIs(chrome::kViewSourceScheme)) { OpenURL(webview, url, GURL(), disposition); @@ -2529,19 +2531,13 @@ void RenderView::OnDebugAttach() { NOTIMPLEMENTED(); } void RenderView::OnDebugDetach() { NOTIMPLEMENTED(); } #endif -void RenderView::OnAllowDomAutomationBindings(bool allow_bindings) { - enable_dom_automation_ = allow_bindings; -} - -void RenderView::OnAllowBindings(bool enable_dom_ui_bindings, - bool enable_external_host_bindings) { - enable_dom_ui_bindings_ = enable_dom_ui_bindings; - enable_external_host_bindings_ = enable_external_host_bindings; +void RenderView::OnAllowBindings(int enabled_bindings_flags) { + enabled_bindings_ |= enabled_bindings_flags; } void RenderView::OnSetDOMUIProperty(const std::string& name, const std::string& value) { - DCHECK(enable_dom_ui_bindings_); + DCHECK(BindingsPolicy::is_dom_ui_enabled(enabled_bindings_)); dom_ui_bindings_.SetProperty(name, value); } |