| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/test/automation/tab_proxy.h" | 5 #include "chrome/test/automation/tab_proxy.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/string16.h" | 10 #include "base/string16.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 return false; | 26 return false; |
| 27 | 27 |
| 28 if (!title) { | 28 if (!title) { |
| 29 NOTREACHED(); | 29 NOTREACHED(); |
| 30 return false; | 30 return false; |
| 31 } | 31 } |
| 32 | 32 |
| 33 int tab_title_size_response = 0; | 33 int tab_title_size_response = 0; |
| 34 | 34 |
| 35 bool succeeded = sender_->Send( | 35 bool succeeded = sender_->Send( |
| 36 new AutomationMsg_TabTitle(0, handle_, &tab_title_size_response, title)); | 36 new AutomationMsg_TabTitle(handle_, &tab_title_size_response, title)); |
| 37 return succeeded; | 37 return succeeded; |
| 38 } | 38 } |
| 39 | 39 |
| 40 bool TabProxy::GetTabIndex(int* index) const { | 40 bool TabProxy::GetTabIndex(int* index) const { |
| 41 if (!is_valid()) | 41 if (!is_valid()) |
| 42 return false; | 42 return false; |
| 43 | 43 |
| 44 if (!index) { | 44 if (!index) { |
| 45 NOTREACHED(); | 45 NOTREACHED(); |
| 46 return false; | 46 return false; |
| 47 } | 47 } |
| 48 | 48 |
| 49 return sender_->Send(new AutomationMsg_TabIndex(0, handle_, index)); | 49 return sender_->Send(new AutomationMsg_TabIndex(handle_, index)); |
| 50 } | 50 } |
| 51 | 51 |
| 52 int TabProxy::FindInPage(const std::wstring& search_string, | 52 int TabProxy::FindInPage(const std::wstring& search_string, |
| 53 FindInPageDirection forward, | 53 FindInPageDirection forward, |
| 54 FindInPageCase match_case, | 54 FindInPageCase match_case, |
| 55 bool find_next, | 55 bool find_next, |
| 56 int* ordinal) { | 56 int* ordinal) { |
| 57 if (!is_valid()) | 57 if (!is_valid()) |
| 58 return -1; | 58 return -1; |
| 59 | 59 |
| 60 AutomationMsg_Find_Params params; | 60 AutomationMsg_Find_Params params; |
| 61 params.unused = 0; | 61 params.unused = 0; |
| 62 params.search_string = WideToUTF16Hack(search_string); | 62 params.search_string = WideToUTF16Hack(search_string); |
| 63 params.find_next = find_next; | 63 params.find_next = find_next; |
| 64 params.match_case = (match_case == CASE_SENSITIVE); | 64 params.match_case = (match_case == CASE_SENSITIVE); |
| 65 params.forward = (forward == FWD); | 65 params.forward = (forward == FWD); |
| 66 | 66 |
| 67 int matches = 0; | 67 int matches = 0; |
| 68 int ordinal2 = 0; | 68 int ordinal2 = 0; |
| 69 bool succeeded = sender_->Send(new AutomationMsg_Find(0, handle_, | 69 bool succeeded = sender_->Send(new AutomationMsg_Find(handle_, |
| 70 params, | 70 params, |
| 71 &ordinal2, | 71 &ordinal2, |
| 72 &matches)); | 72 &matches)); |
| 73 if (!succeeded) | 73 if (!succeeded) |
| 74 return -1; | 74 return -1; |
| 75 if (ordinal) | 75 if (ordinal) |
| 76 *ordinal = ordinal2; | 76 *ordinal = ordinal2; |
| 77 return matches; | 77 return matches; |
| 78 } | 78 } |
| 79 | 79 |
| 80 AutomationMsg_NavigationResponseValues TabProxy::NavigateToURL( | 80 AutomationMsg_NavigationResponseValues TabProxy::NavigateToURL( |
| 81 const GURL& url) { | 81 const GURL& url) { |
| 82 return NavigateToURLBlockUntilNavigationsComplete(url, 1); | 82 return NavigateToURLBlockUntilNavigationsComplete(url, 1); |
| 83 } | 83 } |
| 84 | 84 |
| 85 AutomationMsg_NavigationResponseValues | 85 AutomationMsg_NavigationResponseValues |
| 86 TabProxy::NavigateToURLBlockUntilNavigationsComplete( | 86 TabProxy::NavigateToURLBlockUntilNavigationsComplete( |
| 87 const GURL& url, int number_of_navigations) { | 87 const GURL& url, int number_of_navigations) { |
| 88 if (!is_valid()) | 88 if (!is_valid()) |
| 89 return AUTOMATION_MSG_NAVIGATION_ERROR; | 89 return AUTOMATION_MSG_NAVIGATION_ERROR; |
| 90 | 90 |
| 91 AutomationMsg_NavigationResponseValues navigate_response = | 91 AutomationMsg_NavigationResponseValues navigate_response = |
| 92 AUTOMATION_MSG_NAVIGATION_ERROR; | 92 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 93 | 93 |
| 94 if (number_of_navigations == 1) { | 94 sender_->Send(new AutomationMsg_NavigateToURLBlockUntilNavigationsComplete( |
| 95 // TODO(phajdan.jr): Remove when the reference build gets updated. | 95 handle_, url, number_of_navigations, &navigate_response)); |
| 96 // This is only for backwards compatibility. | |
| 97 sender_->Send(new AutomationMsg_NavigateToURL(0, handle_, url, | |
| 98 &navigate_response)); | |
| 99 } else { | |
| 100 sender_->Send(new AutomationMsg_NavigateToURLBlockUntilNavigationsComplete( | |
| 101 0, handle_, url, number_of_navigations, &navigate_response)); | |
| 102 } | |
| 103 | 96 |
| 104 return navigate_response; | 97 return navigate_response; |
| 105 } | 98 } |
| 106 | 99 |
| 107 bool TabProxy::SetAuth(const std::wstring& username, | 100 bool TabProxy::SetAuth(const std::wstring& username, |
| 108 const std::wstring& password) { | 101 const std::wstring& password) { |
| 109 if (!is_valid()) | 102 if (!is_valid()) |
| 110 return false; | 103 return false; |
| 111 | 104 |
| 112 AutomationMsg_NavigationResponseValues navigate_response = | 105 AutomationMsg_NavigationResponseValues navigate_response = |
| 113 AUTOMATION_MSG_NAVIGATION_ERROR; | 106 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 114 sender_->Send(new AutomationMsg_SetAuth(0, handle_, username, password, | 107 sender_->Send(new AutomationMsg_SetAuth(handle_, username, password, |
| 115 &navigate_response)); | 108 &navigate_response)); |
| 116 return navigate_response == AUTOMATION_MSG_NAVIGATION_SUCCESS; | 109 return navigate_response == AUTOMATION_MSG_NAVIGATION_SUCCESS; |
| 117 } | 110 } |
| 118 | 111 |
| 119 bool TabProxy::CancelAuth() { | 112 bool TabProxy::CancelAuth() { |
| 120 if (!is_valid()) | 113 if (!is_valid()) |
| 121 return false; | 114 return false; |
| 122 | 115 |
| 123 AutomationMsg_NavigationResponseValues navigate_response = | 116 AutomationMsg_NavigationResponseValues navigate_response = |
| 124 AUTOMATION_MSG_NAVIGATION_ERROR; | 117 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 125 sender_->Send(new AutomationMsg_CancelAuth(0, handle_, &navigate_response)); | 118 sender_->Send(new AutomationMsg_CancelAuth(handle_, &navigate_response)); |
| 126 return navigate_response == AUTOMATION_MSG_NAVIGATION_SUCCESS; | 119 return navigate_response == AUTOMATION_MSG_NAVIGATION_SUCCESS; |
| 127 } | 120 } |
| 128 | 121 |
| 129 bool TabProxy::NeedsAuth() const { | 122 bool TabProxy::NeedsAuth() const { |
| 130 if (!is_valid()) | 123 if (!is_valid()) |
| 131 return false; | 124 return false; |
| 132 | 125 |
| 133 bool needs_auth = false; | 126 bool needs_auth = false; |
| 134 sender_->Send(new AutomationMsg_NeedsAuth(0, handle_, &needs_auth)); | 127 sender_->Send(new AutomationMsg_NeedsAuth(handle_, &needs_auth)); |
| 135 return needs_auth; | 128 return needs_auth; |
| 136 } | 129 } |
| 137 | 130 |
| 138 AutomationMsg_NavigationResponseValues TabProxy::GoBack() { | 131 AutomationMsg_NavigationResponseValues TabProxy::GoBack() { |
| 139 return GoBackBlockUntilNavigationsComplete(1); | 132 return GoBackBlockUntilNavigationsComplete(1); |
| 140 } | 133 } |
| 141 | 134 |
| 142 AutomationMsg_NavigationResponseValues | 135 AutomationMsg_NavigationResponseValues |
| 143 TabProxy::GoBackBlockUntilNavigationsComplete(int number_of_navigations) { | 136 TabProxy::GoBackBlockUntilNavigationsComplete(int number_of_navigations) { |
| 144 if (!is_valid()) | 137 if (!is_valid()) |
| 145 return AUTOMATION_MSG_NAVIGATION_ERROR; | 138 return AUTOMATION_MSG_NAVIGATION_ERROR; |
| 146 | 139 |
| 147 AutomationMsg_NavigationResponseValues navigate_response = | 140 AutomationMsg_NavigationResponseValues navigate_response = |
| 148 AUTOMATION_MSG_NAVIGATION_ERROR; | 141 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 149 sender_->Send(new AutomationMsg_GoBackBlockUntilNavigationsComplete( | 142 sender_->Send(new AutomationMsg_GoBackBlockUntilNavigationsComplete( |
| 150 0, handle_, number_of_navigations, &navigate_response)); | 143 handle_, number_of_navigations, &navigate_response)); |
| 151 return navigate_response; | 144 return navigate_response; |
| 152 } | 145 } |
| 153 | 146 |
| 154 AutomationMsg_NavigationResponseValues TabProxy::GoForward() { | 147 AutomationMsg_NavigationResponseValues TabProxy::GoForward() { |
| 155 return GoForwardBlockUntilNavigationsComplete(1); | 148 return GoForwardBlockUntilNavigationsComplete(1); |
| 156 } | 149 } |
| 157 | 150 |
| 158 AutomationMsg_NavigationResponseValues | 151 AutomationMsg_NavigationResponseValues |
| 159 TabProxy::GoForwardBlockUntilNavigationsComplete( | 152 TabProxy::GoForwardBlockUntilNavigationsComplete( |
| 160 int number_of_navigations) { | 153 int number_of_navigations) { |
| 161 if (!is_valid()) | 154 if (!is_valid()) |
| 162 return AUTOMATION_MSG_NAVIGATION_ERROR; | 155 return AUTOMATION_MSG_NAVIGATION_ERROR; |
| 163 | 156 |
| 164 AutomationMsg_NavigationResponseValues navigate_response = | 157 AutomationMsg_NavigationResponseValues navigate_response = |
| 165 AUTOMATION_MSG_NAVIGATION_ERROR; | 158 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 166 sender_->Send(new AutomationMsg_GoForwardBlockUntilNavigationsComplete( | 159 sender_->Send(new AutomationMsg_GoForwardBlockUntilNavigationsComplete( |
| 167 0, handle_, number_of_navigations, &navigate_response)); | 160 handle_, number_of_navigations, &navigate_response)); |
| 168 return navigate_response; | 161 return navigate_response; |
| 169 } | 162 } |
| 170 | 163 |
| 171 AutomationMsg_NavigationResponseValues TabProxy::Reload() { | 164 AutomationMsg_NavigationResponseValues TabProxy::Reload() { |
| 172 if (!is_valid()) | 165 if (!is_valid()) |
| 173 return AUTOMATION_MSG_NAVIGATION_ERROR; | 166 return AUTOMATION_MSG_NAVIGATION_ERROR; |
| 174 | 167 |
| 175 AutomationMsg_NavigationResponseValues navigate_response = | 168 AutomationMsg_NavigationResponseValues navigate_response = |
| 176 AUTOMATION_MSG_NAVIGATION_ERROR; | 169 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 177 sender_->Send(new AutomationMsg_Reload(0, handle_, &navigate_response)); | 170 sender_->Send(new AutomationMsg_Reload(handle_, &navigate_response)); |
| 178 return navigate_response; | 171 return navigate_response; |
| 179 } | 172 } |
| 180 | 173 |
| 181 bool TabProxy::GetRedirectsFrom(const GURL& source_url, | 174 bool TabProxy::GetRedirectsFrom(const GURL& source_url, |
| 182 std::vector<GURL>* redirects) { | 175 std::vector<GURL>* redirects) { |
| 183 bool succeeded = false; | 176 bool succeeded = false; |
| 184 sender_->Send(new AutomationMsg_RedirectsFrom(0, handle_, | 177 sender_->Send(new AutomationMsg_RedirectsFrom(handle_, |
| 185 source_url, | 178 source_url, |
| 186 &succeeded, | 179 &succeeded, |
| 187 redirects)); | 180 redirects)); |
| 188 return succeeded; | 181 return succeeded; |
| 189 } | 182 } |
| 190 | 183 |
| 191 bool TabProxy::GetCurrentURL(GURL* url) const { | 184 bool TabProxy::GetCurrentURL(GURL* url) const { |
| 192 if (!is_valid()) | 185 if (!is_valid()) |
| 193 return false; | 186 return false; |
| 194 | 187 |
| 195 if (!url) { | 188 if (!url) { |
| 196 NOTREACHED(); | 189 NOTREACHED(); |
| 197 return false; | 190 return false; |
| 198 } | 191 } |
| 199 | 192 |
| 200 bool succeeded = false; | 193 bool succeeded = false; |
| 201 sender_->Send(new AutomationMsg_TabURL(0, handle_, &succeeded, url)); | 194 sender_->Send(new AutomationMsg_TabURL(handle_, &succeeded, url)); |
| 202 return succeeded; | 195 return succeeded; |
| 203 } | 196 } |
| 204 | 197 |
| 205 bool TabProxy::NavigateToURLAsync(const GURL& url) { | 198 bool TabProxy::NavigateToURLAsync(const GURL& url) { |
| 206 if (!is_valid()) | 199 if (!is_valid()) |
| 207 return false; | 200 return false; |
| 208 | 201 |
| 209 bool status = false; | 202 bool status = false; |
| 210 sender_->Send(new AutomationMsg_NavigationAsync(0, | 203 sender_->Send(new AutomationMsg_NavigationAsync(handle_, |
| 211 handle_, | |
| 212 url, | 204 url, |
| 213 &status)); | 205 &status)); |
| 214 return status; | 206 return status; |
| 215 } | 207 } |
| 216 | 208 |
| 217 bool TabProxy::NavigateToURLAsyncWithDisposition( | 209 bool TabProxy::NavigateToURLAsyncWithDisposition( |
| 218 const GURL& url, | 210 const GURL& url, |
| 219 WindowOpenDisposition disposition) { | 211 WindowOpenDisposition disposition) { |
| 220 if (!is_valid()) | 212 if (!is_valid()) |
| 221 return false; | 213 return false; |
| 222 | 214 |
| 223 bool status = false; | 215 bool status = false; |
| 224 sender_->Send(new AutomationMsg_NavigationAsyncWithDisposition(0, | 216 sender_->Send(new AutomationMsg_NavigationAsyncWithDisposition(handle_, |
| 225 handle_, | |
| 226 url, | 217 url, |
| 227 disposition, | 218 disposition, |
| 228 &status)); | 219 &status)); |
| 229 return status; | 220 return status; |
| 230 } | 221 } |
| 231 | 222 |
| 232 bool TabProxy::GetProcessID(int* process_id) const { | 223 bool TabProxy::GetProcessID(int* process_id) const { |
| 233 if (!is_valid()) | 224 if (!is_valid()) |
| 234 return false; | 225 return false; |
| 235 | 226 |
| 236 if (!process_id) { | 227 if (!process_id) { |
| 237 NOTREACHED(); | 228 NOTREACHED(); |
| 238 return false; | 229 return false; |
| 239 } | 230 } |
| 240 | 231 |
| 241 return sender_->Send(new AutomationMsg_TabProcessID(0, handle_, process_id)); | 232 return sender_->Send(new AutomationMsg_TabProcessID(handle_, process_id)); |
| 242 } | 233 } |
| 243 | 234 |
| 244 bool TabProxy::ExecuteAndExtractString(const std::wstring& frame_xpath, | 235 bool TabProxy::ExecuteAndExtractString(const std::wstring& frame_xpath, |
| 245 const std::wstring& jscript, | 236 const std::wstring& jscript, |
| 246 std::wstring* string_value) { | 237 std::wstring* string_value) { |
| 247 Value* root = NULL; | 238 Value* root = NULL; |
| 248 bool succeeded = ExecuteAndExtractValue(frame_xpath, jscript, &root); | 239 bool succeeded = ExecuteAndExtractValue(frame_xpath, jscript, &root); |
| 249 if (!succeeded) | 240 if (!succeeded) |
| 250 return false; | 241 return false; |
| 251 | 242 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 Value** value) { | 307 Value** value) { |
| 317 if (!is_valid()) | 308 if (!is_valid()) |
| 318 return false; | 309 return false; |
| 319 | 310 |
| 320 if (!value) { | 311 if (!value) { |
| 321 NOTREACHED(); | 312 NOTREACHED(); |
| 322 return false; | 313 return false; |
| 323 } | 314 } |
| 324 | 315 |
| 325 std::string json; | 316 std::string json; |
| 326 if (!sender_->Send(new AutomationMsg_DomOperation(0, handle_, frame_xpath, | 317 if (!sender_->Send(new AutomationMsg_DomOperation(handle_, frame_xpath, |
| 327 jscript, &json))) | 318 jscript, &json))) |
| 328 return false; | 319 return false; |
| 329 // Wrap |json| in an array before deserializing because valid JSON has an | 320 // Wrap |json| in an array before deserializing because valid JSON has an |
| 330 // array or an object as the root. | 321 // array or an object as the root. |
| 331 json.insert(0, "["); | 322 json.insert(0, "["); |
| 332 json.append("]"); | 323 json.append("]"); |
| 333 | 324 |
| 334 JSONStringValueSerializer deserializer(json); | 325 JSONStringValueSerializer deserializer(json); |
| 335 *value = deserializer.Deserialize(NULL, NULL); | 326 *value = deserializer.Deserialize(NULL, NULL); |
| 336 return *value != NULL; | 327 return *value != NULL; |
| 337 } | 328 } |
| 338 | 329 |
| 339 DOMElementProxyRef TabProxy::GetDOMDocument() { | 330 DOMElementProxyRef TabProxy::GetDOMDocument() { |
| 340 if (!is_valid()) | 331 if (!is_valid()) |
| 341 return NULL; | 332 return NULL; |
| 342 | 333 |
| 343 int element_handle; | 334 int element_handle; |
| 344 if (!ExecuteJavaScriptAndGetReturn("document", &element_handle)) | 335 if (!ExecuteJavaScriptAndGetReturn("document", &element_handle)) |
| 345 return NULL; | 336 return NULL; |
| 346 return GetObjectProxy<DOMElementProxy>(element_handle); | 337 return GetObjectProxy<DOMElementProxy>(element_handle); |
| 347 } | 338 } |
| 348 | 339 |
| 349 bool TabProxy::SetEnableExtensionAutomation( | 340 bool TabProxy::SetEnableExtensionAutomation( |
| 350 const std::vector<std::string>& functions_enabled) { | 341 const std::vector<std::string>& functions_enabled) { |
| 351 if (!is_valid()) | 342 if (!is_valid()) |
| 352 return false; | 343 return false; |
| 353 | 344 |
| 354 return sender_->Send(new AutomationMsg_SetEnableExtensionAutomation( | 345 return sender_->Send(new AutomationMsg_SetEnableExtensionAutomation( |
| 355 0, handle_, functions_enabled)); | 346 handle_, functions_enabled)); |
| 356 } | 347 } |
| 357 | 348 |
| 358 bool TabProxy::GetConstrainedWindowCount(int* count) const { | 349 bool TabProxy::GetConstrainedWindowCount(int* count) const { |
| 359 if (!is_valid()) | 350 if (!is_valid()) |
| 360 return false; | 351 return false; |
| 361 | 352 |
| 362 if (!count) { | 353 if (!count) { |
| 363 NOTREACHED(); | 354 NOTREACHED(); |
| 364 return false; | 355 return false; |
| 365 } | 356 } |
| 366 | 357 |
| 367 return sender_->Send(new AutomationMsg_ConstrainedWindowCount( | 358 return sender_->Send(new AutomationMsg_ConstrainedWindowCount( |
| 368 0, handle_, count)); | 359 handle_, count)); |
| 369 } | 360 } |
| 370 | 361 |
| 371 bool TabProxy::WaitForChildWindowCountToChange(int count, int* new_count, | 362 bool TabProxy::WaitForChildWindowCountToChange(int count, int* new_count, |
| 372 int wait_timeout) { | 363 int wait_timeout) { |
| 373 int intervals = std::max(wait_timeout / automation::kSleepTime, 1); | 364 int intervals = std::max(wait_timeout / automation::kSleepTime, 1); |
| 374 for (int i = 0; i < intervals; ++i) { | 365 for (int i = 0; i < intervals; ++i) { |
| 375 PlatformThread::Sleep(automation::kSleepTime); | 366 PlatformThread::Sleep(automation::kSleepTime); |
| 376 bool succeeded = GetConstrainedWindowCount(new_count); | 367 bool succeeded = GetConstrainedWindowCount(new_count); |
| 377 if (!succeeded) | 368 if (!succeeded) |
| 378 return false; | 369 return false; |
| 379 if (count != *new_count) | 370 if (count != *new_count) |
| 380 return true; | 371 return true; |
| 381 } | 372 } |
| 382 // Constrained Window count did not change, return false. | 373 // Constrained Window count did not change, return false. |
| 383 return false; | 374 return false; |
| 384 } | 375 } |
| 385 | 376 |
| 386 bool TabProxy::GetBlockedPopupCount(int* count) const { | 377 bool TabProxy::GetBlockedPopupCount(int* count) const { |
| 387 if (!is_valid()) | 378 if (!is_valid()) |
| 388 return false; | 379 return false; |
| 389 | 380 |
| 390 if (!count) { | 381 if (!count) { |
| 391 NOTREACHED(); | 382 NOTREACHED(); |
| 392 return false; | 383 return false; |
| 393 } | 384 } |
| 394 | 385 |
| 395 return sender_->Send(new AutomationMsg_BlockedPopupCount( | 386 return sender_->Send(new AutomationMsg_BlockedPopupCount( |
| 396 0, handle_, count)); | 387 handle_, count)); |
| 397 } | 388 } |
| 398 | 389 |
| 399 bool TabProxy::WaitForBlockedPopupCountToChangeTo(int target_count, | 390 bool TabProxy::WaitForBlockedPopupCountToChangeTo(int target_count, |
| 400 int wait_timeout) { | 391 int wait_timeout) { |
| 401 int intervals = std::max(wait_timeout / automation::kSleepTime, 1); | 392 int intervals = std::max(wait_timeout / automation::kSleepTime, 1); |
| 402 for (int i = 0; i < intervals; ++i) { | 393 for (int i = 0; i < intervals; ++i) { |
| 403 PlatformThread::Sleep(automation::kSleepTime); | 394 PlatformThread::Sleep(automation::kSleepTime); |
| 404 int new_count = -1; | 395 int new_count = -1; |
| 405 bool succeeded = GetBlockedPopupCount(&new_count); | 396 bool succeeded = GetBlockedPopupCount(&new_count); |
| 406 if (!succeeded) | 397 if (!succeeded) |
| 407 return false; | 398 return false; |
| 408 if (target_count == new_count) | 399 if (target_count == new_count) |
| 409 return true; | 400 return true; |
| 410 } | 401 } |
| 411 // Constrained Window count did not change, return false. | 402 // Constrained Window count did not change, return false. |
| 412 return false; | 403 return false; |
| 413 } | 404 } |
| 414 | 405 |
| 415 bool TabProxy::GetCookies(const GURL& url, std::string* cookies) { | 406 bool TabProxy::GetCookies(const GURL& url, std::string* cookies) { |
| 416 if (!is_valid()) | 407 if (!is_valid()) |
| 417 return false; | 408 return false; |
| 418 | 409 |
| 419 int size = 0; | 410 int size = 0; |
| 420 return sender_->Send(new AutomationMsg_GetCookies(0, url, handle_, &size, | 411 return sender_->Send(new AutomationMsg_GetCookies(url, handle_, &size, |
| 421 cookies)); | 412 cookies)); |
| 422 } | 413 } |
| 423 | 414 |
| 424 bool TabProxy::GetCookieByName(const GURL& url, | 415 bool TabProxy::GetCookieByName(const GURL& url, |
| 425 const std::string& name, | 416 const std::string& name, |
| 426 std::string* cookie) { | 417 std::string* cookie) { |
| 427 std::string cookies; | 418 std::string cookies; |
| 428 if (!GetCookies(url, &cookies)) | 419 if (!GetCookies(url, &cookies)) |
| 429 return false; | 420 return false; |
| 430 | 421 |
| 431 std::string namestr = name + "="; | 422 std::string namestr = name + "="; |
| 432 std::string::size_type idx = cookies.find(namestr); | 423 std::string::size_type idx = cookies.find(namestr); |
| 433 if (idx != std::string::npos) { | 424 if (idx != std::string::npos) { |
| 434 cookies.erase(0, idx + namestr.length()); | 425 cookies.erase(0, idx + namestr.length()); |
| 435 *cookie = cookies.substr(0, cookies.find(";")); | 426 *cookie = cookies.substr(0, cookies.find(";")); |
| 436 } else { | 427 } else { |
| 437 cookie->clear(); | 428 cookie->clear(); |
| 438 } | 429 } |
| 439 | 430 |
| 440 return true; | 431 return true; |
| 441 } | 432 } |
| 442 | 433 |
| 443 bool TabProxy::SetCookie(const GURL& url, const std::string& value) { | 434 bool TabProxy::SetCookie(const GURL& url, const std::string& value) { |
| 444 int response_value = 0; | 435 int response_value = 0; |
| 445 return sender_->Send(new AutomationMsg_SetCookie(0, url, value, handle_, | 436 return sender_->Send(new AutomationMsg_SetCookie(url, value, handle_, |
| 446 &response_value)); | 437 &response_value)); |
| 447 } | 438 } |
| 448 | 439 |
| 449 bool TabProxy::DeleteCookie(const GURL& url, const std::string& name) { | 440 bool TabProxy::DeleteCookie(const GURL& url, const std::string& name) { |
| 450 bool succeeded; | 441 bool succeeded; |
| 451 sender_->Send(new AutomationMsg_DeleteCookie(0, url, name, handle_, | 442 sender_->Send(new AutomationMsg_DeleteCookie(url, name, handle_, |
| 452 &succeeded)); | 443 &succeeded)); |
| 453 return succeeded; | 444 return succeeded; |
| 454 } | 445 } |
| 455 | 446 |
| 456 bool TabProxy::ShowCollectedCookiesDialog() { | 447 bool TabProxy::ShowCollectedCookiesDialog() { |
| 457 bool succeeded = false; | 448 bool succeeded = false; |
| 458 return sender_->Send(new AutomationMsg_ShowCollectedCookiesDialog( | 449 return sender_->Send(new AutomationMsg_ShowCollectedCookiesDialog( |
| 459 0, handle_, &succeeded)) && succeeded; | 450 handle_, &succeeded)) && succeeded; |
| 460 } | 451 } |
| 461 | 452 |
| 462 int TabProxy::InspectElement(int x, int y) { | 453 int TabProxy::InspectElement(int x, int y) { |
| 463 if (!is_valid()) | 454 if (!is_valid()) |
| 464 return -1; | 455 return -1; |
| 465 | 456 |
| 466 int ret = -1; | 457 int ret = -1; |
| 467 sender_->Send(new AutomationMsg_InspectElement(0, handle_, x, y, &ret)); | 458 sender_->Send(new AutomationMsg_InspectElement(handle_, x, y, &ret)); |
| 468 return ret; | 459 return ret; |
| 469 } | 460 } |
| 470 | 461 |
| 471 bool TabProxy::GetDownloadDirectory(FilePath* directory) { | 462 bool TabProxy::GetDownloadDirectory(FilePath* directory) { |
| 472 DCHECK(directory); | 463 DCHECK(directory); |
| 473 if (!is_valid()) | 464 if (!is_valid()) |
| 474 return false; | 465 return false; |
| 475 | 466 |
| 476 return sender_->Send(new AutomationMsg_DownloadDirectory(0, handle_, | 467 return sender_->Send(new AutomationMsg_DownloadDirectory(handle_, |
| 477 directory)); | 468 directory)); |
| 478 } | 469 } |
| 479 | 470 |
| 480 bool TabProxy::ShowInterstitialPage(const std::string& html_text) { | 471 bool TabProxy::ShowInterstitialPage(const std::string& html_text) { |
| 481 if (!is_valid()) | 472 if (!is_valid()) |
| 482 return false; | 473 return false; |
| 483 | 474 |
| 484 AutomationMsg_NavigationResponseValues result = | 475 AutomationMsg_NavigationResponseValues result = |
| 485 AUTOMATION_MSG_NAVIGATION_ERROR; | 476 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 486 if (!sender_->Send(new AutomationMsg_ShowInterstitialPage( | 477 if (!sender_->Send(new AutomationMsg_ShowInterstitialPage( |
| 487 0, handle_, html_text, &result))) { | 478 handle_, html_text, &result))) { |
| 488 return false; | 479 return false; |
| 489 } | 480 } |
| 490 | 481 |
| 491 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS; | 482 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS; |
| 492 } | 483 } |
| 493 | 484 |
| 494 bool TabProxy::HideInterstitialPage() { | 485 bool TabProxy::HideInterstitialPage() { |
| 495 if (!is_valid()) | 486 if (!is_valid()) |
| 496 return false; | 487 return false; |
| 497 | 488 |
| 498 bool result = false; | 489 bool result = false; |
| 499 sender_->Send(new AutomationMsg_HideInterstitialPage(0, handle_, &result)); | 490 sender_->Send(new AutomationMsg_HideInterstitialPage(handle_, &result)); |
| 500 return result; | 491 return result; |
| 501 } | 492 } |
| 502 | 493 |
| 503 bool TabProxy::Close() { | 494 bool TabProxy::Close() { |
| 504 return Close(false); | 495 return Close(false); |
| 505 } | 496 } |
| 506 | 497 |
| 507 bool TabProxy::Close(bool wait_until_closed) { | 498 bool TabProxy::Close(bool wait_until_closed) { |
| 508 if (!is_valid()) | 499 if (!is_valid()) |
| 509 return false; | 500 return false; |
| 510 | 501 |
| 511 bool succeeded = false; | 502 bool succeeded = false; |
| 512 sender_->Send(new AutomationMsg_CloseTab(0, handle_, wait_until_closed, | 503 sender_->Send(new AutomationMsg_CloseTab(handle_, wait_until_closed, |
| 513 &succeeded)); | 504 &succeeded)); |
| 514 return succeeded; | 505 return succeeded; |
| 515 } | 506 } |
| 516 | 507 |
| 517 #if defined(OS_WIN) | 508 #if defined(OS_WIN) |
| 518 bool TabProxy::ProcessUnhandledAccelerator(const MSG& msg) { | 509 bool TabProxy::ProcessUnhandledAccelerator(const MSG& msg) { |
| 519 if (!is_valid()) | 510 if (!is_valid()) |
| 520 return false; | 511 return false; |
| 521 | 512 |
| 522 return sender_->Send( | 513 return sender_->Send( |
| 523 new AutomationMsg_ProcessUnhandledAccelerator(0, handle_, msg)); | 514 new AutomationMsg_ProcessUnhandledAccelerator(handle_, msg)); |
| 524 // This message expects no response | 515 // This message expects no response |
| 525 } | 516 } |
| 526 | 517 |
| 527 bool TabProxy::SetInitialFocus(bool reverse, bool restore_focus_to_view) { | 518 bool TabProxy::SetInitialFocus(bool reverse, bool restore_focus_to_view) { |
| 528 if (!is_valid()) | 519 if (!is_valid()) |
| 529 return false; | 520 return false; |
| 530 | 521 |
| 531 return sender_->Send( | 522 return sender_->Send( |
| 532 new AutomationMsg_SetInitialFocus(0, handle_, reverse, | 523 new AutomationMsg_SetInitialFocus(handle_, reverse, |
| 533 restore_focus_to_view)); | 524 restore_focus_to_view)); |
| 534 // This message expects no response | 525 // This message expects no response |
| 535 } | 526 } |
| 536 | 527 |
| 537 AutomationMsg_NavigationResponseValues TabProxy::NavigateInExternalTab( | 528 AutomationMsg_NavigationResponseValues TabProxy::NavigateInExternalTab( |
| 538 const GURL& url, const GURL& referrer) { | 529 const GURL& url, const GURL& referrer) { |
| 539 if (!is_valid()) | 530 if (!is_valid()) |
| 540 return AUTOMATION_MSG_NAVIGATION_ERROR; | 531 return AUTOMATION_MSG_NAVIGATION_ERROR; |
| 541 | 532 |
| 542 AutomationMsg_NavigationResponseValues rv = AUTOMATION_MSG_NAVIGATION_ERROR; | 533 AutomationMsg_NavigationResponseValues rv = AUTOMATION_MSG_NAVIGATION_ERROR; |
| 543 sender_->Send(new AutomationMsg_NavigateInExternalTab(0, handle_, url, | 534 sender_->Send(new AutomationMsg_NavigateInExternalTab(handle_, url, |
| 544 referrer, &rv)); | 535 referrer, &rv)); |
| 545 return rv; | 536 return rv; |
| 546 } | 537 } |
| 547 | 538 |
| 548 AutomationMsg_NavigationResponseValues TabProxy::NavigateExternalTabAtIndex( | 539 AutomationMsg_NavigationResponseValues TabProxy::NavigateExternalTabAtIndex( |
| 549 int index) { | 540 int index) { |
| 550 if (!is_valid()) | 541 if (!is_valid()) |
| 551 return AUTOMATION_MSG_NAVIGATION_ERROR; | 542 return AUTOMATION_MSG_NAVIGATION_ERROR; |
| 552 | 543 |
| 553 AutomationMsg_NavigationResponseValues rv = AUTOMATION_MSG_NAVIGATION_ERROR; | 544 AutomationMsg_NavigationResponseValues rv = AUTOMATION_MSG_NAVIGATION_ERROR; |
| 554 sender_->Send(new AutomationMsg_NavigateExternalTabAtIndex(0, handle_, index, | 545 sender_->Send(new AutomationMsg_NavigateExternalTabAtIndex(handle_, index, |
| 555 &rv)); | 546 &rv)); |
| 556 return rv; | 547 return rv; |
| 557 } | 548 } |
| 558 | 549 |
| 559 void TabProxy::HandleMessageFromExternalHost(const std::string& message, | 550 void TabProxy::HandleMessageFromExternalHost(const std::string& message, |
| 560 const std::string& origin, | 551 const std::string& origin, |
| 561 const std::string& target) { | 552 const std::string& target) { |
| 562 if (!is_valid()) | 553 if (!is_valid()) |
| 563 return; | 554 return; |
| 564 | 555 |
| 565 sender_->Send( | 556 sender_->Send( |
| 566 new AutomationMsg_HandleMessageFromExternalHost( | 557 new AutomationMsg_HandleMessageFromExternalHost( |
| 567 0, handle_, message, origin, target)); | 558 handle_, message, origin, target)); |
| 568 } | 559 } |
| 569 #endif // defined(OS_WIN) | 560 #endif // defined(OS_WIN) |
| 570 | 561 |
| 571 bool TabProxy::WaitForTabToBeRestored(uint32 timeout_ms) { | 562 bool TabProxy::WaitForTabToBeRestored(uint32 timeout_ms) { |
| 572 if (!is_valid()) | 563 if (!is_valid()) |
| 573 return false; | 564 return false; |
| 574 return sender_->Send(new AutomationMsg_WaitForTabToBeRestored(0, handle_)); | 565 return sender_->Send(new AutomationMsg_WaitForTabToBeRestored(handle_)); |
| 575 } | 566 } |
| 576 | 567 |
| 577 bool TabProxy::GetSecurityState(SecurityStyle* security_style, | 568 bool TabProxy::GetSecurityState(SecurityStyle* security_style, |
| 578 int* ssl_cert_status, | 569 int* ssl_cert_status, |
| 579 int* insecure_content_status) { | 570 int* insecure_content_status) { |
| 580 DCHECK(security_style && ssl_cert_status && insecure_content_status); | 571 DCHECK(security_style && ssl_cert_status && insecure_content_status); |
| 581 | 572 |
| 582 if (!is_valid()) | 573 if (!is_valid()) |
| 583 return false; | 574 return false; |
| 584 | 575 |
| 585 bool succeeded = false; | 576 bool succeeded = false; |
| 586 | 577 |
| 587 sender_->Send(new AutomationMsg_GetSecurityState( | 578 sender_->Send(new AutomationMsg_GetSecurityState( |
| 588 0, handle_, &succeeded, security_style, ssl_cert_status, | 579 handle_, &succeeded, security_style, ssl_cert_status, |
| 589 insecure_content_status)); | 580 insecure_content_status)); |
| 590 | 581 |
| 591 return succeeded; | 582 return succeeded; |
| 592 } | 583 } |
| 593 | 584 |
| 594 bool TabProxy::GetPageType(PageType* type) { | 585 bool TabProxy::GetPageType(PageType* type) { |
| 595 DCHECK(type); | 586 DCHECK(type); |
| 596 | 587 |
| 597 if (!is_valid()) | 588 if (!is_valid()) |
| 598 return false; | 589 return false; |
| 599 | 590 |
| 600 bool succeeded = false; | 591 bool succeeded = false; |
| 601 sender_->Send(new AutomationMsg_GetPageType(0, handle_, &succeeded, type)); | 592 sender_->Send(new AutomationMsg_GetPageType(handle_, &succeeded, type)); |
| 602 return succeeded; | 593 return succeeded; |
| 603 } | 594 } |
| 604 | 595 |
| 605 bool TabProxy::TakeActionOnSSLBlockingPage(bool proceed) { | 596 bool TabProxy::TakeActionOnSSLBlockingPage(bool proceed) { |
| 606 if (!is_valid()) | 597 if (!is_valid()) |
| 607 return false; | 598 return false; |
| 608 | 599 |
| 609 AutomationMsg_NavigationResponseValues result = | 600 AutomationMsg_NavigationResponseValues result = |
| 610 AUTOMATION_MSG_NAVIGATION_ERROR; | 601 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 611 sender_->Send(new AutomationMsg_ActionOnSSLBlockingPage(0, handle_, proceed, | 602 sender_->Send(new AutomationMsg_ActionOnSSLBlockingPage(handle_, proceed, |
| 612 &result)); | 603 &result)); |
| 613 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS || | 604 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS || |
| 614 result == AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED; | 605 result == AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED; |
| 615 } | 606 } |
| 616 | 607 |
| 617 bool TabProxy::PrintNow() { | 608 bool TabProxy::PrintNow() { |
| 618 if (!is_valid()) | 609 if (!is_valid()) |
| 619 return false; | 610 return false; |
| 620 | 611 |
| 621 bool succeeded = false; | 612 bool succeeded = false; |
| 622 sender_->Send(new AutomationMsg_PrintNow(0, handle_, &succeeded)); | 613 sender_->Send(new AutomationMsg_PrintNow(handle_, &succeeded)); |
| 623 return succeeded; | 614 return succeeded; |
| 624 } | 615 } |
| 625 | 616 |
| 626 bool TabProxy::PrintAsync() { | 617 bool TabProxy::PrintAsync() { |
| 627 if (!is_valid()) | 618 if (!is_valid()) |
| 628 return false; | 619 return false; |
| 629 | 620 |
| 630 return sender_->Send(new AutomationMsg_PrintAsync(0, handle_)); | 621 return sender_->Send(new AutomationMsg_PrintAsync(handle_)); |
| 631 } | 622 } |
| 632 | 623 |
| 633 bool TabProxy::SavePage(const FilePath& file_name, | 624 bool TabProxy::SavePage(const FilePath& file_name, |
| 634 const FilePath& dir_path, | 625 const FilePath& dir_path, |
| 635 SavePackage::SavePackageType type) { | 626 SavePackage::SavePackageType type) { |
| 636 if (!is_valid()) | 627 if (!is_valid()) |
| 637 return false; | 628 return false; |
| 638 | 629 |
| 639 bool succeeded = false; | 630 bool succeeded = false; |
| 640 sender_->Send(new AutomationMsg_SavePage(0, handle_, file_name, dir_path, | 631 sender_->Send(new AutomationMsg_SavePage(handle_, file_name, dir_path, |
| 641 static_cast<int>(type), | 632 static_cast<int>(type), |
| 642 &succeeded)); | 633 &succeeded)); |
| 643 return succeeded; | 634 return succeeded; |
| 644 } | 635 } |
| 645 | 636 |
| 646 bool TabProxy::GetInfoBarCount(int* count) { | 637 bool TabProxy::GetInfoBarCount(int* count) { |
| 647 if (!is_valid()) | 638 if (!is_valid()) |
| 648 return false; | 639 return false; |
| 649 | 640 |
| 650 return sender_->Send(new AutomationMsg_GetInfoBarCount(0, handle_, count)); | 641 return sender_->Send(new AutomationMsg_GetInfoBarCount(handle_, count)); |
| 651 } | 642 } |
| 652 | 643 |
| 653 bool TabProxy::WaitForInfoBarCount(int target_count) { | 644 bool TabProxy::WaitForInfoBarCount(int target_count) { |
| 654 if (!is_valid()) | 645 if (!is_valid()) |
| 655 return false; | 646 return false; |
| 656 | 647 |
| 657 bool success = false; | 648 bool success = false; |
| 658 return sender_->Send(new AutomationMsg_WaitForInfoBarCount( | 649 return sender_->Send(new AutomationMsg_WaitForInfoBarCount( |
| 659 0, handle_, target_count, &success)) && success; | 650 handle_, target_count, &success)) && success; |
| 660 } | 651 } |
| 661 | 652 |
| 662 bool TabProxy::ClickInfoBarAccept(int info_bar_index, | 653 bool TabProxy::ClickInfoBarAccept(int info_bar_index, |
| 663 bool wait_for_navigation) { | 654 bool wait_for_navigation) { |
| 664 if (!is_valid()) | 655 if (!is_valid()) |
| 665 return false; | 656 return false; |
| 666 | 657 |
| 667 AutomationMsg_NavigationResponseValues result = | 658 AutomationMsg_NavigationResponseValues result = |
| 668 AUTOMATION_MSG_NAVIGATION_ERROR; | 659 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 669 sender_->Send(new AutomationMsg_ClickInfoBarAccept( | 660 sender_->Send(new AutomationMsg_ClickInfoBarAccept( |
| 670 0, handle_, info_bar_index, wait_for_navigation, &result)); | 661 handle_, info_bar_index, wait_for_navigation, &result)); |
| 671 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS || | 662 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS || |
| 672 result == AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED; | 663 result == AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED; |
| 673 } | 664 } |
| 674 | 665 |
| 675 bool TabProxy::GetLastNavigationTime(int64* nav_time) { | 666 bool TabProxy::GetLastNavigationTime(int64* nav_time) { |
| 676 if (!is_valid()) | 667 if (!is_valid()) |
| 677 return false; | 668 return false; |
| 678 | 669 |
| 679 bool success = false; | 670 bool success = false; |
| 680 success = sender_->Send(new AutomationMsg_GetLastNavigationTime( | 671 success = sender_->Send(new AutomationMsg_GetLastNavigationTime( |
| 681 0, handle_, nav_time)); | 672 handle_, nav_time)); |
| 682 return success; | 673 return success; |
| 683 } | 674 } |
| 684 | 675 |
| 685 bool TabProxy::WaitForNavigation(int64 last_navigation_time) { | 676 bool TabProxy::WaitForNavigation(int64 last_navigation_time) { |
| 686 if (!is_valid()) | 677 if (!is_valid()) |
| 687 return false; | 678 return false; |
| 688 | 679 |
| 689 AutomationMsg_NavigationResponseValues result = | 680 AutomationMsg_NavigationResponseValues result = |
| 690 AUTOMATION_MSG_NAVIGATION_ERROR; | 681 AUTOMATION_MSG_NAVIGATION_ERROR; |
| 691 sender_->Send(new AutomationMsg_WaitForNavigation(0, handle_, | 682 sender_->Send(new AutomationMsg_WaitForNavigation(handle_, |
| 692 last_navigation_time, | 683 last_navigation_time, |
| 693 &result)); | 684 &result)); |
| 694 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS || | 685 return result == AUTOMATION_MSG_NAVIGATION_SUCCESS || |
| 695 result == AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED; | 686 result == AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED; |
| 696 } | 687 } |
| 697 | 688 |
| 698 bool TabProxy::GetPageCurrentEncoding(std::string* encoding) { | 689 bool TabProxy::GetPageCurrentEncoding(std::string* encoding) { |
| 699 if (!is_valid()) | 690 if (!is_valid()) |
| 700 return false; | 691 return false; |
| 701 | 692 |
| 702 bool succeeded = sender_->Send( | 693 bool succeeded = sender_->Send( |
| 703 new AutomationMsg_GetPageCurrentEncoding(0, handle_, encoding)); | 694 new AutomationMsg_GetPageCurrentEncoding(handle_, encoding)); |
| 704 return succeeded; | 695 return succeeded; |
| 705 } | 696 } |
| 706 | 697 |
| 707 bool TabProxy::OverrideEncoding(const std::string& encoding) { | 698 bool TabProxy::OverrideEncoding(const std::string& encoding) { |
| 708 if (!is_valid()) | 699 if (!is_valid()) |
| 709 return false; | 700 return false; |
| 710 | 701 |
| 711 bool succeeded = false; | 702 bool succeeded = false; |
| 712 sender_->Send(new AutomationMsg_OverrideEncoding(0, handle_, encoding, | 703 sender_->Send(new AutomationMsg_OverrideEncoding(handle_, encoding, |
| 713 &succeeded)); | 704 &succeeded)); |
| 714 return succeeded; | 705 return succeeded; |
| 715 } | 706 } |
| 716 | 707 |
| 717 bool TabProxy::LoadBlockedPlugins() { | 708 bool TabProxy::LoadBlockedPlugins() { |
| 718 if (!is_valid()) | 709 if (!is_valid()) |
| 719 return false; | 710 return false; |
| 720 | 711 |
| 721 bool succeeded = false; | 712 bool succeeded = false; |
| 722 sender_->Send(new AutomationMsg_LoadBlockedPlugins(0, handle_, &succeeded)); | 713 sender_->Send(new AutomationMsg_LoadBlockedPlugins(handle_, &succeeded)); |
| 723 return succeeded; | 714 return succeeded; |
| 724 } | 715 } |
| 725 | 716 |
| 726 bool TabProxy::CaptureEntirePageAsPNG(const FilePath& path) { | 717 bool TabProxy::CaptureEntirePageAsPNG(const FilePath& path) { |
| 727 if (!is_valid()) | 718 if (!is_valid()) |
| 728 return false; | 719 return false; |
| 729 | 720 |
| 730 bool succeeded = false; | 721 bool succeeded = false; |
| 731 sender_->Send(new AutomationMsg_CaptureEntirePageAsPNG(0, handle_, path, | 722 sender_->Send(new AutomationMsg_CaptureEntirePageAsPNG(handle_, path, |
| 732 &succeeded)); | 723 &succeeded)); |
| 733 return succeeded; | 724 return succeeded; |
| 734 } | 725 } |
| 735 | 726 |
| 736 #if defined(OS_WIN) | 727 #if defined(OS_WIN) |
| 737 void TabProxy::Reposition(HWND window, HWND window_insert_after, int left, | 728 void TabProxy::Reposition(HWND window, HWND window_insert_after, int left, |
| 738 int top, int width, int height, int flags, | 729 int top, int width, int height, int flags, |
| 739 HWND parent_window) { | 730 HWND parent_window) { |
| 740 IPC::Reposition_Params params = {0}; | 731 Reposition_Params params = {0}; |
| 741 params.window = window; | 732 params.window = window; |
| 742 params.window_insert_after = window_insert_after; | 733 params.window_insert_after = window_insert_after; |
| 743 params.left = left; | 734 params.left = left; |
| 744 params.top = top; | 735 params.top = top; |
| 745 params.width = width; | 736 params.width = width; |
| 746 params.height = height; | 737 params.height = height; |
| 747 params.flags = flags; | 738 params.flags = flags; |
| 748 params.set_parent = (::IsWindow(parent_window) ? true : false); | 739 params.set_parent = (::IsWindow(parent_window) ? true : false); |
| 749 params.parent_window = parent_window; | 740 params.parent_window = parent_window; |
| 750 sender_->Send(new AutomationMsg_TabReposition(0, handle_, params)); | 741 sender_->Send(new AutomationMsg_TabReposition(handle_, params)); |
| 751 } | 742 } |
| 752 | 743 |
| 753 void TabProxy::SendContextMenuCommand(int selected_command) { | 744 void TabProxy::SendContextMenuCommand(int selected_command) { |
| 754 sender_->Send(new AutomationMsg_ForwardContextMenuCommandToChrome( | 745 sender_->Send(new AutomationMsg_ForwardContextMenuCommandToChrome( |
| 755 0, handle_, selected_command)); | 746 handle_, selected_command)); |
| 756 } | 747 } |
| 757 | 748 |
| 758 void TabProxy::OnHostMoved() { | 749 void TabProxy::OnHostMoved() { |
| 759 sender_->Send(new AutomationMsg_BrowserMove(0, handle_)); | 750 sender_->Send(new AutomationMsg_BrowserMove(handle_)); |
| 760 } | 751 } |
| 761 #endif // defined(OS_WIN) | 752 #endif // defined(OS_WIN) |
| 762 | 753 |
| 763 void TabProxy::SelectAll() { | 754 void TabProxy::SelectAll() { |
| 764 sender_->Send(new AutomationMsg_SelectAll(0, handle_)); | 755 sender_->Send(new AutomationMsg_SelectAll(handle_)); |
| 765 } | 756 } |
| 766 | 757 |
| 767 void TabProxy::Cut() { | 758 void TabProxy::Cut() { |
| 768 sender_->Send(new AutomationMsg_Cut(0, handle_)); | 759 sender_->Send(new AutomationMsg_Cut(handle_)); |
| 769 } | 760 } |
| 770 | 761 |
| 771 void TabProxy::Copy() { | 762 void TabProxy::Copy() { |
| 772 sender_->Send(new AutomationMsg_Copy(0, handle_)); | 763 sender_->Send(new AutomationMsg_Copy(handle_)); |
| 773 } | 764 } |
| 774 | 765 |
| 775 void TabProxy::Paste() { | 766 void TabProxy::Paste() { |
| 776 sender_->Send(new AutomationMsg_Paste(0, handle_)); | 767 sender_->Send(new AutomationMsg_Paste(handle_)); |
| 777 } | 768 } |
| 778 | 769 |
| 779 void TabProxy::ReloadAsync() { | 770 void TabProxy::ReloadAsync() { |
| 780 sender_->Send(new AutomationMsg_ReloadAsync(0, handle_)); | 771 sender_->Send(new AutomationMsg_ReloadAsync(handle_)); |
| 781 } | 772 } |
| 782 | 773 |
| 783 void TabProxy::StopAsync() { | 774 void TabProxy::StopAsync() { |
| 784 sender_->Send(new AutomationMsg_StopAsync(0, handle_)); | 775 sender_->Send(new AutomationMsg_StopAsync(handle_)); |
| 785 } | 776 } |
| 786 | 777 |
| 787 void TabProxy::SaveAsAsync() { | 778 void TabProxy::SaveAsAsync() { |
| 788 sender_->Send(new AutomationMsg_SaveAsAsync(0, handle_)); | 779 sender_->Send(new AutomationMsg_SaveAsAsync(handle_)); |
| 789 } | 780 } |
| 790 | 781 |
| 791 void TabProxy::AddObserver(TabProxyDelegate* observer) { | 782 void TabProxy::AddObserver(TabProxyDelegate* observer) { |
| 792 AutoLock lock(list_lock_); | 783 AutoLock lock(list_lock_); |
| 793 observers_list_.AddObserver(observer); | 784 observers_list_.AddObserver(observer); |
| 794 } | 785 } |
| 795 | 786 |
| 796 void TabProxy::RemoveObserver(TabProxyDelegate* observer) { | 787 void TabProxy::RemoveObserver(TabProxyDelegate* observer) { |
| 797 AutoLock lock(list_lock_); | 788 AutoLock lock(list_lock_); |
| 798 observers_list_.RemoveObserver(observer); | 789 observers_list_.RemoveObserver(observer); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 813 TabProxy::~TabProxy() {} | 804 TabProxy::~TabProxy() {} |
| 814 | 805 |
| 815 bool TabProxy::ExecuteJavaScriptAndGetJSON(const std::string& script, | 806 bool TabProxy::ExecuteJavaScriptAndGetJSON(const std::string& script, |
| 816 std::string* json) { | 807 std::string* json) { |
| 817 if (!is_valid()) | 808 if (!is_valid()) |
| 818 return false; | 809 return false; |
| 819 if (!json) { | 810 if (!json) { |
| 820 NOTREACHED(); | 811 NOTREACHED(); |
| 821 return false; | 812 return false; |
| 822 } | 813 } |
| 823 return sender_->Send(new AutomationMsg_DomOperation(0, handle_, L"", | 814 return sender_->Send(new AutomationMsg_DomOperation(handle_, L"", |
| 824 UTF8ToWide(script), | 815 UTF8ToWide(script), |
| 825 json)); | 816 json)); |
| 826 } | 817 } |
| 827 | 818 |
| 828 void TabProxy::FirstObjectAdded() { | 819 void TabProxy::FirstObjectAdded() { |
| 829 AddRef(); | 820 AddRef(); |
| 830 } | 821 } |
| 831 | 822 |
| 832 void TabProxy::LastObjectRemoved() { | 823 void TabProxy::LastObjectRemoved() { |
| 833 Release(); | 824 Release(); |
| 834 } | 825 } |
| OLD | NEW |