- add sources.
[platform/framework/web/crosswalk.git] / src / ash / display / display_change_observer_chromeos.h
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
13 namespace ash {
14 namespace internal {
15
16 struct Resolution;
17
18 // An object that observes changes in display configuration and
19 // update DisplayManagers.
20 class 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