| Index: services/ui/public/cpp/window.h
|
| diff --git a/services/ui/public/cpp/window.h b/services/ui/public/cpp/window.h
|
| deleted file mode 100644
|
| index 30be6c5b3584e281d121abcb85eeabdcaadd82d5..0000000000000000000000000000000000000000
|
| --- a/services/ui/public/cpp/window.h
|
| +++ /dev/null
|
| @@ -1,406 +0,0 @@
|
| -// Copyright 2014 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 SERVICES_UI_PUBLIC_CPP_WINDOW_H_
|
| -#define SERVICES_UI_PUBLIC_CPP_WINDOW_H_
|
| -
|
| -#include <stdint.h>
|
| -#include <vector>
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/macros.h"
|
| -#include "base/observer_list.h"
|
| -#include "cc/surfaces/surface_info.h"
|
| -#include "services/service_manager/public/interfaces/interface_provider.mojom.h"
|
| -#include "services/ui/common/types.h"
|
| -#include "services/ui/public/cpp/window_compositor_frame_sink.h"
|
| -#include "services/ui/public/interfaces/mus_constants.mojom.h"
|
| -#include "services/ui/public/interfaces/window_tree.mojom.h"
|
| -#include "ui/gfx/geometry/insets.h"
|
| -#include "ui/gfx/geometry/rect.h"
|
| -
|
| -namespace gpu {
|
| -class GpuMemoryBufferManager;
|
| -}
|
| -
|
| -namespace ui {
|
| -
|
| -class InputEventHandler;
|
| -class WindowCompositorFrameSinkBinding;
|
| -class WindowObserver;
|
| -class WindowDropTarget;
|
| -class WindowTreeClient;
|
| -class WindowTreeClientPrivate;
|
| -
|
| -namespace {
|
| -class OrderChangedNotifier;
|
| -}
|
| -
|
| -// Defined in window_property.h (which we do not include)
|
| -template <typename T>
|
| -struct WindowProperty;
|
| -
|
| -// Windows are owned by the WindowTreeClient. See WindowTreeClientDelegate for
|
| -// details on ownership.
|
| -//
|
| -// TODO(beng): Right now, you'll have to implement a WindowObserver to track
|
| -// destruction and NULL any pointers you have.
|
| -// Investigate some kind of smart pointer or weak pointer for these.
|
| -class Window {
|
| - public:
|
| - using Children = std::vector<Window*>;
|
| - using EmbedCallback = base::Callback<void(bool)>;
|
| - using PropertyDeallocator = void (*)(int64_t value);
|
| - using SharedProperties = std::map<std::string, std::vector<uint8_t>>;
|
| -
|
| - // Destroys this window and all its children. Destruction is allowed for
|
| - // windows that were created by this connection, or the roots. For windows
|
| - // from other connections (except the roots), Destroy() does nothing. If the
|
| - // destruction is allowed observers are notified and the Window is
|
| - // immediately deleted.
|
| - void Destroy();
|
| -
|
| - // Returns true if this client created and owns this window.
|
| - bool WasCreatedByThisClient() const;
|
| -
|
| - WindowTreeClient* window_tree() { return client_; }
|
| -
|
| - // The local_id is provided for client code. The local_id is not set or
|
| - // manipulated by mus. The default value is -1.
|
| - void set_local_id(int id) { local_id_ = id; }
|
| - int local_id() const { return local_id_; }
|
| -
|
| - int64_t display_id() const { return display_id_; }
|
| -
|
| - // Geometric disposition relative to parent window.
|
| - const gfx::Rect& bounds() const { return bounds_; }
|
| - void SetBounds(const gfx::Rect& bounds);
|
| -
|
| - // Geometric disposition relative to root window.
|
| - gfx::Rect GetBoundsInRoot() const;
|
| -
|
| - const gfx::Insets& client_area() const { return client_area_; }
|
| - const std::vector<gfx::Rect>& additional_client_areas() {
|
| - return additional_client_areas_;
|
| - }
|
| - void SetClientArea(const gfx::Insets& new_client_area) {
|
| - SetClientArea(new_client_area, std::vector<gfx::Rect>());
|
| - }
|
| - void SetClientArea(const gfx::Insets& new_client_area,
|
| - const std::vector<gfx::Rect>& additional_client_areas);
|
| -
|
| - // Mouse events outside the hit test mask do not hit the window. Returns null
|
| - // if there is no mask.
|
| - const gfx::Rect* hit_test_mask() const { return hit_test_mask_.get(); }
|
| - void SetHitTestMask(const gfx::Rect& mask_rect);
|
| - void ClearHitTestMask();
|
| -
|
| - // Visibility (also see IsDrawn()). When created windows are hidden.
|
| - bool visible() const { return visible_; }
|
| - void SetVisible(bool value);
|
| -
|
| - float opacity() const { return opacity_; }
|
| - void SetOpacity(float opacity);
|
| -
|
| - // Cursors
|
| - mojom::Cursor predefined_cursor() const { return cursor_id_; }
|
| - void SetPredefinedCursor(ui::mojom::Cursor cursor_id);
|
| -
|
| - // A Window is drawn if the Window and all its ancestors are visible and the
|
| - // Window is attached to the root.
|
| - bool IsDrawn() const;
|
| -
|
| - std::unique_ptr<WindowCompositorFrameSink> RequestCompositorFrameSink(
|
| - scoped_refptr<cc::ContextProvider> context_provider,
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager);
|
| -
|
| - void AttachCompositorFrameSink(
|
| - std::unique_ptr<WindowCompositorFrameSinkBinding>
|
| - compositor_frame_sink_binding);
|
| -
|
| - // The template-ized versions of the following methods rely on the presence
|
| - // of a mojo::TypeConverter<const std::vector<uint8_t>, T>.
|
| - // Sets a shared property on the window which is sent to the window server and
|
| - // shared with other clients that can view this window.
|
| - template <typename T>
|
| - void SetSharedProperty(const std::string& name, const T& data);
|
| - // Gets a shared property set on the window. The property must exist. Call
|
| - // HasSharedProperty() before calling.
|
| - template <typename T>
|
| - T GetSharedProperty(const std::string& name) const;
|
| - // Removes the shared property.
|
| - void ClearSharedProperty(const std::string& name);
|
| - bool HasSharedProperty(const std::string& name) const;
|
| -
|
| - // TODO(beng): Test only, should move to a helper.
|
| - const SharedProperties& shared_properties() { return properties_; }
|
| -
|
| - // Sets the |value| of the given window |property|. Setting to the default
|
| - // value (e.g., NULL) removes the property. The caller is responsible for the
|
| - // lifetime of any object set as a property on the Window.
|
| - //
|
| - // These properties are not visible to the window server.
|
| - template <typename T>
|
| - void SetLocalProperty(const WindowProperty<T>* property, T value);
|
| -
|
| - // Returns the value of the given window |property|. Returns the
|
| - // property-specific default value if the property was not previously set.
|
| - //
|
| - // These properties are only visible in the current process and are not
|
| - // shared with other mojo services.
|
| - template <typename T>
|
| - T GetLocalProperty(const WindowProperty<T>* property) const;
|
| -
|
| - // Sets the |property| to its default value. Useful for avoiding a cast when
|
| - // setting to NULL.
|
| - //
|
| - // These properties are only visible in the current process and are not
|
| - // shared with other mojo services.
|
| - template <typename T>
|
| - void ClearLocalProperty(const WindowProperty<T>* property);
|
| -
|
| - void set_input_event_handler(InputEventHandler* input_event_handler) {
|
| - input_event_handler_ = input_event_handler;
|
| - }
|
| -
|
| - // Observation.
|
| - void AddObserver(WindowObserver* observer);
|
| - void RemoveObserver(WindowObserver* observer);
|
| -
|
| - // Tree.
|
| - Window* parent() { return parent_; }
|
| - const Window* parent() const { return parent_; }
|
| -
|
| - Window* GetRoot() {
|
| - return const_cast<Window*>(const_cast<const Window*>(this)->GetRoot());
|
| - }
|
| - const Window* GetRoot() const;
|
| -
|
| - void AddChild(Window* child);
|
| - void RemoveChild(Window* child);
|
| - const Children& children() const { return children_; }
|
| -
|
| - void Reorder(Window* relative, mojom::OrderDirection direction);
|
| - void MoveToFront();
|
| - void MoveToBack();
|
| -
|
| - // Returns true if |child| is this or a descendant of this.
|
| - bool Contains(const Window* child) const;
|
| -
|
| - void AddTransientWindow(Window* transient_window);
|
| - void RemoveTransientWindow(Window* transient_window);
|
| -
|
| - // TODO(fsamuel): Figure out if we want to refactor transient window
|
| - // management into a separate class.
|
| - // Transient tree.
|
| - Window* transient_parent() { return transient_parent_; }
|
| - const Window* transient_parent() const { return transient_parent_; }
|
| - const Children& transient_children() const { return transient_children_; }
|
| -
|
| - void SetModal();
|
| - bool is_modal() const { return is_modal_; }
|
| -
|
| - Window* GetChildByLocalId(int id);
|
| -
|
| - void SetTextInputState(mojo::TextInputStatePtr state);
|
| - void SetImeVisibility(bool visible, mojo::TextInputStatePtr state);
|
| -
|
| - bool HasCapture() const;
|
| - void SetCapture();
|
| - void ReleaseCapture();
|
| -
|
| - // Focus. See WindowTreeClient::ClearFocus() to reset focus.
|
| - void SetFocus();
|
| - bool HasFocus() const;
|
| - void SetCanFocus(bool can_focus);
|
| -
|
| - // Sets whether this window accepts drags. Passing a non-null |drop_target|
|
| - // will enable acceptance of drops. Passing null will disable it.
|
| - void SetCanAcceptDrops(WindowDropTarget* drop_target);
|
| - WindowDropTarget* drop_target() { return drop_target_; }
|
| -
|
| - // Sets whether this window accepts events.
|
| - void SetCanAcceptEvents(bool can_accept_events);
|
| -
|
| - // Embedding. See window_tree.mojom for details.
|
| - void Embed(ui::mojom::WindowTreeClientPtr client, uint32_t flags = 0);
|
| -
|
| - // NOTE: callback is run synchronously if Embed() is not allowed on this
|
| - // Window.
|
| - void Embed(ui::mojom::WindowTreeClientPtr client,
|
| - const EmbedCallback& callback,
|
| - uint32_t flags = 0);
|
| -
|
| - // TODO(sky): this API is only applicable to the WindowManager. Move it
|
| - // to a better place.
|
| - void RequestClose();
|
| -
|
| - // Starts an inter-process drag and drop operation. When this finishes, will
|
| - // return the tuple [success, action_taken] to |callback|, where action_taken
|
| - // is one of the ui::mojom::kDropEffect constants in
|
| - // window_tree_constants.mojom.
|
| - void PerformDragDrop(
|
| - const std::map<std::string, std::vector<uint8_t>>& drag_data,
|
| - int drag_operation,
|
| - const gfx::Point& cursor_location,
|
| - const SkBitmap& bitmap,
|
| - const base::Callback<void(bool, uint32_t)>& callback);
|
| -
|
| - // Cancels the in progress drag started with PerformDragDrop().
|
| - void CancelDragDrop();
|
| -
|
| - // Tells the window manager to take control of moving the window. Returns
|
| - // true if the move wasn't canceled.
|
| - void PerformWindowMove(mojom::MoveLoopSource source,
|
| - const gfx::Point& cursor_location,
|
| - const base::Callback<void(bool)>& callback);
|
| -
|
| - // Tells the window manager to abort any current move initiated by
|
| - // PerformWindowMove().
|
| - void CancelWindowMove();
|
| -
|
| - // Returns an internal name, set by a client app when it creates a window.
|
| - std::string GetName() const;
|
| -
|
| - protected:
|
| - // This class is subclassed only by test classes that provide a public ctor.
|
| - Window();
|
| - ~Window();
|
| -
|
| - private:
|
| - friend class WindowPrivate;
|
| - friend class WindowTreeClient;
|
| - friend class WindowTreeClientPrivate;
|
| -
|
| - Window(WindowTreeClient* client, Id id);
|
| -
|
| - // Used to identify this Window on the server. Clients can not change this
|
| - // value.
|
| - Id server_id() const { return server_id_; }
|
| -
|
| - // Applies a shared property change locally and forwards to the server. If
|
| - // |data| is null, this property is deleted.
|
| - void SetSharedPropertyInternal(const std::string& name,
|
| - const std::vector<uint8_t>* data);
|
| - // Called by the public {Set,Get,Clear}Property functions.
|
| - int64_t SetLocalPropertyInternal(const void* key,
|
| - const char* name,
|
| - PropertyDeallocator deallocator,
|
| - int64_t value,
|
| - int64_t default_value);
|
| - int64_t GetLocalPropertyInternal(const void* key,
|
| - int64_t default_value) const;
|
| -
|
| - void LocalDestroy();
|
| - void LocalAddChild(Window* child);
|
| - void LocalRemoveChild(Window* child);
|
| - void LocalAddTransientWindow(Window* transient_window);
|
| - void LocalRemoveTransientWindow(Window* transient_window);
|
| - void LocalSetModal();
|
| - // Returns true if the order actually changed.
|
| - bool LocalReorder(Window* relative, mojom::OrderDirection direction);
|
| - void LocalSetBounds(const gfx::Rect& old_bounds, const gfx::Rect& new_bounds);
|
| - void LocalSetClientArea(
|
| - const gfx::Insets& new_client_area,
|
| - const std::vector<gfx::Rect>& additional_client_areas);
|
| - void LocalSetParentDrawn(bool drawn);
|
| - void LocalSetDisplay(int64_t display_id);
|
| - void LocalSetVisible(bool visible);
|
| - void LocalSetOpacity(float opacity);
|
| - void LocalSetPredefinedCursor(mojom::Cursor cursor_id);
|
| - void LocalSetSharedProperty(const std::string& name,
|
| - const std::vector<uint8_t>* data);
|
| - void LocalSetSurfaceInfo(const cc::SurfaceInfo& surface_info);
|
| -
|
| - // Notifies this winodw that its stacking position has changed.
|
| - void NotifyWindowStackingChanged();
|
| - // Methods implementing visibility change notifications. See WindowObserver
|
| - // for more details.
|
| - void NotifyWindowVisibilityChanged(Window* target, bool visible);
|
| - // Notifies this window's observers. Returns false if |this| was deleted
|
| - // during the call (by an observer), otherwise true.
|
| - bool NotifyWindowVisibilityChangedAtReceiver(Window* target, bool visible);
|
| - // Notifies this window and its child hierarchy. Returns false if |this| was
|
| - // deleted during the call (by an observer), otherwise true.
|
| - bool NotifyWindowVisibilityChangedDown(Window* target, bool visible);
|
| - // Notifies this window and its parent hierarchy.
|
| - void NotifyWindowVisibilityChangedUp(Window* target, bool visible);
|
| -
|
| - // Returns true if embed is allowed for this node. If embedding is allowed all
|
| - // the children are removed.
|
| - bool PrepareForEmbed();
|
| -
|
| - void RemoveTransientWindowImpl(Window* child);
|
| - static void ReorderWithoutNotification(Window* window,
|
| - Window* relative,
|
| - mojom::OrderDirection direction);
|
| - // Returns true if the order actually changed.
|
| - static bool ReorderImpl(Window* window,
|
| - Window* relative,
|
| - mojom::OrderDirection direction,
|
| - OrderChangedNotifier* notifier);
|
| -
|
| - // Returns a pointer to the stacking target that can be used by
|
| - // RestackTransientDescendants.
|
| - static Window** GetStackingTarget(Window* window);
|
| -
|
| - WindowTreeClient* client_;
|
| - Id server_id_;
|
| - int local_id_ = -1;
|
| - Window* parent_;
|
| - Children children_;
|
| -
|
| - Window* stacking_target_;
|
| - Window* transient_parent_;
|
| - Children transient_children_;
|
| -
|
| - bool is_modal_;
|
| -
|
| - base::ObserverList<WindowObserver> observers_;
|
| - InputEventHandler* input_event_handler_;
|
| -
|
| - gfx::Rect bounds_;
|
| - gfx::Insets client_area_;
|
| - std::vector<gfx::Rect> additional_client_areas_;
|
| - std::unique_ptr<gfx::Rect> hit_test_mask_;
|
| -
|
| - bool visible_;
|
| - float opacity_;
|
| - int64_t display_id_;
|
| -
|
| - // The client supplied delegate that receives drag events for this
|
| - // window (weak ptr).
|
| - WindowDropTarget* drop_target_ = nullptr;
|
| -
|
| - // Whether this window can accept events. Initialized to true to
|
| - // match ServerWindow.
|
| - bool can_accept_events_ = true;
|
| -
|
| - mojom::Cursor cursor_id_;
|
| -
|
| - SharedProperties properties_;
|
| -
|
| - // Drawn state of our parent. This is only meaningful for root Windows, in
|
| - // which the parent Window isn't exposed to the client.
|
| - bool parent_drawn_;
|
| -
|
| - // Value struct to keep the name and deallocator for this property.
|
| - // Key cannot be used for this purpose because it can be char* or
|
| - // WindowProperty<>.
|
| - struct Value {
|
| - const char* name;
|
| - int64_t value;
|
| - PropertyDeallocator deallocator;
|
| - };
|
| -
|
| - std::map<const void*, Value> prop_map_;
|
| -
|
| - cc::SurfaceInfo surface_info_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Window);
|
| -};
|
| -
|
| -} // namespace ui
|
| -
|
| -#endif // SERVICES_UI_PUBLIC_CPP_WINDOW_H_
|
|
|