| Index: components/mus/ws/test_utils.h
|
| diff --git a/components/mus/ws/test_utils.h b/components/mus/ws/test_utils.h
|
| deleted file mode 100644
|
| index ede927722ecff2659c8b5f49fd4c190b134d7d17..0000000000000000000000000000000000000000
|
| --- a/components/mus/ws/test_utils.h
|
| +++ /dev/null
|
| @@ -1,537 +0,0 @@
|
| -// Copyright 2016 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_MUS_WS_TEST_UTILS_H_
|
| -#define COMPONENTS_MUS_WS_TEST_UTILS_H_
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include <vector>
|
| -
|
| -#include "components/mus/public/interfaces/display.mojom.h"
|
| -#include "components/mus/public/interfaces/window_tree.mojom.h"
|
| -#include "components/mus/ws/display.h"
|
| -#include "components/mus/ws/display_binding.h"
|
| -#include "components/mus/ws/event_dispatcher.h"
|
| -#include "components/mus/ws/platform_display.h"
|
| -#include "components/mus/ws/platform_display_factory.h"
|
| -#include "components/mus/ws/test_change_tracker.h"
|
| -#include "components/mus/ws/user_activity_monitor.h"
|
| -#include "components/mus/ws/user_display_manager.h"
|
| -#include "components/mus/ws/user_id.h"
|
| -#include "components/mus/ws/window_manager_state.h"
|
| -#include "components/mus/ws/window_manager_window_tree_factory_set.h"
|
| -#include "components/mus/ws/window_server_delegate.h"
|
| -#include "components/mus/ws/window_tree.h"
|
| -#include "components/mus/ws/window_tree_binding.h"
|
| -
|
| -namespace mus {
|
| -namespace ws {
|
| -namespace test {
|
| -
|
| -// Collection of utilities useful in creating mus tests.
|
| -
|
| -class WindowManagerWindowTreeFactorySetTestApi {
|
| - public:
|
| - explicit WindowManagerWindowTreeFactorySetTestApi(
|
| - WindowManagerWindowTreeFactorySet*
|
| - window_manager_window_tree_factory_set);
|
| - ~WindowManagerWindowTreeFactorySetTestApi();
|
| -
|
| - void Add(const UserId& user_id);
|
| -
|
| - private:
|
| - WindowManagerWindowTreeFactorySet* window_manager_window_tree_factory_set_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowManagerWindowTreeFactorySetTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class UserDisplayManagerTestApi {
|
| - public:
|
| - explicit UserDisplayManagerTestApi(UserDisplayManager* udm) : udm_(udm) {}
|
| - ~UserDisplayManagerTestApi() {}
|
| -
|
| - void SetTestObserver(mojom::DisplayManagerObserver* observer) {
|
| - udm_->test_observer_ = observer;
|
| - if (observer)
|
| - udm_->OnObserverAdded(observer);
|
| - }
|
| -
|
| - private:
|
| - UserDisplayManager* udm_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(UserDisplayManagerTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class UserActivityMonitorTestApi {
|
| - public:
|
| - explicit UserActivityMonitorTestApi(UserActivityMonitor* monitor)
|
| - : monitor_(monitor) {}
|
| -
|
| - void SetTimerTaskRunner(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
|
| - monitor_->idle_timer_.SetTaskRunner(task_runner);
|
| - }
|
| -
|
| - private:
|
| - UserActivityMonitor* monitor_;
|
| - DISALLOW_COPY_AND_ASSIGN(UserActivityMonitorTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class WindowTreeTestApi {
|
| - public:
|
| - explicit WindowTreeTestApi(WindowTree* tree);
|
| - ~WindowTreeTestApi();
|
| -
|
| - void set_user_id(const UserId& user_id) { tree_->user_id_ = user_id; }
|
| - void set_window_manager_internal(mojom::WindowManager* wm_internal) {
|
| - tree_->window_manager_internal_ = wm_internal;
|
| - }
|
| - void AckOldestEvent() {
|
| - tree_->OnWindowInputEventAck(tree_->event_ack_id_,
|
| - mojom::EventResult::UNHANDLED);
|
| - }
|
| - void EnableCapture() { tree_->event_ack_id_ = 1u; }
|
| - void AckLastEvent(mojom::EventResult result) {
|
| - tree_->OnWindowInputEventAck(tree_->event_ack_id_, result);
|
| - }
|
| -
|
| - void SetEventObserver(mojom::EventMatcherPtr matcher,
|
| - uint32_t event_observer_id);
|
| -
|
| - private:
|
| - WindowTree* tree_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowTreeTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class DisplayTestApi {
|
| - public:
|
| - explicit DisplayTestApi(Display* display);
|
| - ~DisplayTestApi();
|
| -
|
| - void OnEvent(const ui::Event& event) { display_->OnEvent(event); }
|
| -
|
| - private:
|
| - Display* display_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DisplayTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class EventDispatcherTestApi {
|
| - public:
|
| - explicit EventDispatcherTestApi(EventDispatcher* ed) : ed_(ed) {}
|
| - ~EventDispatcherTestApi() {}
|
| -
|
| - bool AreAnyPointersDown() const { return ed_->AreAnyPointersDown(); }
|
| - bool is_mouse_button_down() const { return ed_->mouse_button_down_; }
|
| - bool IsWindowPointerTarget(const ServerWindow* window) const;
|
| - int NumberPointerTargetsForWindow(ServerWindow* window);
|
| - ModalWindowController* modal_window_controller() const {
|
| - return &ed_->modal_window_controller_;
|
| - }
|
| - ServerWindow* capture_window() { return ed_->capture_window_; }
|
| -
|
| - private:
|
| - EventDispatcher* ed_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(EventDispatcherTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class ModalWindowControllerTestApi {
|
| - public:
|
| - explicit ModalWindowControllerTestApi(ModalWindowController* mwc)
|
| - : mwc_(mwc) {}
|
| - ~ModalWindowControllerTestApi() {}
|
| -
|
| - ServerWindow* GetActiveSystemModalWindow() const {
|
| - return mwc_->GetActiveSystemModalWindow();
|
| - }
|
| -
|
| - private:
|
| - ModalWindowController* mwc_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ModalWindowControllerTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class WindowManagerStateTestApi {
|
| - public:
|
| - explicit WindowManagerStateTestApi(WindowManagerState* wms) : wms_(wms) {}
|
| - ~WindowManagerStateTestApi() {}
|
| -
|
| - void DispatchInputEventToWindow(ServerWindow* target,
|
| - ClientSpecificId client_id,
|
| - const ui::Event& event,
|
| - Accelerator* accelerator) {
|
| - wms_->DispatchInputEventToWindow(target, client_id, event, accelerator);
|
| - }
|
| -
|
| - ClientSpecificId GetEventTargetClientId(ServerWindow* window,
|
| - bool in_nonclient_area) {
|
| - return wms_->GetEventTargetClientId(window, in_nonclient_area);
|
| - }
|
| -
|
| - void ProcessEvent(const ui::Event& event) { wms_->ProcessEvent(event); }
|
| -
|
| - void OnEventAckTimeout(ClientSpecificId client_id) {
|
| - wms_->OnEventAckTimeout(client_id);
|
| - }
|
| -
|
| - ClientSpecificId GetEventTargetClientId(const ServerWindow* window,
|
| - bool in_nonclient_area) {
|
| - return wms_->GetEventTargetClientId(window, in_nonclient_area);
|
| - }
|
| -
|
| - mojom::WindowTree* tree_awaiting_input_ack() {
|
| - return wms_->tree_awaiting_input_ack_;
|
| - }
|
| -
|
| - private:
|
| - WindowManagerState* wms_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowManagerStateTestApi);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// Factory that always embeds the new WindowTree as the root user id.
|
| -class TestDisplayBinding : public DisplayBinding {
|
| - public:
|
| - explicit TestDisplayBinding(WindowServer* window_server)
|
| - : window_server_(window_server) {}
|
| - ~TestDisplayBinding() override {}
|
| -
|
| - private:
|
| - // DisplayBinding:
|
| - WindowTree* CreateWindowTree(ServerWindow* root) override;
|
| -
|
| - WindowServer* window_server_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestDisplayBinding);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// Factory that dispenses TestPlatformDisplays.
|
| -class TestPlatformDisplayFactory : public PlatformDisplayFactory {
|
| - public:
|
| - explicit TestPlatformDisplayFactory(int32_t* cursor_id_storage);
|
| - ~TestPlatformDisplayFactory();
|
| -
|
| - // PlatformDisplayFactory:
|
| - PlatformDisplay* CreatePlatformDisplay() override;
|
| -
|
| - private:
|
| - int32_t* cursor_id_storage_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestPlatformDisplayFactory);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -class TestWindowManager : public mojom::WindowManager {
|
| - public:
|
| - TestWindowManager()
|
| - : got_create_top_level_window_(false),
|
| - change_id_(0u),
|
| - on_accelerator_called_(false),
|
| - on_accelerator_id_(0u) {}
|
| - ~TestWindowManager() override {}
|
| -
|
| - bool did_call_create_top_level_window(uint32_t* change_id) {
|
| - if (!got_create_top_level_window_)
|
| - return false;
|
| -
|
| - got_create_top_level_window_ = false;
|
| - *change_id = change_id_;
|
| - return true;
|
| - }
|
| -
|
| - bool on_accelerator_called() { return on_accelerator_called_; }
|
| - uint32_t on_accelerator_id() { return on_accelerator_id_; }
|
| -
|
| - private:
|
| - // WindowManager:
|
| - void OnConnect(uint16_t client_id) override {}
|
| - void WmNewDisplayAdded(mus::mojom::DisplayPtr display,
|
| - mus::mojom::WindowDataPtr root,
|
| - bool drawn) override {}
|
| - void WmSetBounds(uint32_t change_id,
|
| - uint32_t window_id,
|
| - const gfx::Rect& bounds) override {}
|
| - void WmSetProperty(uint32_t change_id,
|
| - uint32_t window_id,
|
| - const mojo::String& name,
|
| - mojo::Array<uint8_t> value) override {}
|
| - void WmCreateTopLevelWindow(
|
| - uint32_t change_id,
|
| - ClientSpecificId requesting_client_id,
|
| - mojo::Map<mojo::String, mojo::Array<uint8_t>> properties) override;
|
| - void WmClientJankinessChanged(ClientSpecificId client_id,
|
| - bool janky) override;
|
| - void OnAccelerator(uint32_t id, std::unique_ptr<ui::Event> event) override;
|
| -
|
| - bool got_create_top_level_window_;
|
| - uint32_t change_id_;
|
| -
|
| - bool on_accelerator_called_;
|
| - uint32_t on_accelerator_id_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestWindowManager);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// WindowTreeClient implementation that logs all calls to a TestChangeTracker.
|
| -class TestWindowTreeClient : public mus::mojom::WindowTreeClient {
|
| - public:
|
| - TestWindowTreeClient();
|
| - ~TestWindowTreeClient() override;
|
| -
|
| - TestChangeTracker* tracker() { return &tracker_; }
|
| -
|
| - void Bind(mojo::InterfaceRequest<mojom::WindowTreeClient> request);
|
| -
|
| - void set_record_on_change_completed(bool value) {
|
| - record_on_change_completed_ = value;
|
| - }
|
| -
|
| - private:
|
| - // WindowTreeClient:
|
| - void OnEmbed(uint16_t client_id,
|
| - mojom::WindowDataPtr root,
|
| - mus::mojom::WindowTreePtr tree,
|
| - int64_t display_id,
|
| - Id focused_window_id,
|
| - bool drawn) override;
|
| - void OnEmbeddedAppDisconnected(uint32_t window) override;
|
| - void OnUnembed(Id window_id) override;
|
| - void OnLostCapture(Id window_id) override;
|
| - void OnTopLevelCreated(uint32_t change_id,
|
| - mojom::WindowDataPtr data,
|
| - int64_t display_id,
|
| - bool drawn) override;
|
| - void OnWindowBoundsChanged(uint32_t window,
|
| - const gfx::Rect& old_bounds,
|
| - const gfx::Rect& new_bounds) override;
|
| - void OnClientAreaChanged(
|
| - uint32_t window_id,
|
| - const gfx::Insets& new_client_area,
|
| - mojo::Array<gfx::Rect> new_additional_client_areas) override;
|
| - void OnTransientWindowAdded(uint32_t window_id,
|
| - uint32_t transient_window_id) override;
|
| - void OnTransientWindowRemoved(uint32_t window_id,
|
| - uint32_t transient_window_id) override;
|
| - void OnWindowHierarchyChanged(
|
| - uint32_t window,
|
| - uint32_t old_parent,
|
| - uint32_t new_parent,
|
| - mojo::Array<mojom::WindowDataPtr> windows) override;
|
| - void OnWindowReordered(uint32_t window_id,
|
| - uint32_t relative_window_id,
|
| - mojom::OrderDirection direction) override;
|
| - void OnWindowDeleted(uint32_t window) override;
|
| - void OnWindowVisibilityChanged(uint32_t window, bool visible) override;
|
| - void OnWindowOpacityChanged(uint32_t window,
|
| - float old_opacity,
|
| - float new_opacity) override;
|
| - void OnWindowParentDrawnStateChanged(uint32_t window, bool drawn) override;
|
| - void OnWindowSharedPropertyChanged(uint32_t window,
|
| - const mojo::String& name,
|
| - mojo::Array<uint8_t> new_data) override;
|
| - void OnWindowInputEvent(uint32_t event_id,
|
| - uint32_t window,
|
| - std::unique_ptr<ui::Event> event,
|
| - uint32_t event_observer_id) override;
|
| - void OnEventObserved(std::unique_ptr<ui::Event> event,
|
| - uint32_t event_observer_id) override;
|
| - void OnWindowFocused(uint32_t focused_window_id) override;
|
| - void OnWindowPredefinedCursorChanged(uint32_t window_id,
|
| - mojom::Cursor cursor_id) override;
|
| - void OnChangeCompleted(uint32_t change_id, bool success) override;
|
| - void RequestClose(uint32_t window_id) override;
|
| - void GetWindowManager(
|
| - mojo::AssociatedInterfaceRequest<mojom::WindowManager> internal) override;
|
| -
|
| - TestChangeTracker tracker_;
|
| - mojo::Binding<mojom::WindowTreeClient> binding_;
|
| - bool record_on_change_completed_ = false;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestWindowTreeClient);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// WindowTreeBinding implementation that vends TestWindowTreeBinding.
|
| -class TestWindowTreeBinding : public WindowTreeBinding {
|
| - public:
|
| - explicit TestWindowTreeBinding(WindowTree* tree);
|
| - ~TestWindowTreeBinding() override;
|
| -
|
| - WindowTree* tree() { return tree_; }
|
| - TestWindowTreeClient* client() { return &client_; }
|
| -
|
| - bool is_paused() const { return is_paused_; }
|
| -
|
| - // WindowTreeBinding:
|
| - mojom::WindowManager* GetWindowManager() override;
|
| - void SetIncomingMethodCallProcessingPaused(bool paused) override;
|
| -
|
| - private:
|
| - WindowTree* tree_;
|
| - TestWindowTreeClient client_;
|
| - bool is_paused_ = false;
|
| - std::unique_ptr<TestWindowManager> window_manager_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestWindowTreeBinding);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// WindowServerDelegate that creates TestWindowTreeClients.
|
| -class TestWindowServerDelegate : public WindowServerDelegate {
|
| - public:
|
| - TestWindowServerDelegate();
|
| - ~TestWindowServerDelegate() override;
|
| -
|
| - void set_window_server(WindowServer* window_server) {
|
| - window_server_ = window_server;
|
| - }
|
| -
|
| - void set_num_displays_to_create(int count) {
|
| - num_displays_to_create_ = count;
|
| - }
|
| -
|
| - TestWindowTreeClient* last_client() {
|
| - return last_binding() ? last_binding()->client() : nullptr;
|
| - }
|
| - TestWindowTreeBinding* last_binding() {
|
| - return bindings_.empty() ? nullptr : bindings_.back();
|
| - }
|
| -
|
| - std::vector<TestWindowTreeBinding*>* bindings() { return &bindings_; }
|
| -
|
| - bool got_on_no_more_displays() const { return got_on_no_more_displays_; }
|
| -
|
| - Display* AddDisplay();
|
| -
|
| - // WindowServerDelegate:
|
| - void OnNoMoreDisplays() override;
|
| - std::unique_ptr<WindowTreeBinding> CreateWindowTreeBinding(
|
| - BindingType type,
|
| - ws::WindowServer* window_server,
|
| - ws::WindowTree* tree,
|
| - mojom::WindowTreeRequest* tree_request,
|
| - mojom::WindowTreeClientPtr* client) override;
|
| - void CreateDefaultDisplays() override;
|
| - bool IsTestConfig() const override;
|
| -
|
| - private:
|
| - // If CreateDefaultDisplays() this is the number of Displays that are
|
| - // created. The default is 0, which results in a DCHECK.
|
| - int num_displays_to_create_ = 0;
|
| - WindowServer* window_server_ = nullptr;
|
| - bool got_on_no_more_displays_ = false;
|
| - // All TestWindowTreeBinding objects created via CreateWindowTreeBinding.
|
| - // These are owned by the corresponding WindowTree.
|
| - std::vector<TestWindowTreeBinding*> bindings_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestWindowServerDelegate);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// Helper class which owns all of the necessary objects to test event targeting
|
| -// of ServerWindow objects.
|
| -class WindowEventTargetingHelper {
|
| - public:
|
| - WindowEventTargetingHelper();
|
| - ~WindowEventTargetingHelper();
|
| -
|
| - // Creates |window| as an embeded window of the primary tree. This window is a
|
| - // root window of its own tree, with bounds |window_bounds|. The bounds of the
|
| - // root window of |display_| are defined by |root_window_bounds|.
|
| - ServerWindow* CreatePrimaryTree(const gfx::Rect& root_window_bounds,
|
| - const gfx::Rect& window_bounds);
|
| - // Creates a secondary tree, embedded as a child of |embed_window|. The
|
| - // resulting |window| is setup for event targeting, with bounds
|
| - // |window_bounds|.
|
| - void CreateSecondaryTree(ServerWindow* embed_window,
|
| - const gfx::Rect& window_bounds,
|
| - TestWindowTreeClient** out_client,
|
| - WindowTree** window_tree,
|
| - ServerWindow** window);
|
| - // Sets the task runner for |message_loop_|
|
| - void SetTaskRunner(scoped_refptr<base::SingleThreadTaskRunner> task_runner);
|
| -
|
| - int32_t cursor_id() { return cursor_id_; }
|
| - Display* display() { return display_; }
|
| - TestWindowTreeBinding* last_binding() {
|
| - return window_server_delegate_.last_binding();
|
| - }
|
| - TestWindowTreeClient* last_window_tree_client() {
|
| - return window_server_delegate_.last_client();
|
| - }
|
| - TestWindowTreeClient* wm_client() { return wm_client_; }
|
| - WindowServer* window_server() { return window_server_.get(); }
|
| -
|
| - private:
|
| - // TestWindowTreeClient that is used for the WM client. Owned by
|
| - // |window_server_delegate_|
|
| - TestWindowTreeClient* wm_client_;
|
| - int32_t cursor_id_;
|
| - TestPlatformDisplayFactory platform_display_factory_;
|
| - TestWindowServerDelegate window_server_delegate_;
|
| - // Owned by WindowServer
|
| - TestDisplayBinding* display_binding_;
|
| - // Owned by WindowServer's DisplayManager.
|
| - Display* display_;
|
| - scoped_refptr<SurfacesState> surfaces_state_;
|
| - std::unique_ptr<WindowServer> window_server_;
|
| - // Needed to Bind to |wm_client_|
|
| - base::MessageLoop message_loop_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowEventTargetingHelper);
|
| -};
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -// Returns the first and only root of |tree|. If |tree| has zero or more than
|
| -// one root returns null.
|
| -ServerWindow* FirstRoot(WindowTree* tree);
|
| -
|
| -// Returns the ClientWindowId of the first root of |tree|, or an empty
|
| -// ClientWindowId if |tree| has zero or more than one root.
|
| -ClientWindowId FirstRootId(WindowTree* tree);
|
| -
|
| -// Returns |tree|s ClientWindowId for |window|.
|
| -ClientWindowId ClientWindowIdForWindow(WindowTree* tree,
|
| - const ServerWindow* window);
|
| -
|
| -// Creates a new visible window as a child of the single root of |tree|.
|
| -// |client_id| set to the ClientWindowId of the new window.
|
| -ServerWindow* NewWindowInTree(WindowTree* tree, ClientWindowId* client_id);
|
| -ServerWindow* NewWindowInTreeWithParent(WindowTree* tree,
|
| - ServerWindow* parent,
|
| - ClientWindowId* client_id);
|
| -
|
| -} // namespace test
|
| -} // namespace ws
|
| -} // namespace mus
|
| -
|
| -#endif // COMPONENTS_MUS_WS_TEST_UTILS_H_
|
|
|