Index: chrome/test/chromedriver/chromedriver.cc |
diff --git a/chrome/test/chromedriver/chromedriver.cc b/chrome/test/chromedriver/chromedriver.cc |
deleted file mode 100644 |
index 8f7ddce0de50359adeea09e0370bb99f9ad4ebfa..0000000000000000000000000000000000000000 |
--- a/chrome/test/chromedriver/chromedriver.cc |
+++ /dev/null |
@@ -1,125 +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/chromedriver/chromedriver.h" |
- |
-#include "base/json/json_reader.h" |
-#include "base/json/json_writer.h" |
-#include "base/lazy_instance.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/synchronization/lock.h" |
-#include "base/values.h" |
-#include "chrome/test/chromedriver/chrome/status.h" |
-#include "chrome/test/chromedriver/command_executor.h" |
- |
-namespace { |
- |
-// Guards |g_executor_initialized|. |
-base::LazyInstance<base::Lock> g_lazy_lock = LAZY_INSTANCE_INITIALIZER; |
-bool g_executor_initialized = false; |
-CommandExecutor* g_command_executor = NULL; |
- |
-void SetResponse(StatusCode status, |
- const base::Value* value, |
- const std::string& session_id, |
- std::string* response) { |
- base::DictionaryValue response_dict; |
- response_dict.SetInteger("status", status); |
- response_dict.Set("value", value->DeepCopy()); |
- response_dict.SetString("sessionId", session_id); |
- std::string json; |
- base::JSONWriter::Write(&response_dict, response); |
-} |
- |
-void SetError(const std::string& error_msg, |
- std::string* response) { |
- base::DictionaryValue value; |
- value.SetString("message", error_msg); |
- SetResponse(kUnknownError, &value, std::string(), response); |
-} |
- |
-} // namespace |
- |
-void Init(scoped_ptr<CommandExecutor> executor) { |
- g_command_executor = executor.release(); |
- // We do not call CommandExecutor::Init here because you can't do some things |
- // (e.g., creating threads) during DLL loading on Windows. |
-} |
- |
-void ExecuteCommand(const std::string& command, std::string* response) { |
- CHECK(g_command_executor); |
- { |
- base::AutoLock(g_lazy_lock.Get()); |
- if (!g_executor_initialized) { |
- g_command_executor->Init(); |
- g_executor_initialized = true; |
- } |
- } |
- std::string error_msg; |
- scoped_ptr<base::Value> value(base::JSONReader::ReadAndReturnError( |
- command, 0, NULL, &error_msg)); |
- if (!value.get()) { |
- SetError("failed to parse command: " + error_msg, response); |
- return; |
- } |
- base::DictionaryValue* command_dict; |
- if (!value->GetAsDictionary(&command_dict)) { |
- SetError("invalid command (must be dictionary)", response); |
- return; |
- } |
- std::string name; |
- if (!command_dict->GetString("name", &name)) { |
- SetError("invalid command (must contain 'name' of type string)", response); |
- return; |
- } |
- base::DictionaryValue* params; |
- if (!command_dict->GetDictionary("parameters", ¶ms)) { |
- SetError("invalid command (must contain 'parameters' of type dict)", |
- response); |
- return; |
- } |
- std::string session_id; |
- if (!command_dict->GetString("sessionId", &session_id)) { |
- SetError("invalid command (must contain 'sessionId' of type string)", |
- response); |
- return; |
- } |
- StatusCode out_status = kOk; |
- scoped_ptr<base::Value> out_value; |
- std::string out_session_id; |
- g_command_executor->ExecuteCommand( |
- name, *params, session_id, &out_status, &out_value, &out_session_id); |
- SetResponse(out_status, out_value.get(), out_session_id, response); |
-} |
- |
-void Shutdown() { |
- // TODO: Move this out to a separate doc. |
- // On shutdown, it is nice to quit all running sessions so that we don't |
- // have leftover Chrome processes and temporary user data dirs. |
- // To do this, we execute the quitAll command. |
- // Alternative shutdown behaviors: |
- // 1. If the user doesn't quit the session, don't clean it up. |
- // This is what the FF driver does, except the temp dir is |
- // cleaned up in FF because the client side is responsible for creating |
- // the temp directory, not the driver. |
- // 2. Separate helper process that we spawn that is in charge of |
- // launching processes and creating temporary files. This process |
- // communicates to the helper via a socket. The helper process |
- // kills all processes and deletes temp files if it sees the parent |
- // die and then exits itself. This is more complicated, but it guarantees |
- // that the processes and temp dirs are cleaned up, even if this process |
- // exits abnormally. |
- // 3. Add Chrome command-line switch for socket/pipe that Chrome listens |
- // to and exits if the pipe is closed. This is how the old |
- // TestingAutomationProvider worked. However, this doesn't clean up |
- // temp directories, unless we make Chrome clean its own directory too. |
- // If Chrome crashes the directory would be leaked. |
- base::DictionaryValue params; |
- StatusCode status_code; |
- scoped_ptr<base::Value> value; |
- std::string session_id; |
- g_command_executor->ExecuteCommand( |
- "quitAll", params, std::string(), &status_code, &value, &session_id); |
- delete g_command_executor; |
-} |