Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1137)

Unified Diff: chrome/test/webdriver/webdriver_capabilities_parser.h

Issue 8341044: Enhance and refactor ChromeDriver's capability handling. Log warning for (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/webdriver/webdriver_capabilities_parser.h
diff --git a/chrome/test/webdriver/webdriver_capabilities_parser.h b/chrome/test/webdriver/webdriver_capabilities_parser.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b2bf2f1ccd9b359ea3dc2c5d5f37263b15c386d
--- /dev/null
+++ b/chrome/test/webdriver/webdriver_capabilities_parser.h
@@ -0,0 +1,109 @@
+// Copyright (c) 2011 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.
+
+#ifndef CHROME_TEST_WEBDRIVER_WEBDRIVER_CAPABILITIES_PARSER_H_
+#define CHROME_TEST_WEBDRIVER_WEBDRIVER_CAPABILITIES_PARSER_H_
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/command_line.h"
+#include "base/file_path.h"
+
+namespace base {
+class DictionaryValue;
+class Value;
+}
+
+namespace webdriver {
+
+class Error;
+
+// Contains all the capabilities that a user may request when starting a
+// new session.
+struct Capabilities {
+ Capabilities();
+ ~Capabilities();
+
+ // Command line to use for starting Chrome.
+ CommandLine command;
+
+ // Channel ID to use for connecting to an already running Chrome.
+ std::string channel;
+
+ // Whether the lifetime of the started Chrome browser process should be
+ // bound to ChromeDriver's process. If true, Chrome will not quit if
+ // ChromeDriver dies.
+ bool detach;
+
+ // List of paths for extensions to install on startup.
+ std::vector<FilePath> extensions;
+
+ // Whether Chrome should not block when loading.
+ bool load_async;
+
+ // Whether Chrome should simulate input events using OS APIs instead of
+ // WebKit APIs.
+ bool native_events;
+
+ // Path to a custom profile to use.
+ FilePath profile;
+
+ // Whether ChromeDriver should log verbosely.
+ bool verbose;
+};
+
+// Parses the given capabilities dictionary to produce a |Capabilities|
+// instance.
+// See webdriver's desired capabilities for more info.
+class CapabilitiesParser {
+ public:
+ // Create a new parser. |capabilities_dict| is the dictionary for all
+ // of the user's desired capabilities. |root_path| is the root directory
+ // to use for writing any necessary files to disk. This function will not
+ // create it or delete it. All files written to disk will be placed in
+ // this directory.
+ CapabilitiesParser(const base::DictionaryValue* capabilities_dict,
+ const FilePath& root_path,
+ Capabilities* capabilities);
+ ~CapabilitiesParser();
+
+ // Parses the capabilities. May return an error.
+ Error* Parse();
+
+ private:
+ Error* ParseArgs(const base::Value* option);
+ Error* ParseBinary(const base::Value* option);
+ Error* ParseChannel(const base::Value* option);
+ Error* ParseDetach(const base::Value* option);
+ Error* ParseExtensions(const base::Value* option);
+ Error* ParseLoadAsync(const base::Value* option);
+ Error* ParseNativeEvents(const base::Value* option);
+ Error* ParseProfile(const base::Value* option);
+ Error* ParseVerbose(const base::Value* option);
+ // Decodes the given base64-encoded string and writes it to disk, optionally
+ // unzipping it afterwards. |path| will be set to the end file.
+ // On failure, false will be returned and |error_msg| will be set.
+ bool DecodeAndWriteFile(const std::string& base64,
+ bool unzip,
+ FilePath* path,
+ std::string* error_msg);
+
+ // The capabilities dictionary to parse.
+ const base::DictionaryValue* dict_;
+
+ // The root directory under which to write all files.
+ const FilePath root_;
+
+ // A pointer to the capabilities to modify while parsing.
+ Capabilities* caps_;
+
+ DISALLOW_COPY_AND_ASSIGN(CapabilitiesParser);
+};
+
+} // namespace webdriver
+
+#endif // CHROME_TEST_WEBDRIVER_WEBDRIVER_CAPABILITIES_PARSER_H_

Powered by Google App Engine
This is Rietveld 408576698