Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2382)

Unified Diff: ash/utility/partial_screenshot_controller_unittest.cc

Issue 1909873002: Allow taking screen shot of a non child window which has delegate to paint. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/utility/partial_screenshot_controller.cc ('k') | ash/utility/screenshot_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/utility/partial_screenshot_controller_unittest.cc
diff --git a/ash/utility/partial_screenshot_controller_unittest.cc b/ash/utility/partial_screenshot_controller_unittest.cc
deleted file mode 100644
index d0ef2c3539ef150e7f0f5e26df06ec8be34ef676..0000000000000000000000000000000000000000
--- a/ash/utility/partial_screenshot_controller_unittest.cc
+++ /dev/null
@@ -1,272 +0,0 @@
-// Copyright 2014 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/utility/partial_screenshot_controller.h"
-
-#include "ash/display/cursor_window_controller.h"
-#include "ash/display/mouse_cursor_event_filter.h"
-#include "ash/display/window_tree_host_manager.h"
-#include "ash/screenshot_delegate.h"
-#include "ash/shell.h"
-#include "ash/test/ash_test_base.h"
-#include "ash/test/display_manager_test_api.h"
-#include "ash/test/mirror_window_test_api.h"
-#include "ash/test/test_screenshot_delegate.h"
-#include "ui/aura/env.h"
-#include "ui/aura/window_event_dispatcher.h"
-#include "ui/base/cursor/cursor.h"
-#include "ui/events/test/event_generator.h"
-#include "ui/wm/core/cursor_manager.h"
-
-namespace ash {
-
-class PartialScreenshotControllerTest : public test::AshTestBase {
- public:
- PartialScreenshotControllerTest() {}
- ~PartialScreenshotControllerTest() override {}
-
- protected:
- PartialScreenshotController* partial_screenshot_controller() {
- return Shell::GetInstance()->partial_screenshot_controller();
- }
-
- bool TestIfMouseWarpsAt(const gfx::Point& point_in_screen) {
- return test::DisplayManagerTestApi::TestIfMouseWarpsAt(GetEventGenerator(),
- point_in_screen);
- }
-
- void StartPartialScreenshotSession() {
- partial_screenshot_controller()->StartPartialScreenshotSession(
- GetScreenshotDelegate());
- }
-
- void Cancel() { partial_screenshot_controller()->Cancel(); }
-
- bool IsActive() {
- return partial_screenshot_controller()->screenshot_delegate_ != nullptr;
- }
-
- const gfx::Point& GetStartPosition() const {
- return Shell::GetInstance()
- ->partial_screenshot_controller()
- ->start_position_;
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(PartialScreenshotControllerTest);
-};
-
-TEST_F(PartialScreenshotControllerTest, BasicMouse) {
- StartPartialScreenshotSession();
- test::TestScreenshotDelegate* test_delegate = GetScreenshotDelegate();
- ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
-
- generator.MoveMouseTo(100, 100);
- generator.PressLeftButton();
- EXPECT_EQ("100,100", GetStartPosition().ToString());
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
-
- generator.MoveMouseTo(200, 200);
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
-
- generator.ReleaseLeftButton();
- EXPECT_EQ("100,100 100x100", GetScreenshotDelegate()->last_rect().ToString());
- EXPECT_EQ(1, GetScreenshotDelegate()->handle_take_partial_screenshot_count());
-
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-}
-
-// Starting the screenshot session while mouse is pressed, releasing the mouse
-// without moving it used to cause a crash. Make sure this doesn't happen again.
-// crbug.com/581432.
-TEST_F(PartialScreenshotControllerTest, StartSessionWhileMousePressed) {
- ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
- test::TestScreenshotDelegate* test_delegate = GetScreenshotDelegate();
-
- generator.MoveMouseTo(100, 100);
- generator.PressLeftButton();
-
- // The following used to cause a crash. Now it should remain in the
- // screenshot session.
- StartPartialScreenshotSession();
- generator.ReleaseLeftButton();
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
- EXPECT_TRUE(IsActive());
-
- // Pressing again, moving, and releasing should take a screenshot.
- generator.PressLeftButton();
- generator.MoveMouseTo(200, 200);
- generator.ReleaseLeftButton();
- EXPECT_EQ(1, test_delegate->handle_take_partial_screenshot_count());
- EXPECT_FALSE(IsActive());
-
- // Starting the screenshot session while mouse is pressed, moving the mouse
- // and releasing should take a screenshot normally.
- generator.MoveMouseTo(100, 100);
- generator.PressLeftButton();
- StartPartialScreenshotSession();
- generator.MoveMouseTo(150, 150);
- generator.MoveMouseTo(200, 200);
- EXPECT_TRUE(IsActive());
- generator.ReleaseLeftButton();
- EXPECT_EQ(2, test_delegate->handle_take_partial_screenshot_count());
- EXPECT_FALSE(IsActive());
-}
-
-TEST_F(PartialScreenshotControllerTest, JustClick) {
- StartPartialScreenshotSession();
- test::TestScreenshotDelegate* test_delegate = GetScreenshotDelegate();
- ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
-
- generator.MoveMouseTo(100, 100);
-
- // No moves, just clicking at the same position.
- generator.ClickLeftButton();
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
-
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-}
-
-TEST_F(PartialScreenshotControllerTest, BasicTouch) {
- StartPartialScreenshotSession();
- test::TestScreenshotDelegate* test_delegate = GetScreenshotDelegate();
- ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
-
- generator.set_current_location(gfx::Point(100, 100));
- generator.PressTouch();
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
- EXPECT_EQ("100,100", GetStartPosition().ToString());
-
- generator.MoveTouch(gfx::Point(200, 200));
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
-
- generator.ReleaseTouch();
- EXPECT_EQ("100,100 100x100", GetScreenshotDelegate()->last_rect().ToString());
- EXPECT_EQ(1, GetScreenshotDelegate()->handle_take_partial_screenshot_count());
-
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-}
-
-TEST_F(PartialScreenshotControllerTest, TwoFingerTouch) {
- StartPartialScreenshotSession();
- test::TestScreenshotDelegate* test_delegate = GetScreenshotDelegate();
- ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
-
- generator.set_current_location(gfx::Point(100, 100));
- generator.PressTouch();
- EXPECT_EQ(0, test_delegate->handle_take_partial_screenshot_count());
- EXPECT_EQ("100,100", GetStartPosition().ToString());
-
- generator.set_current_location(gfx::Point(200, 200));
- generator.PressTouchId(1);
- EXPECT_EQ("100,100 100x100", GetScreenshotDelegate()->last_rect().ToString());
- EXPECT_EQ(1, GetScreenshotDelegate()->handle_take_partial_screenshot_count());
-
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-}
-
-TEST_F(PartialScreenshotControllerTest, MultipleDisplays) {
- if (!SupportsMultipleDisplays())
- return;
-
- StartPartialScreenshotSession();
- EXPECT_TRUE(IsActive());
- UpdateDisplay("400x400,500x500");
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-
- StartPartialScreenshotSession();
- EXPECT_TRUE(IsActive());
- UpdateDisplay("400x400");
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-}
-
-// Make sure PartialScreenshotController doesn't allow taking screenshot
-// across multiple monitors
-// cursor. See http://crbug.com/462229
-#if defined(OS_CHROMEOS)
-TEST_F(PartialScreenshotControllerTest, MouseWarpTest) {
- if (!SupportsMultipleDisplays())
- return;
-
- // Create two displays.
- Shell* shell = Shell::GetInstance();
- UpdateDisplay("500x500,500x500");
- EXPECT_EQ(2U, shell->display_manager()->GetNumDisplays());
-
- StartPartialScreenshotSession();
- EXPECT_FALSE(TestIfMouseWarpsAt(gfx::Point(499, 11)));
- EXPECT_EQ("499,11",
- aura::Env::GetInstance()->last_mouse_location().ToString());
-
- Cancel();
- EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(499, 11)));
- EXPECT_EQ("501,11",
- aura::Env::GetInstance()->last_mouse_location().ToString());
-}
-
-TEST_F(PartialScreenshotControllerTest, VisibilityTest) {
- aura::client::CursorClient* client = Shell::GetInstance()->cursor_manager();
-
- GetEventGenerator().PressKey(ui::VKEY_A, 0);
- GetEventGenerator().ReleaseKey(ui::VKEY_A, 0);
-
- EXPECT_FALSE(client->IsCursorVisible());
-
- StartPartialScreenshotSession();
- EXPECT_TRUE(IsActive());
- EXPECT_TRUE(client->IsCursorVisible());
-
- Cancel();
- EXPECT_TRUE(client->IsCursorVisible());
-}
-
-// Make sure PartialScreenshotController doesn't prevent handling of large
-// cursor. See http://crbug.com/459214
-TEST_F(PartialScreenshotControllerTest, LargeCursor) {
- Shell::GetInstance()->cursor_manager()->SetCursorSet(ui::CURSOR_SET_LARGE);
- Shell::GetInstance()
- ->window_tree_host_manager()
- ->cursor_window_controller()
- ->SetCursorCompositingEnabled(true);
-
- // Large cursor is represented as cursor window.
- test::MirrorWindowTestApi test_api;
- ASSERT_NE(nullptr, test_api.GetCursorWindow());
-
- ui::test::EventGenerator event_generator(Shell::GetPrimaryRootWindow());
- gfx::Point cursor_location;
- event_generator.MoveMouseTo(cursor_location);
- EXPECT_EQ(cursor_location.ToString(),
- test_api.GetCursorLocation().ToString());
-
- StartPartialScreenshotSession();
- EXPECT_TRUE(IsActive());
-
- cursor_location += gfx::Vector2d(1, 1);
- event_generator.MoveMouseTo(cursor_location);
- EXPECT_EQ(cursor_location.ToString(),
- test_api.GetCursorLocation().ToString());
-
- event_generator.PressLeftButton();
- cursor_location += gfx::Vector2d(5, 5);
- event_generator.MoveMouseTo(cursor_location);
- EXPECT_EQ(cursor_location.ToString(),
- test_api.GetCursorLocation().ToString());
-
- event_generator.ReleaseLeftButton();
-
- EXPECT_EQ(1, GetScreenshotDelegate()->handle_take_partial_screenshot_count());
- EXPECT_EQ("1,1 5x5", GetScreenshotDelegate()->last_rect().ToString());
- RunAllPendingInMessageLoop();
- EXPECT_FALSE(IsActive());
-}
-#endif
-
-} // namespace ash
« no previous file with comments | « ash/utility/partial_screenshot_controller.cc ('k') | ash/utility/screenshot_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698