Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 5b9e5a1c2a30fb36139584ee69881c34f8a61f24..43567b9c05b33a2d18134714deb437771a2c4705 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -1090,10 +1090,7 @@ void RenderFrameImpl::Initialize() { |
"parent", parent_id); |
} |
- if (IsMainFrame() && |
- RenderProcess::current()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI) { |
- EnableMojoBindings(false /* for_layout_tests */); |
- } |
+ MaybeEnableMojoBindings(); |
#if defined(ENABLE_PLUGINS) |
new PepperBrowserConnection(this); |
@@ -5766,12 +5763,26 @@ void RenderFrameImpl::SendUpdateState() { |
routing_id_, SingleHistoryItemToPageState(current_history_item_))); |
} |
-void RenderFrameImpl::EnableMojoBindings(bool for_layout_tests) { |
+void RenderFrameImpl::MaybeEnableMojoBindings() { |
+ int enabled_bindings = RenderProcess::current()->GetEnabledBindings(); |
+ // BINDINGS_POLICY_WEB_UI and BINDINGS_POLICY_MOJO are mutually exclusive. |
+ // They both provide access to Mojo bindings, but do so in incompatible ways. |
+ const int kMojoAndWebUiBindings = |
+ BINDINGS_POLICY_WEB_UI | BINDINGS_POLICY_MOJO; |
+ DCHECK_NE(enabled_bindings & kMojoAndWebUiBindings, kMojoAndWebUiBindings); |
+ |
// If an MojoBindingsController already exists for this RenderFrameImpl, avoid |
// creating another one. It is not kept as a member, as it deletes itself when |
// the frame is destroyed. |
- if (!RenderFrameObserverTracker<MojoBindingsController>::Get(this)) |
- new MojoBindingsController(this, for_layout_tests); |
+ if (RenderFrameObserverTracker<MojoBindingsController>::Get(this)) |
+ return; |
+ |
+ if (IsMainFrame() && |
+ enabled_bindings & BINDINGS_POLICY_WEB_UI) { |
+ new MojoBindingsController(this, false /* for_layout_tests */); |
+ } else if (enabled_bindings & BINDINGS_POLICY_MOJO) { |
+ new MojoBindingsController(this, true /* for_layout_tests */); |
+ } |
} |
void RenderFrameImpl::SendFailedProvisionalLoad( |