diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-04 03:15:58 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-04 03:15:58 +0000 |
commit | 39b7b06790a776ee2247f391b1b2e3af1a335503 (patch) | |
tree | 8813c8831c92e6f00e8e72bbeaa95693e695c683 /chrome/test | |
parent | d718a62d075bdd6f45a128bd5d82358d73799300 (diff) | |
download | chromium_src-39b7b06790a776ee2247f391b1b2e3af1a335503.zip chromium_src-39b7b06790a776ee2247f391b1b2e3af1a335503.tar.gz chromium_src-39b7b06790a776ee2247f391b1b2e3af1a335503.tar.bz2 |
Make it easier/less work/less error-prone to create new IPC channel types (i.e. renderer/plugin).Instead of having each message file include the internal one several times with different ifdefs, move that logic to ipc_message_macros.h. Also make the message class starting IDs come from an enum to ensure we don't use a value twice. I simplified the logging code a bit so we don't need X_messages.cc files.Clean up places that we were doing manual packing/unpacking. Most of this was in the automation code. I added a few new template functions to make it convenient to read the parameters from a message, and updated the code to use them.I also removed unnecessary includes of render/plugin_messages.h from headers to speed up compiling.I moved the traits of IPC structs beside the struct definition to make it more apparent what's going on, so we avoid people modifying the struct and forgetting to update the traits.Amit: please look at chrome/test/automation/tab_proxy.ccMarc-Antoine: chrome/browser/printing/*Matt: the rest
Review URL: http://codereview.chromium.org/20015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9123 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
-rw-r--r-- | chrome/test/automation/autocomplete_edit_proxy.h | 7 | ||||
-rw-r--r-- | chrome/test/automation/automation_messages.h | 23 | ||||
-rw-r--r-- | chrome/test/automation/automation_messages_internal.h | 8 | ||||
-rw-r--r-- | chrome/test/automation/automation_proxy.cc | 3 | ||||
-rw-r--r-- | chrome/test/automation/tab_proxy.cc | 729 | ||||
-rw-r--r-- | chrome/test/unit/unit_tests.scons | 1 | ||||
-rw-r--r-- | chrome/test/unit/unittests.vcproj | 4 |
7 files changed, 250 insertions, 525 deletions
diff --git a/chrome/test/automation/autocomplete_edit_proxy.h b/chrome/test/automation/autocomplete_edit_proxy.h index 85172d3..bd7c87a 100644 --- a/chrome/test/automation/autocomplete_edit_proxy.h +++ b/chrome/test/automation/autocomplete_edit_proxy.h @@ -49,12 +49,10 @@ struct AutocompleteMatchData { }; typedef std::vector<AutocompleteMatchData> Matches; -namespace IPC { - template <> struct ParamTraits<AutocompleteMatchData> { typedef AutocompleteMatchData param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { m->WriteString(p.provider_name); m->WriteInt(p.relevance); m->WriteBool(p.deletable); @@ -68,7 +66,7 @@ struct ParamTraits<AutocompleteMatchData> { m->WriteBool(p.starred); } - static bool Read(const Message* m, void** iter, param_type* r) { + static bool Read(const IPC::Message* m, void** iter, param_type* r) { std::string destination_url; if (!m->ReadString(iter, &r->provider_name) || !m->ReadInt(iter, &r->relevance) || @@ -112,7 +110,6 @@ struct ParamTraits<AutocompleteMatchData> { l->append(L"]"); } }; -} // namespace IPC class AutocompleteEditProxy : public AutomationResourceProxy { public: diff --git a/chrome/test/automation/automation_messages.h b/chrome/test/automation/automation_messages.h index e1fdf80..d4e916c 100644 --- a/chrome/test/automation/automation_messages.h +++ b/chrome/test/automation/automation_messages.h @@ -8,7 +8,6 @@ #include <string> #include "base/basictypes.h" -#include "chrome/common/ipc_message.h" #include "chrome/common/ipc_message_utils.h" enum AutomationMsg_NavigationResponseValues { @@ -17,25 +16,9 @@ enum AutomationMsg_NavigationResponseValues { AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, }; -// Two-pass include of render_messages_internal. Preprocessor magic allows -// us to use 1 header to define the enums and classes for our render messages. -#define IPC_MESSAGE_MACROS_ENUMS -#include "chrome/test/automation/automation_messages_internal.h" - -#ifdef IPC_MESSAGE_MACROS_LOG_ENABLED -# undef IPC_MESSAGE_MACROS_LOG -# define IPC_MESSAGE_MACROS_CLASSES -#include "chrome/test/automation/automation_messages_internal.h" - -# undef IPC_MESSAGE_MACROS_CLASSES -# define IPC_MESSAGE_MACROS_LOG -#include "chrome/test/automation/automation_messages_internal.h" -#else -// No debug strings requested, just define the classes -# define IPC_MESSAGE_MACROS_CLASSES -#include "chrome/test/automation/automation_messages_internal.h" -#endif - +#define MESSAGES_INTERNAL_FILE \ + "chrome/test/automation/automation_messages_internal.h" +#include "chrome/common/ipc_message_macros.h" #endif // CHROME_TEST_AUTOMATION_AUTOMATION_MESSAGES_H__ diff --git a/chrome/test/automation/automation_messages_internal.h b/chrome/test/automation/automation_messages_internal.h index a22818c..05290d0d 100644 --- a/chrome/test/automation/automation_messages_internal.h +++ b/chrome/test/automation/automation_messages_internal.h @@ -31,9 +31,7 @@ // since the PageCyclerReferenceTest depends on the correctness of the // message IDs across the builds. -// By using a start value of 0 for automation messages, we keep backward -// compatability with old builds. -IPC_BEGIN_MESSAGES(Automation, 0) +IPC_BEGIN_MESSAGES(Automation) // This message is fired when the AutomationProvider is up and running // in the app (the app is not fully up at this point). @@ -206,7 +204,9 @@ IPC_BEGIN_MESSAGES(Automation, 0) IPC_MESSAGE_ROUTED2(AutomationMsg_RedirectsFromRequest, int, // tab handle GURL) // source URL - IPC_MESSAGE_EMPTY(AutomationMsg_RedirectsFromResponse) + IPC_MESSAGE_ROUTED2(AutomationMsg_RedirectsFromResponse, + bool /* succeeded */, + std::vector<GURL> /* redirects */) // This message asks the AutomationProvider whether a tab is waiting for // login info. diff --git a/chrome/test/automation/automation_proxy.cc b/chrome/test/automation/automation_proxy.cc index f8d4b93..d0a5d69 100644 --- a/chrome/test/automation/automation_proxy.cc +++ b/chrome/test/automation/automation_proxy.cc @@ -8,7 +8,6 @@ #include "base/logging.h" #include "base/ref_counted.h" -#include "chrome/common/ipc_message_macros.h" #include "chrome/test/automation/automation_constants.h" #include "chrome/test/automation/automation_messages.h" #include "chrome/test/automation/browser_proxy.h" @@ -554,7 +553,7 @@ TabProxy* AutomationProxy::CreateExternalTab(HWND parent, void* iter = NULL; int handle = 0; TabProxy* tab_proxy = NULL; - if (IPC::ReadParam(response, &iter, external_tab_container) && + if (ReadParam(response, &iter, external_tab_container) && IsWindow(*external_tab_container)) { if (response->ReadInt(&iter, &handle) && (handle >= 0)) { diff --git a/chrome/test/automation/tab_proxy.cc b/chrome/test/automation/tab_proxy.cc index 07a3488..6cfac07 100644 --- a/chrome/test/automation/tab_proxy.cc +++ b/chrome/test/automation/tab_proxy.cc @@ -24,23 +24,15 @@ bool TabProxy::GetTabTitle(std::wstring* title) const { } IPC::Message* response = NULL; - bool succeeded = sender_->SendAndWaitForResponse( - new AutomationMsg_TabTitleRequest(0, handle_), &response, - AutomationMsg_TabTitleResponse::ID); + int tab_title_size_response; - 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; - } + 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); - delete response; return succeeded; } @@ -55,24 +47,18 @@ bool TabProxy::IsShelfVisible(bool* is_visible) { IPC::Message* response = NULL; bool succeeded = sender_->SendAndWaitForResponse( - 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; + new AutomationMsg_ShelfVisibilityRequest(0, handle_), + &response, AutomationMsg_ShelfVisibilityResponse::ID) && + AutomationMsg_ShelfVisibilityResponse::Read(response, is_visible); + scoped_ptr<IPC::Message> auto_deleter(response); + return succeeded; } 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. } @@ -88,15 +74,10 @@ bool TabProxy::IsFindWindowFullyVisible(bool* is_visible) { IPC::Message* response = NULL; bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_FindWindowVisibilityRequest(0, handle_), - &response, - AutomationMsg_FindWindowVisibilityResponse::ID); - if (!succeeded) - return false; - - void* iter = NULL; - response->ReadBool(&iter, is_visible); - delete response; - return true; + &response, AutomationMsg_FindWindowVisibilityResponse::ID) && + AutomationMsg_FindWindowVisibilityResponse::Read(response, is_visible); + scoped_ptr<IPC::Message> auto_deleter(response); + return succeeded; } bool TabProxy::GetFindWindowLocation(int* x, int* y) { @@ -106,23 +87,17 @@ bool TabProxy::GetFindWindowLocation(int* x, int* y) { IPC::Message* response = NULL; bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_FindWindowLocationRequest(0, handle_), - &response, - AutomationMsg_FindWindowLocationResponse::ID); - if (!succeeded) - return false; - - void* iter = NULL; - response->ReadInt(&iter, x); - response->ReadInt(&iter, y); - delete response; - return true; + &response, AutomationMsg_FindWindowLocationResponse::ID) && + AutomationMsg_FindWindowLocationResponse::Read(response, x, y); + scoped_ptr<IPC::Message> auto_deleter(response); + return succeeded; } int TabProxy::FindInPage(const std::wstring& search_string, FindInPageDirection forward, FindInPageCase match_case, bool find_next, - int* active_ordinal) { + int* ordinal) { if (!is_valid()) return -1; @@ -134,22 +109,15 @@ int TabProxy::FindInPage(const std::wstring& search_string, request.forward = forward == TRUE; IPC::Message* response = NULL; + int matches; bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_FindRequest(0, handle_, request), - &response, - AutomationMsg_FindInPageResponse2::ID); + &response, AutomationMsg_FindInPageResponse2::ID) && + AutomationMsg_FindInPageResponse2::Read(response, ordinal, &matches); + scoped_ptr<IPC::Message> auto_deleter(response); if (!succeeded) return -1; - - 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; + return matches; } int TabProxy::NavigateToURL(const GURL& url) { @@ -163,18 +131,13 @@ int TabProxy::NavigateToURLWithTimeout(const GURL& url, 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; - response->ReadInt(&iter, &navigate_response); - - delete response; + 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); return navigate_response; } @@ -184,19 +147,15 @@ int TabProxy::NavigateInExternalTab(const GURL& url) { IPC::Message* response = NULL; bool is_timeout = false; - 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; + 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 TabProxy::SetAuth(const std::wstring& username, @@ -205,19 +164,13 @@ bool TabProxy::SetAuth(const std::wstring& username, 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; - succeeded = (response->ReadInt(&iter, &navigate_response) && - navigate_response >= 0); - - delete response; + 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); return succeeded; } @@ -226,19 +179,13 @@ bool TabProxy::CancelAuth() { 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; - succeeded = (response->ReadInt(&iter, &navigate_response) && - navigate_response >= 0); - - delete response; + 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); return succeeded; } @@ -247,18 +194,12 @@ bool TabProxy::NeedsAuth() const { 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; - response->ReadBool(&iter, &needs_auth); - - delete response; + 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); return needs_auth; } @@ -267,18 +208,13 @@ int TabProxy::GoBack() { 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; - response->ReadInt(&iter, &navigate_response); - - delete response; + 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); return navigate_response; } @@ -287,18 +223,13 @@ int TabProxy::GoForward() { 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; - response->ReadInt(&iter, &navigate_response); - - delete response; + 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); return navigate_response; } @@ -307,48 +238,30 @@ int TabProxy::Reload() { 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; - response->ReadInt(&iter, &navigate_response); - - delete response; + 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); 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); - - 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); + if (succeeded) { + succeeded = AutomationMsg_RedirectsFromResponse::Read( + response, &succeeded, redirects) && + succeeded; } - redirects->swap(output); - return true; + + return succeeded; } bool TabProxy::GetCurrentURL(GURL* url) const { @@ -361,23 +274,12 @@ bool TabProxy::GetCurrentURL(GURL* url) const { } IPC::Message* response = NULL; - 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; + 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); return succeeded; } @@ -386,21 +288,14 @@ bool TabProxy::NavigateToURLAsync(const GURL& url) { return false; IPC::Message* response = NULL; - 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; + bool status = false; + if (sender_->SendAndWaitForResponse( + new AutomationMsg_NavigationAsyncRequest(0, handle_, url), &response, + AutomationMsg_NavigationAsyncResponse::ID)) { + AutomationMsg_NavigationAsyncResponse::Read(response, &status); } - - delete response; - return succeeded; + scoped_ptr<IPC::Message> auto_deleter(response); + return status; } bool TabProxy::GetHWND(HWND* hwnd) const { @@ -411,20 +306,14 @@ bool TabProxy::GetHWND(HWND* hwnd) const { return false; } IPC::Message* response = NULL; - 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; + bool succeeded = false; + if (sender_->SendAndWaitForResponse( + new AutomationMsg_TabHWNDRequest(0, handle_), &response, + AutomationMsg_TabHWNDResponse::ID)) { + succeeded = AutomationMsg_TabHWNDResponse::Read(response, &tab_hwnd); } - - delete response; + scoped_ptr<IPC::Message> auto_deleter(response); return succeeded; } @@ -438,22 +327,13 @@ bool TabProxy::GetProcessID(int* process_id) const { } IPC::Message* response = NULL; - 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; + bool succeeded = false; + if (sender_->SendAndWaitForResponse( + new AutomationMsg_TabProcessIDRequest(0, handle_), &response, + AutomationMsg_TabProcessIDResponse::ID)) { + succeeded = AutomationMsg_TabProcessIDResponse::Read(response, process_id); } - - delete response; + scoped_ptr<IPC::Message> auto_deleter(response); return succeeded; } @@ -541,14 +421,12 @@ bool TabProxy::ExecuteAndExtractValue(const std::wstring& frame_xpath, bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_DomOperationRequest(0, handle_, frame_xpath, jscript), &response, AutomationMsg_DomOperationResponse::ID); - - void* iter = NULL; std::string json; - succeeded = response->ReadString(&iter, &json); - if (!succeeded) { - delete response; + if (succeeded) + succeeded = AutomationMsg_DomOperationResponse::Read(response, &json); + scoped_ptr<IPC::Message> auto_deleter(response); + if (!succeeded) return false; - } // Wrap |json| in an array before deserializing because valid JSON has an // array or an object as the root. json.insert(0, "["); @@ -556,8 +434,6 @@ bool TabProxy::ExecuteAndExtractValue(const std::wstring& frame_xpath, JSONStringValueSerializer deserializer(json); *value = deserializer.Deserialize(NULL); - - delete response; return *value != NULL; } @@ -572,19 +448,10 @@ bool TabProxy::GetConstrainedWindowCount(int* count) const { IPC::Message* response = NULL; bool succeeded = sender_->SendAndWaitForResponse( - 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; + new AutomationMsg_ConstrainedWindowCountRequest(0, handle_), + &response, AutomationMsg_ConstrainedWindowCountResponse::ID) && + AutomationMsg_ConstrainedWindowCountResponse::Read(response, count); + scoped_ptr<IPC::Message> auto_deleter(response); return succeeded; } @@ -594,18 +461,14 @@ ConstrainedWindowProxy* TabProxy::GetConstrainedWindow( 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; - - scoped_ptr<IPC::Message> response_deleter(response); // Ensure deleted. - if (response->ReadInt(&iter, &handle) && (handle != 0)) - return new ConstrainedWindowProxy(sender_, tracker_, 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); + } return NULL; } @@ -627,25 +490,13 @@ bool TabProxy::GetCookies(const GURL& url, std::string* cookies) { return false; IPC::Message* response = NULL; + int size; bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_GetCookiesRequest(0, url, handle_), &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; + AutomationMsg_GetCookiesResponse::ID) && + AutomationMsg_GetCookiesResponse::Read(response, &size, cookies) && + size >= 0; + scoped_ptr<IPC::Message> response_deleter(response); return succeeded; } @@ -670,20 +521,13 @@ bool TabProxy::GetCookieByName(const GURL& url, 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; - - if (!response->ReadInt(&iter, &response_value) || response_value < 0) { - succeeded = false; - } - - delete response; + 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); return succeeded; } @@ -692,35 +536,28 @@ int TabProxy::InspectElement(int x, int y) { return -1; IPC::Message* response = NULL; - bool succeeded = sender_->SendAndWaitForResponse( + int ret = -1; + if (sender_->SendAndWaitForResponse( new AutomationMsg_InspectElementRequest(0, handle_, x, y), - &response, AutomationMsg_InspectElementResponse::ID); - if (!succeeded) - return -1; - - int ret; - AutomationMsg_InspectElementResponse::Read(response, &ret); + &response, AutomationMsg_InspectElementResponse::ID)) { + AutomationMsg_InspectElementResponse::Read(response, &ret); + } + scoped_ptr<IPC::Message> response_deleter(response); return ret; } -bool TabProxy::GetDownloadDirectory(std::wstring* download_directory) { - DCHECK(download_directory); +bool TabProxy::GetDownloadDirectory(std::wstring* directory) { + DCHECK(directory); if (!is_valid()) return false; IPC::Message* response = NULL; - 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 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 TabProxy::ShowInterstitialPage(const std::string& html_text, @@ -732,18 +569,12 @@ bool TabProxy::ShowInterstitialPage(const std::string& html_text, IPC::Message* response = NULL; bool succeeded = sender_->SendAndWaitForResponseWithTimeout( new AutomationMsg_ShowInterstitialPageRequest(0, handle_, html_text), - &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; + &response, AutomationMsg_ShowInterstitialPageResponse::ID, timeout_ms, + &is_timeout) && + AutomationMsg_ShowInterstitialPageResponse::Read(response, &succeeded) && + succeeded; + scoped_ptr<IPC::Message> response_deleter(response); + return succeeded; } bool TabProxy::HideInterstitialPage() { @@ -751,21 +582,14 @@ bool TabProxy::HideInterstitialPage() { return false; IPC::Message* response = NULL; - 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 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 TabProxy::Close() { @@ -777,21 +601,13 @@ bool TabProxy::Close(bool wait_until_closed) { return false; IPC::Message* response = NULL; - 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 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 TabProxy::SetAccelerators(HACCEL accel_table, @@ -802,20 +618,14 @@ bool TabProxy::SetAccelerators(HACCEL accel_table, 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); - - 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; + 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; } bool TabProxy::ProcessUnhandledAccelerator(const MSG& msg) { @@ -831,9 +641,11 @@ bool TabProxy::WaitForTabToBeRestored(uint32 timeout_ms) { return false; IPC::Message* response = NULL; bool is_timeout; - return sender_->SendAndWaitForResponseWithTimeout( + bool succeeded = 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, @@ -846,27 +658,18 @@ bool TabProxy::GetSecurityState(SecurityStyle* security_style, IPC::Message* response = NULL; bool is_timeout = false; - bool succeeded = sender_->SendAndWaitForResponseWithTimeout( + int value; + bool succeeded; + succeeded = sender_->SendAndWaitForResponseWithTimeout( new AutomationMsg_GetSecurityState(0, handle_), &response, - AutomationMsg_GetSecurityStateResponse::ID, INFINITE, &is_timeout); + 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); scoped_ptr<IPC::Message> auto_deleter(response); - - 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; + return succeeded; } bool TabProxy::GetPageType(NavigationEntry::PageType* page_type) { @@ -877,23 +680,17 @@ bool TabProxy::GetPageType(NavigationEntry::PageType* page_type) { IPC::Message* response = NULL; bool is_timeout = false; - bool succeeded = sender_->SendAndWaitForResponseWithTimeout( + int value; + bool succeeded; + succeeded = sender_->SendAndWaitForResponseWithTimeout( new AutomationMsg_GetPageType(0, handle_), &response, - AutomationMsg_GetPageTypeResponse::ID, INFINITE, &is_timeout); + AutomationMsg_GetPageTypeResponse::ID, INFINITE, &is_timeout) && + AutomationMsg_GetPageTypeResponse::Read(response, &succeeded, &value); scoped_ptr<IPC::Message> auto_deleter(response); - - 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; + if (succeeded) + *page_type = static_cast<NavigationEntry::PageType>(value); + return succeeded; } bool TabProxy::TakeActionOnSSLBlockingPage(bool proceed) { @@ -901,21 +698,15 @@ bool TabProxy::TakeActionOnSSLBlockingPage(bool proceed) { return false; IPC::Message* response = NULL; - bool is_timeout = false; - bool succeeded = sender_->SendAndWaitForResponseWithTimeout( + bool timeout = false; + bool success = sender_->SendAndWaitForResponseWithTimeout( new AutomationMsg_ActionOnSSLBlockingPage(0, handle_, proceed), &response, - AutomationMsg_ActionOnSSLBlockingPageResponse::ID, INFINITE, &is_timeout); + AutomationMsg_ActionOnSSLBlockingPageResponse::ID, INFINITE, &timeout) && + AutomationMsg_ActionOnSSLBlockingPageResponse::Read(response, &success) && + success; scoped_ptr<IPC::Message> auto_deleter(response); - - if (!succeeded) - return false; - - void* iter = NULL; - bool status = false; - response->ReadBool(&iter, &status); - - return status; + return success; } bool TabProxy::PrintNow() { @@ -924,15 +715,12 @@ bool TabProxy::PrintNow() { IPC::Message* response = NULL; bool succeeded = sender_->SendAndWaitForResponse( - new AutomationMsg_PrintNowRequest(0, handle_), &response, - AutomationMsg_PrintNowResponse::ID); + new AutomationMsg_PrintNowRequest(0, handle_), &response, + AutomationMsg_PrintNowResponse::ID) && + AutomationMsg_PrintNowResponse::Read(response, &succeeded) && + succeeded; scoped_ptr<IPC::Message> auto_deleter(response); - if (!succeeded) - return false; - - void* iter = NULL; - succeeded = false; - return response->ReadBool(&iter, &succeeded) && succeeded; + return succeeded; } bool TabProxy::SavePage(const std::wstring& file_name, @@ -943,18 +731,12 @@ bool TabProxy::SavePage(const std::wstring& file_name, 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); - - if (!succeeded) - return false; - - void* iter = NULL; - response->ReadBool(&iter, &succeeded); - delete response; - + 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); return succeeded; } @@ -978,15 +760,11 @@ bool TabProxy::GetSSLInfoBarCount(int* count) { IPC::Message* response = NULL; bool success = sender_->SendAndWaitForResponse( new AutomationMsg_GetSSLInfoBarCountRequest(0, handle_), - &response, - AutomationMsg_GetSSLInfoBarCountResponse::ID); + &response, AutomationMsg_GetSSLInfoBarCountResponse::ID) && + AutomationMsg_GetSSLInfoBarCountResponse::Read(response, count) && + count >= 0; scoped_ptr<IPC::Message> auto_deleter(response); - if (!success) - return false; - - void* iter = NULL; - response->ReadInt(&iter, count); - return true; + return success; } bool TabProxy::ClickSSLInfoBarLink(int info_bar_index, @@ -996,36 +774,26 @@ bool TabProxy::ClickSSLInfoBarLink(int info_bar_index, IPC::Message* response = NULL; bool success = sender_->SendAndWaitForResponse( - new AutomationMsg_ClickSSLInfoBarLinkRequest(0, handle_, - info_bar_index, - wait_for_navigation), - &response, - AutomationMsg_ClickSSLInfoBarLinkResponse::ID); + new AutomationMsg_ClickSSLInfoBarLinkRequest( + 0, handle_, info_bar_index, wait_for_navigation), + &response, AutomationMsg_ClickSSLInfoBarLinkResponse::ID) && + AutomationMsg_ClickSSLInfoBarLinkResponse::Read(response, &success) && + success; scoped_ptr<IPC::Message> auto_deleter(response); - if (!success) - return false; - - void* iter = NULL; - response->ReadBool(&iter, &success); return success; } -bool TabProxy::GetLastNavigationTime(int64* last_navigation_time) { +bool TabProxy::GetLastNavigationTime(int64* nav_time) { if (!is_valid()) return false; IPC::Message* response = NULL; bool success = sender_->SendAndWaitForResponse( new AutomationMsg_GetLastNavigationTimeRequest(0, handle_), - &response, - AutomationMsg_GetLastNavigationTimeResponse::ID); + &response, AutomationMsg_GetLastNavigationTimeResponse::ID) && + AutomationMsg_GetLastNavigationTimeResponse::Read(response, nav_time); scoped_ptr<IPC::Message> auto_deleter(response); - if (!success) - return false; - - void* iter = NULL; - response->ReadInt64(&iter, last_navigation_time); - return true; + return success; } bool TabProxy::WaitForNavigation(int64 last_navigation_time) { @@ -1034,17 +802,12 @@ bool TabProxy::WaitForNavigation(int64 last_navigation_time) { IPC::Message* response = NULL; bool success = sender_->SendAndWaitForResponse( - new AutomationMsg_WaitForNavigationRequest(0, - handle_, - last_navigation_time), - &response, - AutomationMsg_WaitForNavigationResponse::ID); + new AutomationMsg_WaitForNavigationRequest( + 0, handle_, last_navigation_time), + &response, AutomationMsg_WaitForNavigationResponse::ID) && + AutomationMsg_WaitForNavigationResponse::Read(response, &success) && + success; scoped_ptr<IPC::Message> auto_deleter(response); - if (!success) - return false; - - void* iter = NULL; - response->ReadBool(&iter, &success); return success; } @@ -1055,15 +818,9 @@ bool TabProxy::GetPageCurrentEncoding(std::wstring* encoding) { IPC::Message* response; bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_GetPageCurrentEncodingRequest(0, handle_), - &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); + &response, AutomationMsg_GetPageCurrentEncodingResponse::ID) && + AutomationMsg_GetPageCurrentEncodingResponse::Read(response, encoding); + scoped_ptr<IPC::Message> response_deleter(response); return succeeded; } @@ -1074,15 +831,9 @@ bool TabProxy::OverrideEncoding(const std::wstring& encoding) { IPC::Message* response; bool succeeded = sender_->SendAndWaitForResponse( new AutomationMsg_OverrideEncodingRequest(0, handle_, encoding), - &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; + &response, AutomationMsg_OverrideEncodingResponse::ID) && + AutomationMsg_OverrideEncodingResponse::Read(response, &succeeded) && + succeeded; + scoped_ptr<IPC::Message> response_deleter(response); + return succeeded; } diff --git a/chrome/test/unit/unit_tests.scons b/chrome/test/unit/unit_tests.scons index d51503b..d0a06fe 100644 --- a/chrome/test/unit/unit_tests.scons +++ b/chrome/test/unit/unit_tests.scons @@ -207,7 +207,6 @@ input_files = ChromeFileList([ '$CHROME_DIR/common/gfx/icon_util_unittest.cc', '$CHROME_DIR/common/ipc_message_unittest.cc', '$CHROME_DIR/common/ipc_sync_channel_unittest.cc', - '$CHROME_DIR/common/ipc_sync_channel_unittest.h', '$CHROME_DIR/common/ipc_sync_message_unittest.cc', '$CHROME_DIR/common/ipc_sync_message_unittest.h', '$CHROME_DIR/common/json_value_serializer_unittest.cc', diff --git a/chrome/test/unit/unittests.vcproj b/chrome/test/unit/unittests.vcproj index fbd1da5..0dfb9f3 100644 --- a/chrome/test/unit/unittests.vcproj +++ b/chrome/test/unit/unittests.vcproj @@ -879,10 +879,6 @@ > </File> <File - RelativePath="..\..\common\ipc_sync_channel_unittest.h" - > - </File> - <File RelativePath="..\..\common\ipc_sync_message_unittest.cc" > </File> |