15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Copyright 2013 The Chromium Authors. All rights reserved. 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Use of this source code is governed by a BSD-style license that can be 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// found in the LICENSE file. 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner#ifndef ASH_DISPLAY_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner#define ASH_DISPLAY_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "ash/ash_export.h" 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "ash/shell_observer.h" 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "base/basictypes.h" 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "ui/display/chromeos/display_configurator.h" 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "ui/events/input_device_event_observer.h" 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencernamespace ash { 155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerclass DisplayInfo; 1730a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruthstruct DisplayMode; 1830a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth 19d7a3e2c5f61cd4893f95b69a424fe4def3aa0f69Benjamin Kramer// An object that observes changes in display configuration and 208b5b4099c61a136e9a1714c4d8a593febe942268Sebastian Redl// update DisplayManagers. 211734317845d60307d474b5da8a8d33adbaf5e723Douglas Gregorclass DisplayChangeObserver : public ui::DisplayConfigurator::StateController, 2230a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth public ui::DisplayConfigurator::Observer, 230b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor public ui::InputDeviceEventObserver, 24d7a3e2c5f61cd4893f95b69a424fe4def3aa0f69Benjamin Kramer public ShellObserver { 2582bfa19fe3be324b13fdbcda46304b52c500f0d4Aaron Ballman public: 2630a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth // Returns the mode list for internal display. 27fb22d96692c5240fb8d611290dbf7eeed3759c73Steve Naroff ASH_EXPORT static std::vector<DisplayMode> GetInternalDisplayModeList( 285cf243a883872441d73ca49cea7e20de5802629bChris Lattner const DisplayInfo& display_info, 29cded4f649cd4b7ba7d461c25c6482ef52b8d3a2aDouglas Gregor const ui::DisplayConfigurator::DisplayState& output); 305cf243a883872441d73ca49cea7e20de5802629bChris Lattner 311734317845d60307d474b5da8a8d33adbaf5e723Douglas Gregor // Returns the resolution list. 327ad5c996e9519ed4e9afd1f0166be1cd2be8415aArgyrios Kyrtzidis ASH_EXPORT static std::vector<DisplayMode> GetExternalDisplayModeList( 3330a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth const ui::DisplayConfigurator::DisplayState& output); 3430a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth 357532dc66648cfe7432c9fe66dec5225f0ab301c6Douglas Gregor DisplayChangeObserver(); 366b304a0254a13f42390b865ff5ba668a49cc58aeJohn McCall virtual ~DisplayChangeObserver(); 376b304a0254a13f42390b865ff5ba668a49cc58aeJohn McCall 38f7616b9067790757f4e12e834b216c53c8c04ebeDouglas Gregor // ui::DisplayConfigurator::StateController overrides: 396b304a0254a13f42390b865ff5ba668a49cc58aeJohn McCall virtual ui::MultipleDisplayState GetStateForDisplayIds( 406b304a0254a13f42390b865ff5ba668a49cc58aeJohn McCall const std::vector<int64>& outputs) const OVERRIDE; 41aed1df80bf64228e1429c1edc408397f9174847cChris Lattner virtual bool GetResolutionForDisplayId(int64 display_id, 42aed1df80bf64228e1429c1edc408397f9174847cChris Lattner gfx::Size* size) const OVERRIDE; 43aed1df80bf64228e1429c1edc408397f9174847cChris Lattner 446b304a0254a13f42390b865ff5ba668a49cc58aeJohn McCall // Overriden from ui::DisplayConfigurator::Observer: 455f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer virtual void OnDisplayModeChanged( 464e7072872e8e2ed76a4c6933424bffa253896e7eChris Lattner const ui::DisplayConfigurator::DisplayStateList& outputs) OVERRIDE; 474e7072872e8e2ed76a4c6933424bffa253896e7eChris Lattner 48daae940507f2e93c6fa12e8062fa958e34cc2d1cChris Lattner // Overriden from ui::InputDeviceEventObserver: 49bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner virtual void OnInputDeviceConfigurationChanged() OVERRIDE; 50bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner 51bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner // Overriden from ShellObserver: 52bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner virtual void OnAppTerminating() OVERRIDE; 53bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner 54bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner // Exposed for testing. 55bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner ASH_EXPORT static float FindDeviceScaleFactor(float dpi); 566b304a0254a13f42390b865ff5ba668a49cc58aeJohn McCall 57bfadf55ba5b736b13cc3e0fbc2b184569bc9f304Chris Lattner private: 580953e767ff7817f97b3ab20896b229891eeff45bJohn McCall DISALLOW_COPY_AND_ASSIGN(DisplayChangeObserver); 590953e767ff7817f97b3ab20896b229891eeff45bJohn McCall}; 600953e767ff7817f97b3ab20896b229891eeff45bJohn McCall 610953e767ff7817f97b3ab20896b229891eeff45bJohn McCall} // namespace ash 620953e767ff7817f97b3ab20896b229891eeff45bJohn McCall 630953e767ff7817f97b3ab20896b229891eeff45bJohn McCall#endif // ASH_DISPLAY_AURA_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H 640953e767ff7817f97b3ab20896b229891eeff45bJohn McCall