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); |
+} |