| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "ui/views/widget/desktop_aura/desktop_screen_x11.h" | 5 #include "ui/views/widget/desktop_aura/desktop_screen_x11.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 #include "ui/aura/client/aura_constants.h" | 13 #include "ui/aura/client/aura_constants.h" |
| 14 #include "ui/aura/window.h" | 14 #include "ui/aura/window.h" |
| 15 #include "ui/aura/window_event_dispatcher.h" | 15 #include "ui/aura/window_event_dispatcher.h" |
| 16 #include "ui/base/hit_test.h" | 16 #include "ui/base/hit_test.h" |
| 17 #include "ui/base/x/x11_util.h" | 17 #include "ui/base/x/x11_util.h" |
| 18 #include "ui/display/display_observer.h" |
| 18 #include "ui/events/test/event_generator.h" | 19 #include "ui/events/test/event_generator.h" |
| 19 #include "ui/gfx/display_observer.h" | |
| 20 #include "ui/gfx/font_render_params.h" | 20 #include "ui/gfx/font_render_params.h" |
| 21 #include "ui/gfx/x/x11_types.h" | 21 #include "ui/gfx/x/x11_types.h" |
| 22 #include "ui/views/test/views_test_base.h" | 22 #include "ui/views/test/views_test_base.h" |
| 23 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" | 23 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" |
| 24 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" | 24 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h" |
| 25 | 25 |
| 26 namespace { | 26 namespace { |
| 27 | 27 |
| 28 // Class which allows for the designation of non-client component targets of | 28 // Class which allows for the designation of non-client component targets of |
| 29 // hit tests. | 29 // hit tests. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 50 }; | 50 }; |
| 51 | 51 |
| 52 } // namespace | 52 } // namespace |
| 53 | 53 |
| 54 namespace views { | 54 namespace views { |
| 55 | 55 |
| 56 const int64_t kFirstDisplay = 5321829; | 56 const int64_t kFirstDisplay = 5321829; |
| 57 const int64_t kSecondDisplay = 928310; | 57 const int64_t kSecondDisplay = 928310; |
| 58 | 58 |
| 59 class DesktopScreenX11Test : public views::ViewsTestBase, | 59 class DesktopScreenX11Test : public views::ViewsTestBase, |
| 60 public gfx::DisplayObserver { | 60 public display::DisplayObserver { |
| 61 public: | 61 public: |
| 62 DesktopScreenX11Test() {} | 62 DesktopScreenX11Test() {} |
| 63 ~DesktopScreenX11Test() override {} | 63 ~DesktopScreenX11Test() override {} |
| 64 | 64 |
| 65 // Overridden from testing::Test: | 65 // Overridden from testing::Test: |
| 66 void SetUp() override { | 66 void SetUp() override { |
| 67 ViewsTestBase::SetUp(); | 67 ViewsTestBase::SetUp(); |
| 68 // Initialize the world to the single monitor case. | 68 // Initialize the world to the single monitor case. |
| 69 std::vector<gfx::Display> displays; | 69 std::vector<display::Display> displays; |
| 70 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 70 displays.push_back( |
| 71 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 71 screen_.reset(new DesktopScreenX11(displays)); | 72 screen_.reset(new DesktopScreenX11(displays)); |
| 72 screen_->AddObserver(this); | 73 screen_->AddObserver(this); |
| 73 } | 74 } |
| 74 | 75 |
| 75 void TearDown() override { | 76 void TearDown() override { |
| 76 screen_.reset(); | 77 screen_.reset(); |
| 77 ViewsTestBase::TearDown(); | 78 ViewsTestBase::TearDown(); |
| 78 } | 79 } |
| 79 | 80 |
| 80 protected: | 81 protected: |
| 81 std::vector<gfx::Display> changed_display_; | 82 std::vector<display::Display> changed_display_; |
| 82 std::vector<gfx::Display> added_display_; | 83 std::vector<display::Display> added_display_; |
| 83 std::vector<gfx::Display> removed_display_; | 84 std::vector<display::Display> removed_display_; |
| 84 | 85 |
| 85 DesktopScreenX11* screen() { return screen_.get(); } | 86 DesktopScreenX11* screen() { return screen_.get(); } |
| 86 | 87 |
| 87 void NotifyDisplaysChanged(const std::vector<gfx::Display>& displays) { | 88 void NotifyDisplaysChanged(const std::vector<display::Display>& displays) { |
| 88 std::vector<gfx::Display> old_displays = screen_->displays_; | 89 std::vector<display::Display> old_displays = screen_->displays_; |
| 89 screen_->SetDisplaysInternal(displays); | 90 screen_->SetDisplaysInternal(displays); |
| 90 screen_->change_notifier_.NotifyDisplaysChanged(old_displays, | 91 screen_->change_notifier_.NotifyDisplaysChanged(old_displays, |
| 91 screen_->displays_); | 92 screen_->displays_); |
| 92 } | 93 } |
| 93 | 94 |
| 94 void ResetDisplayChanges() { | 95 void ResetDisplayChanges() { |
| 95 changed_display_.clear(); | 96 changed_display_.clear(); |
| 96 added_display_.clear(); | 97 added_display_.clear(); |
| 97 removed_display_.clear(); | 98 removed_display_.clear(); |
| 98 } | 99 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 109 toplevel_params.native_widget = | 110 toplevel_params.native_widget = |
| 110 new views::DesktopNativeWidgetAura(toplevel); | 111 new views::DesktopNativeWidgetAura(toplevel); |
| 111 } | 112 } |
| 112 toplevel_params.bounds = bounds; | 113 toplevel_params.bounds = bounds; |
| 113 toplevel_params.remove_standard_frame = true; | 114 toplevel_params.remove_standard_frame = true; |
| 114 toplevel->Init(toplevel_params); | 115 toplevel->Init(toplevel_params); |
| 115 return toplevel; | 116 return toplevel; |
| 116 } | 117 } |
| 117 | 118 |
| 118 private: | 119 private: |
| 119 // Overridden from gfx::DisplayObserver: | 120 // Overridden from display::DisplayObserver: |
| 120 void OnDisplayAdded(const gfx::Display& new_display) override { | 121 void OnDisplayAdded(const display::Display& new_display) override { |
| 121 added_display_.push_back(new_display); | 122 added_display_.push_back(new_display); |
| 122 } | 123 } |
| 123 | 124 |
| 124 void OnDisplayRemoved(const gfx::Display& old_display) override { | 125 void OnDisplayRemoved(const display::Display& old_display) override { |
| 125 removed_display_.push_back(old_display); | 126 removed_display_.push_back(old_display); |
| 126 } | 127 } |
| 127 | 128 |
| 128 void OnDisplayMetricsChanged(const gfx::Display& display, | 129 void OnDisplayMetricsChanged(const display::Display& display, |
| 129 uint32_t metrics) override { | 130 uint32_t metrics) override { |
| 130 changed_display_.push_back(display); | 131 changed_display_.push_back(display); |
| 131 } | 132 } |
| 132 | 133 |
| 133 std::unique_ptr<DesktopScreenX11> screen_; | 134 std::unique_ptr<DesktopScreenX11> screen_; |
| 134 | 135 |
| 135 DISALLOW_COPY_AND_ASSIGN(DesktopScreenX11Test); | 136 DISALLOW_COPY_AND_ASSIGN(DesktopScreenX11Test); |
| 136 }; | 137 }; |
| 137 | 138 |
| 138 TEST_F(DesktopScreenX11Test, BoundsChangeSingleMonitor) { | 139 TEST_F(DesktopScreenX11Test, BoundsChangeSingleMonitor) { |
| 139 std::vector<gfx::Display> displays; | 140 std::vector<display::Display> displays; |
| 140 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 1024, 768))); | 141 displays.push_back( |
| 142 display::Display(kFirstDisplay, gfx::Rect(0, 0, 1024, 768))); |
| 141 NotifyDisplaysChanged(displays); | 143 NotifyDisplaysChanged(displays); |
| 142 | 144 |
| 143 EXPECT_EQ(1u, changed_display_.size()); | 145 EXPECT_EQ(1u, changed_display_.size()); |
| 144 EXPECT_EQ(0u, added_display_.size()); | 146 EXPECT_EQ(0u, added_display_.size()); |
| 145 EXPECT_EQ(0u, removed_display_.size()); | 147 EXPECT_EQ(0u, removed_display_.size()); |
| 146 } | 148 } |
| 147 | 149 |
| 148 TEST_F(DesktopScreenX11Test, AddMonitorToTheRight) { | 150 TEST_F(DesktopScreenX11Test, AddMonitorToTheRight) { |
| 149 std::vector<gfx::Display> displays; | 151 std::vector<display::Display> displays; |
| 150 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 152 displays.push_back( |
| 151 displays.push_back(gfx::Display(kSecondDisplay, | 153 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 152 gfx::Rect(640, 0, 1024, 768))); | 154 displays.push_back( |
| 155 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 153 NotifyDisplaysChanged(displays); | 156 NotifyDisplaysChanged(displays); |
| 154 | 157 |
| 155 EXPECT_EQ(0u, changed_display_.size()); | 158 EXPECT_EQ(0u, changed_display_.size()); |
| 156 EXPECT_EQ(1u, added_display_.size()); | 159 EXPECT_EQ(1u, added_display_.size()); |
| 157 EXPECT_EQ(0u, removed_display_.size()); | 160 EXPECT_EQ(0u, removed_display_.size()); |
| 158 } | 161 } |
| 159 | 162 |
| 160 TEST_F(DesktopScreenX11Test, AddMonitorToTheLeft) { | 163 TEST_F(DesktopScreenX11Test, AddMonitorToTheLeft) { |
| 161 std::vector<gfx::Display> displays; | 164 std::vector<display::Display> displays; |
| 162 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); | 165 displays.push_back( |
| 163 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(1024, 0, 640, 480))); | 166 display::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); |
| 167 displays.push_back( |
| 168 display::Display(kFirstDisplay, gfx::Rect(1024, 0, 640, 480))); |
| 164 NotifyDisplaysChanged(displays); | 169 NotifyDisplaysChanged(displays); |
| 165 | 170 |
| 166 EXPECT_EQ(1u, changed_display_.size()); | 171 EXPECT_EQ(1u, changed_display_.size()); |
| 167 EXPECT_EQ(1u, added_display_.size()); | 172 EXPECT_EQ(1u, added_display_.size()); |
| 168 EXPECT_EQ(0u, removed_display_.size()); | 173 EXPECT_EQ(0u, removed_display_.size()); |
| 169 } | 174 } |
| 170 | 175 |
| 171 TEST_F(DesktopScreenX11Test, RemoveMonitorOnRight) { | 176 TEST_F(DesktopScreenX11Test, RemoveMonitorOnRight) { |
| 172 std::vector<gfx::Display> displays; | 177 std::vector<display::Display> displays; |
| 173 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 178 displays.push_back( |
| 174 displays.push_back(gfx::Display(kSecondDisplay, | 179 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 175 gfx::Rect(640, 0, 1024, 768))); | 180 displays.push_back( |
| 181 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 176 NotifyDisplaysChanged(displays); | 182 NotifyDisplaysChanged(displays); |
| 177 | 183 |
| 178 ResetDisplayChanges(); | 184 ResetDisplayChanges(); |
| 179 | 185 |
| 180 displays.clear(); | 186 displays.clear(); |
| 181 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 187 displays.push_back( |
| 188 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 182 NotifyDisplaysChanged(displays); | 189 NotifyDisplaysChanged(displays); |
| 183 | 190 |
| 184 EXPECT_EQ(0u, changed_display_.size()); | 191 EXPECT_EQ(0u, changed_display_.size()); |
| 185 EXPECT_EQ(0u, added_display_.size()); | 192 EXPECT_EQ(0u, added_display_.size()); |
| 186 EXPECT_EQ(1u, removed_display_.size()); | 193 EXPECT_EQ(1u, removed_display_.size()); |
| 187 } | 194 } |
| 188 | 195 |
| 189 TEST_F(DesktopScreenX11Test, RemoveMonitorOnLeft) { | 196 TEST_F(DesktopScreenX11Test, RemoveMonitorOnLeft) { |
| 190 std::vector<gfx::Display> displays; | 197 std::vector<display::Display> displays; |
| 191 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 198 displays.push_back( |
| 192 displays.push_back(gfx::Display(kSecondDisplay, | 199 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 193 gfx::Rect(640, 0, 1024, 768))); | 200 displays.push_back( |
| 201 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 194 NotifyDisplaysChanged(displays); | 202 NotifyDisplaysChanged(displays); |
| 195 | 203 |
| 196 ResetDisplayChanges(); | 204 ResetDisplayChanges(); |
| 197 | 205 |
| 198 displays.clear(); | 206 displays.clear(); |
| 199 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); | 207 displays.push_back( |
| 208 display::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); |
| 200 NotifyDisplaysChanged(displays); | 209 NotifyDisplaysChanged(displays); |
| 201 | 210 |
| 202 EXPECT_EQ(1u, changed_display_.size()); | 211 EXPECT_EQ(1u, changed_display_.size()); |
| 203 EXPECT_EQ(0u, added_display_.size()); | 212 EXPECT_EQ(0u, added_display_.size()); |
| 204 EXPECT_EQ(1u, removed_display_.size()); | 213 EXPECT_EQ(1u, removed_display_.size()); |
| 205 } | 214 } |
| 206 | 215 |
| 207 TEST_F(DesktopScreenX11Test, GetDisplayNearestPoint) { | 216 TEST_F(DesktopScreenX11Test, GetDisplayNearestPoint) { |
| 208 std::vector<gfx::Display> displays; | 217 std::vector<display::Display> displays; |
| 209 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 218 displays.push_back( |
| 210 displays.push_back(gfx::Display(kSecondDisplay, | 219 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 211 gfx::Rect(640, 0, 1024, 768))); | 220 displays.push_back( |
| 221 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 212 NotifyDisplaysChanged(displays); | 222 NotifyDisplaysChanged(displays); |
| 213 | 223 |
| 214 EXPECT_EQ(kFirstDisplay, | 224 EXPECT_EQ(kFirstDisplay, |
| 215 screen()->GetDisplayNearestPoint(gfx::Point(630, 10)).id()); | 225 screen()->GetDisplayNearestPoint(gfx::Point(630, 10)).id()); |
| 216 EXPECT_EQ(kSecondDisplay, | 226 EXPECT_EQ(kSecondDisplay, |
| 217 screen()->GetDisplayNearestPoint(gfx::Point(650, 10)).id()); | 227 screen()->GetDisplayNearestPoint(gfx::Point(650, 10)).id()); |
| 218 EXPECT_EQ(kFirstDisplay, | 228 EXPECT_EQ(kFirstDisplay, |
| 219 screen()->GetDisplayNearestPoint(gfx::Point(10, 10)).id()); | 229 screen()->GetDisplayNearestPoint(gfx::Point(10, 10)).id()); |
| 220 EXPECT_EQ(kFirstDisplay, | 230 EXPECT_EQ(kFirstDisplay, |
| 221 screen()->GetDisplayNearestPoint(gfx::Point(10000, 10000)).id()); | 231 screen()->GetDisplayNearestPoint(gfx::Point(10000, 10000)).id()); |
| 222 } | 232 } |
| 223 | 233 |
| 224 TEST_F(DesktopScreenX11Test, GetDisplayMatchingBasic) { | 234 TEST_F(DesktopScreenX11Test, GetDisplayMatchingBasic) { |
| 225 std::vector<gfx::Display> displays; | 235 std::vector<display::Display> displays; |
| 226 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 236 displays.push_back( |
| 227 displays.push_back(gfx::Display(kSecondDisplay, | 237 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 228 gfx::Rect(640, 0, 1024, 768))); | 238 displays.push_back( |
| 239 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 229 NotifyDisplaysChanged(displays); | 240 NotifyDisplaysChanged(displays); |
| 230 | 241 |
| 231 EXPECT_EQ(kSecondDisplay, | 242 EXPECT_EQ(kSecondDisplay, |
| 232 screen()->GetDisplayMatching(gfx::Rect(700, 20, 100, 100)).id()); | 243 screen()->GetDisplayMatching(gfx::Rect(700, 20, 100, 100)).id()); |
| 233 } | 244 } |
| 234 | 245 |
| 235 TEST_F(DesktopScreenX11Test, GetDisplayMatchingOverlap) { | 246 TEST_F(DesktopScreenX11Test, GetDisplayMatchingOverlap) { |
| 236 std::vector<gfx::Display> displays; | 247 std::vector<display::Display> displays; |
| 237 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 248 displays.push_back( |
| 238 displays.push_back(gfx::Display(kSecondDisplay, | 249 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 239 gfx::Rect(640, 0, 1024, 768))); | 250 displays.push_back( |
| 251 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 240 NotifyDisplaysChanged(displays); | 252 NotifyDisplaysChanged(displays); |
| 241 | 253 |
| 242 EXPECT_EQ(kSecondDisplay, | 254 EXPECT_EQ(kSecondDisplay, |
| 243 screen()->GetDisplayMatching(gfx::Rect(630, 20, 100, 100)).id()); | 255 screen()->GetDisplayMatching(gfx::Rect(630, 20, 100, 100)).id()); |
| 244 } | 256 } |
| 245 | 257 |
| 246 TEST_F(DesktopScreenX11Test, GetPrimaryDisplay) { | 258 TEST_F(DesktopScreenX11Test, GetPrimaryDisplay) { |
| 247 std::vector<gfx::Display> displays; | 259 std::vector<display::Display> displays; |
| 248 displays.push_back(gfx::Display(kFirstDisplay, | 260 displays.push_back( |
| 249 gfx::Rect(640, 0, 1024, 768))); | 261 display::Display(kFirstDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 250 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 640, 480))); | 262 displays.push_back( |
| 263 display::Display(kSecondDisplay, gfx::Rect(0, 0, 640, 480))); |
| 251 NotifyDisplaysChanged(displays); | 264 NotifyDisplaysChanged(displays); |
| 252 | 265 |
| 253 // The first display in the list is always the primary, even if other | 266 // The first display in the list is always the primary, even if other |
| 254 // displays are to the left in screen layout. | 267 // displays are to the left in screen layout. |
| 255 EXPECT_EQ(kFirstDisplay, screen()->GetPrimaryDisplay().id()); | 268 EXPECT_EQ(kFirstDisplay, screen()->GetPrimaryDisplay().id()); |
| 256 } | 269 } |
| 257 | 270 |
| 258 TEST_F(DesktopScreenX11Test, GetDisplayNearestWindow) { | 271 TEST_F(DesktopScreenX11Test, GetDisplayNearestWindow) { |
| 259 // Set up a two monitor situation. | 272 // Set up a two monitor situation. |
| 260 std::vector<gfx::Display> displays; | 273 std::vector<display::Display> displays; |
| 261 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 274 displays.push_back( |
| 262 displays.push_back(gfx::Display(kSecondDisplay, | 275 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 263 gfx::Rect(640, 0, 1024, 768))); | 276 displays.push_back( |
| 277 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 264 NotifyDisplaysChanged(displays); | 278 NotifyDisplaysChanged(displays); |
| 265 | 279 |
| 266 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10), | 280 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10), |
| 267 false); | 281 false); |
| 268 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(650, 50, 10, 10), | 282 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(650, 50, 10, 10), |
| 269 false); | 283 false); |
| 270 | 284 |
| 271 EXPECT_EQ( | 285 EXPECT_EQ( |
| 272 kFirstDisplay, | 286 kFirstDisplay, |
| 273 screen()->GetDisplayNearestWindow(window_one->GetNativeWindow()).id()); | 287 screen()->GetDisplayNearestWindow(window_one->GetNativeWindow()).id()); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 generator.ClickLeftButton(); | 377 generator.ClickLeftButton(); |
| 364 generator.set_flags(ui::EF_NONE); | 378 generator.set_flags(ui::EF_NONE); |
| 365 RunPendingMessages(); | 379 RunPendingMessages(); |
| 366 EXPECT_FALSE(rwh->IsMaximized()); | 380 EXPECT_FALSE(rwh->IsMaximized()); |
| 367 | 381 |
| 368 widget->CloseNow(); | 382 widget->CloseNow(); |
| 369 } | 383 } |
| 370 | 384 |
| 371 // Test that rotating the displays notifies the DisplayObservers. | 385 // Test that rotating the displays notifies the DisplayObservers. |
| 372 TEST_F(DesktopScreenX11Test, RotationChange) { | 386 TEST_F(DesktopScreenX11Test, RotationChange) { |
| 373 std::vector<gfx::Display> displays; | 387 std::vector<display::Display> displays; |
| 374 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | |
| 375 displays.push_back( | 388 displays.push_back( |
| 376 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); | 389 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 390 displays.push_back( |
| 391 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 377 NotifyDisplaysChanged(displays); | 392 NotifyDisplaysChanged(displays); |
| 378 ResetDisplayChanges(); | 393 ResetDisplayChanges(); |
| 379 | 394 |
| 380 displays[0].set_rotation(gfx::Display::ROTATE_90); | 395 displays[0].set_rotation(display::Display::ROTATE_90); |
| 381 NotifyDisplaysChanged(displays); | 396 NotifyDisplaysChanged(displays); |
| 382 EXPECT_EQ(1u, changed_display_.size()); | 397 EXPECT_EQ(1u, changed_display_.size()); |
| 383 | 398 |
| 384 displays[1].set_rotation(gfx::Display::ROTATE_90); | 399 displays[1].set_rotation(display::Display::ROTATE_90); |
| 385 NotifyDisplaysChanged(displays); | 400 NotifyDisplaysChanged(displays); |
| 386 EXPECT_EQ(2u, changed_display_.size()); | 401 EXPECT_EQ(2u, changed_display_.size()); |
| 387 | 402 |
| 388 displays[0].set_rotation(gfx::Display::ROTATE_270); | 403 displays[0].set_rotation(display::Display::ROTATE_270); |
| 389 NotifyDisplaysChanged(displays); | 404 NotifyDisplaysChanged(displays); |
| 390 EXPECT_EQ(3u, changed_display_.size()); | 405 EXPECT_EQ(3u, changed_display_.size()); |
| 391 | 406 |
| 392 displays[0].set_rotation(gfx::Display::ROTATE_270); | 407 displays[0].set_rotation(display::Display::ROTATE_270); |
| 393 NotifyDisplaysChanged(displays); | 408 NotifyDisplaysChanged(displays); |
| 394 EXPECT_EQ(3u, changed_display_.size()); | 409 EXPECT_EQ(3u, changed_display_.size()); |
| 395 | 410 |
| 396 displays[0].set_rotation(gfx::Display::ROTATE_0); | 411 displays[0].set_rotation(display::Display::ROTATE_0); |
| 397 displays[1].set_rotation(gfx::Display::ROTATE_0); | 412 displays[1].set_rotation(display::Display::ROTATE_0); |
| 398 NotifyDisplaysChanged(displays); | 413 NotifyDisplaysChanged(displays); |
| 399 EXPECT_EQ(5u, changed_display_.size()); | 414 EXPECT_EQ(5u, changed_display_.size()); |
| 400 } | 415 } |
| 401 | 416 |
| 402 // Test that changing the displays workarea notifies the DisplayObservers. | 417 // Test that changing the displays workarea notifies the DisplayObservers. |
| 403 TEST_F(DesktopScreenX11Test, WorkareaChange) { | 418 TEST_F(DesktopScreenX11Test, WorkareaChange) { |
| 404 std::vector<gfx::Display> displays; | 419 std::vector<display::Display> displays; |
| 405 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | |
| 406 displays.push_back( | 420 displays.push_back( |
| 407 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); | 421 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 422 displays.push_back( |
| 423 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 408 NotifyDisplaysChanged(displays); | 424 NotifyDisplaysChanged(displays); |
| 409 ResetDisplayChanges(); | 425 ResetDisplayChanges(); |
| 410 | 426 |
| 411 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); | 427 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 412 NotifyDisplaysChanged(displays); | 428 NotifyDisplaysChanged(displays); |
| 413 EXPECT_EQ(1u, changed_display_.size()); | 429 EXPECT_EQ(1u, changed_display_.size()); |
| 414 | 430 |
| 415 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); | 431 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 416 NotifyDisplaysChanged(displays); | 432 NotifyDisplaysChanged(displays); |
| 417 EXPECT_EQ(2u, changed_display_.size()); | 433 EXPECT_EQ(2u, changed_display_.size()); |
| 418 | 434 |
| 419 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); | 435 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 420 NotifyDisplaysChanged(displays); | 436 NotifyDisplaysChanged(displays); |
| 421 EXPECT_EQ(2u, changed_display_.size()); | 437 EXPECT_EQ(2u, changed_display_.size()); |
| 422 | 438 |
| 423 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); | 439 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 424 NotifyDisplaysChanged(displays); | 440 NotifyDisplaysChanged(displays); |
| 425 EXPECT_EQ(2u, changed_display_.size()); | 441 EXPECT_EQ(2u, changed_display_.size()); |
| 426 | 442 |
| 427 displays[0].set_work_area(gfx::Rect(0, 0, 640, 480)); | 443 displays[0].set_work_area(gfx::Rect(0, 0, 640, 480)); |
| 428 displays[1].set_work_area(gfx::Rect(640, 0, 1024, 768)); | 444 displays[1].set_work_area(gfx::Rect(640, 0, 1024, 768)); |
| 429 NotifyDisplaysChanged(displays); | 445 NotifyDisplaysChanged(displays); |
| 430 EXPECT_EQ(4u, changed_display_.size()); | 446 EXPECT_EQ(4u, changed_display_.size()); |
| 431 } | 447 } |
| 432 | 448 |
| 433 // Test that changing the device scale factor notifies the DisplayObservers. | 449 // Test that changing the device scale factor notifies the DisplayObservers. |
| 434 TEST_F(DesktopScreenX11Test, DeviceScaleFactorChange) { | 450 TEST_F(DesktopScreenX11Test, DeviceScaleFactorChange) { |
| 435 std::vector<gfx::Display> displays; | 451 std::vector<display::Display> displays; |
| 436 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | |
| 437 displays.push_back( | 452 displays.push_back( |
| 438 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); | 453 display::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 454 displays.push_back( |
| 455 display::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 439 NotifyDisplaysChanged(displays); | 456 NotifyDisplaysChanged(displays); |
| 440 ResetDisplayChanges(); | 457 ResetDisplayChanges(); |
| 441 | 458 |
| 442 displays[0].set_device_scale_factor(2.5f); | 459 displays[0].set_device_scale_factor(2.5f); |
| 443 NotifyDisplaysChanged(displays); | 460 NotifyDisplaysChanged(displays); |
| 444 EXPECT_EQ(1u, changed_display_.size()); | 461 EXPECT_EQ(1u, changed_display_.size()); |
| 445 EXPECT_EQ(2.5f, gfx::GetFontRenderParamsDeviceScaleFactor()); | 462 EXPECT_EQ(2.5f, gfx::GetFontRenderParamsDeviceScaleFactor()); |
| 446 | 463 |
| 447 displays[1].set_device_scale_factor(2.5f); | 464 displays[1].set_device_scale_factor(2.5f); |
| 448 NotifyDisplaysChanged(displays); | 465 NotifyDisplaysChanged(displays); |
| 449 EXPECT_EQ(2u, changed_display_.size()); | 466 EXPECT_EQ(2u, changed_display_.size()); |
| 450 | 467 |
| 451 displays[0].set_device_scale_factor(2.5f); | 468 displays[0].set_device_scale_factor(2.5f); |
| 452 NotifyDisplaysChanged(displays); | 469 NotifyDisplaysChanged(displays); |
| 453 EXPECT_EQ(2u, changed_display_.size()); | 470 EXPECT_EQ(2u, changed_display_.size()); |
| 454 | 471 |
| 455 displays[1].set_device_scale_factor(2.5f); | 472 displays[1].set_device_scale_factor(2.5f); |
| 456 NotifyDisplaysChanged(displays); | 473 NotifyDisplaysChanged(displays); |
| 457 EXPECT_EQ(2u, changed_display_.size()); | 474 EXPECT_EQ(2u, changed_display_.size()); |
| 458 | 475 |
| 459 displays[0].set_device_scale_factor(1.f); | 476 displays[0].set_device_scale_factor(1.f); |
| 460 displays[1].set_device_scale_factor(1.f); | 477 displays[1].set_device_scale_factor(1.f); |
| 461 NotifyDisplaysChanged(displays); | 478 NotifyDisplaysChanged(displays); |
| 462 EXPECT_EQ(4u, changed_display_.size()); | 479 EXPECT_EQ(4u, changed_display_.size()); |
| 463 EXPECT_EQ(1.f, gfx::GetFontRenderParamsDeviceScaleFactor()); | 480 EXPECT_EQ(1.f, gfx::GetFontRenderParamsDeviceScaleFactor()); |
| 464 } | 481 } |
| 465 | 482 |
| 466 } // namespace views | 483 } // namespace views |
| OLD | NEW |