display_change_observer_chromeos.h revision 3551c9c881056c480085172ff9840cab31610854
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 "chromeos/display/output_configurator.h"
12
13namespace ash {
14namespace internal {
15
16struct Resolution;
17
18// An object that observes changes in display configuration and
19// update DisplayManagers.
20class DisplayChangeObserver
21    : public chromeos::OutputConfigurator::StateController,
22      public chromeos::OutputConfigurator::Observer,
23      public ShellObserver {
24 public:
25  // Returns true if the size info in the output_info isn't valid
26  // and should be ignored. This is exposed for testing.
27  // |mm_width| and |mm_height| are given in millimeters.
28  ASH_EXPORT static bool ShouldIgnoreSize(unsigned long mm_width,
29                                          unsigned long mm_height);
30
31  // Returns the resolution list.
32  ASH_EXPORT static std::vector<Resolution> GetResolutionList(
33      const chromeos::OutputConfigurator::OutputSnapshot& output);
34
35  DisplayChangeObserver();
36  virtual ~DisplayChangeObserver();
37
38  // chromeos::OutputConfigurator::StateController overrides:
39  virtual chromeos::OutputState GetStateForDisplayIds(
40      const std::vector<int64>& outputs) const OVERRIDE;
41  virtual bool GetResolutionForDisplayId(int64 display_id,
42                                         int* width,
43                                         int* height) const OVERRIDE;
44
45  // Overriden from chromeos::OutputConfigurator::Observer:
46  virtual void OnDisplayModeChanged(
47      const std::vector<chromeos::OutputConfigurator::OutputSnapshot>& outputs)
48      OVERRIDE;
49
50  // Overriden from ShellObserver:
51  virtual void OnAppTerminating() OVERRIDE;
52
53 private:
54  DISALLOW_COPY_AND_ASSIGN(DisplayChangeObserver);
55};
56
57}  // namespace internal
58}  // namespace ash
59
60#endif  // ASH_DISPLAY_AURA_DISPLAY_CHANGE_OBSERVER_CHROMEOS_H
61