diff options
author | huanr@chromium.org <huanr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-13 18:15:14 +0000 |
---|---|---|
committer | huanr@chromium.org <huanr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-13 18:15:14 +0000 |
commit | 14c0a03a516a1904225068e135e30769f2b36cb4 (patch) | |
tree | a26111b7f2dbeae57caadb38717b0f260fe14c8d /chrome/browser/automation/automation_provider.cc | |
parent | c799366e36aca3488f2941663cfc3448e77634c6 (diff) | |
download | chromium_src-14c0a03a516a1904225068e135e30769f2b36cb4.zip chromium_src-14c0a03a516a1904225068e135e30769f2b36cb4.tar.gz chromium_src-14c0a03a516a1904225068e135e30769f2b36cb4.tar.bz2 |
A few more UI commands: duplicate tab, open window.
Convert them to synchronous mode, move to
AutoMatedUITestBase, add unit test.
Review URL: http://codereview.chromium.org/66066
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13604 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/automation/automation_provider.cc')
-rw-r--r-- | chrome/browser/automation/automation_provider.cc | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc index 9dee930..1f1adc2 100644 --- a/chrome/browser/automation/automation_provider.cc +++ b/chrome/browser/automation/automation_provider.cc @@ -422,6 +422,36 @@ class TabClosedNotificationObserver : public TabStripNotificationObserver { IPC::Message* reply_message_; }; +class BrowserOpenedNotificationObserver : public NotificationObserver { + public: + BrowserOpenedNotificationObserver(AutomationProvider* automation, + IPC::Message* reply_message) + : automation_(automation), + reply_message_(reply_message) { + registrar_.Add(this, NotificationType::BROWSER_OPENED, + NotificationService::AllSources()); + } + + ~BrowserOpenedNotificationObserver() { + } + + virtual void Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details) { + if (type == NotificationType::BROWSER_OPENED) { + automation_->Send(reply_message_); + delete this; + } else { + NOTREACHED(); + } + } + + private: + AutomationProvider* automation_; + IPC::Message* reply_message_; + NotificationRegistrar registrar_; +}; + class BrowserClosedNotificationObserver : public NotificationObserver { public: BrowserClosedNotificationObserver(Browser* browser, @@ -463,6 +493,7 @@ struct CommandNotification { }; const struct CommandNotification command_notifications[] = { + {IDC_DUPLICATE_TAB, NotificationType::TAB_PARENTED}, {IDC_NEW_TAB, NotificationType::TAB_PARENTED} }; @@ -922,8 +953,8 @@ void AutomationProvider::OnMessageReceived(const IPC::Message& message) { SetFilteredInet); IPC_MESSAGE_HANDLER(AutomationMsg_DownloadDirectory, GetDownloadDirectory); - IPC_MESSAGE_HANDLER(AutomationMsg_OpenNewBrowserWindow, - OpenNewBrowserWindow); + IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_OpenNewBrowserWindow, + OpenNewBrowserWindow); IPC_MESSAGE_HANDLER(AutomationMsg_WindowForBrowser, GetWindowForBrowser); IPC_MESSAGE_HANDLER(AutomationMsg_AutocompleteEditForBrowser, @@ -2106,7 +2137,9 @@ void AutomationProvider::GetDownloadDirectory( } } -void AutomationProvider::OpenNewBrowserWindow(bool show) { +void AutomationProvider::OpenNewBrowserWindow(bool show, + IPC::Message* reply_message) { + new BrowserOpenedNotificationObserver(this, reply_message); // We may have no current browser windows open so don't rely on // asking an existing browser to execute the IDC_NEWWINDOW command Browser* browser = Browser::Create(profile_); |