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" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/screen_util.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/shell.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/system/tray/system_tray.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/test/ash_test_base.h" 13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ash/test/test_system_tray_delegate.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/strings/string16.h" 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/strings/string_util.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/strings/utf_string_conversions.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "grit/ash_strings.h" 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/accessibility/ax_view_state.h" 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/l10n/l10n_util.h" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/gfx/display.h" 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/message_center.h" 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/notification.h" 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/message_center/notification_list.h" 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/views/controls/label.h" 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ash { 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetTooltipText(const base::string16& headline, 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::string16& name1, 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& data1, 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::string16& name2, 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& data2) { 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<base::string16> lines; 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch lines.push_back(headline); 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (data1.empty()) { 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) lines.push_back(name1); 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else { 381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) lines.push_back(l10n_util::GetStringFUTF16( 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) name1, base::UTF8ToUTF16(data1))); 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!name2.empty()) { 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch lines.push_back(l10n_util::GetStringFUTF16( 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) name2, base::UTF8ToUTF16(data2))); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return JoinString(lines, '\n'); 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 50d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochbase::string16 GetMirroredTooltipText(const base::string16& headline, 51d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch const base::string16& name, 52d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch const std::string& data) { 53d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch return GetTooltipText(headline, name, data, base::string16(), ""); 54d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 55d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetFirstDisplayName() { 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF8ToUTF16(display_manager->GetDisplayNameForId( 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->first_display_id())); 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetSecondDisplayName() { 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF8ToUTF16( 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->display_manager()->GetDisplayNameForId( 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScreenUtil::GetSecondaryDisplay().id())); 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbase::string16 GetMirroredDisplayName() { 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF8ToUTF16(display_manager->GetDisplayNameForId( 711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) display_manager->mirrored_display_id())); 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass TrayDisplayTest : public ash::test::AshTestBase { 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TrayDisplayTest(); 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~TrayDisplayTest(); 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void SetUp() OVERRIDE; 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SystemTray* tray() { return tray_; } 83ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch TrayDisplay* tray_display() { return tray_display_; } 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void CloseNotification(); 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool IsDisplayVisibleInTray() const; 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::string16 GetTrayDisplayText() const; 88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void CheckAccessibleName() const; 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::string16 GetTrayDisplayTooltipText() const; 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::string16 GetDisplayNotificationText() const; 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::string16 GetDisplayNotificationAdditionalText() const; 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const message_center::Notification* GetDisplayNotification() const; 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Weak reference, owned by Shell. 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SystemTray* tray_; 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Weak reference, owned by |tray_|. 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TrayDisplay* tray_display_; 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(TrayDisplayTest); 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTrayDisplayTest::TrayDisplayTest() : tray_(NULL), tray_display_(NULL) { 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTrayDisplayTest::~TrayDisplayTest() { 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid TrayDisplayTest::SetUp() { 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ash::test::AshTestBase::SetUp(); 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_ = Shell::GetPrimaryRootWindowController()->GetSystemTray(); 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_display_ = new TrayDisplay(tray_); 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_->AddTrayItem(tray_display_); 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid TrayDisplayTest::CloseNotification() { 1193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) message_center::MessageCenter::Get()->RemoveNotification( 1203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TrayDisplay::kNotificationId, false); 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch RunAllPendingInMessageLoop(); 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool TrayDisplayTest::IsDisplayVisibleInTray() const { 125d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return tray_->HasSystemBubble() && 126d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) tray_display_->default_view() && 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_display_->default_view()->visible(); 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)base::string16 TrayDisplayTest::GetTrayDisplayText() const { 131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return tray_display_->GetDefaultViewMessage(); 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TrayDisplayTest::CheckAccessibleName() const { 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ui::AXViewState state; 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (tray_display_->GetAccessibleStateForTesting(&state)) { 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::string16 expected = tray_display_->GetDefaultViewMessage(); 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) EXPECT_EQ(expected, state.name); 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)base::string16 TrayDisplayTest::GetTrayDisplayTooltipText() const { 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!tray_display_->default_view()) 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return base::string16(); 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 tooltip; 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!tray_display_->default_view()->GetTooltipText(gfx::Point(), &tooltip)) 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return base::string16(); 149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return tooltip; 150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)base::string16 TrayDisplayTest::GetDisplayNotificationText() const { 1533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const message_center::Notification* notification = GetDisplayNotification(); 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return notification ? notification->title() : base::string16(); 1553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)base::string16 TrayDisplayTest::GetDisplayNotificationAdditionalText() const { 1583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const message_center::Notification* notification = GetDisplayNotification(); 1593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return notification ? notification->message() : base::string16(); 1603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)const message_center::Notification* TrayDisplayTest::GetDisplayNotification() 1633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const { 1643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const message_center::NotificationList::Notifications notifications = 16568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) message_center::MessageCenter::Get()->GetVisibleNotifications(); 1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) for (message_center::NotificationList::Notifications::const_iterator iter = 1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) notifications.begin(); iter != notifications.end(); ++iter) { 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if ((*iter)->id() == TrayDisplay::kNotificationId) 1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return *iter; 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return NULL; 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, NoInternalDisplay) { 176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(IsDisplayVisibleInTray()); 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 expected = l10n_util::GetStringUTF16( 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL); 185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 first_name = GetFirstDisplayName(); 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "200x200"), 189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 190a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 192eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // mirroring 193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->display_manager()->SetSoftwareMirroring(true); 194eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 195eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 196eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringUTF16( 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING_NO_INTERNAL); 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 200d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "400x400"), 201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 202a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, InternalDisplay) { 206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 208eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 209eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 210eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(IsDisplayVisibleInTray()); 212eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended 214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 expected = l10n_util::GetStringFUTF16( 216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()); 217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 219eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "200x200"), 222eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 223a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 224eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 225eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Mirroring 226eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 227eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 228eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 229eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 230eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 231eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringFUTF16( 232eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()); 233eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 234d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "400x400"), 235eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 236a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 237eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 238eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 239eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, InternalDisplayResized) { 240eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5"); 241eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 242eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 243eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 244eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Shows the tray_display even though there's a single-display. 245eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 246eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 247eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 internal_info = l10n_util::GetStringFUTF16( 248eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFirstDisplayName(), base::UTF8ToUTF16("600x600")); 250eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(internal_info, GetTrayDisplayText()); 251eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(base::string16(), GetFirstDisplayName(), "600x600", 252eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16(), std::string()), 253eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 254a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 255eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 256eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended 257eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200"); 258eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 259eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 260eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 expected = l10n_util::GetStringFUTF16( 261eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()); 262eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 263eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "600x600", 264eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "200x200"), 265eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 266a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 267eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 268eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Mirroring 269eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 270eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200"); 271eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 272eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 273eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringFUTF16( 274eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()); 275eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 276d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "600x600"), 277eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 278a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 2793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Closed lid mode. 2813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) display_manager->SetSoftwareMirroring(false); 2823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UpdateDisplay("400x400@1.5,200x200"); 2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Display::SetInternalDisplayId(ScreenUtil::GetSecondaryDisplay().id()); 2843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UpdateDisplay("400x400@1.5"); 2853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 2863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(IsDisplayVisibleInTray()); 2873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) expected = l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISPLAY_DOCKED); 2883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(expected, GetTrayDisplayText()); 2893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ( 2903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetTooltipText( 2913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) expected, GetFirstDisplayName(), "600x600", base::string16(), ""), 2923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetTrayDisplayTooltipText()); 293a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 294eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 295eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 296eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, ExternalDisplayResized) { 297eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 298eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 299eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 300eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 301eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Shows the tray_display even though there's a single-display. 302eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 303eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_FALSE(IsDisplayVisibleInTray()); 304eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 305eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended 306eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200@1.5"); 3075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Display& secondary_display = ScreenUtil::GetSecondaryDisplay(); 308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 309eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 310eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 311eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 expected = l10n_util::GetStringFUTF16( 312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, 313ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringFUTF16( 314ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 315ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetSecondDisplayName(), 3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16(secondary_display.size().ToString()))); 317eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 318eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 319eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), "300x300"), 320eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 321a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 322eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 323d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch // Mirroring 324eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 325eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200@1.5"); 326eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 327eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 328eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch expected = l10n_util::GetStringFUTF16( 3291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()); 330eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(expected, GetTrayDisplayText()); 331d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch EXPECT_EQ(GetMirroredTooltipText(expected, GetFirstDisplayName(), "400x400"), 332eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 333a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 334eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 335eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 336eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, OverscanDisplay) { 337eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,300x300/o"); 338eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 339eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 340eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 341eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 342eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(IsDisplayVisibleInTray()); 343eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 344eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // /o creates the default overscan, and if overscan is set, the annotation 345eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // should be the size. 346eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 overscan = l10n_util::GetStringUTF16( 347eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATION_OVERSCAN); 348eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::string16 headline = l10n_util::GetStringFUTF16( 349eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, 350ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringFUTF16( 351ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 3525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetSecondDisplayName(), base::UTF8ToUTF16("286x286"))); 353eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string second_data = l10n_util::GetStringFUTF8( 354eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATION, 3555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16("286x286"), overscan); 356eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(headline, GetFirstDisplayName(), "400x400", 357eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), second_data), 358eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 359eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 360eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // reset the overscan. 361eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetOverscanInsets( 3625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScreenUtil::GetSecondaryDisplay().id(), gfx::Insets()); 363eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch headline = l10n_util::GetStringFUTF16( 364eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, 365ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringFUTF16( 366ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATED_NAME, 367ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetSecondDisplayName(), overscan)); 368eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch second_data = l10n_util::GetStringFUTF8( 369eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ANNOTATION, 3705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16("300x300"), overscan); 371eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(GetTooltipText(headline, GetFirstDisplayName(), "400x400", 372eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetSecondDisplayName(), second_data), 373eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetTrayDisplayTooltipText()); 374eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 375eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 376d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)TEST_F(TrayDisplayTest, UpdateDuringDisplayConfigurationChange) { 377d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 378d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_FALSE(IsDisplayVisibleInTray()); 379d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 380d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) UpdateDisplay("400x400@1.5"); 381d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(tray()->HasSystemBubble()); 382d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(IsDisplayVisibleInTray()); 383d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) base::string16 internal_info = l10n_util::GetStringFUTF16( 384d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_ASH_STATUS_TRAY_DISPLAY_SINGLE_DISPLAY, 3855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFirstDisplayName(), base::UTF8ToUTF16("600x600")); 386d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(internal_info, GetTrayDisplayText()); 387d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(GetTooltipText(base::string16(), GetFirstDisplayName(), "600x600", 388d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) base::string16(), std::string()), 389d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) GetTrayDisplayTooltipText()); 390a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 391d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 392d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) UpdateDisplay("400x400,200x200"); 393d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(tray()->HasSystemBubble()); 394d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(IsDisplayVisibleInTray()); 395d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) base::string16 expected = l10n_util::GetStringUTF16( 396d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL); 397d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) base::string16 first_name = GetFirstDisplayName(); 398d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(expected, GetTrayDisplayText()); 399d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_EQ(GetTooltipText(expected, GetFirstDisplayName(), "400x400", 400d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) GetSecondDisplayName(), "200x200"), 401d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) GetTrayDisplayTooltipText()); 402a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CheckAccessibleName(); 403d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 404d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) UpdateDisplay("400x400@1.5"); 405d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) tray()->ShowDefaultView(BUBBLE_USE_EXISTING); 406d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 407d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Back to the default state, the display tray item should disappear. 408d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) UpdateDisplay("400x400"); 409d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_TRUE(tray()->HasSystemBubble()); 410d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) EXPECT_FALSE(IsDisplayVisibleInTray()); 411d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} 412d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 413eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F(TrayDisplayTest, DisplayNotifications) { 414eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch test::TestSystemTrayDelegate* tray_delegate = 415eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static_cast<test::TestSystemTrayDelegate*>( 416eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Shell::GetInstance()->system_tray_delegate()); 417eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch tray_delegate->set_should_show_display_notification(true); 418eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 419eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 420eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 421eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch gfx::Display::SetInternalDisplayId(display_manager->first_display_id()); 422eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetDisplayNotificationText().empty()); 423eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 424eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // rotation. 425eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400/r"); 426ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ( 427ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringFUTF16( 428ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, GetFirstDisplayName(), 429ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringUTF16( 430ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ORIENTATION_90)), 431ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetDisplayNotificationText()); 4323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 433eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 434eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 435eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 436ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ( 437ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringFUTF16( 438ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, GetFirstDisplayName(), 439ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringUTF16( 440ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_STANDARD_ORIENTATION)), 441ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetDisplayNotificationText()); 4423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 443eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 444eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // UI-scale 445eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 446eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5"); 447eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 448eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 449eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 4505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFirstDisplayName(), base::UTF8ToUTF16("600x600")), 451eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 4523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 453eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 454eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // UI-scale to 1.0 455eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 456eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 457eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 458eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 459eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 4605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFirstDisplayName(), base::UTF8ToUTF16("400x400")), 461eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 4623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 463eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 464eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // No-update 465eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 466eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400"); 467eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_TRUE(GetDisplayNotificationText().empty()); 4683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 469eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 470eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Extended. 471eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 472eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 473eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 474eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 475eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()), 476eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 4773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 478eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 479eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Mirroring. 480eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 481eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(true); 482eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 483eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 484eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 485eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_MIRRORING, GetMirroredDisplayName()), 486eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 4873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 488eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 489eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Back to extended. 490eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CloseNotification(); 491eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch display_manager->SetSoftwareMirroring(false); 492eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400,200x200"); 493eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 494eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 495eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED, GetSecondDisplayName()), 496eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 4973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 498eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 499eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Resize the first display. 500eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200"); 501eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 502eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 503eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, 5045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetFirstDisplayName(), base::UTF8ToUTF16("600x600")), 505eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 5063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 507eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Rotate the second. 509eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch UpdateDisplay("400x400@1.5,200x200/r"); 510eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ( 511eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch l10n_util::GetStringFUTF16( 512ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, 513ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch GetSecondDisplayName(), 514ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch l10n_util::GetStringUTF16( 515ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ORIENTATION_90)), 516eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetDisplayNotificationText()); 5173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_TRUE(GetDisplayNotificationAdditionalText().empty()); 5183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 5193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Enters closed lid mode. 5203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UpdateDisplay("400x400@1.5,200x200"); 5215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Display::SetInternalDisplayId(ScreenUtil::GetSecondaryDisplay().id()); 5223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UpdateDisplay("400x400@1.5"); 5233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISPLAY_DOCKED), 5243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetDisplayNotificationText()); 5253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ( 5263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISPLAY_DOCKED_DESCRIPTION), 5273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetDisplayNotificationAdditionalText()); 528eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 529eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 530ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(TrayDisplayTest, DisplayConfigurationChangedTwice) { 531ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch test::TestSystemTrayDelegate* tray_delegate = 532ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch static_cast<test::TestSystemTrayDelegate*>( 533ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch Shell::GetInstance()->system_tray_delegate()); 534ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch tray_delegate->set_should_show_display_notification(true); 535ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 536ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch UpdateDisplay("400x400,200x200"); 537ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ( 538ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringUTF16( 539ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL), 540ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetDisplayNotificationText()); 541ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 542ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // OnDisplayConfigurationChanged() may be called more than once for a single 543ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // update display in case of primary is swapped or recovered from dock mode. 544ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Should not remove the notification in such case. 545ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch tray_display()->OnDisplayConfigurationChanged(); 546ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ( 547ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch l10n_util::GetStringUTF16( 548ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_EXTENDED_NO_INTERNAL), 549ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetDisplayNotificationText()); 550ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 551ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Back to the single display. It SHOULD remove the notification since the 552ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // information is stale. 553ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch UpdateDisplay("400x400"); 554ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(GetDisplayNotificationText().empty()); 555ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 556ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 557c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben MurdochTEST_F(TrayDisplayTest, UpdateAfterSuppressDisplayNotification) { 558c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch UpdateDisplay("400x400,200x200"); 559c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 560c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch test::TestSystemTrayDelegate* tray_delegate = 561c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch static_cast<test::TestSystemTrayDelegate*>( 562c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch Shell::GetInstance()->system_tray_delegate()); 563c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch tray_delegate->set_should_show_display_notification(true); 564c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 565c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch // rotate the second. 566c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch UpdateDisplay("400x400,200x200/r"); 567c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch EXPECT_EQ( 568c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch l10n_util::GetStringFUTF16( 569c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ROTATED, 570c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch GetSecondDisplayName(), 571c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch l10n_util::GetStringUTF16( 572c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch IDS_ASH_STATUS_TRAY_DISPLAY_ORIENTATION_90)), 573c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch GetDisplayNotificationText()); 574c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch} 575c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 576eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace ash 577