1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/shell.h"
#include "ash/test/active_window_waiter.h"
#include "chrome/browser/ash/app_restore/full_restore_app_launch_handler.h"
#include "chrome/browser/ash/system_web_apps/system_web_app_manager.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/settings_window_manager_chromeos.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "content/public/test/browser_test.h"
#include "ui/events/test/event_generator.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/vector2d.h"
namespace ash {
namespace {
class WmpBrowserTest : public InProcessBrowserTest {
public:
WmpBrowserTest() {
// No need for a browser window.
set_launch_browser_for_testing(nullptr);
}
};
IN_PROC_BROWSER_TEST_F(WmpBrowserTest, DragAndDropWindow) {
// Ensure the OS Settings app is installed.
Profile* profile = ProfileManager::GetActiveUserProfile();
ASSERT_TRUE(profile);
SystemWebAppManager::GetForTest(profile)->InstallSystemAppsForTesting();
// Launch the OS Settings app.
ActiveWindowWaiter window_waiter(Shell::GetPrimaryRootWindow());
chrome::SettingsWindowManager::GetInstance()->ShowOSSettings(profile);
aura::Window* window = window_waiter.Wait();
ASSERT_TRUE(window);
// Starting in the window caption area, drag down and to the right.
gfx::Rect original_bounds = window->GetBoundsInScreen();
gfx::Point start = original_bounds.top_center() + gfx::Vector2d(0, 10);
const gfx::Vector2d kDragOffset(50, 50);
gfx::Point end = start + kDragOffset;
// Drag the window with the mouse, using several mouse move steps to better
// simulate production.
ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
generator.MoveMouseTo(start);
generator.PressLeftButton();
generator.MoveMouseTo(end, /*count=*/5);
generator.ReleaseLeftButton();
// Window bounds should have changed by the offset of the drag.
gfx::Rect new_bounds = window->GetBoundsInScreen();
gfx::Rect expected_bounds = original_bounds + kDragOffset;
EXPECT_EQ(new_bounds, expected_bounds);
}
} // namespace
} // namespace ash
|