| Index: chrome/test/webdriver/webdriver_basic_types.cc
|
| diff --git a/chrome/test/webdriver/webdriver_basic_types.cc b/chrome/test/webdriver/webdriver_basic_types.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fdafc61c9a7b533cd7523cd08136d69b85b56a00
|
| --- /dev/null
|
| +++ b/chrome/test/webdriver/webdriver_basic_types.cc
|
| @@ -0,0 +1,168 @@
|
| +// 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.
|
| +
|
| +#include "chrome/test/webdriver/webdriver_basic_types.h"
|
| +
|
| +#include "base/values.h"
|
| +
|
| +using base::Value;
|
| +
|
| +namespace webdriver {
|
| +
|
| +Point::Point() { }
|
| +
|
| +Point::Point(double x, double y) : x_(x), y_(y) { }
|
| +
|
| +Point::~Point() { }
|
| +
|
| +void Point::Offset(double x, double y) {
|
| + x_ += x;
|
| + y_ += y;
|
| +}
|
| +
|
| +double Point::x() const {
|
| + return x_;
|
| +}
|
| +
|
| +double Point::y() const {
|
| + return y_;
|
| +}
|
| +
|
| +Size::Size() { }
|
| +
|
| +Size::Size(double width, double height) : width_(width), height_(height) { }
|
| +
|
| +Size::~Size() { }
|
| +
|
| +double Size::width() const {
|
| + return width_;
|
| +}
|
| +
|
| +double Size::height() const {
|
| + return height_;
|
| +}
|
| +
|
| +Rect::Rect() { }
|
| +
|
| +Rect::Rect(double x, double y, double width, double height)
|
| + : origin_(x, y), size_(width, height) { }
|
| +
|
| +Rect::Rect(const Point& origin, const Size& size)
|
| + : origin_(origin), size_(size) { }
|
| +
|
| +Rect::~Rect() { }
|
| +
|
| +const Point& Rect::origin() const {
|
| + return origin_;
|
| +}
|
| +
|
| +const Size& Rect::size() const {
|
| + return size_;
|
| +}
|
| +
|
| +double Rect::x() const {
|
| + return origin_.x();
|
| +}
|
| +
|
| +double Rect::y() const {
|
| + return origin_.y();
|
| +}
|
| +
|
| +double Rect::width() const {
|
| + return size_.width();
|
| +}
|
| +
|
| +double Rect::height() const {
|
| + return size_.height();
|
| +}
|
| +
|
| +} // namespace webdriver
|
| +
|
| +Value* ValueConversionTraits<webdriver::Point>::CreateValueFrom(
|
| + const webdriver::Point& t) {
|
| + DictionaryValue* value = new DictionaryValue();
|
| + value->SetDouble("x", t.x());
|
| + value->SetDouble("y", t.y());
|
| + return value;
|
| +}
|
| +
|
| +bool ValueConversionTraits<webdriver::Point>::SetFromValue(
|
| + const Value* value, webdriver::Point* t) {
|
| + if (!value->IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| +
|
| + const DictionaryValue* dict_value =
|
| + static_cast<const DictionaryValue*>(value);
|
| + double x, y;
|
| + if (!dict_value->GetDouble("x", &x) ||
|
| + !dict_value->GetDouble("y", &y))
|
| + return false;
|
| + *t = webdriver::Point(x, y);
|
| + return true;
|
| +}
|
| +
|
| +bool ValueConversionTraits<webdriver::Point>::CanConvert(const Value* value) {
|
| + webdriver::Point t;
|
| + return SetFromValue(value, &t);
|
| +}
|
| +
|
| +Value* ValueConversionTraits<webdriver::Size>::CreateValueFrom(
|
| + const webdriver::Size& t) {
|
| + DictionaryValue* value = new DictionaryValue();
|
| + value->SetDouble("width", t.width());
|
| + value->SetDouble("height", t.height());
|
| + return value;
|
| +}
|
| +
|
| +bool ValueConversionTraits<webdriver::Size>::SetFromValue(
|
| + const Value* value, webdriver::Size* t) {
|
| + if (!value->IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| +
|
| + const DictionaryValue* dict_value =
|
| + static_cast<const DictionaryValue*>(value);
|
| + double width, height;
|
| + if (!dict_value->GetDouble("width", &width) ||
|
| + !dict_value->GetDouble("height", &height))
|
| + return false;
|
| + *t = webdriver::Size(width, height);
|
| + return true;
|
| +}
|
| +
|
| +bool ValueConversionTraits<webdriver::Size>::CanConvert(const Value* value) {
|
| + webdriver::Size t;
|
| + return SetFromValue(value, &t);
|
| +}
|
| +
|
| +Value* ValueConversionTraits<webdriver::Rect>::CreateValueFrom(
|
| + const webdriver::Rect& t) {
|
| + DictionaryValue* value = new DictionaryValue();
|
| + value->SetDouble("left", t.x());
|
| + value->SetDouble("top", t.y());
|
| + value->SetDouble("width", t.width());
|
| + value->SetDouble("height", t.height());
|
| + return value;
|
| +}
|
| +
|
| +bool ValueConversionTraits<webdriver::Rect>::SetFromValue(
|
| + const Value* value, webdriver::Rect* t) {
|
| + if (!value->IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| +
|
| + const DictionaryValue* dict_value =
|
| + static_cast<const DictionaryValue*>(value);
|
| + double x, y, width, height;
|
| + if (!dict_value->GetDouble("left", &x) ||
|
| + !dict_value->GetDouble("top", &y) ||
|
| + !dict_value->GetDouble("width", &width) ||
|
| + !dict_value->GetDouble("height", &height))
|
| + return false;
|
| + *t = webdriver::Rect(x, y, width, height);
|
| + return true;
|
| +}
|
| +
|
| +bool ValueConversionTraits<webdriver::Rect>::CanConvert(const Value* value) {
|
| + webdriver::Rect t;
|
| + return SetFromValue(value, &t);
|
| +}
|
|
|