summaryrefslogtreecommitdiffstats
path: root/chrome/browser/automation
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/automation')
-rw-r--r--chrome/browser/automation/automation_provider.cc25
-rw-r--r--chrome/browser/automation/automation_provider.h4
2 files changed, 29 insertions, 0 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc
index e37244c..5fa08ef 100644
--- a/chrome/browser/automation/automation_provider.cc
+++ b/chrome/browser/automation/automation_provider.cc
@@ -867,6 +867,7 @@ void AutomationProvider::OnMessageReceived(const IPC::Message& message) {
WaitForTabToBeRestored)
IPC_MESSAGE_HANDLER(AutomationMsg_SetInitialFocus,
SetInitialFocus)
+ IPC_MESSAGE_HANDLER(AutomationMsg_TabReposition, OnTabReposition)
#endif // defined(OS_WIN)
IPC_MESSAGE_HANDLER(AutomationMsg_GetSecurityState,
GetSecurityState)
@@ -2712,3 +2713,27 @@ void AutomationProvider::OverrideEncoding(int tab_handle,
void AutomationProvider::SavePackageShouldPromptUser(bool should_prompt) {
SavePackage::SetShouldPromptUser(should_prompt);
}
+
+#ifdef OS_WIN
+void AutomationProvider::OnTabReposition(
+ int tab_handle, const IPC::Reposition_Params& params) {
+ if (!tab_tracker_->ContainsHandle(tab_handle))
+ return;
+
+ if (!IsWindow(params.window))
+ return;
+
+ unsigned long process_id = 0;
+ unsigned long thread_id = 0;
+
+ thread_id = GetWindowThreadProcessId(params.window, &process_id);
+
+ if (thread_id != GetCurrentThreadId()) {
+ NOTREACHED();
+ return;
+ }
+
+ SetWindowPos(params.window, params.window_insert_after, params.left,
+ params.top, params.width, params.height, params.flags);
+}
+#endif // defined(OS_WIN)
diff --git a/chrome/browser/automation/automation_provider.h b/chrome/browser/automation/automation_provider.h
index c9aa0be..c2bdba3 100644
--- a/chrome/browser/automation/automation_provider.h
+++ b/chrome/browser/automation/automation_provider.h
@@ -24,6 +24,7 @@
#include "chrome/common/ipc_message.h"
#include "chrome/common/ipc_sync_channel.h"
#include "chrome/common/notification_observer.h"
+#include "chrome/test/automation/automation_messages.h"
#include "chrome/views/event.h"
#include "webkit/glue/find_in_page_request.h"
@@ -295,6 +296,9 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>,
// Chrome.
void SetAcceleratorsForTab(int handle, HACCEL accel_table,
int accel_entry_count, bool* status);
+
+ void OnTabReposition(int tab_handle,
+ const IPC::Reposition_Params& params);
#endif // defined(OS_WIN)
// Gets the security state for the tab associated to the specified |handle|.