| Index: ash/display/display_info.h | 
| diff --git a/ash/display/display_info.h b/ash/display/display_info.h | 
| index 94adf1d529ef3301451e0a3d906db355fde9cf94..87ab34396899e22c42b55e5f0910f3f9c5160095 100644 | 
| --- a/ash/display/display_info.h | 
| +++ b/ash/display/display_info.h | 
| @@ -25,14 +25,29 @@ namespace internal { | 
| // This class is intentionally made copiable. | 
| class ASH_EXPORT DisplayInfo { | 
| public: | 
| +  // Screen Rotation in clock-wise degrees. | 
| +  // TODO(oshima): move his to gfx::Display. | 
| +  enum Rotation { | 
| +    Rotate0 = 0, | 
| +    Rotate90, | 
| +    Rotate180, | 
| +    Rotate270, | 
| +  }; | 
| + | 
| // Creates a DisplayInfo from string spec. 100+200-1440x800 creates display | 
| -  // whose size is 1440x800 at the location (100, 200) in screen's coordinates. | 
| +  // whose size is 1440x800 at the location (100, 200) in host coordinates. | 
| // The location can be omitted and be just "1440x800", which creates | 
| // display at the origin of the screen. An empty string creates | 
| // the display with default size. | 
| //  The device scale factor can be specified by "*", like "1280x780*2", | 
| // or will use the value of |gfx::Display::GetForcedDeviceScaleFactor()| if | 
| // --force-device-scale-factor is specified. | 
| +  // Additiona properties can be specified followed by "/". 'o' adds | 
| +  // default overscan insets (5%). 'r','l','b' rotates the display 90 | 
| +  // (to 'r'ight), 180 ('u'pside-down) and 270 degrees (to 'l'eft) respectively. | 
| +  // For example, "1280x780*2/ob" creates a display_info whose native resolution | 
| +  // is 1280x780 with 2.0 scale factor, with default overscan insets, and | 
| +  // is flipped upside-down. | 
| static DisplayInfo CreateFromSpec(const std::string& spec); | 
|  | 
| // Creates a DisplayInfo from string spec using given |id|. | 
| @@ -51,21 +66,23 @@ class ASH_EXPORT DisplayInfo { | 
| // True if the display has overscan. | 
| bool has_overscan() const { return has_overscan_; } | 
|  | 
| +  void set_rotation(Rotation rotation) { rotation_ = rotation; } | 
| +  Rotation rotation() const { return rotation_; } | 
| + | 
| // Gets/Sets the device scale factor of the display. | 
| float device_scale_factor() const { return device_scale_factor_; } | 
| void set_device_scale_factor(float scale) { device_scale_factor_ = scale; } | 
|  | 
| -  // The original bounds_in_pixel for the display.  This can be different from | 
| -  // the |bounds_in_pixel| in case of overscan insets. | 
| -  const gfx::Rect original_bounds_in_pixel() const { | 
| -    return original_bounds_in_pixel_; | 
| +  // The bounds_in_pixel for the display. The size of this can be different from | 
| +  // the |size_in_pixel| in case of overscan insets. | 
| +  const gfx::Rect bounds_in_pixel() const { | 
| +    return bounds_in_pixel_; | 
| } | 
|  | 
| -  // The bounds for the display in pixels. | 
| -  const gfx::Rect bounds_in_pixel() const { return bounds_in_pixel_; } | 
| +  // The size for the display in pixels. | 
| +  const gfx::Size& size_in_pixel() const { return size_in_pixel_; } | 
|  | 
| -  // The overscan insets for the display in DIP. The default value is | 
| -  // (-1, -1, -1, -1), which indicates that no overscan should be applied. | 
| +  // The overscan insets for the display in DIP. | 
| const gfx::Insets& overscan_insets_in_dip() const { | 
| return overscan_insets_in_dip_; | 
| } | 
| @@ -74,29 +91,26 @@ class ASH_EXPORT DisplayInfo { | 
| // (|has_custom_overscan_insets_| and |custom_overscan_insets_in_dip_|). | 
| void CopyFromNative(const DisplayInfo& native_info); | 
|  | 
| -  // Set the |original_bounds_in_pixel| and |bounds_in_pixel| to | 
| -  // given |bounds|. | 
| +  // Update the |bounds_in_pixel_| and |size_in_pixel_| using | 
| +  // given |bounds_in_pixel|. | 
| void SetBounds(const gfx::Rect& bounds_in_pixel); | 
|  | 
| -  // Sets the |bounds_in_pixel| and updates original bounds based on | 
| -  // current overscan configuration. | 
| -  void UpdateBounds(const gfx::Rect& bounds_in_pixel); | 
| - | 
| // Update the |bounds_in_pixel| according to the current overscan | 
| -  // settings. | 
| -  // 1) If can_overscan is false, then |bounds_in_pixel| is equal to | 
| -  //    |original_bounds_in_pixel|. | 
| -  // 2) If this has custom overscan insets | 
| +  // and rotation settings. | 
| +  // 1) If this has custom overscan insets | 
| //    (i.e. |has_custom_overscan_insets_| is true), it simply applies | 
| //    the existing |overscan_insets_in_dip_|. | 
| -  // 3) If this doesn't have custom overscan insets, then this updates | 
| +  // 2) If this doesn't have custom overscan insets but the display claims | 
| +  //    that it has overscan (|has_overscan_| is true), then updates | 
| //    |overscan_insets_in_dip_| to default value (5% of the display size) | 
| //    and apply the insets. | 
| -  void UpdateOverscanInfo(bool can_overscan); | 
| +  // 3) Otherwise, clear the overscan insets. | 
| +  void UpdateDisplaySize(); | 
|  | 
| // Sets/Clears the overscan insets. | 
| void SetOverscanInsets(bool custom, | 
| const gfx::Insets& insets_in_dip); | 
| +  gfx::Insets GetOverscanInsetsInPixel() const; | 
| void clear_has_custom_overscan_insets() { | 
| has_custom_overscan_insets_ = false; | 
| } | 
| @@ -114,9 +128,12 @@ class ASH_EXPORT DisplayInfo { | 
| int64 id_; | 
| std::string name_; | 
| bool has_overscan_; | 
| +  Rotation rotation_; | 
| float device_scale_factor_; | 
| -  gfx::Rect original_bounds_in_pixel_; | 
| gfx::Rect bounds_in_pixel_; | 
| +  // The size of the display in use. The size can be different from the size | 
| +  // of |bounds_in_pixel_| if the display has overscan insets and/or rotation. | 
| +  gfx::Size size_in_pixel_; | 
| gfx::Insets overscan_insets_in_dip_; | 
|  | 
| // True if the |overscan_insets_in_dip| is specified by a user. This | 
|  |