| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMECAST_GRAPHICS_CAST_WINDOW_MANAGER_H_ |
| #define CHROMECAST_GRAPHICS_CAST_WINDOW_MANAGER_H_ |
| |
| #include <memory> |
| |
| #include "base/macros.h" |
| #include "ui/gfx/native_widget_types.h" |
| |
| namespace ui { |
| class Event; |
| } // namespace ui |
| |
| namespace chromecast { |
| |
| class CastTouchActivityObserver; |
| class CastGestureHandler; |
| |
| // Chromecast's window-manager interface. |
| // This declares the interface to add top-level windows to the Chromecast |
| // platform window. It is owned by the UI thread, and generally one instance |
| // should exist per platform root window (e.g., in Ozone, one per Ozone window). |
| class CastWindowManager { |
| public: |
| // Note: these window IDs are ordered by z-order. |
| enum WindowId { |
| BOTTOM = -1, |
| // Base layer for WebUiManager and apps and activities managed by it. |
| APP = BOTTOM, |
| // Apps running in this layer won't be managed by WebUiManager. |
| UNMANAGED_APP, |
| DEBUG_OVERLAY, |
| INFO_OVERLAY, |
| SOFT_KEYBOARD, |
| VOLUME, |
| MEDIA_INFO, |
| SETTINGS, |
| BOOT_ANIMATION_OVERLAY, |
| CORNERS_OVERLAY, |
| TOP = CORNERS_OVERLAY |
| }; |
| |
| virtual ~CastWindowManager() {} |
| |
| // Remove all windows and release all graphics resources. |
| // Can be called multiple times. |
| virtual void TearDown() = 0; |
| |
| // Adds a window to the window manager. |
| // This doesn't necessarily make the window visible. |
| // If the window manager hasn't been initialized, this has the side effect of |
| // causing it to initialize. |
| virtual void AddWindow(gfx::NativeView window) = 0; |
| |
| // Sets a window's ID. |
| virtual void SetWindowId(gfx::NativeView window, WindowId window_id) = 0; |
| |
| // Return the root window that holds all top-level windows. |
| virtual gfx::NativeView GetRootWindow() = 0; |
| |
| // Inject a UI event into the Cast window. |
| virtual void InjectEvent(ui::Event* event) = 0; |
| |
| // Register a new handler for system gesture events. |
| virtual void AddGestureHandler(CastGestureHandler* handler) = 0; |
| |
| // Remove the registration of a system gesture events handler. |
| virtual void RemoveGestureHandler(CastGestureHandler* handler) = 0; |
| |
| // Enable/disable the handling of all touch events. |
| virtual void SetTouchInputDisabled(bool disabled) = 0; |
| |
| // Add an observer for when input events occur while touch input is disabled. |
| virtual void AddTouchActivityObserver( |
| CastTouchActivityObserver* observer) = 0; |
| |
| // Remove an observer for when input events occur while touch input is |
| // disabled. |
| virtual void RemoveTouchActivityObserver( |
| CastTouchActivityObserver* observer) = 0; |
| }; |
| |
| } // namespace chromecast |
| |
| #endif // CHROMECAST_GRAPHICS_CAST_WINDOW_MANAGER_H_ |