diff options
Diffstat (limited to 'chrome/test/webdriver/commands')
| -rw-r--r-- | chrome/test/webdriver/commands/html5_location_commands.cc | 47 | ||||
| -rw-r--r-- | chrome/test/webdriver/commands/html5_location_commands.h | 42 |
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_ |
