| Index: ui/aura/window_tree_host.cc
 | 
| diff --git a/ui/aura/window_tree_host.cc b/ui/aura/window_tree_host.cc
 | 
| index 9c3cf1244dc4d5d5afeca737ed871deed796c651..4b69b08c76f5fde8cdf775d0b06b04c3822d2ef0 100644
 | 
| --- a/ui/aura/window_tree_host.cc
 | 
| +++ b/ui/aura/window_tree_host.cc
 | 
| @@ -8,7 +8,6 @@
 | 
|  #include "ui/aura/client/capture_client.h"
 | 
|  #include "ui/aura/client/cursor_client.h"
 | 
|  #include "ui/aura/env.h"
 | 
| -#include "ui/aura/root_window_transformer.h"
 | 
|  #include "ui/aura/window.h"
 | 
|  #include "ui/aura/window_event_dispatcher.h"
 | 
|  #include "ui/aura/window_targeter.h"
 | 
| @@ -36,47 +35,6 @@ float GetDeviceScaleFactorFromDisplay(Window* window) {
 | 
|    return display.device_scale_factor();
 | 
|  }
 | 
|  
 | 
| -class SimpleRootWindowTransformer : public RootWindowTransformer {
 | 
| - public:
 | 
| -  SimpleRootWindowTransformer(const Window* root_window,
 | 
| -                              const gfx::Transform& transform)
 | 
| -      : root_window_(root_window),
 | 
| -        transform_(transform) {
 | 
| -  }
 | 
| -
 | 
| -  // RootWindowTransformer overrides:
 | 
| -  virtual gfx::Transform GetTransform() const OVERRIDE {
 | 
| -    return transform_;
 | 
| -  }
 | 
| -
 | 
| -  virtual gfx::Transform GetInverseTransform() const OVERRIDE {
 | 
| -    gfx::Transform invert;
 | 
| -    if (!transform_.GetInverse(&invert))
 | 
| -      return transform_;
 | 
| -    return invert;
 | 
| -  }
 | 
| -
 | 
| -  virtual gfx::Rect GetRootWindowBounds(
 | 
| -      const gfx::Size& host_size) const OVERRIDE {
 | 
| -    gfx::Rect bounds(host_size);
 | 
| -    gfx::RectF new_bounds(ui::ConvertRectToDIP(root_window_->layer(), bounds));
 | 
| -    transform_.TransformRect(&new_bounds);
 | 
| -    return gfx::Rect(gfx::ToFlooredSize(new_bounds.size()));
 | 
| -  }
 | 
| -
 | 
| -  virtual gfx::Insets GetHostInsets() const OVERRIDE {
 | 
| -    return gfx::Insets();
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  virtual ~SimpleRootWindowTransformer() {}
 | 
| -
 | 
| -  const Window* root_window_;
 | 
| -  const gfx::Transform transform_;
 | 
| -
 | 
| -  DISALLOW_COPY_AND_ASSIGN(SimpleRootWindowTransformer);
 | 
| -};
 | 
| -
 | 
|  ////////////////////////////////////////////////////////////////////////////////
 | 
|  // WindowTreeHost, public:
 | 
|  
 | 
| @@ -113,8 +71,6 @@ void WindowTreeHost::InitCompositor() {
 | 
|    compositor_->SetScaleAndSize(GetDeviceScaleFactorFromDisplay(window()),
 | 
|                                 GetBounds().size());
 | 
|    compositor_->SetRootLayer(window()->layer());
 | 
| -  transformer_.reset(
 | 
| -      new SimpleRootWindowTransformer(window(), gfx::Transform()));
 | 
|  }
 | 
|  
 | 
|  void WindowTreeHost::AddObserver(WindowTreeHostObserver* observer) {
 | 
| @@ -129,40 +85,32 @@ ui::EventProcessor* WindowTreeHost::event_processor() {
 | 
|    return dispatcher();
 | 
|  }
 | 
|  
 | 
| -void WindowTreeHost::SetRootWindowTransformer(
 | 
| -    scoped_ptr<RootWindowTransformer> transformer) {
 | 
| -  transformer_ = transformer.Pass();
 | 
| -  SetInsets(transformer_->GetHostInsets());
 | 
| -  window()->SetTransform(transformer_->GetTransform());
 | 
| -  // If the layer is not animating, then we need to update the root window
 | 
| -  // size immediately.
 | 
| -  if (!window()->layer()->GetAnimator()->is_animating())
 | 
| -    UpdateRootWindowSize(GetBounds().size());
 | 
| -}
 | 
| -
 | 
|  gfx::Transform WindowTreeHost::GetRootTransform() const {
 | 
|    float scale = ui::GetDeviceScaleFactor(window()->layer());
 | 
|    gfx::Transform transform;
 | 
|    transform.Scale(scale, scale);
 | 
| -  transform *= transformer_->GetTransform();
 | 
| +  transform *= window()->layer()->transform();
 | 
|    return transform;
 | 
|  }
 | 
|  
 | 
|  void WindowTreeHost::SetTransform(const gfx::Transform& transform) {
 | 
| -  scoped_ptr<RootWindowTransformer> transformer(
 | 
| -      new SimpleRootWindowTransformer(window(), transform));
 | 
| -  SetRootWindowTransformer(transformer.Pass());
 | 
| +  window()->SetTransform(transform);
 | 
| +  UpdateRootWindowSize(GetBounds().size());
 | 
|  }
 | 
|  
 | 
|  gfx::Transform WindowTreeHost::GetInverseRootTransform() const {
 | 
| -  float scale = ui::GetDeviceScaleFactor(window()->layer());
 | 
| -  gfx::Transform transform;
 | 
| -  transform.Scale(1.0f / scale, 1.0f / scale);
 | 
| -  return transformer_->GetInverseTransform() * transform;
 | 
| +  gfx::Transform invert;
 | 
| +  gfx::Transform transform = GetRootTransform();
 | 
| +  if (!transform.GetInverse(&invert))
 | 
| +    return transform;
 | 
| +  return invert;
 | 
|  }
 | 
|  
 | 
|  void WindowTreeHost::UpdateRootWindowSize(const gfx::Size& host_size) {
 | 
| -  window()->SetBounds(transformer_->GetRootWindowBounds(host_size));
 | 
| +  gfx::Rect bounds(host_size);
 | 
| +  gfx::RectF new_bounds(ui::ConvertRectToDIP(window()->layer(), bounds));
 | 
| +  GetRootTransform().TransformRect(&new_bounds);
 | 
| +  window()->SetBounds(gfx::Rect(gfx::ToFlooredSize(new_bounds.size())));
 | 
|  }
 | 
|  
 | 
|  void WindowTreeHost::ConvertPointToNativeScreen(gfx::Point* point) const {
 | 
| 
 |