Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(757)

Unified Diff: services/ui/public/cpp/window.h

Issue 2651593002: mus: Remove the old client lib. (Closed)
Patch Set: restore test Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « services/ui/public/cpp/tests/window_unittest.cc ('k') | services/ui/public/cpp/window.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « services/ui/public/cpp/tests/window_unittest.cc ('k') | services/ui/public/cpp/window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698