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