| 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 "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "ui/aura/client/aura_constants.h" | 9 #include "ui/aura/client/aura_constants.h" |
| 10 #include "ui/aura/test/event_generator.h" | 10 #include "ui/aura/test/event_generator.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 ViewsTestBase::TearDown(); | 72 ViewsTestBase::TearDown(); |
| 73 } | 73 } |
| 74 | 74 |
| 75 protected: | 75 protected: |
| 76 std::vector<gfx::Display> changed_display_; | 76 std::vector<gfx::Display> changed_display_; |
| 77 std::vector<gfx::Display> added_display_; | 77 std::vector<gfx::Display> added_display_; |
| 78 std::vector<gfx::Display> removed_display_; | 78 std::vector<gfx::Display> removed_display_; |
| 79 | 79 |
| 80 DesktopScreenX11* screen() { return screen_.get(); } | 80 DesktopScreenX11* screen() { return screen_.get(); } |
| 81 | 81 |
| 82 void NotifyDisplaysChanged(const std::vector<gfx::Display>& displays) { |
| 83 DesktopScreenX11* screen = screen_.get(); |
| 84 screen->change_notifier_.NotifyDisplaysChanged(screen->displays_, displays); |
| 85 screen->displays_ = displays; |
| 86 } |
| 87 |
| 82 void ResetDisplayChanges() { | 88 void ResetDisplayChanges() { |
| 83 changed_display_.clear(); | 89 changed_display_.clear(); |
| 84 added_display_.clear(); | 90 added_display_.clear(); |
| 85 removed_display_.clear(); | 91 removed_display_.clear(); |
| 86 } | 92 } |
| 87 | 93 |
| 88 Widget* BuildTopLevelDesktopWidget(const gfx::Rect& bounds, | 94 Widget* BuildTopLevelDesktopWidget(const gfx::Rect& bounds, |
| 89 bool use_test_native_widget) { | 95 bool use_test_native_widget) { |
| 90 Widget* toplevel = new Widget; | 96 Widget* toplevel = new Widget; |
| 91 Widget::InitParams toplevel_params = | 97 Widget::InitParams toplevel_params = |
| (...skipping 27 matching lines...) Expand all Loading... |
| 119 } | 125 } |
| 120 | 126 |
| 121 scoped_ptr<DesktopScreenX11> screen_; | 127 scoped_ptr<DesktopScreenX11> screen_; |
| 122 | 128 |
| 123 DISALLOW_COPY_AND_ASSIGN(DesktopScreenX11Test); | 129 DISALLOW_COPY_AND_ASSIGN(DesktopScreenX11Test); |
| 124 }; | 130 }; |
| 125 | 131 |
| 126 TEST_F(DesktopScreenX11Test, BoundsChangeSingleMonitor) { | 132 TEST_F(DesktopScreenX11Test, BoundsChangeSingleMonitor) { |
| 127 std::vector<gfx::Display> displays; | 133 std::vector<gfx::Display> displays; |
| 128 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 1024, 768))); | 134 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 1024, 768))); |
| 129 screen()->ProcessDisplayChange(displays); | 135 NotifyDisplaysChanged(displays); |
| 130 | 136 |
| 131 EXPECT_EQ(1u, changed_display_.size()); | 137 EXPECT_EQ(1u, changed_display_.size()); |
| 132 EXPECT_EQ(0u, added_display_.size()); | 138 EXPECT_EQ(0u, added_display_.size()); |
| 133 EXPECT_EQ(0u, removed_display_.size()); | 139 EXPECT_EQ(0u, removed_display_.size()); |
| 134 } | 140 } |
| 135 | 141 |
| 136 TEST_F(DesktopScreenX11Test, AddMonitorToTheRight) { | 142 TEST_F(DesktopScreenX11Test, AddMonitorToTheRight) { |
| 137 std::vector<gfx::Display> displays; | 143 std::vector<gfx::Display> displays; |
| 138 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 144 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 139 displays.push_back(gfx::Display(kSecondDisplay, | 145 displays.push_back(gfx::Display(kSecondDisplay, |
| 140 gfx::Rect(640, 0, 1024, 768))); | 146 gfx::Rect(640, 0, 1024, 768))); |
| 141 screen()->ProcessDisplayChange(displays); | 147 NotifyDisplaysChanged(displays); |
| 142 | 148 |
| 143 EXPECT_EQ(0u, changed_display_.size()); | 149 EXPECT_EQ(0u, changed_display_.size()); |
| 144 EXPECT_EQ(1u, added_display_.size()); | 150 EXPECT_EQ(1u, added_display_.size()); |
| 145 EXPECT_EQ(0u, removed_display_.size()); | 151 EXPECT_EQ(0u, removed_display_.size()); |
| 146 } | 152 } |
| 147 | 153 |
| 148 TEST_F(DesktopScreenX11Test, AddMonitorToTheLeft) { | 154 TEST_F(DesktopScreenX11Test, AddMonitorToTheLeft) { |
| 149 std::vector<gfx::Display> displays; | 155 std::vector<gfx::Display> displays; |
| 150 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); | 156 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); |
| 151 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(1024, 0, 640, 480))); | 157 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(1024, 0, 640, 480))); |
| 152 screen()->ProcessDisplayChange(displays); | 158 NotifyDisplaysChanged(displays); |
| 153 | 159 |
| 154 EXPECT_EQ(1u, changed_display_.size()); | 160 EXPECT_EQ(1u, changed_display_.size()); |
| 155 EXPECT_EQ(1u, added_display_.size()); | 161 EXPECT_EQ(1u, added_display_.size()); |
| 156 EXPECT_EQ(0u, removed_display_.size()); | 162 EXPECT_EQ(0u, removed_display_.size()); |
| 157 } | 163 } |
| 158 | 164 |
| 159 TEST_F(DesktopScreenX11Test, RemoveMonitorOnRight) { | 165 TEST_F(DesktopScreenX11Test, RemoveMonitorOnRight) { |
| 160 std::vector<gfx::Display> displays; | 166 std::vector<gfx::Display> displays; |
| 161 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 167 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 162 displays.push_back(gfx::Display(kSecondDisplay, | 168 displays.push_back(gfx::Display(kSecondDisplay, |
| 163 gfx::Rect(640, 0, 1024, 768))); | 169 gfx::Rect(640, 0, 1024, 768))); |
| 164 screen()->ProcessDisplayChange(displays); | 170 NotifyDisplaysChanged(displays); |
| 165 | 171 |
| 166 ResetDisplayChanges(); | 172 ResetDisplayChanges(); |
| 167 | 173 |
| 168 displays.clear(); | 174 displays.clear(); |
| 169 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 175 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 170 screen()->ProcessDisplayChange(displays); | 176 NotifyDisplaysChanged(displays); |
| 171 | 177 |
| 172 EXPECT_EQ(0u, changed_display_.size()); | 178 EXPECT_EQ(0u, changed_display_.size()); |
| 173 EXPECT_EQ(0u, added_display_.size()); | 179 EXPECT_EQ(0u, added_display_.size()); |
| 174 EXPECT_EQ(1u, removed_display_.size()); | 180 EXPECT_EQ(1u, removed_display_.size()); |
| 175 } | 181 } |
| 176 | 182 |
| 177 TEST_F(DesktopScreenX11Test, RemoveMonitorOnLeft) { | 183 TEST_F(DesktopScreenX11Test, RemoveMonitorOnLeft) { |
| 178 std::vector<gfx::Display> displays; | 184 std::vector<gfx::Display> displays; |
| 179 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 185 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 180 displays.push_back(gfx::Display(kSecondDisplay, | 186 displays.push_back(gfx::Display(kSecondDisplay, |
| 181 gfx::Rect(640, 0, 1024, 768))); | 187 gfx::Rect(640, 0, 1024, 768))); |
| 182 screen()->ProcessDisplayChange(displays); | 188 NotifyDisplaysChanged(displays); |
| 183 | 189 |
| 184 ResetDisplayChanges(); | 190 ResetDisplayChanges(); |
| 185 | 191 |
| 186 displays.clear(); | 192 displays.clear(); |
| 187 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); | 193 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 1024, 768))); |
| 188 screen()->ProcessDisplayChange(displays); | 194 NotifyDisplaysChanged(displays); |
| 189 | 195 |
| 190 EXPECT_EQ(1u, changed_display_.size()); | 196 EXPECT_EQ(1u, changed_display_.size()); |
| 191 EXPECT_EQ(0u, added_display_.size()); | 197 EXPECT_EQ(0u, added_display_.size()); |
| 192 EXPECT_EQ(1u, removed_display_.size()); | 198 EXPECT_EQ(1u, removed_display_.size()); |
| 193 } | 199 } |
| 194 | 200 |
| 195 TEST_F(DesktopScreenX11Test, GetDisplayNearestPoint) { | 201 TEST_F(DesktopScreenX11Test, GetDisplayNearestPoint) { |
| 196 std::vector<gfx::Display> displays; | 202 std::vector<gfx::Display> displays; |
| 197 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 203 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 198 displays.push_back(gfx::Display(kSecondDisplay, | 204 displays.push_back(gfx::Display(kSecondDisplay, |
| 199 gfx::Rect(640, 0, 1024, 768))); | 205 gfx::Rect(640, 0, 1024, 768))); |
| 200 screen()->ProcessDisplayChange(displays); | 206 NotifyDisplaysChanged(displays); |
| 201 | 207 |
| 202 EXPECT_EQ(kSecondDisplay, | 208 EXPECT_EQ(kSecondDisplay, |
| 203 screen()->GetDisplayNearestPoint(gfx::Point(650, 10)).id()); | 209 screen()->GetDisplayNearestPoint(gfx::Point(650, 10)).id()); |
| 204 EXPECT_EQ(kFirstDisplay, | 210 EXPECT_EQ(kFirstDisplay, |
| 205 screen()->GetDisplayNearestPoint(gfx::Point(10, 10)).id()); | 211 screen()->GetDisplayNearestPoint(gfx::Point(10, 10)).id()); |
| 206 EXPECT_EQ(kFirstDisplay, | 212 EXPECT_EQ(kFirstDisplay, |
| 207 screen()->GetDisplayNearestPoint(gfx::Point(10000, 10000)).id()); | 213 screen()->GetDisplayNearestPoint(gfx::Point(10000, 10000)).id()); |
| 208 } | 214 } |
| 209 | 215 |
| 210 TEST_F(DesktopScreenX11Test, GetDisplayMatchingBasic) { | 216 TEST_F(DesktopScreenX11Test, GetDisplayMatchingBasic) { |
| 211 std::vector<gfx::Display> displays; | 217 std::vector<gfx::Display> displays; |
| 212 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 218 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 213 displays.push_back(gfx::Display(kSecondDisplay, | 219 displays.push_back(gfx::Display(kSecondDisplay, |
| 214 gfx::Rect(640, 0, 1024, 768))); | 220 gfx::Rect(640, 0, 1024, 768))); |
| 215 screen()->ProcessDisplayChange(displays); | 221 NotifyDisplaysChanged(displays); |
| 216 | 222 |
| 217 EXPECT_EQ(kSecondDisplay, | 223 EXPECT_EQ(kSecondDisplay, |
| 218 screen()->GetDisplayMatching(gfx::Rect(700, 20, 100, 100)).id()); | 224 screen()->GetDisplayMatching(gfx::Rect(700, 20, 100, 100)).id()); |
| 219 } | 225 } |
| 220 | 226 |
| 221 TEST_F(DesktopScreenX11Test, GetDisplayMatchingOverlap) { | 227 TEST_F(DesktopScreenX11Test, GetDisplayMatchingOverlap) { |
| 222 std::vector<gfx::Display> displays; | 228 std::vector<gfx::Display> displays; |
| 223 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 229 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 224 displays.push_back(gfx::Display(kSecondDisplay, | 230 displays.push_back(gfx::Display(kSecondDisplay, |
| 225 gfx::Rect(640, 0, 1024, 768))); | 231 gfx::Rect(640, 0, 1024, 768))); |
| 226 screen()->ProcessDisplayChange(displays); | 232 NotifyDisplaysChanged(displays); |
| 227 | 233 |
| 228 EXPECT_EQ(kSecondDisplay, | 234 EXPECT_EQ(kSecondDisplay, |
| 229 screen()->GetDisplayMatching(gfx::Rect(630, 20, 100, 100)).id()); | 235 screen()->GetDisplayMatching(gfx::Rect(630, 20, 100, 100)).id()); |
| 230 } | 236 } |
| 231 | 237 |
| 232 TEST_F(DesktopScreenX11Test, GetPrimaryDisplay) { | 238 TEST_F(DesktopScreenX11Test, GetPrimaryDisplay) { |
| 233 std::vector<gfx::Display> displays; | 239 std::vector<gfx::Display> displays; |
| 234 displays.push_back(gfx::Display(kFirstDisplay, | 240 displays.push_back(gfx::Display(kFirstDisplay, |
| 235 gfx::Rect(640, 0, 1024, 768))); | 241 gfx::Rect(640, 0, 1024, 768))); |
| 236 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 640, 480))); | 242 displays.push_back(gfx::Display(kSecondDisplay, gfx::Rect(0, 0, 640, 480))); |
| 237 screen()->ProcessDisplayChange(displays); | 243 NotifyDisplaysChanged(displays); |
| 238 | 244 |
| 239 // The first display in the list is always the primary, even if other | 245 // The first display in the list is always the primary, even if other |
| 240 // displays are to the left in screen layout. | 246 // displays are to the left in screen layout. |
| 241 EXPECT_EQ(kFirstDisplay, screen()->GetPrimaryDisplay().id()); | 247 EXPECT_EQ(kFirstDisplay, screen()->GetPrimaryDisplay().id()); |
| 242 } | 248 } |
| 243 | 249 |
| 244 TEST_F(DesktopScreenX11Test, GetDisplayNearestWindow) { | 250 TEST_F(DesktopScreenX11Test, GetDisplayNearestWindow) { |
| 245 // Set up a two monitor situation. | 251 // Set up a two monitor situation. |
| 246 std::vector<gfx::Display> displays; | 252 std::vector<gfx::Display> displays; |
| 247 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 253 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 248 displays.push_back(gfx::Display(kSecondDisplay, | 254 displays.push_back(gfx::Display(kSecondDisplay, |
| 249 gfx::Rect(640, 0, 1024, 768))); | 255 gfx::Rect(640, 0, 1024, 768))); |
| 250 screen()->ProcessDisplayChange(displays); | 256 NotifyDisplaysChanged(displays); |
| 251 | 257 |
| 252 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10), | 258 Widget* window_one = BuildTopLevelDesktopWidget(gfx::Rect(10, 10, 10, 10), |
| 253 false); | 259 false); |
| 254 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(650, 50, 10, 10), | 260 Widget* window_two = BuildTopLevelDesktopWidget(gfx::Rect(650, 50, 10, 10), |
| 255 false); | 261 false); |
| 256 | 262 |
| 257 EXPECT_EQ( | 263 EXPECT_EQ( |
| 258 kFirstDisplay, | 264 kFirstDisplay, |
| 259 screen()->GetDisplayNearestWindow(window_one->GetNativeWindow()).id()); | 265 screen()->GetDisplayNearestWindow(window_one->GetNativeWindow()).id()); |
| 260 EXPECT_EQ( | 266 EXPECT_EQ( |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 | 356 |
| 351 widget->CloseNow(); | 357 widget->CloseNow(); |
| 352 } | 358 } |
| 353 | 359 |
| 354 // Test that rotating the displays notifies the DisplayObservers. | 360 // Test that rotating the displays notifies the DisplayObservers. |
| 355 TEST_F(DesktopScreenX11Test, RotationChange) { | 361 TEST_F(DesktopScreenX11Test, RotationChange) { |
| 356 std::vector<gfx::Display> displays; | 362 std::vector<gfx::Display> displays; |
| 357 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 363 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 358 displays.push_back( | 364 displays.push_back( |
| 359 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); | 365 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 360 screen()->ProcessDisplayChange(displays); | 366 NotifyDisplaysChanged(displays); |
| 361 ResetDisplayChanges(); | 367 ResetDisplayChanges(); |
| 362 | 368 |
| 363 displays[0].set_rotation(gfx::Display::ROTATE_90); | 369 displays[0].set_rotation(gfx::Display::ROTATE_90); |
| 364 screen()->ProcessDisplayChange(displays); | 370 NotifyDisplaysChanged(displays); |
| 365 EXPECT_EQ(1u, changed_display_.size()); | 371 EXPECT_EQ(1u, changed_display_.size()); |
| 366 | 372 |
| 367 displays[1].set_rotation(gfx::Display::ROTATE_90); | 373 displays[1].set_rotation(gfx::Display::ROTATE_90); |
| 368 screen()->ProcessDisplayChange(displays); | 374 NotifyDisplaysChanged(displays); |
| 369 EXPECT_EQ(2u, changed_display_.size()); | 375 EXPECT_EQ(2u, changed_display_.size()); |
| 370 | 376 |
| 371 displays[0].set_rotation(gfx::Display::ROTATE_270); | 377 displays[0].set_rotation(gfx::Display::ROTATE_270); |
| 372 screen()->ProcessDisplayChange(displays); | 378 NotifyDisplaysChanged(displays); |
| 373 EXPECT_EQ(3u, changed_display_.size()); | 379 EXPECT_EQ(3u, changed_display_.size()); |
| 374 | 380 |
| 375 displays[0].set_rotation(gfx::Display::ROTATE_270); | 381 displays[0].set_rotation(gfx::Display::ROTATE_270); |
| 376 screen()->ProcessDisplayChange(displays); | 382 NotifyDisplaysChanged(displays); |
| 377 EXPECT_EQ(3u, changed_display_.size()); | 383 EXPECT_EQ(3u, changed_display_.size()); |
| 378 | 384 |
| 379 displays[0].set_rotation(gfx::Display::ROTATE_0); | 385 displays[0].set_rotation(gfx::Display::ROTATE_0); |
| 380 displays[1].set_rotation(gfx::Display::ROTATE_0); | 386 displays[1].set_rotation(gfx::Display::ROTATE_0); |
| 381 screen()->ProcessDisplayChange(displays); | 387 NotifyDisplaysChanged(displays); |
| 382 EXPECT_EQ(5u, changed_display_.size()); | 388 EXPECT_EQ(5u, changed_display_.size()); |
| 383 } | 389 } |
| 384 | 390 |
| 385 // Test that changing the displays workarea notifies the DisplayObservers. | 391 // Test that changing the displays workarea notifies the DisplayObservers. |
| 386 TEST_F(DesktopScreenX11Test, WorkareaChange) { | 392 TEST_F(DesktopScreenX11Test, WorkareaChange) { |
| 387 std::vector<gfx::Display> displays; | 393 std::vector<gfx::Display> displays; |
| 388 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 394 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 389 displays.push_back( | 395 displays.push_back( |
| 390 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); | 396 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 391 screen()->ProcessDisplayChange(displays); | 397 NotifyDisplaysChanged(displays); |
| 392 ResetDisplayChanges(); | 398 ResetDisplayChanges(); |
| 393 | 399 |
| 394 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); | 400 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 395 screen()->ProcessDisplayChange(displays); | 401 NotifyDisplaysChanged(displays); |
| 396 EXPECT_EQ(1u, changed_display_.size()); | 402 EXPECT_EQ(1u, changed_display_.size()); |
| 397 | 403 |
| 398 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); | 404 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 399 screen()->ProcessDisplayChange(displays); | 405 NotifyDisplaysChanged(displays); |
| 400 EXPECT_EQ(2u, changed_display_.size()); | 406 EXPECT_EQ(2u, changed_display_.size()); |
| 401 | 407 |
| 402 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); | 408 displays[0].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 403 screen()->ProcessDisplayChange(displays); | 409 NotifyDisplaysChanged(displays); |
| 404 EXPECT_EQ(2u, changed_display_.size()); | 410 EXPECT_EQ(2u, changed_display_.size()); |
| 405 | 411 |
| 406 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); | 412 displays[1].set_work_area(gfx::Rect(0, 0, 300, 300)); |
| 407 screen()->ProcessDisplayChange(displays); | 413 NotifyDisplaysChanged(displays); |
| 408 EXPECT_EQ(2u, changed_display_.size()); | 414 EXPECT_EQ(2u, changed_display_.size()); |
| 409 | 415 |
| 410 displays[0].set_work_area(gfx::Rect(0, 0, 640, 480)); | 416 displays[0].set_work_area(gfx::Rect(0, 0, 640, 480)); |
| 411 displays[1].set_work_area(gfx::Rect(640, 0, 1024, 768)); | 417 displays[1].set_work_area(gfx::Rect(640, 0, 1024, 768)); |
| 412 screen()->ProcessDisplayChange(displays); | 418 NotifyDisplaysChanged(displays); |
| 413 EXPECT_EQ(4u, changed_display_.size()); | 419 EXPECT_EQ(4u, changed_display_.size()); |
| 414 } | 420 } |
| 415 | 421 |
| 416 // Test that changing the device scale factor notifies the DisplayObservers. | 422 // Test that changing the device scale factor notifies the DisplayObservers. |
| 417 TEST_F(DesktopScreenX11Test, DeviceScaleFactorChange) { | 423 TEST_F(DesktopScreenX11Test, DeviceScaleFactorChange) { |
| 418 std::vector<gfx::Display> displays; | 424 std::vector<gfx::Display> displays; |
| 419 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); | 425 displays.push_back(gfx::Display(kFirstDisplay, gfx::Rect(0, 0, 640, 480))); |
| 420 displays.push_back( | 426 displays.push_back( |
| 421 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); | 427 gfx::Display(kSecondDisplay, gfx::Rect(640, 0, 1024, 768))); |
| 422 screen()->ProcessDisplayChange(displays); | 428 NotifyDisplaysChanged(displays); |
| 423 ResetDisplayChanges(); | 429 ResetDisplayChanges(); |
| 424 | 430 |
| 425 displays[0].set_device_scale_factor(2.5f); | 431 displays[0].set_device_scale_factor(2.5f); |
| 426 screen()->ProcessDisplayChange(displays); | 432 NotifyDisplaysChanged(displays); |
| 427 EXPECT_EQ(1u, changed_display_.size()); | 433 EXPECT_EQ(1u, changed_display_.size()); |
| 428 | 434 |
| 429 displays[1].set_device_scale_factor(2.5f); | 435 displays[1].set_device_scale_factor(2.5f); |
| 430 screen()->ProcessDisplayChange(displays); | 436 NotifyDisplaysChanged(displays); |
| 431 EXPECT_EQ(2u, changed_display_.size()); | 437 EXPECT_EQ(2u, changed_display_.size()); |
| 432 | 438 |
| 433 displays[0].set_device_scale_factor(2.5f); | 439 displays[0].set_device_scale_factor(2.5f); |
| 434 screen()->ProcessDisplayChange(displays); | 440 NotifyDisplaysChanged(displays); |
| 435 EXPECT_EQ(2u, changed_display_.size()); | 441 EXPECT_EQ(2u, changed_display_.size()); |
| 436 | 442 |
| 437 displays[1].set_device_scale_factor(2.5f); | 443 displays[1].set_device_scale_factor(2.5f); |
| 438 screen()->ProcessDisplayChange(displays); | 444 NotifyDisplaysChanged(displays); |
| 439 EXPECT_EQ(2u, changed_display_.size()); | 445 EXPECT_EQ(2u, changed_display_.size()); |
| 440 | 446 |
| 441 displays[0].set_device_scale_factor(1.f); | 447 displays[0].set_device_scale_factor(1.f); |
| 442 displays[1].set_device_scale_factor(1.f); | 448 displays[1].set_device_scale_factor(1.f); |
| 443 screen()->ProcessDisplayChange(displays); | 449 NotifyDisplaysChanged(displays); |
| 444 EXPECT_EQ(4u, changed_display_.size()); | 450 EXPECT_EQ(4u, changed_display_.size()); |
| 445 } | 451 } |
| 446 | 452 |
| 447 } // namespace views | 453 } // namespace views |
| OLD | NEW |