| Index: headless/lib/browser/headless_screen.cc
 | 
| diff --git a/headless/lib/browser/headless_screen.cc b/headless/lib/browser/headless_screen.cc
 | 
| index c8be18bfdb1804dab9c759e8c04d70a924dcdd2b..be86924d2e3fc81ed7801995640ee6e9ee0ea726 100644
 | 
| --- a/headless/lib/browser/headless_screen.cc
 | 
| +++ b/headless/lib/browser/headless_screen.cc
 | 
| @@ -12,7 +12,6 @@
 | 
|  #include "ui/aura/window_event_dispatcher.h"
 | 
|  #include "ui/aura/window_tree_host.h"
 | 
|  #include "ui/base/ime/input_method.h"
 | 
| -#include "ui/display/screen.h"
 | 
|  #include "ui/gfx/geometry/rect_conversions.h"
 | 
|  #include "ui/gfx/geometry/size_conversions.h"
 | 
|  #include "ui/gfx/native_widget_types.h"
 | 
| @@ -37,7 +36,8 @@ HeadlessScreen::~HeadlessScreen() {}
 | 
|  
 | 
|  aura::WindowTreeHost* HeadlessScreen::CreateHostForPrimaryDisplay() {
 | 
|    DCHECK(!host_);
 | 
| -  host_ = aura::WindowTreeHost::Create(gfx::Rect(display_.GetSizeInPixel()));
 | 
| +  host_ = aura::WindowTreeHost::Create(
 | 
| +      gfx::Rect(GetPrimaryDisplay().GetSizeInPixel()));
 | 
|    // Some tests don't correctly manage window focus/activation states.
 | 
|    // Makes sure InputMethod is default focused so that IME basics can work.
 | 
|    host_->GetInputMethod()->OnFocus();
 | 
| @@ -47,50 +47,59 @@ aura::WindowTreeHost* HeadlessScreen::CreateHostForPrimaryDisplay() {
 | 
|  }
 | 
|  
 | 
|  void HeadlessScreen::SetDeviceScaleFactor(float device_scale_factor) {
 | 
| -  gfx::Rect bounds_in_pixel(display_.GetSizeInPixel());
 | 
| -  display_.SetScaleAndBounds(device_scale_factor, bounds_in_pixel);
 | 
| +  display::Display display(GetPrimaryDisplay());
 | 
| +  gfx::Rect bounds_in_pixel(display.GetSizeInPixel());
 | 
| +  display.SetScaleAndBounds(device_scale_factor, bounds_in_pixel);
 | 
| +  display_list().UpdateDisplay(display);
 | 
|  }
 | 
|  
 | 
|  void HeadlessScreen::SetDisplayRotation(display::Display::Rotation rotation) {
 | 
| -  gfx::Rect bounds_in_pixel(display_.GetSizeInPixel());
 | 
| +  display::Display display(GetPrimaryDisplay());
 | 
| +  gfx::Rect bounds_in_pixel(display.GetSizeInPixel());
 | 
|    gfx::Rect new_bounds(bounds_in_pixel);
 | 
| -  if (IsRotationPortrait(rotation) != IsRotationPortrait(display_.rotation())) {
 | 
| +  if (IsRotationPortrait(rotation) != IsRotationPortrait(display.rotation())) {
 | 
|      new_bounds.set_width(bounds_in_pixel.height());
 | 
|      new_bounds.set_height(bounds_in_pixel.width());
 | 
|    }
 | 
| -  display_.set_rotation(rotation);
 | 
| -  display_.SetScaleAndBounds(display_.device_scale_factor(), new_bounds);
 | 
| +  display.set_rotation(rotation);
 | 
| +  display.SetScaleAndBounds(display.device_scale_factor(), new_bounds);
 | 
| +  display_list().UpdateDisplay(display);
 | 
|    host_->SetRootTransform(GetRotationTransform() * GetUIScaleTransform());
 | 
|  }
 | 
|  
 | 
|  void HeadlessScreen::SetUIScale(float ui_scale) {
 | 
|    ui_scale_ = ui_scale;
 | 
| -  gfx::Rect bounds_in_pixel(display_.GetSizeInPixel());
 | 
| +  display::Display display(GetPrimaryDisplay());
 | 
| +  gfx::Rect bounds_in_pixel(display.GetSizeInPixel());
 | 
|    gfx::Rect new_bounds = gfx::ToNearestRect(
 | 
|        gfx::ScaleRect(gfx::RectF(bounds_in_pixel), 1.0f / ui_scale));
 | 
| -  display_.SetScaleAndBounds(display_.device_scale_factor(), new_bounds);
 | 
| +  display.SetScaleAndBounds(display.device_scale_factor(), new_bounds);
 | 
| +  display_list().UpdateDisplay(display);
 | 
|    host_->SetRootTransform(GetRotationTransform() * GetUIScaleTransform());
 | 
|  }
 | 
|  
 | 
|  void HeadlessScreen::SetWorkAreaInsets(const gfx::Insets& insets) {
 | 
| -  display_.UpdateWorkAreaFromInsets(insets);
 | 
| +  display::Display display(GetPrimaryDisplay());
 | 
| +  display.UpdateWorkAreaFromInsets(insets);
 | 
| +  display_list().UpdateDisplay(display);
 | 
|  }
 | 
|  
 | 
|  gfx::Transform HeadlessScreen::GetRotationTransform() const {
 | 
|    gfx::Transform rotate;
 | 
| -  switch (display_.rotation()) {
 | 
| +  display::Display display(GetPrimaryDisplay());
 | 
| +  switch (display.rotation()) {
 | 
|      case display::Display::ROTATE_0:
 | 
|        break;
 | 
|      case display::Display::ROTATE_90:
 | 
| -      rotate.Translate(display_.bounds().height(), 0);
 | 
| +      rotate.Translate(display.bounds().height(), 0);
 | 
|        rotate.Rotate(90);
 | 
|        break;
 | 
|      case display::Display::ROTATE_270:
 | 
| -      rotate.Translate(0, display_.bounds().width());
 | 
| +      rotate.Translate(0, display.bounds().width());
 | 
|        rotate.Rotate(270);
 | 
|        break;
 | 
|      case display::Display::ROTATE_180:
 | 
| -      rotate.Translate(display_.bounds().width(), display_.bounds().height());
 | 
| +      rotate.Translate(display.bounds().width(), display.bounds().height());
 | 
|        rotate.Rotate(180);
 | 
|        break;
 | 
|    }
 | 
| @@ -108,8 +117,10 @@ void HeadlessScreen::OnWindowBoundsChanged(aura::Window* window,
 | 
|                                             const gfx::Rect& old_bounds,
 | 
|                                             const gfx::Rect& new_bounds) {
 | 
|    DCHECK_EQ(host_->window(), window);
 | 
| -  display_.SetSize(gfx::ScaleToFlooredSize(new_bounds.size(),
 | 
| -                                           display_.device_scale_factor()));
 | 
| +  display::Display display(GetPrimaryDisplay());
 | 
| +  display.SetSize(gfx::ScaleToFlooredSize(new_bounds.size(),
 | 
| +                                          display.device_scale_factor()));
 | 
| +  display_list().UpdateDisplay(display);
 | 
|  }
 | 
|  
 | 
|  void HeadlessScreen::OnWindowDestroying(aura::Window* window) {
 | 
| @@ -132,42 +143,17 @@ gfx::NativeWindow HeadlessScreen::GetWindowAtScreenPoint(
 | 
|    return host_->window()->GetTopWindowContainingPoint(point);
 | 
|  }
 | 
|  
 | 
| -int HeadlessScreen::GetNumDisplays() const {
 | 
| -  return 1;
 | 
| -}
 | 
| -
 | 
| -std::vector<display::Display> HeadlessScreen::GetAllDisplays() const {
 | 
| -  return std::vector<display::Display>(1, display_);
 | 
| -}
 | 
| -
 | 
|  display::Display HeadlessScreen::GetDisplayNearestWindow(
 | 
|      gfx::NativeWindow window) const {
 | 
| -  return display_;
 | 
| -}
 | 
| -
 | 
| -display::Display HeadlessScreen::GetDisplayNearestPoint(
 | 
| -    const gfx::Point& point) const {
 | 
| -  return display_;
 | 
| +  return GetPrimaryDisplay();
 | 
|  }
 | 
|  
 | 
| -display::Display HeadlessScreen::GetDisplayMatching(
 | 
| -    const gfx::Rect& match_rect) const {
 | 
| -  return display_;
 | 
| -}
 | 
| -
 | 
| -display::Display HeadlessScreen::GetPrimaryDisplay() const {
 | 
| -  return display_;
 | 
| -}
 | 
| -
 | 
| -void HeadlessScreen::AddObserver(display::DisplayObserver* observer) {}
 | 
| -
 | 
| -void HeadlessScreen::RemoveObserver(display::DisplayObserver* observer) {}
 | 
| -
 | 
|  HeadlessScreen::HeadlessScreen(const gfx::Rect& screen_bounds)
 | 
|      : host_(NULL), ui_scale_(1.0f) {
 | 
|    static int64_t synthesized_display_id = 2000;
 | 
| -  display_.set_id(synthesized_display_id++);
 | 
| -  display_.SetScaleAndBounds(1.0f, screen_bounds);
 | 
| +  display::Display display(synthesized_display_id++);
 | 
| +  display.SetScaleAndBounds(1.0f, screen_bounds);
 | 
| +  ProcessDisplayChanged(display, true /* is_primary */);
 | 
|  }
 | 
|  
 | 
|  }  // namespace headless
 | 
| 
 |