summaryrefslogtreecommitdiffstats
path: root/chrome/browser/automation
diff options
context:
space:
mode:
authorhuanr@chromium.org <huanr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-01 17:00:29 +0000
committerhuanr@chromium.org <huanr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-01 17:00:29 +0000
commit2449703fd43147babd98ad124a396c445c3c3daf (patch)
tree910bf5f4344d79234b7e6e784479002f9997f83f /chrome/browser/automation
parentd4bf3bf8357815bf18377b3451d1919b1cd12a05 (diff)
downloadchromium_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.cc20
-rw-r--r--chrome/browser/automation/automation_provider.h4
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)