| Index: chrome/test/automation/tab_proxy.cc
|
| ===================================================================
|
| --- chrome/test/automation/tab_proxy.cc (revision 9131)
|
| +++ chrome/test/automation/tab_proxy.cc (working copy)
|
| @@ -24,15 +24,23 @@
|
| }
|
|
|
| IPC::Message* response = NULL;
|
| - int tab_title_size_response;
|
| -
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_TabTitleRequest(0, handle_), &response,
|
| - AutomationMsg_TabTitleResponse::ID) &&
|
| - AutomationMsg_TabTitleResponse::Read(response, &tab_title_size_response, title) &&
|
| - tab_title_size_response >= 0;
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + new AutomationMsg_TabTitleRequest(0, handle_), &response,
|
| + AutomationMsg_TabTitleResponse::ID);
|
|
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + int tab_title_size_response = -1;
|
| + if (response->ReadInt(&iter, &tab_title_size_response) &&
|
| + (tab_title_size_response >= 0)) {
|
| + response->ReadWString(&iter, title);
|
| + } else {
|
| + succeeded = false;
|
| + }
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -47,18 +55,24 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_ShelfVisibilityRequest(0, handle_),
|
| - &response, AutomationMsg_ShelfVisibilityResponse::ID) &&
|
| - AutomationMsg_ShelfVisibilityResponse::Read(response, is_visible);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return succeeded;
|
| + new AutomationMsg_ShelfVisibilityRequest(0, handle_),
|
| + &response,
|
| + AutomationMsg_ShelfVisibilityResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadBool(&iter, is_visible);
|
| + delete response;
|
| + return true;
|
| }
|
|
|
| bool TabProxy::OpenFindInPage() {
|
| if (!is_valid())
|
| return false;
|
|
|
| - return sender_->Send(new AutomationMsg_OpenFindInPageRequest(0, handle_));
|
| + return sender_->Send(
|
| + new AutomationMsg_OpenFindInPageRequest(0, handle_));
|
| // This message expects no response.
|
| }
|
|
|
| @@ -74,10 +88,15 @@
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_FindWindowVisibilityRequest(0, handle_),
|
| - &response, AutomationMsg_FindWindowVisibilityResponse::ID) &&
|
| - AutomationMsg_FindWindowVisibilityResponse::Read(response, is_visible);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return succeeded;
|
| + &response,
|
| + AutomationMsg_FindWindowVisibilityResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadBool(&iter, is_visible);
|
| + delete response;
|
| + return true;
|
| }
|
|
|
| bool TabProxy::GetFindWindowLocation(int* x, int* y) {
|
| @@ -87,17 +106,23 @@
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_FindWindowLocationRequest(0, handle_),
|
| - &response, AutomationMsg_FindWindowLocationResponse::ID) &&
|
| - AutomationMsg_FindWindowLocationResponse::Read(response, x, y);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return succeeded;
|
| + &response,
|
| + AutomationMsg_FindWindowLocationResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadInt(&iter, x);
|
| + response->ReadInt(&iter, y);
|
| + delete response;
|
| + return true;
|
| }
|
|
|
| int TabProxy::FindInPage(const std::wstring& search_string,
|
| FindInPageDirection forward,
|
| FindInPageCase match_case,
|
| bool find_next,
|
| - int* ordinal) {
|
| + int* active_ordinal) {
|
| if (!is_valid())
|
| return -1;
|
|
|
| @@ -109,15 +134,22 @@
|
| request.forward = forward == TRUE;
|
|
|
| IPC::Message* response = NULL;
|
| - int matches;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_FindRequest(0, handle_, request),
|
| - &response, AutomationMsg_FindInPageResponse2::ID) &&
|
| - AutomationMsg_FindInPageResponse2::Read(response, ordinal, &matches);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + &response,
|
| + AutomationMsg_FindInPageResponse2::ID);
|
| if (!succeeded)
|
| return -1;
|
| - return matches;
|
| +
|
| + void* iter = NULL;
|
| + int ordinal;
|
| + int matches_found;
|
| + response->ReadInt(&iter, &ordinal);
|
| + response->ReadInt(&iter, &matches_found);
|
| + if (active_ordinal)
|
| + *active_ordinal = ordinal;
|
| + delete response;
|
| + return matches_found;
|
| }
|
|
|
| int TabProxy::NavigateToURL(const GURL& url) {
|
| @@ -131,13 +163,18 @@
|
| return AUTOMATION_MSG_NAVIGATION_ERROR;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| + new AutomationMsg_NavigateToURLRequest(0, handle_, url), &response,
|
| + AutomationMsg_NavigateToURLResponse::ID, timeout_ms, is_timeout);
|
| +
|
| + if (!succeeded)
|
| + return AUTOMATION_MSG_NAVIGATION_ERROR;
|
| +
|
| + void* iter = NULL;
|
| int navigate_response = AUTOMATION_MSG_NAVIGATION_ERROR;
|
| - if (sender_->SendAndWaitForResponseWithTimeout(
|
| - new AutomationMsg_NavigateToURLRequest(0, handle_, url), &response,
|
| - AutomationMsg_NavigateToURLResponse::ID, timeout_ms, is_timeout)) {
|
| - AutomationMsg_NavigateToURLResponse::Read(response, &navigate_response);
|
| - }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + response->ReadInt(&iter, &navigate_response);
|
| +
|
| + delete response;
|
| return navigate_response;
|
| }
|
|
|
| @@ -147,15 +184,19 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool is_timeout = false;
|
| - int rv = AUTOMATION_MSG_NAVIGATION_ERROR;
|
| - if (sender_->SendAndWaitForResponseWithTimeout(
|
| - new AutomationMsg_NavigateInExternalTabRequest(0, handle_, url),
|
| - &response, AutomationMsg_NavigateInExternalTabResponse::ID, INFINITE,
|
| - &is_timeout)) {
|
| - AutomationMsg_NavigateInExternalTabResponse::Read(response, &rv);
|
| - }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return rv;
|
| + bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| + new AutomationMsg_NavigateInExternalTabRequest(0, handle_, url), &response,
|
| + AutomationMsg_NavigateInExternalTabResponse::ID, INFINITE, &is_timeout);
|
| +
|
| + if (!succeeded)
|
| + return AUTOMATION_MSG_NAVIGATION_ERROR;
|
| +
|
| + void* iter = NULL;
|
| + int navigate_response = AUTOMATION_MSG_NAVIGATION_ERROR;
|
| + response->ReadInt(&iter, &navigate_response);
|
| +
|
| + delete response;
|
| + return navigate_response;
|
| }
|
|
|
| bool TabProxy::SetAuth(const std::wstring& username,
|
| @@ -164,13 +205,19 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_SetAuthRequest(0, handle_, username, password), &response,
|
| + AutomationMsg_SetAuthResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| int navigate_response = -1;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_SetAuthRequest(0, handle_, username, password),
|
| - &response, AutomationMsg_SetAuthResponse::ID) &&
|
| - AutomationMsg_SetAuthResponse::Read(response, &navigate_response) &&
|
| - navigate_response >= 0;
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + succeeded = (response->ReadInt(&iter, &navigate_response) &&
|
| + navigate_response >= 0);
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -179,13 +226,19 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_CancelAuthRequest(0, handle_), &response,
|
| + AutomationMsg_CancelAuthResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| int navigate_response = -1;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_CancelAuthRequest(0, handle_), &response,
|
| - AutomationMsg_CancelAuthResponse::ID) &&
|
| - AutomationMsg_CancelAuthResponse::Read(response, &navigate_response) &&
|
| - navigate_response >= 0;
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + succeeded = (response->ReadInt(&iter, &navigate_response) &&
|
| + navigate_response >= 0);
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -194,12 +247,18 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_NeedsAuthRequest(0, handle_), &response,
|
| + AutomationMsg_NeedsAuthResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| bool needs_auth = false;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_NeedsAuthRequest(0, handle_), &response,
|
| - AutomationMsg_NeedsAuthResponse::ID) &&
|
| - AutomationMsg_NeedsAuthResponse::Read(response, &needs_auth);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + response->ReadBool(&iter, &needs_auth);
|
| +
|
| + delete response;
|
| return needs_auth;
|
| }
|
|
|
| @@ -208,13 +267,18 @@
|
| return AUTOMATION_MSG_NAVIGATION_ERROR;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_GoBackRequest(0, handle_), &response,
|
| + AutomationMsg_GoBackResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return AUTOMATION_MSG_NAVIGATION_ERROR;
|
| +
|
| + void* iter = NULL;
|
| int navigate_response = AUTOMATION_MSG_NAVIGATION_ERROR;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_GoBackRequest(0, handle_), &response,
|
| - AutomationMsg_GoBackResponse::ID)) {
|
| - AutomationMsg_GoBackResponse::Read(response, &navigate_response);
|
| - }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + response->ReadInt(&iter, &navigate_response);
|
| +
|
| + delete response;
|
| return navigate_response;
|
| }
|
|
|
| @@ -223,13 +287,18 @@
|
| return AUTOMATION_MSG_NAVIGATION_ERROR;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_GoForwardRequest(0, handle_), &response,
|
| + AutomationMsg_GoForwardResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return AUTOMATION_MSG_NAVIGATION_ERROR;
|
| +
|
| + void* iter = NULL;
|
| int navigate_response = AUTOMATION_MSG_NAVIGATION_ERROR;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_GoForwardRequest(0, handle_), &response,
|
| - AutomationMsg_GoForwardResponse::ID)) {
|
| - AutomationMsg_GoForwardResponse::Read(response, &navigate_response);
|
| - }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + response->ReadInt(&iter, &navigate_response);
|
| +
|
| + delete response;
|
| return navigate_response;
|
| }
|
|
|
| @@ -238,30 +307,48 @@
|
| return AUTOMATION_MSG_NAVIGATION_ERROR;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_ReloadRequest(0, handle_), &response,
|
| + AutomationMsg_ReloadResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return AUTOMATION_MSG_NAVIGATION_ERROR;
|
| +
|
| + void* iter = NULL;
|
| int navigate_response = AUTOMATION_MSG_NAVIGATION_ERROR;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_ReloadRequest(0, handle_), &response,
|
| - AutomationMsg_ReloadResponse::ID)) {
|
| - AutomationMsg_ReloadResponse::Read(response, &navigate_response);
|
| - }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + response->ReadInt(&iter, &navigate_response);
|
| +
|
| + delete response;
|
| return navigate_response;
|
| }
|
|
|
| bool TabProxy::GetRedirectsFrom(const GURL& source_url,
|
| std::vector<GURL>* redirects) {
|
| + std::vector<GURL> output;
|
| +
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_RedirectsFromRequest(0, handle_, source_url), &response,
|
| AutomationMsg_RedirectsFromResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - if (succeeded) {
|
| - succeeded = AutomationMsg_RedirectsFromResponse::Read(
|
| - response, &succeeded, redirects) &&
|
| - succeeded;
|
| +
|
| + void* iter = NULL;
|
| + int num_redirects;
|
| + if (!response->ReadInt(&iter, &num_redirects))
|
| + return false;
|
| + if (num_redirects < 0)
|
| + return false; // Negative redirect counts indicate failure.
|
| +
|
| + for (int i = 0; i < num_redirects; i++) {
|
| + GURL cur;
|
| + if (!IPC::ParamTraits<GURL>::Read(response, &iter, &cur))
|
| + return false;
|
| + output.push_back(cur);
|
| }
|
| -
|
| - return succeeded;
|
| + redirects->swap(output);
|
| + return true;
|
| }
|
|
|
| bool TabProxy::GetCurrentURL(GURL* url) const {
|
| @@ -274,12 +361,23 @@
|
| }
|
|
|
| IPC::Message* response = NULL;
|
| - bool succeeded;
|
| - succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_TabURLRequest(0, handle_), &response,
|
| - AutomationMsg_TabURLResponse::ID) &&
|
| - AutomationMsg_TabURLResponse::Read(response, &succeeded, url);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_TabURLRequest(0, handle_), &response,
|
| + AutomationMsg_TabURLResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + bool tab_url_success = false;
|
| + if (response->ReadBool(&iter, &tab_url_success) && tab_url_success) {
|
| + if (!IPC::ParamTraits<GURL>::Read(response, &iter, url))
|
| + succeeded = false;
|
| + } else {
|
| + succeeded = false;
|
| + }
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -288,14 +386,21 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| - bool status = false;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_NavigationAsyncRequest(0, handle_, url), &response,
|
| - AutomationMsg_NavigationAsyncResponse::ID)) {
|
| - AutomationMsg_NavigationAsyncResponse::Read(response, &status);
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_NavigationAsyncRequest(0, handle_, url), &response,
|
| + AutomationMsg_NavigationAsyncResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + bool status;
|
| + if (AutomationMsg_NavigationAsyncResponse::Read(response, &status) &&
|
| + status) {
|
| + succeeded = true;
|
| }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return status;
|
| +
|
| + delete response;
|
| + return succeeded;
|
| }
|
|
|
| bool TabProxy::GetHWND(HWND* hwnd) const {
|
| @@ -306,13 +411,20 @@
|
| return false;
|
| }
|
| IPC::Message* response = NULL;
|
| - bool succeeded = false;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_TabHWNDRequest(0, handle_), &response,
|
| - AutomationMsg_TabHWNDResponse::ID)) {
|
| - succeeded = AutomationMsg_TabHWNDResponse::Read(response, hwnd);
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_TabHWNDRequest(0, handle_), &response,
|
| + AutomationMsg_TabHWNDResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| + void* iter = NULL;
|
| + HWND tab_hwnd = NULL;
|
| + if (AutomationMsg_TabHWNDResponse::Read(response, &tab_hwnd) && tab_hwnd) {
|
| + *hwnd = tab_hwnd;
|
| + } else {
|
| + succeeded = false;
|
| }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -326,13 +438,22 @@
|
| }
|
|
|
| IPC::Message* response = NULL;
|
| - bool succeeded = false;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_TabProcessIDRequest(0, handle_), &response,
|
| - AutomationMsg_TabProcessIDResponse::ID)) {
|
| - succeeded = AutomationMsg_TabProcessIDResponse::Read(response, process_id);
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_TabProcessIDRequest(0, handle_), &response,
|
| + AutomationMsg_TabProcessIDResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + int pid;
|
| + if (AutomationMsg_TabProcessIDResponse::Read(response, &pid) && (pid >= 0)) {
|
| + *process_id = pid;
|
| + } else {
|
| + succeeded = false;
|
| }
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -420,12 +541,14 @@
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_DomOperationRequest(0, handle_, frame_xpath, jscript),
|
| &response, AutomationMsg_DomOperationResponse::ID);
|
| +
|
| + void* iter = NULL;
|
| std::string json;
|
| - if (succeeded)
|
| - succeeded = AutomationMsg_DomOperationResponse::Read(response, &json);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| - if (!succeeded)
|
| + succeeded = response->ReadString(&iter, &json);
|
| + if (!succeeded) {
|
| + delete response;
|
| return false;
|
| + }
|
| // Wrap |json| in an array before deserializing because valid JSON has an
|
| // array or an object as the root.
|
| json.insert(0, "[");
|
| @@ -433,6 +556,8 @@
|
|
|
| JSONStringValueSerializer deserializer(json);
|
| *value = deserializer.Deserialize(NULL);
|
| +
|
| + delete response;
|
| return *value != NULL;
|
| }
|
|
|
| @@ -447,10 +572,19 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_ConstrainedWindowCountRequest(0, handle_),
|
| - &response, AutomationMsg_ConstrainedWindowCountResponse::ID) &&
|
| - AutomationMsg_ConstrainedWindowCountResponse::Read(response, count);
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + new AutomationMsg_ConstrainedWindowCountRequest(0, handle_),
|
| + &response, AutomationMsg_ConstrainedWindowCountResponse::ID);
|
| +
|
| + void* iter = NULL;
|
| + int count_response = -1;
|
| + if (response->ReadInt(&iter, &count_response) &&
|
| + (count_response >= 0)) {
|
| + *count = count_response;
|
| + } else {
|
| + succeeded = false;
|
| + }
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -460,14 +594,18 @@
|
| return NULL;
|
|
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_ConstrainedWindowRequest(0, handle_, window_index),
|
| + &response, AutomationMsg_ConstrainedWindowResponse::ID);
|
| + if (!succeeded)
|
| + return NULL;
|
| +
|
| + void* iter = NULL;
|
| int handle;
|
| - if (sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_ConstrainedWindowRequest(0, handle_, window_index),
|
| - &response, AutomationMsg_ConstrainedWindowResponse::ID)) {
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - if (AutomationMsg_ConstrainedWindowResponse::Read(response, &handle))
|
| - return new ConstrainedWindowProxy(sender_, tracker_, handle);
|
| - }
|
| +
|
| + scoped_ptr<IPC::Message> response_deleter(response); // Ensure deleted.
|
| + if (response->ReadInt(&iter, &handle) && (handle != 0))
|
| + return new ConstrainedWindowProxy(sender_, tracker_, handle);
|
| return NULL;
|
| }
|
|
|
| @@ -489,13 +627,25 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| - int size;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_GetCookiesRequest(0, url, handle_), &response,
|
| - AutomationMsg_GetCookiesResponse::ID) &&
|
| - AutomationMsg_GetCookiesResponse::Read(response, &size, cookies) &&
|
| - size >= 0;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| + AutomationMsg_GetCookiesResponse::ID);
|
| +
|
| + if (succeeded) {
|
| + void* iter = NULL;
|
| + int size;
|
| + std::string local_value;
|
| +
|
| + if (response->ReadInt(&iter, &size) && size >=0) {
|
| + if (!response->ReadString(&iter, cookies)) {
|
| + succeeded = false;
|
| + }
|
| + } else {
|
| + succeeded = false;
|
| + }
|
| + }
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -520,13 +670,20 @@
|
|
|
| bool TabProxy::SetCookie(const GURL& url, const std::string& value) {
|
| IPC::Message* response = NULL;
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_SetCookieRequest(0, url, value, handle_), &response,
|
| + AutomationMsg_SetCookieResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| int response_value;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_SetCookieRequest(0, url, value, handle_), &response,
|
| - AutomationMsg_SetCookieResponse::ID) &&
|
| - AutomationMsg_SetCookieResponse::Read(response, &response_value) &&
|
| - response_value >= 0;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| +
|
| + if (!response->ReadInt(&iter, &response_value) || response_value < 0) {
|
| + succeeded = false;
|
| + }
|
| +
|
| + delete response;
|
| return succeeded;
|
| }
|
|
|
| @@ -535,28 +692,35 @@
|
| return -1;
|
|
|
| IPC::Message* response = NULL;
|
| - int ret = -1;
|
| - if (sender_->SendAndWaitForResponse(
|
| + bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_InspectElementRequest(0, handle_, x, y),
|
| - &response, AutomationMsg_InspectElementResponse::ID)) {
|
| - AutomationMsg_InspectElementResponse::Read(response, &ret);
|
| - }
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| + &response, AutomationMsg_InspectElementResponse::ID);
|
| + if (!succeeded)
|
| + return -1;
|
| +
|
| + int ret;
|
| + AutomationMsg_InspectElementResponse::Read(response, &ret);
|
| return ret;
|
| }
|
|
|
| -bool TabProxy::GetDownloadDirectory(std::wstring* directory) {
|
| - DCHECK(directory);
|
| +bool TabProxy::GetDownloadDirectory(std::wstring* download_directory) {
|
| + DCHECK(download_directory);
|
| if (!is_valid())
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_DownloadDirectoryRequest(0, handle_), &response,
|
| - AutomationMsg_DownloadDirectoryResponse::ID) &&
|
| - AutomationMsg_DownloadDirectoryResponse::Read(response, directory);
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| + bool succeeded =
|
| + sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_DownloadDirectoryRequest(0, handle_),
|
| + &response,
|
| + AutomationMsg_DownloadDirectoryResponse::ID);
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadWString(&iter, download_directory);
|
| + delete response;
|
| + return true;
|
| }
|
|
|
| bool TabProxy::ShowInterstitialPage(const std::string& html_text,
|
| @@ -568,12 +732,18 @@
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| new AutomationMsg_ShowInterstitialPageRequest(0, handle_, html_text),
|
| - &response, AutomationMsg_ShowInterstitialPageResponse::ID, timeout_ms,
|
| - &is_timeout) &&
|
| - AutomationMsg_ShowInterstitialPageResponse::Read(response, &succeeded) &&
|
| - succeeded;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| + &response,
|
| + AutomationMsg_ShowInterstitialPageResponse::ID, timeout_ms, &is_timeout);
|
| +
|
| + if (!succeeded || !is_timeout)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + bool result = true;
|
| + response->ReadBool(&iter, &result);
|
| +
|
| + delete response;
|
| + return result;
|
| }
|
|
|
| bool TabProxy::HideInterstitialPage() {
|
| @@ -581,14 +751,21 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| - bool result;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_HideInterstitialPageRequest(0, handle_),
|
| - &response, AutomationMsg_HideInterstitialPageResponse::ID) &&
|
| - AutomationMsg_HideInterstitialPageResponse::Read(response, &result) &&
|
| - result;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| + bool succeeded =
|
| + sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_HideInterstitialPageRequest(0, handle_),
|
| + &response,
|
| + AutomationMsg_HideInterstitialPageResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + bool result = true;
|
| + response->ReadBool(&iter, &result);
|
| +
|
| + delete response;
|
| + return result;
|
| }
|
|
|
| bool TabProxy::Close() {
|
| @@ -600,13 +777,21 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| - bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_CloseTabRequest(0, handle_, wait_until_closed),
|
| - &response, AutomationMsg_CloseTabResponse::ID) &&
|
| - AutomationMsg_CloseTabResponse::Read(response, &succeeded) &&
|
| - succeeded;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| + bool succeeded =
|
| + sender_->SendAndWaitForResponse(
|
| + new AutomationMsg_CloseTabRequest(0, handle_, wait_until_closed),
|
| + &response,
|
| + AutomationMsg_CloseTabResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + bool result = true;
|
| + response->ReadBool(&iter, &result);
|
| +
|
| + delete response;
|
| + return result;
|
| }
|
|
|
| bool TabProxy::SetAccelerators(HACCEL accel_table,
|
| @@ -617,14 +802,20 @@
|
| IPC::Message* response = NULL;
|
| bool is_timeout = false;
|
| bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| - new AutomationMsg_SetAcceleratorsForTab(
|
| - 0, handle_, accel_table, accel_table_entry_count),
|
| - &response, AutomationMsg_SetAcceleratorsForTabResponse::ID, INFINITE,
|
| - &is_timeout) &&
|
| - AutomationMsg_SetAcceleratorsForTabResponse::Read(response, &succeeded) &&
|
| - succeeded;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| + new AutomationMsg_SetAcceleratorsForTab(0, handle_, accel_table,
|
| + accel_table_entry_count),
|
| + &response,
|
| + AutomationMsg_SetAcceleratorsForTabResponse::ID, INFINITE, &is_timeout);
|
| +
|
| + if (!succeeded)
|
| + return AUTOMATION_MSG_NAVIGATION_ERROR;
|
| +
|
| + void* iter = NULL;
|
| + bool set_accel_response = false;
|
| + response->ReadBool(&iter, &set_accel_response);
|
| +
|
| + delete response;
|
| + return set_accel_response;
|
| }
|
|
|
| bool TabProxy::ProcessUnhandledAccelerator(const MSG& msg) {
|
| @@ -640,11 +831,9 @@
|
| return false;
|
| IPC::Message* response = NULL;
|
| bool is_timeout;
|
| - bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| + return sender_->SendAndWaitForResponseWithTimeout(
|
| new AutomationMsg_WaitForTabToBeRestored(0, handle_), &response,
|
| AutomationMsg_TabFinishedRestoring::ID, timeout_ms, &is_timeout);
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| }
|
|
|
| bool TabProxy::GetSecurityState(SecurityStyle* security_style,
|
| @@ -657,18 +846,27 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool is_timeout = false;
|
| - int value;
|
| - bool succeeded;
|
| - succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| + bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| new AutomationMsg_GetSecurityState(0, handle_),
|
| &response,
|
| - AutomationMsg_GetSecurityStateResponse::ID, INFINITE, &is_timeout) &&
|
| - AutomationMsg_GetSecurityStateResponse::Read(
|
| - response, &succeeded, &value, ssl_cert_status, mixed_content_state);
|
| - if (succeeded)
|
| - *security_style = static_cast<SecurityStyle>(value);
|
| + AutomationMsg_GetSecurityStateResponse::ID, INFINITE, &is_timeout);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return succeeded;
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + int value;
|
| +
|
| + response->ReadBool(&iter, &succeeded);
|
| + if (!succeeded)
|
| + return false;
|
| + response->ReadInt(&iter, &value);
|
| + *security_style = static_cast<SecurityStyle>(value);
|
| + response->ReadInt(&iter, ssl_cert_status);
|
| + response->ReadInt(&iter, mixed_content_state);
|
| +
|
| + return true;
|
| }
|
|
|
| bool TabProxy::GetPageType(NavigationEntry::PageType* page_type) {
|
| @@ -679,17 +877,23 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool is_timeout = false;
|
| - int value;
|
| - bool succeeded;
|
| - succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| + bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| new AutomationMsg_GetPageType(0, handle_),
|
| &response,
|
| - AutomationMsg_GetPageTypeResponse::ID, INFINITE, &is_timeout) &&
|
| - AutomationMsg_GetPageTypeResponse::Read(response, &succeeded, &value);
|
| + AutomationMsg_GetPageTypeResponse::ID, INFINITE, &is_timeout);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - if (succeeded)
|
| - *page_type = static_cast<NavigationEntry::PageType>(value);
|
| - return succeeded;
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + int value;
|
| + response->ReadBool(&iter, &succeeded);
|
| + if (!succeeded)
|
| + return false;
|
| + response->ReadInt(&iter, &value);
|
| + *page_type = static_cast<NavigationEntry::PageType>(value);
|
| + return true;
|
| }
|
|
|
| bool TabProxy::TakeActionOnSSLBlockingPage(bool proceed) {
|
| @@ -697,15 +901,21 @@
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| - bool timeout = false;
|
| - bool success = sender_->SendAndWaitForResponseWithTimeout(
|
| + bool is_timeout = false;
|
| + bool succeeded = sender_->SendAndWaitForResponseWithTimeout(
|
| new AutomationMsg_ActionOnSSLBlockingPage(0, handle_, proceed),
|
| &response,
|
| - AutomationMsg_ActionOnSSLBlockingPageResponse::ID, INFINITE, &timeout) &&
|
| - AutomationMsg_ActionOnSSLBlockingPageResponse::Read(response, &success) &&
|
| - success;
|
| + AutomationMsg_ActionOnSSLBlockingPageResponse::ID, INFINITE, &is_timeout);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return success;
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + bool status = false;
|
| + response->ReadBool(&iter, &status);
|
| +
|
| + return status;
|
| }
|
|
|
| bool TabProxy::PrintNow() {
|
| @@ -714,12 +924,15 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_PrintNowRequest(0, handle_), &response,
|
| - AutomationMsg_PrintNowResponse::ID) &&
|
| - AutomationMsg_PrintNowResponse::Read(response, &succeeded) &&
|
| - succeeded;
|
| + new AutomationMsg_PrintNowRequest(0, handle_), &response,
|
| + AutomationMsg_PrintNowResponse::ID);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return succeeded;
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + succeeded = false;
|
| + return response->ReadBool(&iter, &succeeded) && succeeded;
|
| }
|
|
|
| bool TabProxy::SavePage(const std::wstring& file_name,
|
| @@ -730,12 +943,18 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_SavePageRequest(
|
| - 0, handle_, file_name, dir_path, static_cast<int>(type)),
|
| - &response, AutomationMsg_SavePageResponse::ID) &&
|
| - AutomationMsg_SavePageResponse::Read(response, &succeeded) &&
|
| - succeeded;
|
| - scoped_ptr<IPC::Message> auto_deleter(response);
|
| + new AutomationMsg_SavePageRequest(0, handle_, file_name,
|
| + dir_path, static_cast<int>(type)),
|
| + &response,
|
| + AutomationMsg_SavePageResponse::ID);
|
| +
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadBool(&iter, &succeeded);
|
| + delete response;
|
| +
|
| return succeeded;
|
| }
|
|
|
| @@ -759,11 +978,15 @@
|
| IPC::Message* response = NULL;
|
| bool success = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_GetSSLInfoBarCountRequest(0, handle_),
|
| - &response, AutomationMsg_GetSSLInfoBarCountResponse::ID) &&
|
| - AutomationMsg_GetSSLInfoBarCountResponse::Read(response, count) &&
|
| - count >= 0;
|
| + &response,
|
| + AutomationMsg_GetSSLInfoBarCountResponse::ID);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return success;
|
| + if (!success)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadInt(&iter, count);
|
| + return true;
|
| }
|
|
|
| bool TabProxy::ClickSSLInfoBarLink(int info_bar_index,
|
| @@ -773,26 +996,36 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool success = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_ClickSSLInfoBarLinkRequest(
|
| - 0, handle_, info_bar_index, wait_for_navigation),
|
| - &response, AutomationMsg_ClickSSLInfoBarLinkResponse::ID) &&
|
| - AutomationMsg_ClickSSLInfoBarLinkResponse::Read(response, &success) &&
|
| - success;
|
| + new AutomationMsg_ClickSSLInfoBarLinkRequest(0, handle_,
|
| + info_bar_index,
|
| + wait_for_navigation),
|
| + &response,
|
| + AutomationMsg_ClickSSLInfoBarLinkResponse::ID);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| + if (!success)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadBool(&iter, &success);
|
| return success;
|
| }
|
|
|
| -bool TabProxy::GetLastNavigationTime(int64* nav_time) {
|
| +bool TabProxy::GetLastNavigationTime(int64* last_navigation_time) {
|
| if (!is_valid())
|
| return false;
|
|
|
| IPC::Message* response = NULL;
|
| bool success = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_GetLastNavigationTimeRequest(0, handle_),
|
| - &response, AutomationMsg_GetLastNavigationTimeResponse::ID) &&
|
| - AutomationMsg_GetLastNavigationTimeResponse::Read(response, nav_time);
|
| + &response,
|
| + AutomationMsg_GetLastNavigationTimeResponse::ID);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| - return success;
|
| + if (!success)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadInt64(&iter, last_navigation_time);
|
| + return true;
|
| }
|
|
|
| bool TabProxy::WaitForNavigation(int64 last_navigation_time) {
|
| @@ -801,12 +1034,17 @@
|
|
|
| IPC::Message* response = NULL;
|
| bool success = sender_->SendAndWaitForResponse(
|
| - new AutomationMsg_WaitForNavigationRequest(
|
| - 0, handle_, last_navigation_time),
|
| - &response, AutomationMsg_WaitForNavigationResponse::ID) &&
|
| - AutomationMsg_WaitForNavigationResponse::Read(response, &success) &&
|
| - success;
|
| + new AutomationMsg_WaitForNavigationRequest(0,
|
| + handle_,
|
| + last_navigation_time),
|
| + &response,
|
| + AutomationMsg_WaitForNavigationResponse::ID);
|
| scoped_ptr<IPC::Message> auto_deleter(response);
|
| + if (!success)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + response->ReadBool(&iter, &success);
|
| return success;
|
| }
|
|
|
| @@ -817,9 +1055,15 @@
|
| IPC::Message* response;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_GetPageCurrentEncodingRequest(0, handle_),
|
| - &response, AutomationMsg_GetPageCurrentEncodingResponse::ID) &&
|
| - AutomationMsg_GetPageCurrentEncodingResponse::Read(response, encoding);
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| + &response,
|
| + AutomationMsg_GetPageCurrentEncodingResponse::ID);
|
| +
|
| + scoped_ptr<IPC::Message> response_deleter(response); // Delete on return.
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + succeeded = response->ReadWString(&iter, encoding);
|
| return succeeded;
|
| }
|
|
|
| @@ -830,9 +1074,15 @@
|
| IPC::Message* response;
|
| bool succeeded = sender_->SendAndWaitForResponse(
|
| new AutomationMsg_OverrideEncodingRequest(0, handle_, encoding),
|
| - &response, AutomationMsg_OverrideEncodingResponse::ID) &&
|
| - AutomationMsg_OverrideEncodingResponse::Read(response, &succeeded) &&
|
| - succeeded;
|
| - scoped_ptr<IPC::Message> response_deleter(response);
|
| - return succeeded;
|
| + &response,
|
| + AutomationMsg_OverrideEncodingResponse::ID);
|
| +
|
| + scoped_ptr<IPC::Message> response_deleter(response); // Delete on return.
|
| + if (!succeeded)
|
| + return false;
|
| +
|
| + void* iter = NULL;
|
| + bool successed_set_value = false;
|
| + succeeded = response->ReadBool(&iter, &successed_set_value);
|
| + return succeeded && successed_set_value;
|
| }
|
|
|