1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef ASH_HOST_ASH_WINDOW_TREE_HOST_H_
6#define ASH_HOST_ASH_WINDOW_TREE_HOST_H_
7
8#include "ash/ash_export.h"
9#include "base/memory/scoped_ptr.h"
10
11namespace aura {
12class Window;
13class WindowTreeHost;
14}
15
16namespace gfx {
17class Insets;
18class Rect;
19}
20
21namespace ash {
22struct AshWindowTreeHostInitParams;
23class RootWindowTransformer;
24
25class ASH_EXPORT AshWindowTreeHost {
26 public:
27  virtual ~AshWindowTreeHost() {}
28
29  // Creates a new AshWindowTreeHost. The caller owns the returned value.
30  static AshWindowTreeHost* Create(
31      const AshWindowTreeHostInitParams& init_params);
32
33  // Toggles the host's full screen state.
34  virtual void ToggleFullScreen() = 0;
35
36  // Clips the cursor to the bounds of the root window until UnConfineCursor().
37  // We would like to be able to confine the cursor to that window. However,
38  // currently, we do not have such functionality in X. So we just confine
39  // to the root window. This is ok because this option is currently only
40  // being used in fullscreen mode, so root_window bounds = window bounds.
41  virtual bool ConfineCursorToRootWindow() = 0;
42  virtual void UnConfineCursor() = 0;
43
44  virtual void SetRootWindowTransformer(
45      scoped_ptr<RootWindowTransformer> transformer) = 0;
46
47  virtual gfx::Insets GetHostInsets() const = 0;
48
49  virtual aura::WindowTreeHost* AsWindowTreeHost() = 0;
50
51  // Updates the display IDs associated with this root window.
52  // A root window can be associated with up to 2 display IDs (e.g. in mirror
53  // mode dual monitors case). If the root window is only associated with one
54  // display id, then the other id should be set to
55  // gfx::Display::kInvalidDisplayID.
56  virtual void UpdateDisplayID(int64 id1, int64 id2) {}
57
58  // Stop listening for events in preparation for shutdown.
59  virtual void PrepareForShutdown() {}
60};
61
62}  // namespace ash
63
64#endif  // ASH_HOST_ASH_WINDOW_TREE_HOST_H_
65