Index: chrome/browser/extensions/extension_browser_event_router.cc |
diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc |
index cefef154b245a4954e905673a0564313bea3ac8a..c05e793a889fb1358302d9584255953f5447cdbb 100644 |
--- a/chrome/browser/extensions/extension_browser_event_router.cc |
+++ b/chrome/browser/extensions/extension_browser_event_router.cc |
@@ -13,6 +13,8 @@ |
#include "chrome/browser/extensions/extension_tabs_module.h" |
#include "chrome/common/notification_service.h" |
+const char* kOnWindowCreated = "window-created"; |
+const char* kOnWindowRemoved = "window-removed"; |
const char* kOnTabCreated = "tab-created"; |
const char* kOnTabMoved = "tab-moved"; |
const char* kOnTabSelectionChanged = "tab-selection-changed"; |
@@ -55,10 +57,12 @@ void ExtensionBrowserEventRouter::Observe(NotificationType type, |
case(NotificationType::BROWSER_OPENED) : |
browser = Source<Browser>(source).ptr(); |
browser->tabstrip_model()->AddObserver(this); |
+ BrowserOpened(browser); |
break; |
case(NotificationType::BROWSER_CLOSED) : |
browser = Source<Browser>(source).ptr(); |
browser->tabstrip_model()->RemoveObserver(this); |
+ BrowserClosed(browser); |
break; |
default: |
NOTREACHED(); |
@@ -66,6 +70,30 @@ void ExtensionBrowserEventRouter::Observe(NotificationType type, |
} |
} |
+void ExtensionBrowserEventRouter::BrowserOpened(Browser* browser) { |
+ int window_id = ExtensionTabUtil::GetWindowId(browser); |
+ |
+ ListValue args; |
+ args.Append(Value::CreateIntegerValue(window_id)); |
+ |
+ std::string json_args; |
+ JSONWriter::Write(&args, false, &json_args); |
+ |
+ DispatchEvent(browser->profile(), kOnWindowCreated, json_args); |
+} |
+ |
+void ExtensionBrowserEventRouter::BrowserClosed(Browser* browser) { |
+ int window_id = ExtensionTabUtil::GetWindowId(browser); |
+ |
+ ListValue args; |
+ args.Append(Value::CreateIntegerValue(window_id)); |
+ |
+ std::string json_args; |
+ JSONWriter::Write(&args, false, &json_args); |
+ |
+ DispatchEvent(browser->profile(), kOnWindowRemoved, json_args); |
+} |
+ |
void ExtensionBrowserEventRouter::TabInsertedAt(TabContents* contents, |
int index, |
bool foreground) { |