1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ash/display/display_error_observer_chromeos.h" 6 7#include "ash/shell.h" 8#include "ash/test/ash_test_base.h" 9#include "grit/ash_strings.h" 10#include "ui/aura/window.h" 11#include "ui/base/l10n/l10n_util.h" 12#include "ui/views/controls/label.h" 13#include "ui/views/view.h" 14#include "ui/views/widget/widget.h" 15 16namespace ash { 17 18class DisplayErrorObserverTest : public test::AshTestBase { 19 protected: 20 DisplayErrorObserverTest() { 21 } 22 23 virtual ~DisplayErrorObserverTest() { 24 } 25 26 virtual void SetUp() OVERRIDE { 27 test::AshTestBase::SetUp(); 28 observer_.reset(new DisplayErrorObserver()); 29 } 30 31 protected: 32 DisplayErrorObserver* observer() { return observer_.get(); } 33 34 base::string16 GetMessageContents() { 35 return observer_->GetTitleOfDisplayErrorNotificationForTest(); 36 } 37 38 private: 39 scoped_ptr<DisplayErrorObserver> observer_; 40 41 DISALLOW_COPY_AND_ASSIGN(DisplayErrorObserverTest); 42}; 43 44TEST_F(DisplayErrorObserverTest, Normal) { 45 if (!SupportsMultipleDisplays()) 46 return; 47 48 UpdateDisplay("200x200,300x300"); 49 observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 50 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING), 51 GetMessageContents()); 52} 53 54TEST_F(DisplayErrorObserverTest, CallTwice) { 55 if (!SupportsMultipleDisplays()) 56 return; 57 58 UpdateDisplay("200x200,300x300"); 59 observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 60 base::string16 message = GetMessageContents(); 61 EXPECT_FALSE(message.empty()); 62 63 observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 64 base::string16 message2 = GetMessageContents(); 65 EXPECT_FALSE(message2.empty()); 66 EXPECT_EQ(message, message2); 67} 68 69TEST_F(DisplayErrorObserverTest, CallWithDifferentState) { 70 if (!SupportsMultipleDisplays()) 71 return; 72 73 UpdateDisplay("200x200,300x300"); 74 observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 75 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING), 76 GetMessageContents()); 77 78 observer()->OnDisplayModeChangeFailed( 79 ui::MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED); 80 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_NON_MIRRORING), 81 GetMessageContents()); 82} 83 84} // namespace ash 85