summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-22 00:32:52 +0000
committerrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-22 00:32:52 +0000
commit14d8c66e0f2ab42aa3a0bf4f626140ba3a3a6d76 (patch)
tree70ae56de0ae927fe89e6beee96bb41977c06b401 /chrome/browser
parent2d3c4998438e0de2d1e159023a79834e3a74e9e6 (diff)
downloadchromium_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.cc5
-rw-r--r--chrome/browser/extensions/extension_browser_event_router.cc21
-rw-r--r--chrome/browser/extensions/extension_browser_event_router.h4
-rw-r--r--chrome/browser/extensions/extension_uitest.cc3
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]\"]",