diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-05 03:05:00 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-05 03:05:00 +0000 |
commit | e515f5de833d9298682570fd2f70abb16d032912 (patch) | |
tree | 05b4a10956097b7e173ebbc8153c5b557180bac8 /chrome/browser/extensions/extension_browser_event_router.cc | |
parent | 126f4120902008da93759d7256c87e1e6d3ae70b (diff) | |
download | chromium_src-e515f5de833d9298682570fd2f70abb16d032912.zip chromium_src-e515f5de833d9298682570fd2f70abb16d032912.tar.gz chromium_src-e515f5de833d9298682570fd2f70abb16d032912.tar.bz2 |
implemented API style/convention changes, including:
-tabs.update()
-tabs.move()
-tabs.remove()
-tabs.update()
-tabs.create()
-tabs.get()
-all tab events, except onUpdated
implemented
-tabs.getSelected()
-tabs.getAllInWindow()
-windows.getCurrent()
-windows.getFocused()
-windows.getAll(populate)
-windows.onFocusedChanged()
-ExtensionBrowserEventRouter now uses BrowserList::Observer
Review URL: http://codereview.chromium.org/100345
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15271 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_browser_event_router.cc')
-rw-r--r-- | chrome/browser/extensions/extension_browser_event_router.cc | 106 |
1 files changed, 54 insertions, 52 deletions
diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc index fb3d354..f4853ea 100644 --- a/chrome/browser/extensions/extension_browser_event_router.cc +++ b/chrome/browser/extensions/extension_browser_event_router.cc @@ -22,6 +22,7 @@ const char* kOnTabDetached = "tab-detached"; const char* kOnTabRemoved = "tab-removed"; const char* kOnWindowCreated = "window-created"; const char* kOnWindowRemoved = "window-removed"; +const char* kOnWindowFocusedChanged = "window-focus-changed"; ExtensionBrowserEventRouter* ExtensionBrowserEventRouter::GetInstance() { return Singleton<ExtensionBrowserEventRouter>::get(); @@ -34,14 +35,22 @@ static void DispatchEvent(Profile *profile, DispatchEventToRenderers(event_name, json_args); } +static void DispatchSimpleBrowserEvent(Profile *profile, const int window_id, + const char* event_name) { + ListValue args; + args.Append(Value::CreateIntegerValue(window_id)); + + std::string json_args; + JSONWriter::Write(&args, false, &json_args); + + DispatchEvent(profile, event_name, json_args); +} + void ExtensionBrowserEventRouter::Init() { if (initialized_) return; - NotificationService::current()->AddObserver(this, - NotificationType::BROWSER_OPENED, NotificationService::AllSources()); - NotificationService::current()->AddObserver(this, - NotificationType::BROWSER_CLOSED, NotificationService::AllSources()); + BrowserList::AddObserver(this); initialized_ = true; } @@ -49,75 +58,67 @@ void ExtensionBrowserEventRouter::Init() { ExtensionBrowserEventRouter::ExtensionBrowserEventRouter() : initialized_(false) { } -// NotificationObserver -void ExtensionBrowserEventRouter::Observe(NotificationType type, - const NotificationSource& source, const NotificationDetails& details) { - Browser* browser; - - switch (type.value) { - 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(); - break; - } +void ExtensionBrowserEventRouter::OnBrowserAdded(const Browser* browser) { + // Start listening to TabStripModel events for this browser. + browser->tabstrip_model()->AddObserver(this); + + DispatchSimpleBrowserEvent(browser->profile(), + ExtensionTabUtil::GetWindowId(browser), + kOnWindowCreated); } -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); +void ExtensionBrowserEventRouter::OnBrowserRemoving(const Browser* browser) { + // Stop listening to TabStripModel events for this browser. + browser->tabstrip_model()->RemoveObserver(this); - DispatchEvent(browser->profile(), kOnWindowCreated, json_args); + DispatchSimpleBrowserEvent(browser->profile(), + ExtensionTabUtil::GetWindowId(browser), + kOnWindowRemoved); } -void ExtensionBrowserEventRouter::BrowserClosed(Browser* browser) { - int window_id = ExtensionTabUtil::GetWindowId(browser); +void ExtensionBrowserEventRouter::OnBrowserSetLastActive( + const Browser* browser) { + DispatchSimpleBrowserEvent(browser->profile(), + ExtensionTabUtil::GetWindowId(browser), + kOnWindowFocusedChanged); +} +void ExtensionBrowserEventRouter::TabCreatedAt(TabContents* contents, + int index, + bool foreground) { ListValue args; - args.Append(Value::CreateIntegerValue(window_id)); - + args.Append(ExtensionTabUtil::CreateTabValue(contents)); std::string json_args; JSONWriter::Write(&args, false, &json_args); - DispatchEvent(browser->profile(), kOnWindowRemoved, json_args); + DispatchEvent(contents->profile(), kOnTabCreated, json_args); } void ExtensionBrowserEventRouter::TabInsertedAt(TabContents* contents, int index, bool foreground) { - const char* event_name = kOnTabAttached; // If tab is new, send tab-created event. int tab_id = ExtensionTabUtil::GetTabId(contents); if (tab_ids_.find(tab_id) == tab_ids_.end()) { tab_ids_.insert(tab_id); - event_name = kOnTabCreated; + + TabCreatedAt(contents, index, foreground); + return; } ListValue args; + args.Append(Value::CreateIntegerValue(tab_id)); + DictionaryValue *object_args = new DictionaryValue(); - object_args->Set(L"tabId", Value::CreateIntegerValue(tab_id)); - object_args->Set(L"windowId", Value::CreateIntegerValue( + object_args->Set(L"newWindowId", Value::CreateIntegerValue( ExtensionTabUtil::GetWindowIdOfTab(contents))); - object_args->Set(L"index", Value::CreateIntegerValue(index)); + object_args->Set(L"newPosition", Value::CreateIntegerValue(index)); args.Append(object_args); std::string json_args; JSONWriter::Write(&args, false, &json_args); - DispatchEvent(contents->profile(), event_name, json_args); + DispatchEvent(contents->profile(), kOnTabAttached, json_args); } void ExtensionBrowserEventRouter::TabDetachedAt(TabContents* contents, @@ -129,11 +130,12 @@ void ExtensionBrowserEventRouter::TabDetachedAt(TabContents* contents, } ListValue args; + args.Append(Value::CreateIntegerValue(tab_id)); + DictionaryValue *object_args = new DictionaryValue(); - object_args->Set(L"tabId", Value::CreateIntegerValue(tab_id)); - object_args->Set(L"windowId", Value::CreateIntegerValue( + object_args->Set(L"oldWindowId", Value::CreateIntegerValue( ExtensionTabUtil::GetWindowIdOfTab(contents))); - object_args->Set(L"index", Value::CreateIntegerValue(index)); + object_args->Set(L"oldPosition", Value::CreateIntegerValue(index)); args.Append(object_args); std::string json_args; @@ -163,12 +165,12 @@ void ExtensionBrowserEventRouter::TabSelectedAt(TabContents* old_contents, int index, bool user_gesture) { ListValue args; - DictionaryValue *object_args = new DictionaryValue(); - object_args->Set(L"tabId", Value::CreateIntegerValue( + args.Append(Value::CreateIntegerValue( ExtensionTabUtil::GetTabId(new_contents))); + + DictionaryValue *object_args = new DictionaryValue(); object_args->Set(L"windowId", Value::CreateIntegerValue( ExtensionTabUtil::GetWindowIdOfTab(new_contents))); - object_args->Set(L"index", Value::CreateIntegerValue(index)); args.Append(object_args); std::string json_args; @@ -181,9 +183,9 @@ void ExtensionBrowserEventRouter::TabMoved(TabContents* contents, int from_index, int to_index) { ListValue args; + args.Append(Value::CreateIntegerValue(ExtensionTabUtil::GetTabId(contents))); + DictionaryValue *object_args = new DictionaryValue(); - object_args->Set(L"tabId", Value::CreateIntegerValue( - ExtensionTabUtil::GetTabId(contents))); object_args->Set(L"windowId", Value::CreateIntegerValue( ExtensionTabUtil::GetWindowIdOfTab(contents))); object_args->Set(L"fromIndex", Value::CreateIntegerValue(from_index)); |