Index: chrome/test/pyautolib/pyautolib.cc |
=================================================================== |
--- chrome/test/pyautolib/pyautolib.cc (revision 261231) |
+++ chrome/test/pyautolib/pyautolib.cc (working copy) |
@@ -1,163 +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 "base/base_paths.h" |
-#include "base/json/json_writer.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/path_service.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "base/time/time.h" |
-#include "base/values.h" |
-#include "chrome/common/automation_messages.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/test/automation/automation_proxy.h" |
-#include "chrome/test/automation/tab_proxy.h" |
-#include "chrome/test/pyautolib/pyautolib.h" |
-#include "url/gurl.h" |
- |
-// PyUITestSuiteBase |
-PyUITestSuiteBase::PyUITestSuiteBase(int argc, char** argv) |
- : UITestSuite(argc, argv) { |
-} |
- |
-PyUITestSuiteBase::~PyUITestSuiteBase() { |
-#if defined(OS_MACOSX) |
- pool_.Recycle(); |
-#endif |
- Shutdown(); |
-} |
- |
-void PyUITestSuiteBase::InitializeWithPath(const base::FilePath& browser_dir) { |
- SetBrowserDirectory(browser_dir); |
- UITestSuite::Initialize(); |
-} |
- |
-void PyUITestSuiteBase::SetCrSourceRoot(const base::FilePath& path) { |
- PathService::Override(base::DIR_SOURCE_ROOT, path); |
-} |
- |
-// PyUITestBase |
-PyUITestBase::PyUITestBase(bool clear_profile, std::wstring homepage) |
- : UITestBase() { |
- set_clear_profile(clear_profile); |
- set_homepage(base::WideToUTF8(homepage)); |
- // We add this so that pyauto can execute javascript in the renderer and |
- // read values back. |
- dom_automation_enabled_ = true; |
- message_loop_ = GetSharedMessageLoop(base::MessageLoop::TYPE_DEFAULT); |
-} |
- |
-PyUITestBase::~PyUITestBase() { |
-} |
- |
-// static, refer .h for why it needs to be static |
-base::MessageLoop* PyUITestBase::message_loop_ = NULL; |
- |
-// static |
-base::MessageLoop* PyUITestBase::GetSharedMessageLoop( |
- base::MessageLoop::Type msg_loop_type) { |
- if (!message_loop_) // Create a shared instance of MessageLoop |
- message_loop_ = new base::MessageLoop(msg_loop_type); |
- return message_loop_; |
-} |
- |
-void PyUITestBase::Initialize(const base::FilePath& browser_dir) { |
- UITestBase::SetBrowserDirectory(browser_dir); |
-} |
- |
-ProxyLauncher* PyUITestBase::CreateProxyLauncher() { |
- if (named_channel_id_.empty()) |
- return new AnonymousProxyLauncher(false); |
- return new NamedProxyLauncher(named_channel_id_, false, false); |
-} |
- |
-void PyUITestBase::SetUp() { |
- UITestBase::SetUp(); |
-} |
- |
-void PyUITestBase::TearDown() { |
- UITestBase::TearDown(); |
-} |
- |
-void PyUITestBase::SetLaunchSwitches() { |
- // Clear the homepage because some of the pyauto tests don't work correctly |
- // if a URL argument is passed. |
- std::string homepage_original; |
- std::swap(homepage_original, homepage_); |
- |
- UITestBase::SetLaunchSwitches(); |
- |
- // However, we *do* want the --homepage switch. |
- std::swap(homepage_original, homepage_); |
- launch_arguments_.AppendSwitchASCII(switches::kHomePage, homepage_); |
-} |
- |
-AutomationProxy* PyUITestBase::automation() const { |
- AutomationProxy* automation_proxy = UITestBase::automation(); |
- if (!automation_proxy) { |
- LOG(FATAL) << "The automation proxy is NULL."; |
- } |
- return automation_proxy; |
-} |
- |
-std::string PyUITestBase::_SendJSONRequest(int window_index, |
- const std::string& request, |
- int timeout) { |
- std::string response; |
- bool success; |
- AutomationProxy* automation_sender = automation(); |
- base::TimeTicks time = base::TimeTicks::Now(); |
- |
- if (!automation_sender) { |
- ErrorResponse("Automation proxy does not exist", request, false, &response); |
- } else if (!automation_sender->channel()) { |
- ErrorResponse("Chrome automation IPC channel was found already broken", |
- request, false, &response); |
- } else if (!automation_sender->Send( |
- new AutomationMsg_SendJSONRequest(window_index, request, &response, |
- &success), |
- timeout)) { |
- RequestFailureResponse(request, base::TimeTicks::Now() - time, |
- base::TimeDelta::FromMilliseconds(timeout), |
- &response); |
- } |
- return response; |
-} |
- |
-void PyUITestBase::ErrorResponse( |
- const std::string& error_string, |
- const std::string& request, |
- bool is_timeout, |
- std::string* response) { |
- base::DictionaryValue error_dict; |
- std::string error_msg = base::StringPrintf("%s for %s", error_string.c_str(), |
- request.c_str()); |
- LOG(ERROR) << "Error during automation: " << error_msg; |
- error_dict.SetString("error", error_msg); |
- error_dict.SetBoolean("is_interface_error", true); |
- error_dict.SetBoolean("is_interface_timeout", is_timeout); |
- base::JSONWriter::Write(&error_dict, response); |
-} |
- |
-void PyUITestBase::RequestFailureResponse( |
- const std::string& request, |
- const base::TimeDelta& duration, |
- const base::TimeDelta& timeout, |
- std::string* response) { |
- // TODO(craigdh): Determine timeout directly from IPC's Send(). |
- if (duration >= timeout) { |
- ErrorResponse( |
- base::StringPrintf("Chrome automation timed out after %d seconds", |
- static_cast<int>(duration.InSeconds())), |
- request, true, response); |
- } else { |
- // TODO(craigdh): Determine specific cause. |
- ErrorResponse( |
- "Chrome automation failed prior to timing out, did chrome crash?", |
- request, false, response); |
- } |
-} |