Index: chrome/renderer/chrome_render_thread_observer.cc |
diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/chrome_render_thread_observer.cc |
index 3b96a1577756971a9e423e4953ee1101aaf440de..9df76f7124ef6e230b75a37730c458e6bf075d68 100644 |
--- a/chrome/renderer/chrome_render_thread_observer.cc |
+++ b/chrome/renderer/chrome_render_thread_observer.cc |
@@ -236,6 +236,7 @@ bool ChromeRenderThreadObserver::is_incognito_process_ = false; |
ChromeRenderThreadObserver::ChromeRenderThreadObserver() |
: field_trial_syncer_(this), |
visited_link_slave_(new visitedlink::VisitedLinkSlave), |
+ renderer_configuration_binding_(this), |
weak_factory_(this) { |
const base::CommandLine& command_line = |
*base::CommandLine::ForCurrentProcess(); |
@@ -274,12 +275,23 @@ ChromeRenderThreadObserver::ChromeRenderThreadObserver() |
ChromeRenderThreadObserver::~ChromeRenderThreadObserver() {} |
+void ChromeRenderThreadObserver::RegisterMojoInterfaces( |
+ content::AssociatedInterfaceRegistry* associated_interfaces) { |
+ associated_interfaces->AddInterface( |
+ base::Bind(&ChromeRenderThreadObserver::OnRendererInterfaceRequest, |
+ base::Unretained(this))); |
+} |
+ |
+void ChromeRenderThreadObserver::UnregisterMojoInterfaces( |
+ content::AssociatedInterfaceRegistry* associated_interfaces) { |
+ associated_interfaces->RemoveInterface( |
+ chrome::mojom::RendererConfiguration::Name_); |
+} |
+ |
bool ChromeRenderThreadObserver::OnControlMessageReceived( |
const IPC::Message& message) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(ChromeRenderThreadObserver, message) |
- IPC_MESSAGE_HANDLER(ChromeViewMsg_SetIsIncognitoProcess, |
- OnSetIsIncognitoProcess) |
IPC_MESSAGE_HANDLER(ChromeViewMsg_SetFieldTrialGroup, OnSetFieldTrialGroup) |
IPC_MESSAGE_HANDLER(ChromeViewMsg_SetContentSettingRules, |
OnSetContentSettingRules) |
@@ -290,6 +302,10 @@ bool ChromeRenderThreadObserver::OnControlMessageReceived( |
void ChromeRenderThreadObserver::OnRenderProcessShutdown() { |
visited_link_slave_.reset(); |
+ |
+ // Workaround for http://crbug.com/672646 |
+ if (renderer_configuration_binding_.is_bound()) |
+ renderer_configuration_binding_.Unbind(); |
} |
void ChromeRenderThreadObserver::OnFieldTrialGroupFinalized( |
@@ -301,11 +317,17 @@ void ChromeRenderThreadObserver::OnFieldTrialGroupFinalized( |
field_trial_recorder->FieldTrialActivated(trial_name); |
} |
-void ChromeRenderThreadObserver::OnSetIsIncognitoProcess( |
+void ChromeRenderThreadObserver::SetInitialConfiguration( |
bool is_incognito_process) { |
is_incognito_process_ = is_incognito_process; |
} |
+void ChromeRenderThreadObserver::OnRendererInterfaceRequest( |
+ chrome::mojom::RendererConfigurationAssociatedRequest request) { |
+ DCHECK(!renderer_configuration_binding_.is_bound()); |
+ renderer_configuration_binding_.Bind(std::move(request)); |
+} |
+ |
void ChromeRenderThreadObserver::OnSetContentSettingRules( |
const RendererContentSettingRules& rules) { |
content_setting_rules_ = rules; |