diff options
author | huanr@chromium.org <huanr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-01 17:00:29 +0000 |
---|---|---|
committer | huanr@chromium.org <huanr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-01 17:00:29 +0000 |
commit | 2449703fd43147babd98ad124a396c445c3c3daf (patch) | |
tree | 910bf5f4344d79234b7e6e784479002f9997f83f /chrome/browser/automation | |
parent | d4bf3bf8357815bf18377b3451d1919b1cd12a05 (diff) | |
download | chromium_src-2449703fd43147babd98ad124a396c445c3c3daf.zip chromium_src-2449703fd43147babd98ad124a396c445c3c3daf.tar.gz chromium_src-2449703fd43147babd98ad124a396c445c3c3daf.tar.bz2 |
Making CloseWindow and CloseTab automation API
synchronous and robust.
Adding automation APIs with corresponding
IPC messages to count and find normal browser
windows.
Review URL: http://codereview.chromium.org/99268
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15058 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/automation')
-rw-r--r-- | chrome/browser/automation/automation_provider.cc | 20 | ||||
-rw-r--r-- | chrome/browser/automation/automation_provider.h | 4 |
2 files changed, 22 insertions, 2 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc index 67e4548..25131e5 100644 --- a/chrome/browser/automation/automation_provider.cc +++ b/chrome/browser/automation/automation_provider.cc @@ -902,10 +902,14 @@ void AutomationProvider::OnMessageReceived(const IPC::Message& message) { GetRedirectsFrom) IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindowCount, GetBrowserWindowCount) + IPC_MESSAGE_HANDLER(AutomationMsg_NormalBrowserWindowCount, + GetNormalBrowserWindowCount) IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindow, GetBrowserWindow) IPC_MESSAGE_HANDLER(AutomationMsg_LastActiveBrowserWindow, GetLastActiveBrowserWindow) IPC_MESSAGE_HANDLER(AutomationMsg_ActiveWindow, GetActiveWindow) + IPC_MESSAGE_HANDLER(AutomationMsg_FindNormalBrowserWindow, + FindNormalBrowserWindow) IPC_MESSAGE_HANDLER(AutomationMsg_IsWindowActive, IsWindowActive) IPC_MESSAGE_HANDLER(AutomationMsg_ActivateWindow, ActivateWindow); #if defined(OS_WIN) @@ -1304,6 +1308,11 @@ void AutomationProvider::GetBrowserWindowCount(int* window_count) { *window_count = static_cast<int>(BrowserList::size()); } +void AutomationProvider::GetNormalBrowserWindowCount(int* window_count) { + *window_count = static_cast<int>( + BrowserList::GetBrowserCountForType(profile_, Browser::TYPE_NORMAL)); +} + void AutomationProvider::GetShowingAppModalDialog(bool* showing_dialog, int* dialog_button) { AppModalDialog* dialog_delegate = AppModalDialogQueue::active_dialog(); @@ -1338,14 +1347,21 @@ void AutomationProvider::GetBrowserWindow(int index, int* handle) { *handle = 0; if (index >= 0) { BrowserList::const_iterator iter = BrowserList::begin(); - - for (; (iter != BrowserList::end()) && (index > 0); ++iter, --index); + for (; (iter != BrowserList::end()) && (index > 0); ++iter, --index); if (iter != BrowserList::end()) { *handle = browser_tracker_->Add(*iter); } } } +void AutomationProvider::FindNormalBrowserWindow(int* handle) { + *handle = 0; + Browser* browser = BrowserList::FindBrowserWithType(profile_, + Browser::TYPE_NORMAL); + if (browser) + *handle = browser_tracker_->Add(browser); +} + void AutomationProvider::GetLastActiveBrowserWindow(int* handle) { *handle = 0; Browser* browser = BrowserList::GetLastActive(); diff --git a/chrome/browser/automation/automation_provider.h b/chrome/browser/automation/automation_provider.h index a7cab75..8d62914 100644 --- a/chrome/browser/automation/automation_provider.h +++ b/chrome/browser/automation/automation_provider.h @@ -132,9 +132,13 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>, int handle, int* response_value); void GetBrowserWindowCount(int* window_count); + void GetNormalBrowserWindowCount(int* window_count); void GetShowingAppModalDialog(bool* showing_dialog, int* dialog_button); void ClickAppModalDialogButton(int button, bool* success); + // Be aware that the browser window returned might be of non TYPE_NORMAL + // or in incognito mode. void GetBrowserWindow(int index, int* handle); + void FindNormalBrowserWindow(int* handle); void GetLastActiveBrowserWindow(int* handle); void GetActiveWindow(int* handle); #if defined(OS_WIN) |