summaryrefslogtreecommitdiffstats
path: root/chrome/test/webdriver/commands
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/webdriver/commands')
-rw-r--r--chrome/test/webdriver/commands/html5_location_commands.cc47
-rw-r--r--chrome/test/webdriver/commands/html5_location_commands.h42
2 files changed, 89 insertions, 0 deletions
diff --git a/chrome/test/webdriver/commands/html5_location_commands.cc b/chrome/test/webdriver/commands/html5_location_commands.cc
new file mode 100644
index 0000000..d2466d7
--- /dev/null
+++ b/chrome/test/webdriver/commands/html5_location_commands.cc
@@ -0,0 +1,47 @@
+// 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/webdriver/commands/html5_location_commands.h"
+
+#include "base/values.h"
+#include "chrome/test/webdriver/commands/response.h"
+#include "chrome/test/webdriver/webdriver_error.h"
+#include "chrome/test/webdriver/webdriver_session.h"
+
+namespace webdriver {
+
+HTML5LocationCommand::HTML5LocationCommand(
+ const std::vector<std::string>& path_segments,
+ const base::DictionaryValue* const parameters)
+ : WebDriverCommand(path_segments, parameters) {}
+
+HTML5LocationCommand::~HTML5LocationCommand() {}
+
+bool HTML5LocationCommand::DoesGet() {
+ return true;
+}
+
+bool HTML5LocationCommand::DoesPost() {
+ return true;
+}
+
+void HTML5LocationCommand::ExecuteGet(Response* const response) {
+ scoped_ptr<base::DictionaryValue> geolocation;
+ Error* error = session_->GetGeolocation(&geolocation);
+ if (error) {
+ response->SetError(error);
+ return;
+ }
+ response->SetValue(geolocation.release());
+}
+
+void HTML5LocationCommand::ExecutePost(Response* const response) {
+ base::DictionaryValue geolocation;
+ geolocation.MergeDictionary(parameters_.get());
+ Error* error = session_->OverrideGeolocation(&geolocation);
+ if (error)
+ response->SetError(error);
+}
+
+} // namespace webdriver
diff --git a/chrome/test/webdriver/commands/html5_location_commands.h b/chrome/test/webdriver/commands/html5_location_commands.h
new file mode 100644
index 0000000..b927876
--- /dev/null
+++ b/chrome/test/webdriver/commands/html5_location_commands.h
@@ -0,0 +1,42 @@
+// 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.
+
+#ifndef CHROME_TEST_WEBDRIVER_COMMANDS_HTML5_LOCATION_COMMANDS_H_
+#define CHROME_TEST_WEBDRIVER_COMMANDS_HTML5_LOCATION_COMMANDS_H_
+
+#include <string>
+#include <vector>
+
+#include "chrome/test/webdriver/commands/webdriver_command.h"
+
+namespace base {
+class DictionaryValue;
+}
+
+namespace webdriver {
+
+class Response;
+
+class HTML5LocationCommand : public WebDriverCommand {
+ public:
+ HTML5LocationCommand(const std::vector<std::string>& path_segments,
+ const base::DictionaryValue* const parameters);
+ virtual ~HTML5LocationCommand();
+
+ virtual bool DoesGet() OVERRIDE;
+ virtual bool DoesPost() OVERRIDE;
+
+ // Returns the current geolocation.
+ virtual void ExecuteGet(Response* const response) OVERRIDE;
+
+ // Sets the current geolocation.
+ virtual void ExecutePost(Response* const response) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(HTML5LocationCommand);
+};
+
+} // namespace webdriver
+
+#endif // CHROME_TEST_WEBDRIVER_COMMANDS_HTML5_LOCATION_COMMANDS_H_