123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // Copyright 2015 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 COMPONENTS_EXO_SURFACE_DELEGATE_H_
- #define COMPONENTS_EXO_SURFACE_DELEGATE_H_
- #include "third_party/skia/include/core/SkColor.h"
- #include "ui/gfx/geometry/point.h"
- #include "ui/gfx/geometry/size_f.h"
- namespace exo {
- class SecurityDelegate;
- class Surface;
- // Frame types that can be used to decorate a surface.
- enum class SurfaceFrameType { NONE, NORMAL, SHADOW, AUTOHIDE, OVERLAY };
- // Handles events on surfaces in context-specific ways.
- class SurfaceDelegate {
- public:
- // Called when surface was requested to commit all double-buffered state.
- virtual void OnSurfaceCommit() = 0;
- // Returns true if surface is in synchronized mode. ie. commit of
- // double-buffered state should be synchronized with parent surface.
- virtual bool IsSurfaceSynchronized() const = 0;
- // Returns true if surface should receive input events.
- virtual bool IsInputEnabled(Surface* surface) const = 0;
- // Called when surface was requested to use a specific frame type.
- virtual void OnSetFrame(SurfaceFrameType type) = 0;
- // Called when surface was requested to use a specific set of frame colors.
- virtual void OnSetFrameColors(SkColor active_color,
- SkColor inactive_color) = 0;
- // Called when a new "parent" was requested for this surface. |position|
- // is the initial position of surface relative to origin of parent.
- virtual void OnSetParent(Surface* parent, const gfx::Point& position) = 0;
- // Called when surface was requested to set a specific startup ID label.
- virtual void OnSetStartupId(const char* startup_id) = 0;
- // Called when surface was requested to set a specific application ID label.
- virtual void OnSetApplicationId(const char* application_id) = 0;
- // Whether to show/hide the shelf when fullscreen. If true, the titlebar/shelf
- // will show when the mouse moves to the top/bottom of the screen. If false
- // (plain fullscreen), the titlebar and shelf are always hidden.
- virtual void SetUseImmersiveForFullscreen(bool value) = 0;
- // Called when the surface's application wants it to be activated.
- virtual void OnActivationRequested() = 0;
- // Called when the new outoupt resource is created.
- virtual void OnNewOutputAdded() = 0;
- // Called when surface was requested to start resize.
- virtual void OnSetServerStartResize() = 0;
- // Called to show the snap preview to the primary or secondary position, or
- // to hide it.
- virtual void ShowSnapPreviewToPrimary() = 0;
- virtual void ShowSnapPreviewToSecondary() = 0;
- virtual void HideSnapPreview() = 0;
- // Called when the client was snapped to primary or secondary position, and
- // reset.
- virtual void SetSnappedToPrimary() = 0;
- virtual void SetSnappedToSecondary() = 0;
- virtual void UnsetSnap() = 0;
- // Whether the current client window can go back, as per its navigation list.
- virtual void SetCanGoBack() = 0;
- virtual void UnsetCanGoBack() = 0;
- // Called when surface was requested to enter pip.
- virtual void SetPip() = 0;
- virtual void UnsetPip() = 0;
- // Called when surface was requested to maintain an aspect ratio.
- virtual void SetAspectRatio(const gfx::SizeF& aspect_ratio) = 0;
- // Called when surface was requested to move the window to a desk at
- // |desk_index|.
- virtual void MoveToDesk(int desk_index) = 0;
- // Called when surface was requested to be visible on all workspaces.
- virtual void SetVisibleOnAllWorkspaces() = 0;
- // Called to set the initial workspace to restore a window to the
- // corresponding desk.
- virtual void SetInitialWorkspace(const char* initial_workspace) = 0;
- // Pins/locks a window to the screen so that the user cannot do anything
- // else before the mode is released. If trusted is set, it is an invocation
- // from a trusted app like a school test mode app.
- virtual void Pin(bool trusted) = 0;
- // Releases the pinned mode and allows the user to do other things again.
- virtual void Unpin() = 0;
- // Sets the system modality.
- virtual void SetSystemModal(bool modal) = 0;
- // Returns the SecurityDelegate which this surface should use to perform
- // security-sensitive operations. See go/secure-exo-ids for more information.
- virtual SecurityDelegate* GetSecurityDelegate() = 0;
- protected:
- virtual ~SurfaceDelegate() {}
- };
- } // namespace exo
- #endif // COMPONENTS_EXO_SURFACE_DELEGATE_H_
|