diff options
author | Hidehiko Abe <hidehiko@google.com> | 2018-04-23 20:01:13 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-04-23 20:01:13 -0700 |
commit | ed7128dca79cff94e99465e3c1bc31d91d83c76d (patch) | |
tree | bd2d04362f66c36d4279f7a9735ba21ea3a2a021 /mojo/public/cpp/bindings/tests/rect_chromium.h | |
parent | d6187ab7d79d95d101c2ecb83aa98c05bcdcccd1 (diff) | |
parent | 0ab20ac2283987e63b0e7c1318db2a5cf7c668d2 (diff) | |
download | libchrome-ed7128dca79cff94e99465e3c1bc31d91d83c76d.tar.gz |
Migrate libmojo repository into libchrome, part 2. am: b268b43ac6
am: 0ab20ac228
Change-Id: I1b1afe0c902f1d122b100f5bf56d1df4a94eb090
Diffstat (limited to 'mojo/public/cpp/bindings/tests/rect_chromium.h')
-rw-r--r-- | mojo/public/cpp/bindings/tests/rect_chromium.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/mojo/public/cpp/bindings/tests/rect_chromium.h b/mojo/public/cpp/bindings/tests/rect_chromium.h new file mode 100644 index 0000000000..d2e0a3e635 --- /dev/null +++ b/mojo/public/cpp/bindings/tests/rect_chromium.h @@ -0,0 +1,87 @@ +// Copyright 2015 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 MOJO_PUBLIC_CPP_BINDINGS_TESTS_RECT_CHROMIUM_H_ +#define MOJO_PUBLIC_CPP_BINDINGS_TESTS_RECT_CHROMIUM_H_ + +#include "base/logging.h" + +namespace mojo { +namespace test { + +// An implementation of a hypothetical Rect type specifically for consumers in +// in Chromium. +class RectChromium { + public: + RectChromium() {} + RectChromium(const RectChromium& other) + : x_(other.x_), + y_(other.y_), + width_(other.width_), + height_(other.height_) {} + RectChromium(int x, int y, int width, int height) : + x_(x), y_(y), width_(width), height_(height) { + DCHECK_GE(width_, 0); + DCHECK_GE(height_, 0); + } + ~RectChromium() {} + + RectChromium& operator=(const RectChromium& other) { + x_ = other.x_; + y_ = other.y_; + width_ = other.width_; + height_ = other.height_; + return *this; + } + + int x() const { return x_; } + void set_x(int x) { x_ = x; } + + int y() const { return y_; } + void set_y(int y) { y_ = y; } + + int width() const { return width_; } + void set_width(int width) { + DCHECK_GE(width, 0); + width_ = width; + } + + int height() const { return height_; } + void set_height(int height) { + DCHECK_GE(height, 0); + height_ = height; + } + + int GetArea() const { return width_ * height_; } + + bool operator==(const RectChromium& other) const { + return (x() == other.x() && y() == other.y() && width() == other.width() && + height() == other.height()); + } + bool operator!=(const RectChromium& other) const { return !(*this == other); } + + private: + int x_ = 0; + int y_ = 0; + int width_ = 0; + int height_ = 0; +}; + +} // namespace test +} // namespace mojo + +namespace std { + +template <> +struct hash<mojo::test::RectChromium> { + size_t operator()(const mojo::test::RectChromium& value) { + // Terrible hash function: + return (std::hash<int>()(value.x()) ^ std::hash<int>()(value.y()) ^ + std::hash<int>()(value.width()) ^ std::hash<int>()(value.height())); + } +}; + +} // namespace std + +#endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_RECT_CHROMIUM_H_ |