Index: ash/wm/partial_screenshot_view_unittest.cc |
diff --git a/ash/wm/partial_screenshot_view_unittest.cc b/ash/wm/partial_screenshot_view_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..94ca066caa3707fe6d4320a9e7fda1d4c80854cb |
--- /dev/null |
+++ b/ash/wm/partial_screenshot_view_unittest.cc |
@@ -0,0 +1,101 @@ |
+// Copyright (c) 2013 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 "ash/wm/partial_screenshot_view.h" |
+ |
+#include "ash/screenshot_delegate.h" |
+#include "ash/shell.h" |
+#include "ash/shell_window_ids.h" |
+#include "ash/test/ash_test_base.h" |
+#include "ui/aura/root_window.h" |
+#include "ui/aura/test/event_generator.h" |
+ |
+namespace ash { |
+ |
+class FakeScreenshotDelegate : public ScreenshotDelegate { |
+ public: |
+ FakeScreenshotDelegate() : screenshot_count_(0) {} |
+ |
+ void HandleTakeScreenshotForAllRootWindows() {} |
+ void HandleTakePartialScreenshot(aura::Window* window, |
+ const gfx::Rect& rect) { |
+ rect_ = rect; |
+ screenshot_count_++; |
+ } |
+ |
+ bool CanTakeScreenshot() { |
+ return true; |
+ } |
+ |
+ gfx::Rect rect_; |
+ int screenshot_count_; |
+}; |
+ |
+class PartialScreenshotViewTest : public test::AshTestBase { |
+ public: |
+ PartialScreenshotViewTest() : view_(NULL) {} |
+ virtual ~PartialScreenshotViewTest() {} |
+ |
+ virtual void SetUp() OVERRIDE { |
+ test::AshTestBase::SetUp(); |
+ delegate_.reset(new FakeScreenshotDelegate()); |
+ std::vector<PartialScreenshotView*> views = |
+ PartialScreenshotView::StartPartialScreenshot(delegate_.get()); |
+ DCHECK(!views.empty()); |
+ view_ = views[0]; |
+ } |
+ |
+ virtual void TearDown() OVERRIDE { |
+ test::AshTestBase::TearDown(); |
+ } |
+ |
+ protected: |
+ PartialScreenshotView* view_; |
+ scoped_ptr<FakeScreenshotDelegate> delegate_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(PartialScreenshotViewTest); |
+}; |
+ |
+TEST_F(PartialScreenshotViewTest, BasicMouse) { |
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
+ |
+ generator.MoveMouseTo(100, 100); |
+ generator.PressLeftButton(); |
+ EXPECT_FALSE(view_->is_dragging_); |
+ EXPECT_EQ("100,100", view_->start_position_.ToString()); |
+ |
+ generator.MoveMouseTo(200, 200); |
+ EXPECT_TRUE(view_->is_dragging_); |
+ EXPECT_EQ("200,200", view_->current_position_.ToString()); |
+ |
+ generator.ReleaseLeftButton(); |
+ EXPECT_FALSE(view_->is_dragging_); |
+ EXPECT_EQ("100,100 100x100", delegate_->rect_.ToString()); |
+ EXPECT_EQ(1, delegate_->screenshot_count_); |
+} |
+ |
+TEST_F(PartialScreenshotViewTest, BasicTouch) { |
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
+ |
+ generator.set_current_location(gfx::Point(100,100)); |
+ generator.GestureTapDownAndUp(gfx::Point(100,100)); |
+ EXPECT_FALSE(view_->is_dragging_); |
+ EXPECT_EQ(0, delegate_->screenshot_count_); |
+ |
+ generator.PressTouch(); |
+ EXPECT_FALSE(view_->is_dragging_); |
+ EXPECT_EQ("100,100", view_->start_position_.ToString()); |
+ |
+ generator.MoveTouch(gfx::Point(200, 200)); |
+ EXPECT_TRUE(view_->is_dragging_); |
+ EXPECT_EQ("200,200", view_->current_position_.ToString()); |
+ |
+ generator.ReleaseTouch(); |
+ EXPECT_FALSE(view_->is_dragging_); |
+ EXPECT_EQ(1, delegate_->screenshot_count_); |
+ EXPECT_EQ("100,100 100x100", delegate_->rect_.ToString()); |
+} |
+ |
+} // namespace ash |