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

Unified Diff: ash/wm/lock_layout_manager_unittest.cc

Issue 330763005: [cros touch] Proper handling of non-maximized/fullscreen windows in lock screen container (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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 | « no previous file | ash/wm/lock_window_state.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/lock_layout_manager_unittest.cc
diff --git a/ash/wm/lock_layout_manager_unittest.cc b/ash/wm/lock_layout_manager_unittest.cc
index 2f190889090b7486fc884e9d9c1c3b0ee67aa899..70984c49f9f1990b787b3b26c5e3ab01644fe36b 100644
--- a/ash/wm/lock_layout_manager_unittest.cc
+++ b/ash/wm/lock_layout_manager_unittest.cc
@@ -18,6 +18,7 @@
#include "ui/keyboard/keyboard_switches.h"
#include "ui/keyboard/keyboard_util.h"
#include "ui/views/widget/widget.h"
+#include "ui/views/widget/widget_delegate.h"
namespace ash {
namespace test {
@@ -26,6 +27,36 @@ namespace {
const int kVirtualKeyboardHeight = 100;
+// A login implementation of WidgetDelegate.
+class LoginTestWidgetDelegate : public views::WidgetDelegate {
+ public:
+ explicit LoginTestWidgetDelegate(views::Widget* widget) : widget_(widget) {
+ }
+ virtual ~LoginTestWidgetDelegate() {}
+
+ // Overridden from WidgetDelegate:
+ virtual void DeleteDelegate() OVERRIDE {
+ delete this;
+ }
+ virtual views::Widget* GetWidget() OVERRIDE {
+ return widget_;
+ }
+ virtual const views::Widget* GetWidget() const OVERRIDE {
+ return widget_;
+ }
+ virtual bool CanActivate() const OVERRIDE {
+ return true;
+ }
+ virtual bool ShouldAdvanceFocusToTopLevelWidget() const OVERRIDE {
+ return true;
+ }
+
+ private:
+ views::Widget* widget_;
+
+ DISALLOW_COPY_AND_ASSIGN(LoginTestWidgetDelegate);
+};
+
} // namespace
class LockLayoutManagerTest : public AshTestBase {
@@ -45,13 +76,18 @@ class LockLayoutManagerTest : public AshTestBase {
AshTestBase::TearDown();
}
- aura::Window* CreateTestLoginWindowWithBounds(const gfx::Rect& bounds) {
+ aura::Window* CreateTestLoginWindow(views::Widget::InitParams params,
+ bool use_delegate) {
aura::Window* parent = Shell::GetPrimaryRootWindowController()->
GetContainer(ash::kShellWindowId_LockScreenContainer);
- views::Widget* widget =
- views::Widget::CreateWindowWithParentAndBounds(NULL, parent, bounds);
+ params.parent = parent;
+ views::Widget* widget = new views::Widget;
+ if (use_delegate)
+ params.delegate = new LoginTestWidgetDelegate(widget);
+ widget->Init(params);
widget->Show();
- return widget->GetNativeView();
+ aura::Window* window = widget->GetNativeView();
+ return window;
}
// Show or hide the keyboard.
@@ -78,30 +114,87 @@ class LockLayoutManagerTest : public AshTestBase {
}
};
-TEST_F(LockLayoutManagerTest, WindowBoundsAreEqualToScreen) {
+TEST_F(LockLayoutManagerTest, NorwmalWindowBoundsArePreserved) {
gfx::Rect screen_bounds = Shell::GetScreen()->GetPrimaryDisplay().bounds();
+ views::Widget::InitParams widget_params(
+ views::Widget::InitParams::TYPE_WINDOW);
+ const gfx::Rect bounds = gfx::Rect(10, 10, 300, 300);
+ widget_params.bounds = bounds;
scoped_ptr<aura::Window> window(
- CreateTestLoginWindowWithBounds(gfx::Rect(10, 10, 300, 300)));
- EXPECT_EQ(screen_bounds.ToString(), window->GetBoundsInScreen().ToString());
+ CreateTestLoginWindow(widget_params, false /* use_delegate */));
+ EXPECT_EQ(bounds.ToString(), window->GetBoundsInScreen().ToString());
gfx::Rect work_area =
ScreenUtil::GetDisplayWorkAreaBoundsInParent(window.get());
window->SetBounds(work_area);
- // Usually work_area takes Shelf into account but that doesn't affect
- // LockScreen container windows.
- EXPECT_NE(work_area.ToString(), window->GetBoundsInScreen().ToString());
- EXPECT_EQ(screen_bounds.ToString(), window->GetBoundsInScreen().ToString());
+ EXPECT_EQ(work_area.ToString(), window->GetBoundsInScreen().ToString());
+ EXPECT_NE(screen_bounds.ToString(), window->GetBoundsInScreen().ToString());
- window->SetBounds(gfx::Rect(100, 100, 200, 200));
- EXPECT_EQ(screen_bounds.ToString(), window->GetBoundsInScreen().ToString());
+ const gfx::Rect bounds2 = gfx::Rect(100, 100, 200, 200);
+ window->SetBounds(bounds2);
+ EXPECT_EQ(bounds2.ToString(), window->GetBoundsInScreen().ToString());
+}
+
+TEST_F(LockLayoutManagerTest, MaximizedFullscreenWindowBoundsAreEqualToScreen) {
+ gfx::Rect screen_bounds = Shell::GetScreen()->GetPrimaryDisplay().bounds();
+
+ views::Widget::InitParams widget_params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+ widget_params.show_state = ui::SHOW_STATE_MAXIMIZED;
+ const gfx::Rect bounds = gfx::Rect(10, 10, 300, 300);
+ widget_params.bounds = bounds;
+ // Maximized TYPE_WINDOW_FRAMELESS windows needs a delegate defined otherwise
+ // it won't get initial SetBounds event.
+ scoped_ptr<aura::Window> maximized_window(
+ CreateTestLoginWindow(widget_params, true /* use_delegate */));
+
+ widget_params.show_state = ui::SHOW_STATE_FULLSCREEN;
+ widget_params.delegate = NULL;
+ scoped_ptr<aura::Window> fullscreen_window(
+ CreateTestLoginWindow(widget_params, false /* use_delegate */));
+
+ EXPECT_EQ(screen_bounds.ToString(),
+ maximized_window->GetBoundsInScreen().ToString());
+ EXPECT_EQ(screen_bounds.ToString(),
+ fullscreen_window->GetBoundsInScreen().ToString());
+
+ gfx::Rect work_area =
+ ScreenUtil::GetDisplayWorkAreaBoundsInParent(maximized_window.get());
+ maximized_window->SetBounds(work_area);
+
+ EXPECT_NE(work_area.ToString(),
+ maximized_window->GetBoundsInScreen().ToString());
+ EXPECT_EQ(screen_bounds.ToString(),
+ maximized_window->GetBoundsInScreen().ToString());
+
+ work_area =
+ ScreenUtil::GetDisplayWorkAreaBoundsInParent(fullscreen_window.get());
+ fullscreen_window->SetBounds(work_area);
+ EXPECT_NE(work_area.ToString(),
+ fullscreen_window->GetBoundsInScreen().ToString());
+ EXPECT_EQ(screen_bounds.ToString(),
+ fullscreen_window->GetBoundsInScreen().ToString());
+
+ const gfx::Rect bounds2 = gfx::Rect(100, 100, 200, 200);
+ maximized_window->SetBounds(bounds2);
+ fullscreen_window->SetBounds(bounds2);
+ EXPECT_EQ(screen_bounds.ToString(),
+ maximized_window->GetBoundsInScreen().ToString());
+ EXPECT_EQ(screen_bounds.ToString(),
+ fullscreen_window->GetBoundsInScreen().ToString());
}
TEST_F(LockLayoutManagerTest, KeyboardBounds) {
gfx::Rect screen_bounds = Shell::GetScreen()->GetPrimaryDisplay().bounds();
- scoped_ptr<aura::Window> window(CreateTestLoginWindowWithBounds(gfx::Rect()));
+ views::Widget::InitParams widget_params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+ widget_params.show_state = ui::SHOW_STATE_FULLSCREEN;
+ scoped_ptr<aura::Window> window(
+ CreateTestLoginWindow(widget_params, false /* use_delegate */));
+
EXPECT_EQ(screen_bounds.ToString(), window->GetBoundsInScreen().ToString());
// When virtual keyboard overscroll is enabled keyboard bounds should not
@@ -134,10 +227,16 @@ TEST_F(LockLayoutManagerTest, MultipleMonitors) {
return;
UpdateDisplay("300x400,400x500");
+ gfx::Rect screen_bounds = Shell::GetScreen()->GetPrimaryDisplay().bounds();
aura::Window::Windows root_windows = Shell::GetAllRootWindows();
- gfx::Rect screen_bounds = Shell::GetScreen()->GetPrimaryDisplay().bounds();
- scoped_ptr<aura::Window> window(CreateTestLoginWindowWithBounds(gfx::Rect()));
+ views::Widget::InitParams widget_params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+ widget_params.show_state = ui::SHOW_STATE_FULLSCREEN;
+ scoped_ptr<aura::Window> window(
+ CreateTestLoginWindow(widget_params, false /* use_delegate */));
+ window->SetProperty(aura::client::kCanMaximizeKey, true);
+
EXPECT_EQ(screen_bounds.ToString(), window->GetBoundsInScreen().ToString());
EXPECT_EQ(root_windows[0], window->GetRootWindow());
« no previous file with comments | « no previous file | ash/wm/lock_window_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698