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#ifndef ASH_HOST_ASH_WINDOW_TREE_HOST_X11_H_
6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define ASH_HOST_ASH_WINDOW_TREE_HOST_X11_H_
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/ash_export.h"
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/host/ash_window_tree_host.h"
10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/host/transformer_helper.h"
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/memory/scoped_ptr.h"
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/aura/env_observer.h"
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/aura/window_tree_host_x11.h"
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace ash {
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass RootWindowTransformer;
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class MouseCursorEventFilter;
18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass ASH_EXPORT AshWindowTreeHostX11 : public AshWindowTreeHost,
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                        public aura::WindowTreeHostX11,
21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                        public aura::EnvObserver {
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public:
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  explicit AshWindowTreeHostX11(const gfx::Rect& initial_bounds);
24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual ~AshWindowTreeHostX11();
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private:
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // AshWindowTreeHost:
28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void ToggleFullScreen() OVERRIDE;
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual bool ConfineCursorToRootWindow() OVERRIDE;
30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void UnConfineCursor() OVERRIDE;
31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void SetRootWindowTransformer(
32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      scoped_ptr<RootWindowTransformer> transformer) OVERRIDE;
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Insets GetHostInsets() const OVERRIDE;
34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual aura::WindowTreeHost* AsWindowTreeHost() OVERRIDE;
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void UpdateDisplayID(int64 id1, int64 id2) OVERRIDE;
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void PrepareForShutdown() OVERRIDE;
37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // aura::WindowTreehost:
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual gfx::Transform GetRootTransform() const OVERRIDE;
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void SetRootTransform(const gfx::Transform& transform) OVERRIDE;
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual gfx::Transform GetInverseRootTransform() const OVERRIDE;
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void UpdateRootWindowSize(const gfx::Size& host_size) OVERRIDE;
44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void OnCursorVisibilityChangedNative(bool show) OVERRIDE;
45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // aura::WindowTreeHostX11:
47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void OnConfigureNotify() OVERRIDE;
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool CanDispatchEvent(const ui::PlatformEvent& event) OVERRIDE;
49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void TranslateAndDispatchLocatedEvent(ui::LocatedEvent* event)
50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // EnvObserver overrides.
53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void OnWindowInitialized(aura::Window* window) OVERRIDE;
54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void OnHostInitialized(aura::WindowTreeHost* host) OVERRIDE;
55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS)
57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Set the CrOS touchpad "tap paused" property. It is used to temporarily
58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // turn off the Tap-to-click feature when the mouse pointer is invisible.
59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  void SetCrOSTapPaused(bool state);
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  scoped_ptr<XID[]> pointer_barriers_;
63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  TransformerHelper transformer_helper_;
65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // The display IDs associated with this root window.
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // In single monitor or extended mode dual monitor case, the root window
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // is associated with one display.
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // In mirror mode dual monitors case, the root window is associated with
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // both displays.
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  std::pair<int64, int64> display_ids_;
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  DISALLOW_COPY_AND_ASSIGN(AshWindowTreeHostX11);
74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch};
75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
76a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace ash
77a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
78a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif  // ASH_HOST_ASH_WINDOW_TREE_HOST_X11_H_
79