1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file.
4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/host/ash_window_tree_host.h"
6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ash/host/ash_window_tree_host_init_params.h"
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/host/root_window_transformer.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ash/host/transformer_helper.h"
10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/command_line.h"
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/aura/window_tree_host_ozone.h"
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/gfx/geometry/insets.h"
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/gfx/transform.h"
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace ash {
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace {
17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass AshWindowTreeHostOzone : public AshWindowTreeHost,
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                               public aura::WindowTreeHostOzone {
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public:
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  explicit AshWindowTreeHostOzone(const gfx::Rect& initial_bounds);
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual ~AshWindowTreeHostOzone();
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private:
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // AshWindowTreeHost:
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void ToggleFullScreen() OVERRIDE;
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool ConfineCursorToRootWindow() OVERRIDE;
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void UnConfineCursor() OVERRIDE;
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void SetRootWindowTransformer(
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      scoped_ptr<RootWindowTransformer> transformer) OVERRIDE;
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Insets GetHostInsets() const OVERRIDE;
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual aura::WindowTreeHost* AsWindowTreeHost() OVERRIDE;
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void SetRootTransform(const gfx::Transform& transform) OVERRIDE;
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Transform GetRootTransform() const OVERRIDE;
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Transform GetInverseRootTransform() const OVERRIDE;
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void UpdateRootWindowSize(const gfx::Size& host_size) OVERRIDE;
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  TransformerHelper transformer_helper_;
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  DISALLOW_COPY_AND_ASSIGN(AshWindowTreeHostOzone);
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch};
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)AshWindowTreeHostOzone::AshWindowTreeHostOzone(const gfx::Rect& initial_bounds)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    : aura::WindowTreeHostOzone(initial_bounds),
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      transformer_helper_(this) {}
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)AshWindowTreeHostOzone::~AshWindowTreeHostOzone() {}
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AshWindowTreeHostOzone::ToggleFullScreen() {
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  NOTIMPLEMENTED();
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool AshWindowTreeHostOzone::ConfineCursorToRootWindow() {
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return false;
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AshWindowTreeHostOzone::UnConfineCursor() {
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  NOTIMPLEMENTED();
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AshWindowTreeHostOzone::SetRootWindowTransformer(
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    scoped_ptr<RootWindowTransformer> transformer) {
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  transformer_helper_.SetRootWindowTransformer(transformer.Pass());
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::Insets AshWindowTreeHostOzone::GetHostInsets() const {
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return transformer_helper_.GetHostInsets();
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)aura::WindowTreeHost* AshWindowTreeHostOzone::AsWindowTreeHost() {
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return this;
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AshWindowTreeHostOzone::SetRootTransform(const gfx::Transform& transform) {
755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  transformer_helper_.SetTransform(transform);
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::Transform AshWindowTreeHostOzone::GetRootTransform() const {
79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return transformer_helper_.GetTransform();
80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::Transform AshWindowTreeHostOzone::GetInverseRootTransform() const {
83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return transformer_helper_.GetInverseTransform();
84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
86cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void AshWindowTreeHostOzone::UpdateRootWindowSize(const gfx::Size& host_size) {
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  transformer_helper_.UpdateWindowSize(host_size);
88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
90a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace
91a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)AshWindowTreeHost* AshWindowTreeHost::Create(
93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    const AshWindowTreeHostInitParams& init_params) {
94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return new AshWindowTreeHostOzone(init_params.initial_bounds);
95a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
96a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
97a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace ash
98