Chromium Code Reviews| 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..c5003bdf83e2a4aa094c73aeda60b5bb9de1e8f1 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,29 @@ 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_); |
| +} |
| + |
| +void ChromeRenderThreadObserver::OnRendererInterfaceRequest( |
|
sky
2016/12/08 16:06:23
Make declaration/definition order match.
nigeltao1
2016/12/08 23:59:09
Ha, I discovered some unused declarations in the .
|
| + chrome::mojom::RendererConfigurationAssociatedRequest request) { |
| + DCHECK(!renderer_configuration_binding_.is_bound()); |
| + renderer_configuration_binding_.Bind(std::move(request)); |
| +} |
| + |
| 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 +308,12 @@ bool ChromeRenderThreadObserver::OnControlMessageReceived( |
| void ChromeRenderThreadObserver::OnRenderProcessShutdown() { |
| visited_link_slave_.reset(); |
| + // This renderer_configuration_binding_.Unbind call works around tests that |
| + // run in single-process mode, where the renderer_configuration_binding_ |
| + // destructor is (mistakenly??) run on the wrong thread during teardown. See |
| + // https://groups.google.com/a/chromium.org/d/msg/chromium-mojo/BKjxN1DLdrc/vBCU5Pw5AAAJ |
|
sky
2016/12/08 16:06:24
I would file a bug on this.
nigeltao1
2016/12/08 23:59:09
I filed http://crbug.com/672646
|
| + if (renderer_configuration_binding_.is_bound()) |
|
nigeltao1
2016/12/08 06:37:04
rockot, please take a close look at this.
|
| + renderer_configuration_binding_.Unbind(); |
| } |
| void ChromeRenderThreadObserver::OnFieldTrialGroupFinalized( |
| @@ -301,7 +325,7 @@ 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; |
| } |