OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/renderer/chrome_render_thread_observer.h" | 5 #include "chrome/renderer/chrome_render_thread_observer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 #include <memory> | 10 #include <memory> |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 std::move(request)); | 229 std::move(request)); |
230 } | 230 } |
231 | 231 |
232 } // namespace | 232 } // namespace |
233 | 233 |
234 bool ChromeRenderThreadObserver::is_incognito_process_ = false; | 234 bool ChromeRenderThreadObserver::is_incognito_process_ = false; |
235 | 235 |
236 ChromeRenderThreadObserver::ChromeRenderThreadObserver() | 236 ChromeRenderThreadObserver::ChromeRenderThreadObserver() |
237 : field_trial_syncer_(this), | 237 : field_trial_syncer_(this), |
238 visited_link_slave_(new visitedlink::VisitedLinkSlave), | 238 visited_link_slave_(new visitedlink::VisitedLinkSlave), |
| 239 renderer_configuration_binding_(this), |
239 weak_factory_(this) { | 240 weak_factory_(this) { |
240 const base::CommandLine& command_line = | 241 const base::CommandLine& command_line = |
241 *base::CommandLine::ForCurrentProcess(); | 242 *base::CommandLine::ForCurrentProcess(); |
242 | 243 |
243 RenderThread* thread = RenderThread::Get(); | 244 RenderThread* thread = RenderThread::Get(); |
244 resource_delegate_.reset(new RendererResourceDelegate()); | 245 resource_delegate_.reset(new RendererResourceDelegate()); |
245 thread->SetResourceDispatcherDelegate(resource_delegate_.get()); | 246 thread->SetResourceDispatcherDelegate(resource_delegate_.get()); |
246 | 247 |
247 thread->GetInterfaceRegistry()->AddInterface( | 248 thread->GetInterfaceRegistry()->AddInterface( |
248 base::Bind(CreateResourceUsageReporter, weak_factory_.GetWeakPtr())); | 249 base::Bind(CreateResourceUsageReporter, weak_factory_.GetWeakPtr())); |
(...skipping 18 matching lines...) Expand all Loading... |
267 WebSecurityPolicy::registerURLSchemeAsNoAccess(native_scheme); | 268 WebSecurityPolicy::registerURLSchemeAsNoAccess(native_scheme); |
268 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs( | 269 WebSecurityPolicy::registerURLSchemeAsNotAllowingJavascriptURLs( |
269 native_scheme); | 270 native_scheme); |
270 | 271 |
271 thread->GetInterfaceRegistry()->AddInterface( | 272 thread->GetInterfaceRegistry()->AddInterface( |
272 visited_link_slave_->GetBindCallback()); | 273 visited_link_slave_->GetBindCallback()); |
273 } | 274 } |
274 | 275 |
275 ChromeRenderThreadObserver::~ChromeRenderThreadObserver() {} | 276 ChromeRenderThreadObserver::~ChromeRenderThreadObserver() {} |
276 | 277 |
| 278 void ChromeRenderThreadObserver::RegisterMojoInterfaces( |
| 279 content::AssociatedInterfaceRegistry* associated_interfaces) { |
| 280 associated_interfaces->AddInterface( |
| 281 base::Bind(&ChromeRenderThreadObserver::OnRendererInterfaceRequest, |
| 282 base::Unretained(this))); |
| 283 } |
| 284 |
| 285 void ChromeRenderThreadObserver::UnregisterMojoInterfaces( |
| 286 content::AssociatedInterfaceRegistry* associated_interfaces) { |
| 287 associated_interfaces->RemoveInterface( |
| 288 chrome::mojom::RendererConfiguration::Name_); |
| 289 } |
| 290 |
277 bool ChromeRenderThreadObserver::OnControlMessageReceived( | 291 bool ChromeRenderThreadObserver::OnControlMessageReceived( |
278 const IPC::Message& message) { | 292 const IPC::Message& message) { |
279 bool handled = true; | 293 bool handled = true; |
280 IPC_BEGIN_MESSAGE_MAP(ChromeRenderThreadObserver, message) | 294 IPC_BEGIN_MESSAGE_MAP(ChromeRenderThreadObserver, message) |
281 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetIsIncognitoProcess, | |
282 OnSetIsIncognitoProcess) | |
283 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetFieldTrialGroup, OnSetFieldTrialGroup) | 295 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetFieldTrialGroup, OnSetFieldTrialGroup) |
284 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetContentSettingRules, | 296 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetContentSettingRules, |
285 OnSetContentSettingRules) | 297 OnSetContentSettingRules) |
286 IPC_MESSAGE_UNHANDLED(handled = false) | 298 IPC_MESSAGE_UNHANDLED(handled = false) |
287 IPC_END_MESSAGE_MAP() | 299 IPC_END_MESSAGE_MAP() |
288 return handled; | 300 return handled; |
289 } | 301 } |
290 | 302 |
291 void ChromeRenderThreadObserver::OnRenderProcessShutdown() { | 303 void ChromeRenderThreadObserver::OnRenderProcessShutdown() { |
292 visited_link_slave_.reset(); | 304 visited_link_slave_.reset(); |
| 305 |
| 306 // Workaround for http://crbug.com/672646 |
| 307 if (renderer_configuration_binding_.is_bound()) |
| 308 renderer_configuration_binding_.Unbind(); |
293 } | 309 } |
294 | 310 |
295 void ChromeRenderThreadObserver::OnFieldTrialGroupFinalized( | 311 void ChromeRenderThreadObserver::OnFieldTrialGroupFinalized( |
296 const std::string& trial_name, | 312 const std::string& trial_name, |
297 const std::string& group_name) { | 313 const std::string& group_name) { |
298 chrome::mojom::FieldTrialRecorderPtr field_trial_recorder; | 314 chrome::mojom::FieldTrialRecorderPtr field_trial_recorder; |
299 content::RenderThread::Get()->GetRemoteInterfaces()->GetInterface( | 315 content::RenderThread::Get()->GetRemoteInterfaces()->GetInterface( |
300 &field_trial_recorder); | 316 &field_trial_recorder); |
301 field_trial_recorder->FieldTrialActivated(trial_name); | 317 field_trial_recorder->FieldTrialActivated(trial_name); |
302 } | 318 } |
303 | 319 |
304 void ChromeRenderThreadObserver::OnSetIsIncognitoProcess( | 320 void ChromeRenderThreadObserver::SetInitialConfiguration( |
305 bool is_incognito_process) { | 321 bool is_incognito_process) { |
306 is_incognito_process_ = is_incognito_process; | 322 is_incognito_process_ = is_incognito_process; |
307 } | 323 } |
308 | 324 |
| 325 void ChromeRenderThreadObserver::OnRendererInterfaceRequest( |
| 326 chrome::mojom::RendererConfigurationAssociatedRequest request) { |
| 327 DCHECK(!renderer_configuration_binding_.is_bound()); |
| 328 renderer_configuration_binding_.Bind(std::move(request)); |
| 329 } |
| 330 |
309 void ChromeRenderThreadObserver::OnSetContentSettingRules( | 331 void ChromeRenderThreadObserver::OnSetContentSettingRules( |
310 const RendererContentSettingRules& rules) { | 332 const RendererContentSettingRules& rules) { |
311 content_setting_rules_ = rules; | 333 content_setting_rules_ = rules; |
312 } | 334 } |
313 | 335 |
314 void ChromeRenderThreadObserver::OnSetFieldTrialGroup( | 336 void ChromeRenderThreadObserver::OnSetFieldTrialGroup( |
315 const std::string& trial_name, | 337 const std::string& trial_name, |
316 const std::string& group_name) { | 338 const std::string& group_name) { |
317 field_trial_syncer_.OnSetFieldTrialGroup(trial_name, group_name); | 339 field_trial_syncer_.OnSetFieldTrialGroup(trial_name, group_name); |
318 } | 340 } |
319 | 341 |
320 const RendererContentSettingRules* | 342 const RendererContentSettingRules* |
321 ChromeRenderThreadObserver::content_setting_rules() const { | 343 ChromeRenderThreadObserver::content_setting_rules() const { |
322 return &content_setting_rules_; | 344 return &content_setting_rules_; |
323 } | 345 } |
OLD | NEW |