summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_message_service.cc
diff options
context:
space:
mode:
authorcreis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-13 21:19:31 +0000
committercreis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-13 21:19:31 +0000
commit75e16bcd60ff7e60a375bbe0efd27f8ac919a756 (patch)
tree6a3aca93dc9e64ad58f1cef258bf3e9dc896af92 /chrome/browser/extensions/extension_message_service.cc
parenteefb9b4e064b484a1490abbaddeb92dffbc5e1ff (diff)
downloadchromium_src-75e16bcd60ff7e60a375bbe0efd27f8ac919a756.zip
chromium_src-75e16bcd60ff7e60a375bbe0efd27f8ac919a756.tar.gz
chromium_src-75e16bcd60ff7e60a375bbe0efd27f8ac919a756.tar.bz2
Expands the chrome.experimental.processes extension API.
Adds an onUpdated event that reports process metrics from the TaskManager, and modifies the TaskManager to support multiple independent observers. BUG=32302 TEST=ExtensionApiTest.Processes browsertest TEST=process_monitor sample extension Review URL: http://codereview.chromium.org/3597016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62458 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_message_service.cc')
-rw-r--r--chrome/browser/extensions/extension_message_service.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_message_service.cc b/chrome/browser/extensions/extension_message_service.cc
index 7e675f5..a25b384 100644
--- a/chrome/browser/extensions/extension_message_service.cc
+++ b/chrome/browser/extensions/extension_message_service.cc
@@ -10,6 +10,8 @@
#include "base/values.h"
#include "chrome/browser/child_process_security_policy.h"
#include "chrome/browser/extensions/extension_process_manager.h"
+#include "chrome/browser/extensions/extension_processes_api.h"
+#include "chrome/browser/extensions/extension_processes_api_constants.h"
#include "chrome/browser/extensions/extension_tabs_module.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/render_process_host.h"
@@ -168,10 +170,22 @@ void ExtensionMessageService::AddEventListener(const std::string& event_name,
extension_devtools_manager_->AddEventListener(event_name,
render_process_id);
}
+
+ // We lazily tell the TaskManager to start updating when listeners to the
+ // processes.onUpdated event arrive.
+ if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) {
+ ExtensionProcessesEventRouter::GetInstance()->ListenerAdded();
+ }
}
void ExtensionMessageService::RemoveEventListener(const std::string& event_name,
int render_process_id) {
+ // If a processes.onUpdated event listener is removed (or a process with one
+ // exits), then we let the TaskManager know that it has one fewer listener.
+ if (event_name.compare(extension_processes_api_constants::kOnUpdated) == 0) {
+ ExtensionProcessesEventRouter::GetInstance()->ListenerRemoved();
+ }
+
DCHECK_EQ(listeners_[event_name].count(render_process_id), 1u)
<< " PID=" << render_process_id << " event=" << event_name;
listeners_[event_name].erase(render_process_id);