| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/extension_host.h" | 5 #include "extensions/browser/extension_host.h" | 
| 6 | 6 | 
| 7 #include "base/logging.h" | 7 #include "base/logging.h" | 
| 8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" | 
| 9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" | 
| 10 #include "base/profiler/scoped_tracker.h" | 10 #include "base/profiler/scoped_tracker.h" | 
| 11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" | 
| 12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" | 
| 13 #include "content/public/browser/browser_context.h" | 13 #include "content/public/browser/browser_context.h" | 
| 14 #include "content/public/browser/content_browser_client.h" | 14 #include "content/public/browser/content_browser_client.h" | 
| 15 #include "content/public/browser/native_web_keyboard_event.h" | 15 #include "content/public/browser/native_web_keyboard_event.h" | 
| 16 #include "content/public/browser/notification_service.h" | 16 #include "content/public/browser/notification_service.h" | 
| 17 #include "content/public/browser/render_process_host.h" | 17 #include "content/public/browser/render_process_host.h" | 
| 18 #include "content/public/browser/render_view_host.h" | 18 #include "content/public/browser/render_view_host.h" | 
| 19 #include "content/public/browser/render_widget_host_view.h" | 19 #include "content/public/browser/render_widget_host_view.h" | 
| 20 #include "content/public/browser/site_instance.h" | 20 #include "content/public/browser/site_instance.h" | 
| 21 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" | 
|  | 22 #include "extensions/browser/bad_message.h" | 
| 22 #include "extensions/browser/event_router.h" | 23 #include "extensions/browser/event_router.h" | 
| 23 #include "extensions/browser/extension_error.h" | 24 #include "extensions/browser/extension_error.h" | 
| 24 #include "extensions/browser/extension_host_delegate.h" | 25 #include "extensions/browser/extension_host_delegate.h" | 
| 25 #include "extensions/browser/extension_host_observer.h" | 26 #include "extensions/browser/extension_host_observer.h" | 
| 26 #include "extensions/browser/extension_host_queue.h" | 27 #include "extensions/browser/extension_host_queue.h" | 
| 27 #include "extensions/browser/extension_registry.h" | 28 #include "extensions/browser/extension_registry.h" | 
| 28 #include "extensions/browser/extension_system.h" | 29 #include "extensions/browser/extension_system.h" | 
| 29 #include "extensions/browser/extensions_browser_client.h" | 30 #include "extensions/browser/extensions_browser_client.h" | 
| 30 #include "extensions/browser/load_monitoring_extension_host_queue.h" | 31 #include "extensions/browser/load_monitoring_extension_host_queue.h" | 
| 31 #include "extensions/browser/notification_types.h" | 32 #include "extensions/browser/notification_types.h" | 
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 358   // This way if a renderer _is_ compromised, it can really only affect itself. | 359   // This way if a renderer _is_ compromised, it can really only affect itself. | 
| 359   if (unacked_messages_.erase(event_id) > 0) { | 360   if (unacked_messages_.erase(event_id) > 0) { | 
| 360     FOR_EACH_OBSERVER(ExtensionHostObserver, observer_list_, | 361     FOR_EACH_OBSERVER(ExtensionHostObserver, observer_list_, | 
| 361                       OnBackgroundEventAcked(this, event_id)); | 362                       OnBackgroundEventAcked(this, event_id)); | 
| 362   } else { | 363   } else { | 
| 363     // We have received an unexpected event id from the renderer.  It might be | 364     // We have received an unexpected event id from the renderer.  It might be | 
| 364     // compromised or it might have some other issue.  Kill it just to be safe. | 365     // compromised or it might have some other issue.  Kill it just to be safe. | 
| 365     DCHECK(render_process_host()); | 366     DCHECK(render_process_host()); | 
| 366     LOG(ERROR) << "Killing renderer for extension " << extension_id() << " for " | 367     LOG(ERROR) << "Killing renderer for extension " << extension_id() << " for " | 
| 367                << "sending an EventAck message with a bad event id."; | 368                << "sending an EventAck message with a bad event id."; | 
| 368     render_process_host()->ReceivedBadMessage(); | 369     bad_message::ReceivedBadMessage(render_process_host(), | 
|  | 370                                     bad_message::EH_BAD_EVENT_ID); | 
| 369   } | 371   } | 
| 370 } | 372 } | 
| 371 | 373 | 
| 372 void ExtensionHost::OnIncrementLazyKeepaliveCount() { | 374 void ExtensionHost::OnIncrementLazyKeepaliveCount() { | 
| 373   ProcessManager::Get(browser_context_) | 375   ProcessManager::Get(browser_context_) | 
| 374       ->IncrementLazyKeepaliveCount(extension()); | 376       ->IncrementLazyKeepaliveCount(extension()); | 
| 375 } | 377 } | 
| 376 | 378 | 
| 377 void ExtensionHost::OnDecrementLazyKeepaliveCount() { | 379 void ExtensionHost::OnDecrementLazyKeepaliveCount() { | 
| 378   ProcessManager::Get(browser_context_) | 380   ProcessManager::Get(browser_context_) | 
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 469       UMA_HISTOGRAM_MEDIUM_TIMES("Extensions.BackgroundPageLoadTime2", | 471       UMA_HISTOGRAM_MEDIUM_TIMES("Extensions.BackgroundPageLoadTime2", | 
| 470                                  load_start_->Elapsed()); | 472                                  load_start_->Elapsed()); | 
| 471     } | 473     } | 
| 472   } else if (extension_host_type_ == VIEW_TYPE_EXTENSION_POPUP) { | 474   } else if (extension_host_type_ == VIEW_TYPE_EXTENSION_POPUP) { | 
| 473     UMA_HISTOGRAM_MEDIUM_TIMES("Extensions.PopupLoadTime2", | 475     UMA_HISTOGRAM_MEDIUM_TIMES("Extensions.PopupLoadTime2", | 
| 474                                load_start_->Elapsed()); | 476                                load_start_->Elapsed()); | 
| 475   } | 477   } | 
| 476 } | 478 } | 
| 477 | 479 | 
| 478 }  // namespace extensions | 480 }  // namespace extensions | 
| OLD | NEW | 
|---|