summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/automation/automation_provider.cc117
-rw-r--r--chrome/browser/automation/automation_provider.h15
-rw-r--r--chrome/browser/automation/automation_provider_gtk.cc10
-rw-r--r--chrome/browser/automation/automation_provider_mac.mm8
-rw-r--r--chrome/browser/automation/automation_provider_win.cc35
-rw-r--r--chrome/browser/automation/testing_automation_provider.cc120
-rw-r--r--chrome/browser/automation/testing_automation_provider.h13
-rw-r--r--chrome/browser/automation/testing_automation_provider_gtk.cc19
-rw-r--r--chrome/browser/automation/testing_automation_provider_mac.mm19
-rw-r--r--chrome/browser/automation/testing_automation_provider_win.cc30
-rw-r--r--chrome/chrome_browser.gypi5
11 files changed, 206 insertions, 185 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc
index e42543a..851adc8 100644
--- a/chrome/browser/automation/automation_provider.cc
+++ b/chrome/browser/automation/automation_provider.cc
@@ -334,20 +334,6 @@ Extension* AutomationProvider::GetDisabledExtension(int extension_handle) {
void AutomationProvider::OnMessageReceived(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP(AutomationProvider, message)
- IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindow, GetBrowserWindow)
- IPC_MESSAGE_HANDLER(AutomationMsg_GetBrowserLocale, GetBrowserLocale)
- 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)
- IPC_MESSAGE_HANDLER(AutomationMsg_IsWindowMaximized, IsWindowMaximized)
- IPC_MESSAGE_HANDLER(AutomationMsg_WindowExecuteCommandAsync,
- ExecuteBrowserCommandAsync)
- IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WindowExecuteCommand,
- ExecuteBrowserCommand)
IPC_MESSAGE_HANDLER(AutomationMsg_TerminateSession, TerminateSession)
IPC_MESSAGE_HANDLER(AutomationMsg_WindowViewBounds, WindowGetViewBounds)
IPC_MESSAGE_HANDLER(AutomationMsg_GetWindowBounds, GetWindowBounds)
@@ -558,11 +544,6 @@ void AutomationProvider::OnMessageReceived(const IPC::Message& message) {
IPC_END_MESSAGE_MAP()
}
-void AutomationProvider::GetBrowserLocale(string16* locale) {
- DCHECK(g_browser_process);
- *locale = ASCIIToUTF16(g_browser_process->GetApplicationLocale());
-}
-
void AutomationProvider::GetShowingAppModalDialog(bool* showing_dialog,
int* dialog_button) {
AppModalDialog* dialog_delegate =
@@ -605,92 +586,6 @@ void AutomationProvider::ShutdownSessionService(int handle, bool* result) {
}
}
-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) {}
- if (iter != BrowserList::end()) {
- *handle = browser_tracker_->Add(*iter);
- }
- }
-}
-
-void AutomationProvider::FindNormalBrowserWindow(int* handle) {
- *handle = 0;
- Browser* browser = BrowserList::FindBrowserWithType(profile_,
- Browser::TYPE_NORMAL,
- false);
- if (browser)
- *handle = browser_tracker_->Add(browser);
-}
-
-void AutomationProvider::GetLastActiveBrowserWindow(int* handle) {
- *handle = 0;
- Browser* browser = BrowserList::GetLastActive();
- if (browser)
- *handle = browser_tracker_->Add(browser);
-}
-
-#if defined(OS_POSIX)
-// TODO(estade): use this implementation for all platforms?
-void AutomationProvider::GetActiveWindow(int* handle) {
- gfx::NativeWindow window =
- BrowserList::GetLastActive()->window()->GetNativeHandle();
- *handle = window_tracker_->Add(window);
-}
-#endif
-
-void AutomationProvider::ExecuteBrowserCommandAsync(int handle, int command,
- bool* success) {
- *success = false;
- if (browser_tracker_->ContainsHandle(handle)) {
- Browser* browser = browser_tracker_->GetResource(handle);
- if (browser->command_updater()->SupportsCommand(command) &&
- browser->command_updater()->IsCommandEnabled(command)) {
- browser->ExecuteCommand(command);
- *success = true;
- }
- }
-}
-
-void AutomationProvider::ExecuteBrowserCommand(
- int handle, int command, IPC::Message* reply_message) {
- // List of commands which just finish synchronously and don't require
- // setting up an observer.
- static const int kSynchronousCommands[] = {
- IDC_HOME,
- IDC_SELECT_NEXT_TAB,
- IDC_SELECT_PREVIOUS_TAB,
- IDC_SHOW_BOOKMARK_MANAGER,
- };
- if (browser_tracker_->ContainsHandle(handle)) {
- Browser* browser = browser_tracker_->GetResource(handle);
- if (browser->command_updater()->SupportsCommand(command) &&
- browser->command_updater()->IsCommandEnabled(command)) {
- // First check if we can handle the command without using an observer.
- for (size_t i = 0; i < arraysize(kSynchronousCommands); i++) {
- if (command == kSynchronousCommands[i]) {
- browser->ExecuteCommand(command);
- AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message,
- true);
- Send(reply_message);
- return;
- }
- }
-
- // Use an observer if we have one, otherwise fail.
- if (ExecuteBrowserCommandObserver::CreateAndRegisterObserver(
- this, browser, command, reply_message)) {
- browser->ExecuteCommand(command);
- return;
- }
- }
- }
- AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message, false);
- Send(reply_message);
-}
-
// This task just adds another task to the event queue. This is useful if
// you want to ensure that any tasks added to the event queue after this one
// have already been processed by the time |task| is run.
@@ -746,18 +641,6 @@ void AutomationProvider::WindowSimulateKeyPress(const IPC::Message& message,
views::Event::EF_COMMAND_DOWN));
}
-void AutomationProvider::IsWindowActive(int handle, bool* success,
- bool* is_active) {
- if (window_tracker_->ContainsHandle(handle)) {
- *is_active =
- platform_util::IsWindowActive(window_tracker_->GetResource(handle));
- *success = true;
- } else {
- *success = false;
- *is_active = false;
- }
-}
-
void AutomationProvider::GetTabCount(int handle, int* tab_count) {
*tab_count = -1; // -1 is the error code
diff --git a/chrome/browser/automation/automation_provider.h b/chrome/browser/automation/automation_provider.h
index ef28206..adc36d8 100644
--- a/chrome/browser/automation/automation_provider.h
+++ b/chrome/browser/automation/automation_provider.h
@@ -167,6 +167,7 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>,
scoped_ptr<AutomationBrowserTracker> browser_tracker_;
scoped_ptr<AutomationTabTracker> tab_tracker_;
+ scoped_ptr<AutomationWindowTracker> window_tracker_;
typedef std::map<NavigationController*, LoginHandler*> LoginHandlerMap;
LoginHandlerMap login_handler_map_;
@@ -183,19 +184,9 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>,
private:
// IPC Message callbacks.
- void GetBrowserLocale(string16* locale);
void GetShowingAppModalDialog(bool* showing_dialog, int* dialog_button);
void ClickAppModalDialogButton(int button, bool* success);
void ShutdownSessionService(int handle, bool* result);
- // 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);
- void ExecuteBrowserCommandAsync(int handle, int command, bool* success);
- void ExecuteBrowserCommand(int handle, int command,
- IPC::Message* reply_message);
void TerminateSession(int handle, bool* success);
void WindowGetViewBounds(int handle, int view_id, bool screen_coordinates,
bool* success, gfx::Rect* bounds);
@@ -218,9 +209,6 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>,
void GetWindowBounds(int handle, gfx::Rect* bounds, bool* result);
void SetWindowBounds(int handle, const gfx::Rect& bounds, bool* result);
void SetWindowVisible(int handle, bool visible, bool* result);
- void IsWindowActive(int handle, bool* success, bool* is_active);
- void ActivateWindow(int handle);
- void IsWindowMaximized(int handle, bool* is_maximized, bool* success);
void GetTabCount(int handle, int* tab_count);
void GetType(int handle, int* type_as_int);
@@ -920,7 +908,6 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>,
extension_test_result_observer_;
scoped_ptr<MetricEventDurationObserver> metric_event_duration_observer_;
scoped_ptr<AutomationExtensionTracker> extension_tracker_;
- scoped_ptr<AutomationWindowTracker> window_tracker_;
scoped_ptr<AutomationAutocompleteEditTracker> autocomplete_edit_tracker_;
scoped_ptr<NavigationControllerRestoredObserver> restore_tracker_;
PortContainerMap port_containers_;
diff --git a/chrome/browser/automation/automation_provider_gtk.cc b/chrome/browser/automation/automation_provider_gtk.cc
index 06abc4f..097eeb1 100644
--- a/chrome/browser/automation/automation_provider_gtk.cc
+++ b/chrome/browser/automation/automation_provider_gtk.cc
@@ -71,16 +71,6 @@ void AutomationProvider::WindowGetViewBounds(int handle, int view_id,
}
#endif
-void AutomationProvider::ActivateWindow(int handle) {
- NOTIMPLEMENTED();
-}
-
-void AutomationProvider::IsWindowMaximized(int handle, bool* is_maximized,
- bool* success) {
- *success = false;
- NOTIMPLEMENTED();
-}
-
void AutomationProvider::PrintAsync(int tab_handle) {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/automation/automation_provider_mac.mm b/chrome/browser/automation/automation_provider_mac.mm
index de6e8ee..74d98e5 100644
--- a/chrome/browser/automation/automation_provider_mac.mm
+++ b/chrome/browser/automation/automation_provider_mac.mm
@@ -89,14 +89,6 @@ void AutomationProvider::WindowGetViewBounds(int handle, int view_id,
*success = true;
}
-void AutomationProvider::ActivateWindow(int handle) { NOTIMPLEMENTED(); }
-
-void AutomationProvider::IsWindowMaximized(int handle, bool* is_maximized,
- bool* success) {
- *success = false;
- NOTIMPLEMENTED();
-}
-
void AutomationProvider::PrintAsync(int tab_handle) {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/automation/automation_provider_win.cc b/chrome/browser/automation/automation_provider_win.cc
index 9a227cd..70a8049 100644
--- a/chrome/browser/automation/automation_provider_win.cc
+++ b/chrome/browser/automation/automation_provider_win.cc
@@ -73,22 +73,6 @@ BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM l_param) {
return TRUE;
}
-void AutomationProvider::GetActiveWindow(int* handle) {
- HWND window = GetForegroundWindow();
-
- // Let's make sure this window belongs to our process.
- if (EnumThreadWindows(::GetCurrentThreadId(),
- EnumThreadWndProc,
- reinterpret_cast<LPARAM>(window))) {
- // We enumerated all the windows and did not find the foreground window,
- // it is not our window, ignore it.
- *handle = 0;
- return;
- }
-
- *handle = window_tracker_->Add(window);
-}
-
// This task enqueues a mouse event on the event loop, so that the view
// that it's being sent to can do the requisite post-processing.
class MouseEventTask : public Task {
@@ -271,25 +255,6 @@ void AutomationProvider::SetWindowVisible(int handle, bool visible,
}
}
-void AutomationProvider::ActivateWindow(int handle) {
- if (window_tracker_->ContainsHandle(handle)) {
- ::SetActiveWindow(window_tracker_->GetResource(handle));
- }
-}
-
-void AutomationProvider::IsWindowMaximized(int handle, bool* is_maximized,
- bool* success) {
- *success = false;
-
- HWND hwnd = window_tracker_->GetResource(handle);
- if (hwnd) {
- *success = true;
- WINDOWPLACEMENT window_placement;
- GetWindowPlacement(hwnd, &window_placement);
- *is_maximized = (window_placement.showCmd == SW_MAXIMIZE);
- }
-}
-
void AutomationProvider::GetTabHWND(int handle, HWND* tab_hwnd) {
*tab_hwnd = NULL;
diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc
index f62079b..ac30470 100644
--- a/chrome/browser/automation/testing_automation_provider.cc
+++ b/chrome/browser/automation/testing_automation_provider.cc
@@ -5,13 +5,17 @@
#include "chrome/browser/automation/testing_automation_provider.h"
#include "base/command_line.h"
+#include "base/utf_string_conversions.h"
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/browser/automation/automation_browser_tracker.h"
#include "chrome/browser/automation/automation_provider_list.h"
#include "chrome/browser/automation/automation_provider_observers.h"
#include "chrome/browser/automation/automation_tab_tracker.h"
+#include "chrome/browser/automation/automation_window_tracker.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_window.h"
#include "chrome/browser/login_prompt.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/net/url_request_context_getter.h"
#include "chrome/common/notification_service.h"
@@ -170,6 +174,20 @@ void TestingAutomationProvider::OnMessageReceived(
IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindowCount, GetBrowserWindowCount)
IPC_MESSAGE_HANDLER(AutomationMsg_NormalBrowserWindowCount,
GetNormalBrowserWindowCount)
+ IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindow, GetBrowserWindow)
+ IPC_MESSAGE_HANDLER(AutomationMsg_GetBrowserLocale, GetBrowserLocale)
+ 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)
+ IPC_MESSAGE_HANDLER(AutomationMsg_IsWindowMaximized, IsWindowMaximized)
+ IPC_MESSAGE_HANDLER(AutomationMsg_WindowExecuteCommandAsync,
+ ExecuteBrowserCommandAsync)
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WindowExecuteCommand,
+ ExecuteBrowserCommand)
IPC_MESSAGE_UNHANDLED(AutomationProvider::OnMessageReceived(message));
IPC_END_MESSAGE_MAP()
@@ -531,6 +549,108 @@ void TestingAutomationProvider::GetNormalBrowserWindowCount(int* window_count) {
BrowserList::GetBrowserCountForType(profile_, Browser::TYPE_NORMAL));
}
+void TestingAutomationProvider::GetBrowserWindow(int index, int* handle) {
+ *handle = 0;
+ if (index >= 0) {
+ BrowserList::const_iterator iter = BrowserList::begin();
+ for (; (iter != BrowserList::end()) && (index > 0); ++iter, --index) {}
+ if (iter != BrowserList::end()) {
+ *handle = browser_tracker_->Add(*iter);
+ }
+ }
+}
+
+void TestingAutomationProvider::FindNormalBrowserWindow(int* handle) {
+ *handle = 0;
+ Browser* browser = BrowserList::FindBrowserWithType(profile_,
+ Browser::TYPE_NORMAL,
+ false);
+ if (browser)
+ *handle = browser_tracker_->Add(browser);
+}
+
+void TestingAutomationProvider::GetLastActiveBrowserWindow(int* handle) {
+ *handle = 0;
+ Browser* browser = BrowserList::GetLastActive();
+ if (browser)
+ *handle = browser_tracker_->Add(browser);
+}
+
+void TestingAutomationProvider::GetActiveWindow(int* handle) {
+ gfx::NativeWindow window =
+ BrowserList::GetLastActive()->window()->GetNativeHandle();
+ *handle = window_tracker_->Add(window);
+}
+
+void TestingAutomationProvider::ExecuteBrowserCommandAsync(int handle,
+ int command,
+ bool* success) {
+ *success = false;
+ if (browser_tracker_->ContainsHandle(handle)) {
+ Browser* browser = browser_tracker_->GetResource(handle);
+ if (browser->command_updater()->SupportsCommand(command) &&
+ browser->command_updater()->IsCommandEnabled(command)) {
+ browser->ExecuteCommand(command);
+ *success = true;
+ }
+ }
+}
+
+void TestingAutomationProvider::ExecuteBrowserCommand(
+ int handle, int command, IPC::Message* reply_message) {
+ // List of commands which just finish synchronously and don't require
+ // setting up an observer.
+ static const int kSynchronousCommands[] = {
+ IDC_HOME,
+ IDC_SELECT_NEXT_TAB,
+ IDC_SELECT_PREVIOUS_TAB,
+ IDC_SHOW_BOOKMARK_MANAGER,
+ };
+ if (browser_tracker_->ContainsHandle(handle)) {
+ Browser* browser = browser_tracker_->GetResource(handle);
+ if (browser->command_updater()->SupportsCommand(command) &&
+ browser->command_updater()->IsCommandEnabled(command)) {
+ // First check if we can handle the command without using an observer.
+ for (size_t i = 0; i < arraysize(kSynchronousCommands); i++) {
+ if (command == kSynchronousCommands[i]) {
+ browser->ExecuteCommand(command);
+ AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message,
+ true);
+ Send(reply_message);
+ return;
+ }
+ }
+
+ // Use an observer if we have one, otherwise fail.
+ if (ExecuteBrowserCommandObserver::CreateAndRegisterObserver(
+ this, browser, command, reply_message)) {
+ browser->ExecuteCommand(command);
+ return;
+ }
+ }
+ }
+ AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message, false);
+ Send(reply_message);
+}
+
+void TestingAutomationProvider::GetBrowserLocale(string16* locale) {
+ DCHECK(g_browser_process);
+ *locale = ASCIIToUTF16(g_browser_process->GetApplicationLocale());
+}
+
+void TestingAutomationProvider::IsWindowActive(int handle,
+ bool* success,
+ bool* is_active) {
+ if (window_tracker_->ContainsHandle(handle)) {
+ *is_active =
+ platform_util::IsWindowActive(window_tracker_->GetResource(handle));
+ *success = true;
+ } else {
+ *success = false;
+ *is_active = false;
+ }
+}
+
// TODO(brettw) change this to accept GURLs when history supports it
void TestingAutomationProvider::OnRedirectQueryComplete(
HistoryService::Handle request_handle,
diff --git a/chrome/browser/automation/testing_automation_provider.h b/chrome/browser/automation/testing_automation_provider.h
index 55588e9..8b6da28 100644
--- a/chrome/browser/automation/testing_automation_provider.h
+++ b/chrome/browser/automation/testing_automation_provider.h
@@ -70,6 +70,19 @@ class TestingAutomationProvider : public AutomationProvider,
IPC::Message* reply_message);
void GetBrowserWindowCount(int* window_count);
void GetNormalBrowserWindowCount(int* window_count);
+ // 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);
+ void ExecuteBrowserCommandAsync(int handle, int command, bool* success);
+ void ExecuteBrowserCommand(int handle, int command,
+ IPC::Message* reply_message);
+ void GetBrowserLocale(string16* locale);
+ void IsWindowActive(int handle, bool* success, bool* is_active);
+ void ActivateWindow(int handle);
+ void IsWindowMaximized(int handle, bool* is_maximized, bool* success);
// Callback for history redirect queries.
virtual void OnRedirectQueryComplete(
diff --git a/chrome/browser/automation/testing_automation_provider_gtk.cc b/chrome/browser/automation/testing_automation_provider_gtk.cc
new file mode 100644
index 0000000..ce61658
--- /dev/null
+++ b/chrome/browser/automation/testing_automation_provider_gtk.cc
@@ -0,0 +1,19 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/automation/testing_automation_provider.h"
+
+#include "base/logging.h"
+
+void TestingAutomationProvider::ActivateWindow(int handle) {
+ NOTIMPLEMENTED();
+}
+
+void TestingAutomationProvider::IsWindowMaximized(int handle,
+ bool* is_maximized,
+ bool* success) {
+ *success = false;
+ NOTIMPLEMENTED();
+}
+
diff --git a/chrome/browser/automation/testing_automation_provider_mac.mm b/chrome/browser/automation/testing_automation_provider_mac.mm
new file mode 100644
index 0000000..ce61658
--- /dev/null
+++ b/chrome/browser/automation/testing_automation_provider_mac.mm
@@ -0,0 +1,19 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/automation/testing_automation_provider.h"
+
+#include "base/logging.h"
+
+void TestingAutomationProvider::ActivateWindow(int handle) {
+ NOTIMPLEMENTED();
+}
+
+void TestingAutomationProvider::IsWindowMaximized(int handle,
+ bool* is_maximized,
+ bool* success) {
+ *success = false;
+ NOTIMPLEMENTED();
+}
+
diff --git a/chrome/browser/automation/testing_automation_provider_win.cc b/chrome/browser/automation/testing_automation_provider_win.cc
new file mode 100644
index 0000000..dcb8b1c
--- /dev/null
+++ b/chrome/browser/automation/testing_automation_provider_win.cc
@@ -0,0 +1,30 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/automation/testing_automation_provider.h"
+
+#include <windows.h>
+
+#include "chrome/browser/automation/automation_window_tracker.h"
+
+void TestingAutomationProvider::ActivateWindow(int handle) {
+ if (window_tracker_->ContainsHandle(handle)) {
+ ::SetActiveWindow(window_tracker_->GetResource(handle));
+ }
+}
+
+void TestingAutomationProvider::IsWindowMaximized(int handle,
+ bool* is_maximized,
+ bool* success) {
+ *success = false;
+
+ HWND hwnd = window_tracker_->GetResource(handle);
+ if (hwnd) {
+ *success = true;
+ WINDOWPLACEMENT window_placement;
+ GetWindowPlacement(hwnd, &window_placement);
+ *is_maximized = (window_placement.showCmd == SW_MAXIMIZE);
+ }
+}
+
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 22901b4..1d6efa4 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -222,6 +222,9 @@
'browser/automation/chrome_frame_automation_provider.h',
'browser/automation/extension_port_container.cc',
'browser/automation/extension_port_container.h',
+ 'browser/automation/testing_automation_provider_gtk.cc',
+ 'browser/automation/testing_automation_provider_mac.mm',
+ 'browser/automation/testing_automation_provider_win.cc',
'browser/automation/testing_automation_provider.cc',
'browser/automation/testing_automation_provider.h',
'browser/automation/url_request_automation_job.cc',
@@ -2416,7 +2419,7 @@
'browser/sidebar/sidebar_container.cc',
'browser/sidebar/sidebar_container.h',
'browser/sidebar/sidebar_manager.cc',
- 'browser/sidebar/sidebar_manager.h',
+ 'browser/sidebar/sidebar_manager.h',
'browser/speech/speech_input_dispatcher_host.cc',
'browser/speech/speech_input_dispatcher_host.h',
'browser/speech/speech_input_manager.cc',