Index: chrome/browser/extensions/extension_processes_api.h |
=================================================================== |
--- chrome/browser/extensions/extension_processes_api.h (revision 61514) |
+++ chrome/browser/extensions/extension_processes_api.h (working copy) |
@@ -6,14 +6,72 @@ |
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_PROCESSES_API_H__ |
#pragma once |
+#include <set> |
+#include <string> |
+ |
#include "chrome/browser/extensions/extension_function.h" |
+#include "chrome/browser/task_manager/task_manager.h" |
+#include "chrome/common/notification_observer.h" |
+#include "chrome/common/notification_registrar.h" |
+// Observes the Task Manager and routes the notifications as events to the |
+// extension system. |
+class ExtensionProcessesEventRouter : public TaskManagerModelObserver { |
+ public: |
+ // Single instance of the event router. |
+ static ExtensionProcessesEventRouter* GetInstance(); |
+ |
+ // Safe to call multiple times. |
+ void ObserveProfile(Profile* profile); |
+ |
+ // Called when an extension process wants to listen to process events. |
+ void ListenerAdded(); |
+ |
+ // Called when an extension process with a listener exits or removes it. |
+ void ListenerRemoved(); |
+ |
+ private: |
+ friend struct DefaultSingletonTraits<ExtensionProcessesEventRouter>; |
+ |
+ ExtensionProcessesEventRouter(); |
+ virtual ~ExtensionProcessesEventRouter(); |
+ |
+ // TaskManagerModelObserver::OnModelChanged. |
+ virtual void OnModelChanged() {} |
+ |
+ // TaskManagerModelObserver::OnItemsChanged. |
+ virtual void OnItemsChanged(int start, int length); |
+ |
+ // TaskManagerModelObserver::OnItemsAdded. |
+ virtual void OnItemsAdded(int start, int length) {} |
+ |
+ // TaskManagerModelObserver::OnItemsRemoved. |
+ virtual void OnItemsRemoved(int start, int length) {} |
+ |
+ void DispatchEvent(Profile* profile, |
+ const char* event_name, |
+ const std::string& json_args); |
+ |
+ // Used for tracking registrations to process related notifications. |
+ NotificationRegistrar registrar_; |
+ |
+ // Registered profiles. |
+ typedef std::set<Profile*> ProfileSet; |
+ ProfileSet profiles_; |
+ |
+ // TaskManager to observe for updates. |
+ TaskManagerModel* model_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ExtensionProcessesEventRouter); |
+}; |
+ |
+ |
// This extension function returns the Process object for the renderer process |
// currently in use by the specified Tab. |
class GetProcessForTabFunction : public SyncExtensionFunction { |
virtual ~GetProcessForTabFunction() {} |
virtual bool RunImpl(); |
- DECLARE_EXTENSION_FUNCTION_NAME("experimental.processes.getProcessForTab") |
+ DECLARE_EXTENSION_FUNCTION_NAME("experimental.processes.getProcessIdForTab") |
}; |
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PROCESSES_API_H__ |