tray_display_unittest.cc revision c2db58bd994c04d98e4ee2cd7565b71548655fe3
1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/system/chromeos/tray_display.h" 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/display/display_manager.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/root_window_controller.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/screen_ash.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/shell.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/system/tray/system_tray.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/system/tray/test_system_tray_delegate.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/test/ash_test_base.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/strings/string16.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/strings/utf_string_conversions.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "grit/ash_strings.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/l10n/l10n_util.h" 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/gfx/display.h" 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/views/controls/label.h" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ash { 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace internal { 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetTooltipText(const base::string16& headline, 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::string16& name1, 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& data1, 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::string16& name2, 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& data2) { 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<base::string16> lines; 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch lines.push_back(headline); 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch lines.push_back(l10n_util::GetStringFUTF16( 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch name1, UTF8ToUTF16(data1))); 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!name2.empty()) { 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch lines.push_back(l10n_util::GetStringFUTF16( 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch name2, UTF8ToUTF16(data2))); 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return JoinString(lines, '\n'); 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 42d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbase::string16 GetMirroredTooltipText(const base::string16& headline, 43d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch const base::string16& name, 44d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch const std::string& data) { 45d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch return GetTooltipText(headline, name, data, base::string16(), ""); 46d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 47d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetFirstDisplayName() { 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return UTF8ToUTF16(display_manager->GetDisplayNameForId( 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->first_display_id())); 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetSecondDisplayName() { 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return UTF8ToUTF16( 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->display_manager()->GetDisplayNameForId( 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ScreenAsh::GetSecondaryDisplay().id())); 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetMirroredDisplayName() { 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return UTF8ToUTF16(display_manager->GetDisplayNameForId( 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->mirrored_display().id())); 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass TrayDisplayTest : public ash::test::AshTestBase { 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TrayDisplayTest(); 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~TrayDisplayTest(); 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUp() OVERRIDE; 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SystemTray* tray() { return tray_; } 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch TrayDisplay* tray_display() { return tray_display_; } 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void CloseNotification(); 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool IsDisplayVisibleInTray(); 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 GetTrayDisplayText(); 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 GetTrayDisplayTooltipText(); 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 GetDisplayNotificationText(); 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Weak reference, owned by Shell. 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SystemTray* tray_; 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Weak reference, owned by |tray_|. 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TrayDisplay* tray_display_; 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(TrayDisplayTest); 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTrayDisplayTest::TrayDisplayTest() : tray_(NULL), tray_display_(NULL) { 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTrayDisplayTest::~TrayDisplayTest() { 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid TrayDisplayTest::SetUp() { 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ash::test::AshTestBase::SetUp(); 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_ = Shell::GetPrimaryRootWindowController()->GetSystemTray(); 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_display_ = new TrayDisplay(tray_); 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_->AddTrayItem(tray_display_); 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid TrayDisplayTest::CloseNotification() { 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_display_->CloseNotificationForTest(); 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RunAllPendingInMessageLoop(); 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool TrayDisplayTest::IsDisplayVisibleInTray() { 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return tray_display_->default_view() && 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_display_->default_view()->visible(); 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 TrayDisplayTest::GetTrayDisplayText() { 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return tray_display_->GetDefaultViewMessage(); 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 TrayDisplayTest::GetTrayDisplayTooltipText() { 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!tray_display_->default_view()) 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return base::string16(); 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 tooltip; 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!tray_display_->default_view()->GetTooltipText(gfx::Point(), &tooltip)) 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return base::string16(); 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return tooltip; 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 TrayDisplayTest::GetDisplayNotificationText() { 131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return tray_display_->GetNotificationMessage(); 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, NoInternalDisplay) { 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(IsDisplayVisibleInTray()); 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 expected = l10n_util::GetStringUTF16( 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL); 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 first_name = GetFirstDisplayName(); 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "200x200"), 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // mirroring 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->display_manager()->SetSoftwareMirroring(true); 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringUTF16( 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING_NO_INTERNAL); 157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 158d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "400x400"), 159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 162eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, InternalDisplay) { 163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 164eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 166eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 168eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(IsDisplayVisibleInTray()); 169eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended 171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 172eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch string16 expected = l10n_util::GetStringFUTF16( 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()); 174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "200x200"), 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Mirroring 182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringFUTF16( 188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()); 189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 190d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "400x400"), 191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 192eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // TODO(mukai): add test case for docked mode here. 194eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 195eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 196eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, InternalDisplayResized) { 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5"); 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 200eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Shows the tray_display even though there's a single-display. 202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 internal_info = l10n_util::GetStringFUTF16( 205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetFirstDisplayName(), UTF8ToUTF16("600x600")); 207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(internal_info, GetTrayDisplayText()); 208eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(base::string16(), GetFirstDisplayName(), "600x600", 209eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16(), std::string()), 210eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 212eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended 213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200"); 214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 215eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 expected = l10n_util::GetStringFUTF16( 217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()); 218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 219eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "600x600", 220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "200x200"), 221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 222eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 223eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Mirroring 224eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 225eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200"); 226eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 227eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 228eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringFUTF16( 229eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()); 230eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 231d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "600x600"), 232eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 233eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 234eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 235eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, ExternalDisplayResized) { 236eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 237eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 238eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 239eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 240eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Shows the tray_display even though there's a single-display. 241eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 242eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(IsDisplayVisibleInTray()); 243eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 244eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended 245eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200@1.5"); 246eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const gfx::Display& secondary_display = ScreenAsh::GetSecondaryDisplay(); 247eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 248eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 249eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 250eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 expected = l10n_util::GetStringFUTF16( 251eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, 252ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringFUTF16( 253ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 254ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetSecondDisplayName(), 255ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch UTF8ToUTF16(secondary_display.size().ToString()))); 256eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 257eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 258eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "300x300"), 259eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 260eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 261d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch // Mirroring 262eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 263eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200@1.5"); 264ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::string16 mirror_name = l10n_util::GetStringFUTF16( 265ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 266ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetMirroredDisplayName(), UTF8ToUTF16("300x300")); 267eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 268eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 269eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringFUTF16( 270eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, mirror_name); 271eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 272d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "400x400"), 273eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 274eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 275eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 276eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, OverscanDisplay) { 277eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,300x300/o"); 278eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 279eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 280eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 281eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 282eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 283eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 284eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // /o creates the default overscan, and if overscan is set, the annotation 285eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // should be the size. 286eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 overscan = l10n_util::GetStringUTF16( 287eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATION_OVERSCAN); 288eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 headline = l10n_util::GetStringFUTF16( 289eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, 290ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringFUTF16( 291ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 292ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetSecondDisplayName(), UTF8ToUTF16("286x286"))); 293eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string second_data = l10n_util::GetStringFUTF8( 294eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATION, 295eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UTF8ToUTF16("286x286"), overscan); 296eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(headline, GetFirstDisplayName(), "400x400", 297eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), second_data), 298eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 299eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 300eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // reset the overscan. 301eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetOverscanInsets( 302eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ScreenAsh::GetSecondaryDisplay().id(), gfx::Insets()); 303eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch headline = l10n_util::GetStringFUTF16( 304eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, 305ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringFUTF16( 306ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 307ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetSecondDisplayName(), overscan)); 308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch second_data = l10n_util::GetStringFUTF8( 309eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATION, 310eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UTF8ToUTF16("300x300"), overscan); 311eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(headline, GetFirstDisplayName(), "400x400", 312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), second_data), 313eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 314eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 315eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 316eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, DisplayNotifications) { 317eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch test::TestSystemTrayDelegate* tray_delegate = 318eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static_cast<test::TestSystemTrayDelegate*>( 319eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->system_tray_delegate()); 320eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_delegate->set_should_show_display_notification(true); 321eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 322eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 323eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 324eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 325eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetDisplayNotificationText().empty()); 326eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 327eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // rotation. 328eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400/r"); 329ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ( 330ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringFUTF16( 331ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, GetFirstDisplayName(), 332ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringUTF16( 333ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ORIENTATION_90)), 334ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetDisplayNotificationText()); 335eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 336eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 337eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 338ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ( 339ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringFUTF16( 340ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, GetFirstDisplayName(), 341ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringUTF16( 342ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_STANDARD_ORIENTATION)), 343ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetDisplayNotificationText()); 344eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 345eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // UI-scale 346eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 347eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5"); 348eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 349eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 350eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 351eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetFirstDisplayName(), UTF8ToUTF16("600x600")), 352eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 353eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 354eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // UI-scale to 1.0 355eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 356eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 357eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 358eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 359eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 360eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetFirstDisplayName(), UTF8ToUTF16("400x400")), 361eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 362eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 363eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // No-update 364eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 365eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 366eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetDisplayNotificationText().empty()); 367eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 368eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended. 369eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 370eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 371eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 372eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 373eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()), 374eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 375eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 376eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Mirroring. 377eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 378eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 379eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 380eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 381eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 382eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()), 383eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 384eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 385eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Back to extended. 386eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 387eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(false); 388eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 389eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 390eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 391eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()), 392eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 393eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 394eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Resize the first display. 395eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200"); 396eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 397eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 398eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 399eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetFirstDisplayName(), UTF8ToUTF16("600x600")), 400eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 401eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 402eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // rotate the second. 403eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200/r"); 404eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 405eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 406ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, 407ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetSecondDisplayName(), 408ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringUTF16( 409ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ORIENTATION_90)), 410eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 411eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 412eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 413ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(TrayDisplayTest, DisplayConfigurationChangedTwice) { 414ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch test::TestSystemTrayDelegate* tray_delegate = 415ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch static_cast<test::TestSystemTrayDelegate*>( 416ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch Shell::GetInstance()->system_tray_delegate()); 417ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch tray_delegate->set_should_show_display_notification(true); 418ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 419ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch UpdateDisplay("400x400,200x200"); 420ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ( 421ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringUTF16( 422ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL), 423ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetDisplayNotificationText()); 424ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 425ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // OnDisplayConfigurationChanged() may be called more than once for a single 426ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // update display in case of primary is swapped or recovered from dock mode. 427ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Should not remove the notification in such case. 428ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch tray_display()->OnDisplayConfigurationChanged(); 429ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ( 430ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringUTF16( 431ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL), 432ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetDisplayNotificationText()); 433ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 434ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Back to the single display. It SHOULD remove the notification since the 435ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // information is stale. 436ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch UpdateDisplay("400x400"); 437ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(GetDisplayNotificationText().empty()); 438ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 439ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 440c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben MurdochTEST_F(TrayDisplayTest, UpdateAfterSuppressDisplayNotification) { 441c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch UpdateDisplay("400x400,200x200"); 442c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 443c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch test::TestSystemTrayDelegate* tray_delegate = 444c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch static_cast<test::TestSystemTrayDelegate*>( 445c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch Shell::GetInstance()->system_tray_delegate()); 446c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch tray_delegate->set_should_show_display_notification(true); 447c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 448c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch // rotate the second. 449c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch UpdateDisplay("400x400,200x200/r"); 450c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch EXPECT_EQ( 451c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch l10n_util::GetStringFUTF16( 452c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, 453c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch GetSecondDisplayName(), 454c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch l10n_util::GetStringUTF16( 455c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ORIENTATION_90)), 456c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch GetDisplayNotificationText()); 457c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch} 458c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 459eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace internal 460eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace ash 461