touch_observer_hud_unittest.cc revision 868fa2fe829687343ffae624259930155e16dbd8
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/touch/touch_observer_hud.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/ash_switches.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/display/display_manager.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/root_window_controller.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/test/ash_test_base.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/test/display_manager_test_api.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/wm/property_util.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/command_line.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/format_macros.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ash { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace internal { 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TouchHudTest : public test::AshTestBase { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TouchHudTest() {} 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~TouchHudTest() {} 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetUp() OVERRIDE { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Add ash-touch-hud flag to enable touch HUD. This flag should be set 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // before Ash environment is set up, i.e., before 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // test::AshTestBase::SetUp(). 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CommandLine::ForCurrentProcess()->AppendSwitch( 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ash::switches::kAshTouchHud); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test::AshTestBase::SetUp(); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Initialize display infos. They should be initialized after Ash 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // environment is set up, i.e., after test::AshTestBase::SetUp(). 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal_display_id_ = test::DisplayManagerTestApi(GetDisplayManager()). 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetFirstDisplayAsInternalDisplay(); 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) external_display_id_ = 10; 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mirrored_display_id_ = 11; 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal_display_info_ = 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateDisplayInfo(internal_display_id_, gfx::Rect(0, 0, 500, 500)); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) external_display_info_ = 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateDisplayInfo(external_display_id_, gfx::Rect(1, 1, 100, 100)); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) mirrored_display_info_ = 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateDisplayInfo(mirrored_display_id_, gfx::Rect(0, 0, 100, 100)); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& GetPrimaryDisplay() { 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayController()->GetPrimaryDisplay(); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& GetSecondaryDisplay() { 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return *GetDisplayController()->GetSecondaryDisplay(); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetupSingleDisplay() { 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.clear(); 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.push_back(internal_display_info_); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetupDualDisplays() { 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.clear(); 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.push_back(internal_display_info_); 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.push_back(external_display_info_); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetInternalAsPrimary() { 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& internal_display = 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->GetDisplayForId(internal_display_id_); 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayController()->SetPrimaryDisplay(internal_display); 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetExternalAsPrimary() { 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& external_display = 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->GetDisplayForId(external_display_id_); 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayController()->SetPrimaryDisplay(external_display); 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void MirrorDisplays() { 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(2U, display_info_list_.size()); 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(internal_display_id_, display_info_list_[0].id()); 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(external_display_id_, display_info_list_[1].id()); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_[1] = mirrored_display_info_; 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void UnmirrorDisplays() { 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(2U, display_info_list_.size()); 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(internal_display_id_, display_info_list_[0].id()); 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(mirrored_display_id_, display_info_list_[1].id()); 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_[1] = external_display_info_; 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void RemoveInternalDisplay() { 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_LT(0U, display_info_list_.size()); 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(internal_display_id_, display_info_list_[0].id()); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.erase(display_info_list_.begin()); 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void RemoveExternalDisplay() { 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(2U, display_info_list_.size()); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.pop_back(); 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void AddInternalDisplay() { 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(0U, display_info_list_.size()); 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.push_back(internal_display_info_); 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void AddExternalDisplay() { 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(1U, display_info_list_.size()); 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) display_info_list_.push_back(external_display_info_); 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDisplayManager()->OnNativeDisplaysChanged(display_info_list_); 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int64 internal_display_id() const { 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return internal_display_id_; 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int64 external_display_id() const { 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return external_display_id_; 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CheckInternalDisplay() { 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_NE(static_cast<internal::TouchObserverHUD*>(NULL), 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetInternalTouchHud()); 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetInternalTouchHud()->display_id_); 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GetInternalRootWindow(), GetInternalTouchHud()->root_window_); 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GetInternalRootWindow(), 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetInternalTouchHud()->widget_->GetNativeView()->GetRootWindow()); 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GetInternalDisplay().size(), 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetInternalTouchHud()->widget_->GetWindowBoundsInScreen().size()); 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CheckExternalDisplay() { 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_NE(static_cast<internal::TouchObserverHUD*>(NULL), 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetExternalTouchHud()); 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetExternalTouchHud()->display_id_); 146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GetExternalRootWindow(), GetExternalTouchHud()->root_window_); 147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GetExternalRootWindow(), 148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetExternalTouchHud()->widget_->GetNativeView()->GetRootWindow()); 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(GetExternalDisplay().size(), 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetExternalTouchHud()->widget_->GetWindowBoundsInScreen().size()); 151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayManager* GetDisplayManager() { 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Shell::GetInstance()->display_manager(); 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayController* GetDisplayController() { 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Shell::GetInstance()->display_controller(); 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& GetInternalDisplay() { 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayManager()->GetDisplayForId(internal_display_id_); 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& GetExternalDisplay() { 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayManager()->GetDisplayForId(external_display_id_); 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* GetInternalRootWindow() { 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayController()->GetRootWindowForDisplayId( 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal_display_id_); 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* GetExternalRootWindow() { 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayController()->GetRootWindowForDisplayId( 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) external_display_id_); 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* GetPrimaryRootWindow() { 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& display = GetPrimaryDisplay(); 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayController()->GetRootWindowForDisplayId(display.id()); 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* GetSecondaryRootWindow() { 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Display& display = GetSecondaryDisplay(); 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetDisplayController()->GetRootWindowForDisplayId(display.id()); 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::RootWindowController* GetInternalRootController() { 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* root = GetInternalRootWindow(); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetRootWindowController(root); 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::RootWindowController* GetExternalRootController() { 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* root = GetExternalRootWindow(); 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetRootWindowController(root); 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::RootWindowController* GetPrimaryRootController() { 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* root = GetPrimaryRootWindow(); 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetRootWindowController(root); 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::RootWindowController* GetSecondaryRootController() { 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) aura::RootWindow* root = GetSecondaryRootWindow(); 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetRootWindowController(root); 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::TouchObserverHUD* GetInternalTouchHud() { 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetInternalRootController()->touch_observer_hud(); 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::TouchObserverHUD* GetExternalTouchHud() { 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetExternalRootController()->touch_observer_hud(); 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::TouchObserverHUD* GetPrimaryTouchHud() { 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetPrimaryRootController()->touch_observer_hud(); 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) internal::TouchObserverHUD* GetSecondaryTouchHud() { 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetSecondaryRootController()->touch_observer_hud(); 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayInfo CreateDisplayInfo(int64 id, const gfx::Rect& bounds) { 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayInfo info(id, base::StringPrintf("x-%"PRId64, id), false); 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) info.SetBounds(bounds); 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return info; 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int64 internal_display_id_; 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int64 external_display_id_; 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int64 mirrored_display_id_; 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayInfo internal_display_info_; 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayInfo external_display_info_; 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DisplayInfo mirrored_display_info_; 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<DisplayInfo> display_info_list_; 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TouchHudTest); 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly initialized for displays. 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, Basic) { 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a dual display setting. 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupDualDisplays(); 248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if touch HUDs are set correctly and associated with appropriate 250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // displays. 251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly handled when primary display is changed. 256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, SwapPrimaryDisplay) { 257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a dual display setting. 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupDualDisplays(); 259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Set the primary display to the external one. 261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetExternalAsPrimary(); 262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if displays' touch HUDs are not swapped as root windows are. 264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetPrimaryDisplay().id()); 265c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetSecondaryDisplay().id()); 266c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Set the primary display back to the internal one. 270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetInternalAsPrimary(); 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if displays' touch HUDs are not swapped back as root windows are. 273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 274c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetSecondaryDisplay().id()); 275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 278c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 279c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly handled when displays are mirrored. 280c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, MirrorDisplays) { 281c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a dual display setting. 282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupDualDisplays(); 283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Mirror displays. 285c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MirrorDisplays(); 286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the internal display is intact. 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 290c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Unmirror displays. 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UnmirrorDisplays(); 293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if external display is added back correctly. 295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetSecondaryDisplay().id()); 297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 300c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly handled when displays are mirrored after 302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// setting the external display as the primary one. 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, SwapPrimaryThenMirrorDisplays) { 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a dual display setting. 305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupDualDisplays(); 306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Set the primary display to the external one. 308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetExternalAsPrimary(); 309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Mirror displays. 311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MirrorDisplays(); 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the internal display is set as the primary one. 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Unmirror displays. 318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UnmirrorDisplays(); 319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the external display is added back as the primary display and 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // touch HUDs are set correctly. 322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetPrimaryDisplay().id()); 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetSecondaryDisplay().id()); 324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly handled when the external display, which 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// is the secondary one, is removed. 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, RemoveSecondaryDisplay) { 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a dual display setting. 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupDualDisplays(); 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Remove external display which is the secondary one. 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RemoveExternalDisplay(); 336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the internal display is intact. 338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Add external display back. 342c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddExternalDisplay(); 343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if displays' touch HUDs are set correctly. 345c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 346c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetSecondaryDisplay().id()); 347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly handled when the external display, which 352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// is set as the primary display, is removed. 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, RemovePrimaryDisplay) { 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a dual display setting. 355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupDualDisplays(); 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Set the primary display to the external one. 358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetExternalAsPrimary(); 359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 360c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Remove the external display which is the primary display. 361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RemoveExternalDisplay(); 362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 363c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the internal display is set as the primary one. 364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Add the external display back. 368c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddExternalDisplay(); 369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the external display is set as primary and touch HUDs are set 371c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // correctly. 372c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(external_display_id(), GetPrimaryDisplay().id()); 373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetSecondaryDisplay().id()); 374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 375c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckExternalDisplay(); 376c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 377c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 378c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Checks if touch HUDs are correctly handled when all displays are removed. 379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(TouchHudTest, Headless) { 380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Setup a single display setting. 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetupSingleDisplay(); 382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Remove the only display which is the internal one. 384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RemoveInternalDisplay(); 385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Add the internal display back. 387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddInternalDisplay(); 388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Check if the display's touch HUD is set correctly. 390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(internal_display_id(), GetPrimaryDisplay().id()); 391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckInternalDisplay(); 392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace internal 395c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ash 396