OLD | NEW |
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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 #include "ui/ozone/platform/drm/gpu/crtc_controller.h" | 6 #include "ui/ozone/platform/drm/gpu/crtc_controller.h" |
7 #include "ui/ozone/platform/drm/gpu/drm_buffer.h" | 7 #include "ui/ozone/platform/drm/gpu/drm_buffer.h" |
8 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h" | 8 #include "ui/ozone/platform/drm/gpu/drm_device_manager.h" |
9 #include "ui/ozone/platform/drm/gpu/drm_window.h" | 9 #include "ui/ozone/platform/drm/gpu/drm_window.h" |
10 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h" | 10 #include "ui/ozone/platform/drm/gpu/hardware_display_controller.h" |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 bool window1_has_controller = screen_manager_->GetWindow(1)->GetController(); | 367 bool window1_has_controller = screen_manager_->GetWindow(1)->GetController(); |
368 bool window2_has_controller = screen_manager_->GetWindow(2)->GetController(); | 368 bool window2_has_controller = screen_manager_->GetWindow(2)->GetController(); |
369 // Only one of the windows can have a controller. | 369 // Only one of the windows can have a controller. |
370 EXPECT_TRUE(window1_has_controller ^ window2_has_controller); | 370 EXPECT_TRUE(window1_has_controller ^ window2_has_controller); |
371 | 371 |
372 for (size_t i = 1; i < kWindowCount + 1; ++i) { | 372 for (size_t i = 1; i < kWindowCount + 1; ++i) { |
373 scoped_ptr<ui::DrmWindow> window = screen_manager_->RemoveWindow(i); | 373 scoped_ptr<ui::DrmWindow> window = screen_manager_->RemoveWindow(i); |
374 window->Shutdown(); | 374 window->Shutdown(); |
375 } | 375 } |
376 } | 376 } |
| 377 |
| 378 TEST_F(ScreenManagerTest, ShouldDissociateWindowOnControllerRemoval) { |
| 379 gfx::AcceleratedWidget window_id = 1; |
| 380 ui::DrmDeviceManager device_manager(drm_); |
| 381 scoped_ptr<ui::DrmWindow> window( |
| 382 new ui::DrmWindow(window_id, &device_manager, screen_manager_.get())); |
| 383 window->Initialize(); |
| 384 window->OnBoundsChanged(GetPrimaryBounds()); |
| 385 screen_manager_->AddWindow(window_id, window.Pass()); |
| 386 |
| 387 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
| 388 screen_manager_->ConfigureDisplayController( |
| 389 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
| 390 kDefaultMode); |
| 391 |
| 392 EXPECT_TRUE(screen_manager_->GetWindow(window_id)->GetController()); |
| 393 |
| 394 screen_manager_->RemoveDisplayController(drm_, kPrimaryCrtc); |
| 395 |
| 396 EXPECT_FALSE(screen_manager_->GetWindow(window_id)->GetController()); |
| 397 |
| 398 window = screen_manager_->RemoveWindow(1); |
| 399 window->Shutdown(); |
| 400 } |
OLD | NEW |