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