diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-22 00:32:52 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-22 00:32:52 +0000 |
commit | 14d8c66e0f2ab42aa3a0bf4f626140ba3a3a6d76 (patch) | |
tree | 70ae56de0ae927fe89e6beee96bb41977c06b401 /chrome/browser | |
parent | 2d3c4998438e0de2d1e159023a79834e3a74e9e6 (diff) | |
download | chromium_src-14d8c66e0f2ab42aa3a0bf4f626140ba3a3a6d76.zip chromium_src-14d8c66e0f2ab42aa3a0bf4f626140ba3a3a6d76.tar.gz chromium_src-14d8c66e0f2ab42aa3a0bf4f626140ba3a3a6d76.tar.bz2 |
Add NotificationType::BROWSER_WINDOW_READY, chrome.windows.onCreated now sends full window
BUG=NONE
Review URL: http://codereview.chromium.org/195030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26771 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser.cc | 5 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_browser_event_router.cc | 21 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_browser_event_router.h | 4 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_uitest.cc | 3 |
4 files changed, 26 insertions, 7 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 1a037c5..4c36ab2 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -294,6 +294,11 @@ void Browser::CreateBrowserWindow() { window_ = BrowserWindow::CreateBrowserWindow(this); + NotificationService::current()->Notify( + NotificationType::BROWSER_WINDOW_READY, + Source<Browser>(this), + NotificationService::NoDetails()); + // Show the First Run information bubble if we've been told to. PrefService* local_state = g_browser_process->local_state(); if (!local_state) diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc index c1bce54..b20853e 100644 --- a/chrome/browser/extensions/extension_browser_event_router.cc +++ b/chrome/browser/extensions/extension_browser_event_router.cc @@ -121,13 +121,19 @@ void ExtensionBrowserEventRouter::OnBrowserAdded(const Browser* browser) { // Start listening to TabStripModel events for this browser. browser->tabstrip_model()->AddObserver(this); + // The window isn't ready at this point, so we defer until it is. + registrar_.Add(this, NotificationType::BROWSER_WINDOW_READY, + Source<const Browser>(browser)); +} + +void ExtensionBrowserEventRouter::OnBrowserWindowReady(const Browser* browser) { ListValue args; - // TODO(rafaelw): This would ideally be returning a full Window object - // via ExtensionTabUtil::CreateWindowValue(), but the browser->window() - // isn't ready at the time we get the OnBrowserAdded event. - DictionaryValue* window_dictionary = new DictionaryValue(); - window_dictionary->SetInteger(extension_tabs_module_constants::kIdKey, - ExtensionTabUtil::GetWindowId(browser)); + + registrar_.Remove(this, NotificationType::BROWSER_WINDOW_READY, + Source<const Browser>(browser)); + + DictionaryValue* window_dictionary = ExtensionTabUtil::CreateWindowValue( + browser, false); args.Append(window_dictionary); std::string json_args; @@ -329,6 +335,9 @@ void ExtensionBrowserEventRouter::Observe(NotificationType type, Source<NavigationController>(&contents->controller())); registrar_.Remove(this, NotificationType::TAB_CONTENTS_DESTROYED, Source<TabContents>(contents)); + } else if (type == NotificationType::BROWSER_WINDOW_READY) { + const Browser* browser = Source<const Browser>(source).ptr(); + OnBrowserWindowReady(browser); } else { NOTREACHED(); } diff --git a/chrome/browser/extensions/extension_browser_event_router.h b/chrome/browser/extensions/extension_browser_event_router.h index c7aa3e9..fe3e9e7 100644 --- a/chrome/browser/extensions/extension_browser_event_router.h +++ b/chrome/browser/extensions/extension_browser_event_router.h @@ -35,6 +35,10 @@ class ExtensionBrowserEventRouter : public TabStripModelObserver, virtual void OnBrowserRemoving(const Browser* browser); virtual void OnBrowserSetLastActive(const Browser* browser); + // Called from Observe() on BROWSER_WINDOW_READY (not a part of + // BrowserList::Observer). + void OnBrowserWindowReady(const Browser* browser); + // TabStripModelObserver void TabInsertedAt(TabContents* contents, int index, bool foreground); void TabClosingAt(TabContents* contents, int index); diff --git a/chrome/browser/extensions/extension_uitest.cc b/chrome/browser/extensions/extension_uitest.cc index 0dcc28a..1f9238a 100644 --- a/chrome/browser/extensions/extension_uitest.cc +++ b/chrome/browser/extensions/extension_uitest.cc @@ -333,7 +333,8 @@ class BrowserEventAutomationProxy : public MultiMessageAutomationProxy { const char* BrowserEventAutomationProxy::events_[] = { // Window events. - "[\"windows.onCreated\", \"[{'id':42}]\"]", + "[\"windows.onCreated\", \"[{'id':42,'focused':true,'top':0,'left':0," + "'width':100,'height':100}]\"]", "[\"windows.onRemoved\", \"[42]\"]", |