Index: chrome/test/automation/tab_proxy.cc |
=================================================================== |
--- chrome/test/automation/tab_proxy.cc (revision 261647) |
+++ chrome/test/automation/tab_proxy.cc (working copy) |
@@ -1,358 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/test/automation/tab_proxy.h" |
- |
-#include <algorithm> |
- |
-#include "base/json/json_string_value_serializer.h" |
-#include "base/logging.h" |
-#include "base/strings/string16.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "base/threading/platform_thread.h" |
-#include "chrome/common/automation_constants.h" |
-#include "chrome/common/automation_messages.h" |
-#include "chrome/test/automation/automation_proxy.h" |
-#include "chrome/test/automation/browser_proxy.h" |
-#include "url/gurl.h" |
- |
-TabProxy::TabProxy(AutomationMessageSender* sender, |
- AutomationHandleTracker* tracker, |
- int handle) |
- : AutomationResourceProxy(tracker, sender, handle) { |
-} |
- |
-bool TabProxy::GetTabTitle(std::wstring* title) const { |
- if (!is_valid()) |
- return false; |
- |
- if (!title) { |
- NOTREACHED(); |
- return false; |
- } |
- |
- int tab_title_size_response = 0; |
- |
- bool succeeded = sender_->Send( |
- new AutomationMsg_TabTitle(handle_, &tab_title_size_response, title)); |
- return succeeded; |
-} |
- |
-bool TabProxy::GetTabIndex(int* index) const { |
- if (!is_valid()) |
- return false; |
- |
- if (!index) { |
- NOTREACHED(); |
- return false; |
- } |
- |
- return sender_->Send(new AutomationMsg_TabIndex(handle_, index)); |
-} |
- |
-int TabProxy::FindInPage(const std::wstring& search_string, |
- FindInPageDirection forward, |
- FindInPageCase match_case, |
- bool find_next, |
- int* ordinal) { |
- if (!is_valid()) |
- return -1; |
- |
- AutomationMsg_Find_Params params; |
- params.search_string = base::WideToUTF16Hack(search_string); |
- params.find_next = find_next; |
- params.match_case = (match_case == CASE_SENSITIVE); |
- params.forward = (forward == FWD); |
- |
- int matches = 0; |
- int ordinal2 = 0; |
- bool succeeded = sender_->Send(new AutomationMsg_Find(handle_, |
- params, |
- &ordinal2, |
- &matches)); |
- if (!succeeded) |
- return -1; |
- if (ordinal) |
- *ordinal = ordinal2; |
- return matches; |
-} |
- |
-AutomationMsg_NavigationResponseValues TabProxy::NavigateToURL( |
- const GURL& url) { |
- return NavigateToURLBlockUntilNavigationsComplete(url, 1); |
-} |
- |
-AutomationMsg_NavigationResponseValues |
- TabProxy::NavigateToURLBlockUntilNavigationsComplete( |
- const GURL& url, int number_of_navigations) { |
- if (!is_valid()) |
- return AUTOMATION_MSG_NAVIGATION_ERROR; |
- |
- AutomationMsg_NavigationResponseValues navigate_response = |
- AUTOMATION_MSG_NAVIGATION_ERROR; |
- |
- sender_->Send(new AutomationMsg_NavigateToURLBlockUntilNavigationsComplete( |
- handle_, url, number_of_navigations, &navigate_response)); |
- |
- return navigate_response; |
-} |
- |
-AutomationMsg_NavigationResponseValues TabProxy::GoBack() { |
- return GoBackBlockUntilNavigationsComplete(1); |
-} |
- |
-AutomationMsg_NavigationResponseValues |
- TabProxy::GoBackBlockUntilNavigationsComplete(int number_of_navigations) { |
- if (!is_valid()) |
- return AUTOMATION_MSG_NAVIGATION_ERROR; |
- |
- AutomationMsg_NavigationResponseValues navigate_response = |
- AUTOMATION_MSG_NAVIGATION_ERROR; |
- sender_->Send(new AutomationMsg_GoBackBlockUntilNavigationsComplete( |
- handle_, number_of_navigations, &navigate_response)); |
- return navigate_response; |
-} |
- |
-AutomationMsg_NavigationResponseValues TabProxy::GoForward() { |
- return GoForwardBlockUntilNavigationsComplete(1); |
-} |
- |
-AutomationMsg_NavigationResponseValues |
- TabProxy::GoForwardBlockUntilNavigationsComplete( |
- int number_of_navigations) { |
- if (!is_valid()) |
- return AUTOMATION_MSG_NAVIGATION_ERROR; |
- |
- AutomationMsg_NavigationResponseValues navigate_response = |
- AUTOMATION_MSG_NAVIGATION_ERROR; |
- sender_->Send(new AutomationMsg_GoForwardBlockUntilNavigationsComplete( |
- handle_, number_of_navigations, &navigate_response)); |
- return navigate_response; |
-} |
- |
-AutomationMsg_NavigationResponseValues TabProxy::Reload() { |
- if (!is_valid()) |
- return AUTOMATION_MSG_NAVIGATION_ERROR; |
- |
- AutomationMsg_NavigationResponseValues navigate_response = |
- AUTOMATION_MSG_NAVIGATION_ERROR; |
- sender_->Send(new AutomationMsg_Reload(handle_, &navigate_response)); |
- return navigate_response; |
-} |
- |
-bool TabProxy::GetCurrentURL(GURL* url) const { |
- if (!is_valid()) |
- return false; |
- |
- if (!url) { |
- NOTREACHED(); |
- return false; |
- } |
- |
- bool succeeded = false; |
- sender_->Send(new AutomationMsg_TabURL(handle_, &succeeded, url)); |
- return succeeded; |
-} |
- |
-bool TabProxy::NavigateToURLAsync(const GURL& url) { |
- if (!is_valid()) |
- return false; |
- |
- bool status = false; |
- sender_->Send(new AutomationMsg_NavigationAsync(handle_, |
- url, |
- &status)); |
- return status; |
-} |
- |
-bool TabProxy::ExecuteAndExtractString(const std::wstring& frame_xpath, |
- const std::wstring& jscript, |
- std::wstring* string_value) { |
- scoped_ptr<base::Value> root(ExecuteAndExtractValue(frame_xpath, jscript)); |
- if (root == NULL) |
- return false; |
- |
- DCHECK(root->IsType(base::Value::TYPE_LIST)); |
- base::Value* value = NULL; |
- bool succeeded = static_cast<base::ListValue*>(root.get())->Get(0, &value); |
- if (succeeded) { |
- base::string16 read_value; |
- succeeded = value->GetAsString(&read_value); |
- if (succeeded) { |
- // TODO(viettrungluu): remove conversion. (But should |jscript| be UTF-8?) |
- *string_value = base::UTF16ToWideHack(read_value); |
- } |
- } |
- return succeeded; |
-} |
- |
-bool TabProxy::ExecuteAndExtractBool(const std::wstring& frame_xpath, |
- const std::wstring& jscript, |
- bool* bool_value) { |
- scoped_ptr<base::Value> root(ExecuteAndExtractValue(frame_xpath, jscript)); |
- if (root == NULL) |
- return false; |
- |
- bool read_value = false; |
- DCHECK(root->IsType(base::Value::TYPE_LIST)); |
- base::Value* value = NULL; |
- bool succeeded = static_cast<base::ListValue*>(root.get())->Get(0, &value); |
- if (succeeded) { |
- succeeded = value->GetAsBoolean(&read_value); |
- if (succeeded) { |
- *bool_value = read_value; |
- } |
- } |
- return succeeded; |
-} |
- |
-bool TabProxy::ExecuteAndExtractInt(const std::wstring& frame_xpath, |
- const std::wstring& jscript, |
- int* int_value) { |
- scoped_ptr<base::Value> root(ExecuteAndExtractValue(frame_xpath, jscript)); |
- if (root == NULL) |
- return false; |
- |
- int read_value = 0; |
- DCHECK(root->IsType(base::Value::TYPE_LIST)); |
- base::Value* value = NULL; |
- bool succeeded = static_cast<base::ListValue*>(root.get())->Get(0, &value); |
- if (succeeded) { |
- succeeded = value->GetAsInteger(&read_value); |
- if (succeeded) { |
- *int_value = read_value; |
- } |
- } |
- return succeeded; |
-} |
- |
-base::Value* TabProxy::ExecuteAndExtractValue(const std::wstring& frame_xpath, |
- const std::wstring& jscript) { |
- if (!is_valid()) |
- return NULL; |
- |
- std::string json; |
- if (!sender_->Send(new AutomationMsg_DomOperation(handle_, frame_xpath, |
- jscript, &json))) { |
- return NULL; |
- } |
- // Wrap |json| in an array before deserializing because valid JSON has an |
- // array or an object as the root. |
- json.insert(0, "["); |
- json.append("]"); |
- |
- JSONStringValueSerializer deserializer(json); |
- return deserializer.Deserialize(NULL, NULL); |
-} |
- |
-bool TabProxy::GetCookies(const GURL& url, std::string* cookies) { |
- if (!is_valid()) |
- return false; |
- |
- int size = 0; |
- return sender_->Send(new AutomationMsg_GetCookies(url, handle_, &size, |
- cookies)); |
-} |
- |
-bool TabProxy::GetCookieByName(const GURL& url, |
- const std::string& name, |
- std::string* cookie) { |
- std::string cookies; |
- if (!GetCookies(url, &cookies)) |
- return false; |
- |
- std::string namestr = name + "="; |
- std::string::size_type idx = cookies.find(namestr); |
- if (idx != std::string::npos) { |
- cookies.erase(0, idx + namestr.length()); |
- *cookie = cookies.substr(0, cookies.find(";")); |
- } else { |
- cookie->clear(); |
- } |
- |
- return true; |
-} |
- |
-bool TabProxy::Close() { |
- return Close(false); |
-} |
- |
-bool TabProxy::Close(bool wait_until_closed) { |
- if (!is_valid()) |
- return false; |
- |
- bool succeeded = false; |
- sender_->Send(new AutomationMsg_CloseTab(handle_, wait_until_closed, |
- &succeeded)); |
- return succeeded; |
-} |
- |
-bool TabProxy::WaitForInfoBarCount(size_t target_count) { |
- if (!is_valid()) |
- return false; |
- |
- bool success = false; |
- return sender_->Send(new AutomationMsg_WaitForInfoBarCount( |
- handle_, target_count, &success)) && success; |
-} |
- |
-bool TabProxy::OverrideEncoding(const std::string& encoding) { |
- if (!is_valid()) |
- return false; |
- |
- bool succeeded = false; |
- sender_->Send(new AutomationMsg_OverrideEncoding(handle_, encoding, |
- &succeeded)); |
- return succeeded; |
-} |
- |
- |
-void TabProxy::ReloadAsync() { |
- sender_->Send(new AutomationMsg_ReloadAsync(handle_)); |
-} |
- |
-void TabProxy::StopAsync() { |
- sender_->Send(new AutomationMsg_StopAsync(handle_)); |
-} |
- |
-void TabProxy::JavaScriptStressTestControl(int cmd, int param) { |
- if (!is_valid()) |
- return; |
- |
- sender_->Send(new AutomationMsg_JavaScriptStressTestControl( |
- handle_, cmd, param)); |
-} |
- |
-void TabProxy::AddObserver(TabProxyDelegate* observer) { |
- base::AutoLock lock(list_lock_); |
- observers_list_.AddObserver(observer); |
-} |
- |
-void TabProxy::RemoveObserver(TabProxyDelegate* observer) { |
- base::AutoLock lock(list_lock_); |
- observers_list_.RemoveObserver(observer); |
-} |
- |
-// Called on Channel background thread, if TabMessages filter is installed. |
-bool TabProxy::OnMessageReceived(const IPC::Message& message) { |
- base::AutoLock lock(list_lock_); |
- FOR_EACH_OBSERVER(TabProxyDelegate, observers_list_, |
- OnMessageReceived(this, message)); |
- return true; |
-} |
- |
-void TabProxy::OnChannelError() { |
- base::AutoLock lock(list_lock_); |
- FOR_EACH_OBSERVER(TabProxyDelegate, observers_list_, OnChannelError(this)); |
-} |
- |
-TabProxy::~TabProxy() {} |
- |
-void TabProxy::FirstObjectAdded() { |
- AddRef(); |
-} |
- |
-void TabProxy::LastObjectRemoved() { |
- Release(); |
-} |