display_change_observer_chromeos.h revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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#ifndef ASH_DISPLAY_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H
6#define ASH_DISPLAY_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H
7
8#include "ash/ash_export.h"
9#include "ash/shell_observer.h"
10#include "base/basictypes.h"
11#include "ui/display/chromeos/display_configurator.h"
12
13namespace ash {
14
15struct DisplayMode;
16
17// An object that observes changes in display configuration and
18// update DisplayManagers.
19class DisplayChangeObserver : public ui::DisplayConfigurator::StateController,
20                              public ui::DisplayConfigurator::Observer,
21                              public ShellObserver {
22 public:
23  // Returns the resolution list.
24  ASH_EXPORT static std::vector<DisplayMode> GetDisplayModeList(
25      const ui::DisplayConfigurator::DisplayState& output);
26
27  DisplayChangeObserver();
28  virtual ~DisplayChangeObserver();
29
30  // ui::DisplayConfigurator::StateController overrides:
31  virtual ui::MultipleDisplayState GetStateForDisplayIds(
32      const std::vector<int64>& outputs) const OVERRIDE;
33  virtual bool GetResolutionForDisplayId(int64 display_id,
34                                         gfx::Size* size) const OVERRIDE;
35
36  // Overriden from ui::DisplayConfigurator::Observer:
37  virtual void OnDisplayModeChanged(
38      const ui::DisplayConfigurator::DisplayStateList& outputs) OVERRIDE;
39
40  // Overriden from ShellObserver:
41  virtual void OnAppTerminating() OVERRIDE;
42
43 private:
44  DISALLOW_COPY_AND_ASSIGN(DisplayChangeObserver);
45};
46
47}  // namespace ash
48
49#endif  // ASH_DISPLAY_AURA_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H
50