diff options
author | miletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-27 07:29:45 +0000 |
---|---|---|
committer | miletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-27 07:29:45 +0000 |
commit | 0102d9fca6880f49bbf7dc00f48d296abc632208 (patch) | |
tree | fa0757b7ac5767acdf0b69cbd802d697903213c5 /ash | |
parent | 7dc9b66e5f85c119563f87105215fb6a686b5101 (diff) | |
download | chromium_src-0102d9fca6880f49bbf7dc00f48d296abc632208.zip chromium_src-0102d9fca6880f49bbf7dc00f48d296abc632208.tar.gz chromium_src-0102d9fca6880f49bbf7dc00f48d296abc632208.tar.bz2 |
Add partial_screenshot_view_unittest
BUG=chromium:177857
Review URL: https://chromiumcodereview.appspot.com/12703042
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190845 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/ash.gyp | 1 | ||||
-rw-r--r-- | ash/wm/partial_screenshot_view.cc | 6 | ||||
-rw-r--r-- | ash/wm/partial_screenshot_view.h | 11 | ||||
-rw-r--r-- | ash/wm/partial_screenshot_view_unittest.cc | 103 |
4 files changed, 119 insertions, 2 deletions
diff --git a/ash/ash.gyp b/ash/ash.gyp index a2f8ce4..8a148b2 100644 --- a/ash/ash.gyp +++ b/ash/ash.gyp @@ -662,6 +662,7 @@ 'wm/frame_painter_unittest.cc', 'wm/panels/panel_layout_manager_unittest.cc', 'wm/panels/panel_window_resizer_unittest.cc', + 'wm/partial_screenshot_view_unittest.cc', 'wm/power_button_controller_unittest.cc', 'wm/screen_dimmer_unittest.cc', 'wm/session_state_controller_impl2_unittest.cc', diff --git a/ash/wm/partial_screenshot_view.cc b/ash/wm/partial_screenshot_view.cc index 1a0f5cd..032c91b 100644 --- a/ash/wm/partial_screenshot_view.cc +++ b/ash/wm/partial_screenshot_view.cc @@ -79,8 +79,10 @@ class PartialScreenshotView::OverlayDelegate }; // static -void PartialScreenshotView::StartPartialScreenshot( +std::vector<PartialScreenshotView*> +PartialScreenshotView::StartPartialScreenshot( ScreenshotDelegate* screenshot_delegate) { + std::vector<PartialScreenshotView*> views; OverlayDelegate* overlay_delegate = new OverlayDelegate(); Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); for (Shell::RootWindowList::iterator it = root_windows.begin(); @@ -88,7 +90,9 @@ void PartialScreenshotView::StartPartialScreenshot( PartialScreenshotView* new_view = new PartialScreenshotView( overlay_delegate, screenshot_delegate); new_view->Init(*it); + views.push_back(new_view); } + return views; } PartialScreenshotView::PartialScreenshotView( diff --git a/ash/wm/partial_screenshot_view.h b/ash/wm/partial_screenshot_view.h index 19d21d3..85b9f81 100644 --- a/ash/wm/partial_screenshot_view.h +++ b/ash/wm/partial_screenshot_view.h @@ -5,8 +5,11 @@ #ifndef ASH_WM_PARTIAL_SCREENSHOT_VIEW_H_ #define ASH_WM_PARTIAL_SCREENSHOT_VIEW_H_ +#include <vector> + #include "ash/ash_export.h" #include "base/compiler_specific.h" +#include "base/gtest_prod_util.h" #include "ui/gfx/point.h" #include "ui/views/widget/widget_delegate.h" @@ -23,9 +26,15 @@ class ScreenshotDelegate; class ASH_EXPORT PartialScreenshotView : public views::WidgetDelegateView { public: // Starts the UI for taking partial screenshot; dragging to select a region. - static void StartPartialScreenshot(ScreenshotDelegate* screenshot_delegate); + // PartialScreenshotViews manage their own lifetime so caller must not delete + // the returned PartialScreenshotViews. + static std::vector<PartialScreenshotView*> + StartPartialScreenshot(ScreenshotDelegate* screenshot_delegate); private: + FRIEND_TEST_ALL_PREFIXES(PartialScreenshotViewTest, BasicMouse); + FRIEND_TEST_ALL_PREFIXES(PartialScreenshotViewTest, BasicTouch); + class OverlayDelegate; PartialScreenshotView(OverlayDelegate* overlay_delegate, diff --git a/ash/wm/partial_screenshot_view_unittest.cc b/ash/wm/partial_screenshot_view_unittest.cc new file mode 100644 index 0000000..ea1d54c --- /dev/null +++ b/ash/wm/partial_screenshot_view_unittest.cc @@ -0,0 +1,103 @@ +// 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() OVERRIDE {} + void HandleTakePartialScreenshot(aura::Window* window, + const gfx::Rect& rect) OVERRIDE { + rect_ = rect; + screenshot_count_++; + } + + bool CanTakeScreenshot() OVERRIDE { + return true; + } + + const gfx::Rect& rect() const { return rect_; }; + int screenshot_count() const { return screenshot_count_; }; + + private: + gfx::Rect rect_; + int screenshot_count_; + + DISALLOW_COPY_AND_ASSIGN(FakeScreenshotDelegate); +}; + +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()); + ASSERT_EQ(1u, views.size()); + view_ = views[0]; + } + + 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 |