17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ash/display/display_error_observer_chromeos.h" 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ash/shell.h" 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ash/test/ash_test_base.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "grit/ash_strings.h" 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/aura/window.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/base/l10n/l10n_util.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/views/controls/label.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/views/view.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/views/widget/widget.h" 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace ash { 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass DisplayErrorObserverTest : public test::AshTestBase { 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch protected: 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayErrorObserverTest() { 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual ~DisplayErrorObserverTest() { 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void SetUp() OVERRIDE { 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch test::AshTestBase::SetUp(); 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch observer_.reset(new DisplayErrorObserver()); 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch protected: 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayErrorObserver* observer() { return observer_.get(); } 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::string16 GetMessageContents() { 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return observer_->GetTitleOfDisplayErrorNotificationForTest(); 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<DisplayErrorObserver> observer_; 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DisplayErrorObserverTest); 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(DisplayErrorObserverTest, Normal) { 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (!SupportsMultipleDisplays()) 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return; 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch UpdateDisplay("200x200,300x300"); 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING), 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetMessageContents()); 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(DisplayErrorObserverTest, CallTwice) { 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (!SupportsMultipleDisplays()) 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return; 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch UpdateDisplay("200x200,300x300"); 59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::string16 message = GetMessageContents(); 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(message.empty()); 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::string16 message2 = GetMessageContents(); 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(message2.empty()); 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(message, message2); 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 697dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(DisplayErrorObserverTest, CallWithDifferentState) { 707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (!SupportsMultipleDisplays()) 717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return; 727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch UpdateDisplay("200x200,300x300"); 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch observer()->OnDisplayModeChangeFailed(ui::MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_MIRRORING), 767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetMessageContents()); 777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 78c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch observer()->OnDisplayModeChangeFailed( 79c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ui::MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED); 807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(l10n_util::GetStringUTF16(IDS_ASH_DISPLAY_FAILURE_ON_NON_MIRRORING), 817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetMessageContents()); 827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace ash 85