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

Side by Side Diff: ash/system/web_notification/ash_popup_alignment_delegate_unittest.cc

Issue 1116313002: Layout login/lock screen, shelf and app list inside the first display in Unified Desktop mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/system/web_notification/ash_popup_alignment_delegate.h" 5 #include "ash/system/web_notification/ash_popup_alignment_delegate.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "ash/display/display_manager.h" 9 #include "ash/display/display_manager.h"
10 #include "ash/shelf/shelf_layout_manager.h" 10 #include "ash/shelf/shelf_layout_manager.h"
11 #include "ash/shelf/shelf_types.h" 11 #include "ash/shelf/shelf_types.h"
12 #include "ash/shell.h" 12 #include "ash/shell.h"
13 #include "ash/shell_window_ids.h" 13 #include "ash/shell_window_ids.h"
14 #include "ash/test/ash_test_base.h" 14 #include "ash/test/ash_test_base.h"
15 #include "ash/test/display_manager_test_api.h"
15 #include "ui/gfx/screen.h" 16 #include "ui/gfx/screen.h"
16 #include "ui/message_center/message_center_style.h" 17 #include "ui/message_center/message_center_style.h"
17 18
18 namespace ash { 19 namespace ash {
19 20
20 class AshPopupAlignmentDelegateTest : public test::AshTestBase { 21 class AshPopupAlignmentDelegateTest : public test::AshTestBase {
21 public: 22 public:
22 AshPopupAlignmentDelegateTest() {} 23 AshPopupAlignmentDelegateTest() {}
23 ~AshPopupAlignmentDelegateTest() override {} 24 ~AshPopupAlignmentDelegateTest() override {}
24 25
25 void SetUp() override { 26 void SetUp() override {
26 test::AshTestBase::SetUp(); 27 test::AshTestBase::SetUp();
27 alignment_delegate_.reset(new AshPopupAlignmentDelegate()); 28 SetAlignmentDelegate(make_scoped_ptr(new AshPopupAlignmentDelegate()));
28 alignment_delegate_->StartObserving(
29 Shell::GetScreen(), Shell::GetScreen()->GetPrimaryDisplay());
30 } 29 }
31 30
32 void TearDown() override { 31 void TearDown() override {
33 alignment_delegate_.reset(); 32 alignment_delegate_.reset();
34 test::AshTestBase::TearDown(); 33 test::AshTestBase::TearDown();
35 } 34 }
36 35
37 protected: 36 protected:
38 enum Position { 37 enum Position {
39 TOP_LEFT, 38 TOP_LEFT,
40 TOP_RIGHT, 39 TOP_RIGHT,
41 BOTTOM_LEFT, 40 BOTTOM_LEFT,
42 BOTTOM_RIGHT, 41 BOTTOM_RIGHT,
43 OUTSIDE 42 OUTSIDE
44 }; 43 };
45 44
46 AshPopupAlignmentDelegate* alignment_delegate() { 45 AshPopupAlignmentDelegate* alignment_delegate() {
47 return alignment_delegate_.get(); 46 return alignment_delegate_.get();
48 } 47 }
49 48
49 void SetAlignmentDelegate(scoped_ptr<AshPopupAlignmentDelegate> delegate) {
50 if (!delegate.get()) {
51 alignment_delegate_.reset();
52 return;
53 }
54 alignment_delegate_ = delegate.Pass();
55 alignment_delegate_->StartObserving(
56 Shell::GetScreen(), Shell::GetScreen()->GetPrimaryDisplay());
57 // Update the layout
58 alignment_delegate_->OnDisplayWorkAreaInsetsChanged();
59 }
60
50 Position GetPositionInDisplay(const gfx::Point& point) { 61 Position GetPositionInDisplay(const gfx::Point& point) {
51 const gfx::Rect& work_area = 62 const gfx::Rect& work_area =
52 Shell::GetScreen()->GetPrimaryDisplay().work_area(); 63 Shell::GetScreen()->GetPrimaryDisplay().work_area();
53 const gfx::Point center_point = work_area.CenterPoint(); 64 const gfx::Point center_point = work_area.CenterPoint();
54 if (work_area.x() > point.x() || work_area.y() > point.y() || 65 if (work_area.x() > point.x() || work_area.y() > point.y() ||
55 work_area.right() < point.x() || work_area.bottom() < point.y()) { 66 work_area.right() < point.x() || work_area.bottom() < point.y()) {
56 return OUTSIDE; 67 return OUTSIDE;
57 } 68 }
58 69
59 if (center_point.x() < point.x()) 70 if (center_point.x() < point.x())
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 int baseline = alignment_delegate()->GetBaseLine(); 222 int baseline = alignment_delegate()->GetBaseLine();
212 223
213 const int kTrayHeight = 100; 224 const int kTrayHeight = 100;
214 alignment_delegate()->SetSystemTrayHeight(kTrayHeight); 225 alignment_delegate()->SetSystemTrayHeight(kTrayHeight);
215 226
216 EXPECT_EQ(origin_x, alignment_delegate()->GetToastOriginX(toast_size)); 227 EXPECT_EQ(origin_x, alignment_delegate()->GetToastOriginX(toast_size));
217 EXPECT_EQ(baseline - kTrayHeight - message_center::kMarginBetweenItems, 228 EXPECT_EQ(baseline - kTrayHeight - message_center::kMarginBetweenItems,
218 alignment_delegate()->GetBaseLine()); 229 alignment_delegate()->GetBaseLine());
219 } 230 }
220 231
232 TEST_F(AshPopupAlignmentDelegateTest, Unified) {
233 if (!SupportsMultipleDisplays())
234 return;
235 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
236 test::DisplayManagerTestApi test_api(display_manager);
237 test_api.SetDefaultMultiDisplayMode(DisplayManager::UNIFIED);
238 display_manager->SetMultiDisplayMode(DisplayManager::UNIFIED);
239
240 // Reset the delegate as the primary display's shelf will be destroyed during
241 // transition.
242 SetAlignmentDelegate(scoped_ptr<AshPopupAlignmentDelegate>());
243
244 UpdateDisplay("600x600,800x800");
245 SetAlignmentDelegate(make_scoped_ptr(new AshPopupAlignmentDelegate()));
246
247 EXPECT_GT(600,
248 alignment_delegate()->GetToastOriginX(gfx::Rect(0, 0, 10, 10)));
249 }
250
221 } // namespace ash 251 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698