1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
// Copyright (c) 2006-2008 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/test/automation/window_proxy.h"
#include <vector>
#include <algorithm>
#include "base/gfx/rect.h"
#include "base/logging.h"
#include "chrome/test/automation/automation_constants.h"
#include "chrome/test/automation/automation_messages.h"
#include "chrome/test/automation/automation_proxy.h"
#include "chrome/test/automation/browser_proxy.h"
#include "chrome/test/automation/tab_proxy.h"
#include "googleurl/src/gurl.h"
bool WindowProxy::GetHWND(HWND* handle) const {
if (!is_valid()) return false;
if (!handle) {
NOTREACHED();
return false;
}
return sender_->Send(new AutomationMsg_WindowHWND(0, handle_, handle));
}
bool WindowProxy::SimulateOSClick(const POINT& click, int flags) {
if (!is_valid()) return false;
return sender_->Send(
new AutomationMsg_WindowClick(0, handle_, click, flags));
}
bool WindowProxy::SimulateOSKeyPress(wchar_t key, int flags) {
if (!is_valid()) return false;
return sender_->Send(
new AutomationMsg_WindowKeyPress(0, handle_, key, flags));
}
bool WindowProxy::SetVisible(bool visible) {
if (!is_valid()) return false;
bool result = false;
sender_->Send(new AutomationMsg_SetWindowVisible(0, handle_, visible,
&result));
return result;
}
bool WindowProxy::IsActive(bool* active) {
if (!is_valid()) return false;
bool result = false;
sender_->Send(new AutomationMsg_IsWindowActive(0, handle_, &result, active));
return result;
}
bool WindowProxy::Activate() {
if (!is_valid()) return false;
return sender_->Send(new AutomationMsg_ActivateWindow(0, handle_));
}
bool WindowProxy::GetViewBounds(int view_id, gfx::Rect* bounds,
bool screen_coordinates) {
return GetViewBoundsWithTimeout(view_id, bounds, screen_coordinates,
base::kNoTimeout, NULL);
}
bool WindowProxy::GetViewBoundsWithTimeout(int view_id, gfx::Rect* bounds,
bool screen_coordinates,
uint32 timeout_ms,
bool* is_timeout) {
if (!is_valid())
return false;
if (!bounds) {
NOTREACHED();
return false;
}
bool result = false;
sender_->SendWithTimeout(new AutomationMsg_WindowViewBounds(
0, handle_, view_id, screen_coordinates, &result, bounds),
timeout_ms, is_timeout);
return result;
}
bool WindowProxy::GetFocusedViewID(int* view_id) {
if (!is_valid()) return false;
if (!view_id) {
NOTREACHED();
return false;
}
return sender_->Send(new AutomationMsg_GetFocusedViewID(0, handle_,
view_id));
}
BrowserProxy* WindowProxy::GetBrowser() {
return GetBrowserWithTimeout(base::kNoTimeout, NULL);
}
BrowserProxy* WindowProxy::GetBrowserWithTimeout(uint32 timeout_ms,
bool* is_timeout) {
if (!is_valid())
return false;
bool handle_ok = false;
int browser_handle = 0;
sender_->Send(new AutomationMsg_BrowserForWindow(0, handle_, &handle_ok,
&browser_handle));
if (!handle_ok)
return NULL;
return new BrowserProxy(sender_, tracker_, browser_handle);
}
|