Index: components/mus/ws/test_utils.cc |
diff --git a/components/mus/ws/test_utils.cc b/components/mus/ws/test_utils.cc |
deleted file mode 100644 |
index 78f7d4714d3b3f4bcf929a74d29b63563c53b941..0000000000000000000000000000000000000000 |
--- a/components/mus/ws/test_utils.cc |
+++ /dev/null |
@@ -1,496 +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. |
- |
-#include "components/mus/ws/test_utils.h" |
- |
-#include "base/memory/ptr_util.h" |
-#include "cc/output/copy_output_request.h" |
-#include "components/mus/surfaces/surfaces_state.h" |
-#include "components/mus/ws/display_binding.h" |
-#include "components/mus/ws/display_manager.h" |
-#include "components/mus/ws/server_window_surface_manager_test_api.h" |
-#include "components/mus/ws/window_manager_access_policy.h" |
-#include "components/mus/ws/window_manager_window_tree_factory.h" |
-#include "services/shell/public/interfaces/connector.mojom.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace mus { |
-namespace ws { |
-namespace test { |
-namespace { |
- |
-// ----------------------------------------------------------------------------- |
-// Empty implementation of PlatformDisplay. |
-class TestPlatformDisplay : public PlatformDisplay { |
- public: |
- explicit TestPlatformDisplay(int32_t* cursor_id_storage) |
- : cursor_id_storage_(cursor_id_storage) { |
- display_metrics_.size_in_pixels = gfx::Size(400, 300); |
- display_metrics_.device_scale_factor = 1.f; |
- } |
- ~TestPlatformDisplay() override {} |
- |
- // PlatformDisplay: |
- void Init(PlatformDisplayDelegate* delegate) override { |
- // It is necessary to tell the delegate about the ViewportMetrics to make |
- // sure that the DisplayBinding is correctly initialized (and a root-window |
- // is created). |
- delegate->OnViewportMetricsChanged(ViewportMetrics(), display_metrics_); |
- } |
- void SchedulePaint(const ServerWindow* window, |
- const gfx::Rect& bounds) override {} |
- void SetViewportSize(const gfx::Size& size) override {} |
- void SetTitle(const base::string16& title) override {} |
- void SetCapture() override {} |
- void ReleaseCapture() override {} |
- void SetCursorById(int32_t cursor) override { *cursor_id_storage_ = cursor; } |
- mojom::Rotation GetRotation() override { return mojom::Rotation::VALUE_0; } |
- float GetDeviceScaleFactor() override { |
- return display_metrics_.device_scale_factor; |
- } |
- void UpdateTextInputState(const ui::TextInputState& state) override {} |
- void SetImeVisibility(bool visible) override {} |
- bool IsFramePending() const override { return false; } |
- void RequestCopyOfOutput( |
- std::unique_ptr<cc::CopyOutputRequest> output_request) override {} |
- int64_t GetDisplayId() const override { return 1; } |
- |
- private: |
- ViewportMetrics display_metrics_; |
- |
- int32_t* cursor_id_storage_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestPlatformDisplay); |
-}; |
- |
-ClientWindowId NextUnusedClientWindowId(WindowTree* tree) { |
- ClientWindowId client_id; |
- for (ClientSpecificId id = 1;; ++id) { |
- // Used the id of the client in the upper bits to simplify things. |
- const ClientWindowId client_id = |
- ClientWindowId(WindowIdToTransportId(WindowId(tree->id(), id))); |
- if (!tree->GetWindowByClientId(client_id)) |
- return client_id; |
- } |
-} |
- |
-} // namespace |
- |
-// WindowManagerWindowTreeFactorySetTestApi ------------------------------------ |
- |
-WindowManagerWindowTreeFactorySetTestApi:: |
- WindowManagerWindowTreeFactorySetTestApi( |
- WindowManagerWindowTreeFactorySet* |
- window_manager_window_tree_factory_set) |
- : window_manager_window_tree_factory_set_( |
- window_manager_window_tree_factory_set) {} |
- |
-WindowManagerWindowTreeFactorySetTestApi:: |
- ~WindowManagerWindowTreeFactorySetTestApi() {} |
- |
-void WindowManagerWindowTreeFactorySetTestApi::Add(const UserId& user_id) { |
- WindowManagerWindowTreeFactory* factory = |
- window_manager_window_tree_factory_set_->Add(user_id, nullptr); |
- factory->CreateWindowTree(nullptr, nullptr); |
-} |
- |
-// TestPlatformDisplayFactory ------------------------------------------------- |
- |
-TestPlatformDisplayFactory::TestPlatformDisplayFactory( |
- int32_t* cursor_id_storage) |
- : cursor_id_storage_(cursor_id_storage) {} |
- |
-TestPlatformDisplayFactory::~TestPlatformDisplayFactory() {} |
- |
-PlatformDisplay* TestPlatformDisplayFactory::CreatePlatformDisplay() { |
- return new TestPlatformDisplay(cursor_id_storage_); |
-} |
- |
-// WindowTreeTestApi --------------------------------------------------------- |
- |
-WindowTreeTestApi::WindowTreeTestApi(WindowTree* tree) : tree_(tree) {} |
-WindowTreeTestApi::~WindowTreeTestApi() {} |
- |
-void WindowTreeTestApi::SetEventObserver(mojom::EventMatcherPtr matcher, |
- uint32_t event_observer_id) { |
- tree_->SetEventObserver(std::move(matcher), event_observer_id); |
-} |
- |
-// DisplayTestApi ------------------------------------------------------------ |
- |
-DisplayTestApi::DisplayTestApi(Display* display) : display_(display) {} |
-DisplayTestApi::~DisplayTestApi() {} |
- |
-// EventDispatcherTestApi ---------------------------------------------------- |
- |
-bool EventDispatcherTestApi::IsWindowPointerTarget( |
- const ServerWindow* window) const { |
- for (const auto& pair : ed_->pointer_targets_) { |
- if (pair.second.window == window) |
- return true; |
- } |
- return false; |
-} |
- |
-int EventDispatcherTestApi::NumberPointerTargetsForWindow( |
- ServerWindow* window) { |
- int count = 0; |
- for (const auto& pair : ed_->pointer_targets_) |
- if (pair.second.window == window) |
- count++; |
- return count; |
-} |
- |
-// TestDisplayBinding --------------------------------------------------------- |
- |
-WindowTree* TestDisplayBinding::CreateWindowTree(ServerWindow* root) { |
- const uint32_t embed_flags = 0; |
- WindowTree* tree = window_server_->EmbedAtWindow( |
- root, shell::mojom::kRootUserID, mus::mojom::WindowTreeClientPtr(), |
- embed_flags, base::WrapUnique(new WindowManagerAccessPolicy)); |
- tree->ConfigureWindowManager(); |
- return tree; |
-} |
- |
-// TestWindowManager ---------------------------------------------------------- |
- |
-void TestWindowManager::WmCreateTopLevelWindow( |
- uint32_t change_id, |
- ClientSpecificId requesting_client_id, |
- mojo::Map<mojo::String, mojo::Array<uint8_t>> properties) { |
- got_create_top_level_window_ = true; |
- change_id_ = change_id; |
-} |
- |
-void TestWindowManager::WmClientJankinessChanged(ClientSpecificId client_id, |
- bool janky) {} |
- |
-void TestWindowManager::OnAccelerator(uint32_t id, |
- std::unique_ptr<ui::Event> event) { |
- on_accelerator_called_ = true; |
- on_accelerator_id_ = id; |
-} |
- |
-// TestWindowTreeClient ------------------------------------------------------- |
- |
-TestWindowTreeClient::TestWindowTreeClient() |
- : binding_(this), record_on_change_completed_(false) {} |
-TestWindowTreeClient::~TestWindowTreeClient() {} |
- |
-void TestWindowTreeClient::Bind( |
- mojo::InterfaceRequest<mojom::WindowTreeClient> request) { |
- binding_.Bind(std::move(request)); |
-} |
- |
-void TestWindowTreeClient::OnEmbed(uint16_t client_id, |
- mojom::WindowDataPtr root, |
- mus::mojom::WindowTreePtr tree, |
- int64_t display_id, |
- Id focused_window_id, |
- bool drawn) { |
- // TODO(sky): add test coverage of |focused_window_id|. |
- tracker_.OnEmbed(client_id, std::move(root), drawn); |
-} |
- |
-void TestWindowTreeClient::OnEmbeddedAppDisconnected(uint32_t window) { |
- tracker_.OnEmbeddedAppDisconnected(window); |
-} |
- |
-void TestWindowTreeClient::OnUnembed(Id window_id) { |
- tracker_.OnUnembed(window_id); |
-} |
- |
-void TestWindowTreeClient::OnLostCapture(Id window_id) {} |
- |
-void TestWindowTreeClient::OnTopLevelCreated(uint32_t change_id, |
- mojom::WindowDataPtr data, |
- int64_t display_id, |
- bool drawn) { |
- tracker_.OnTopLevelCreated(change_id, std::move(data), drawn); |
-} |
- |
-void TestWindowTreeClient::OnWindowBoundsChanged(uint32_t window, |
- const gfx::Rect& old_bounds, |
- const gfx::Rect& new_bounds) { |
- tracker_.OnWindowBoundsChanged(window, std::move(old_bounds), |
- std::move(new_bounds)); |
-} |
- |
-void TestWindowTreeClient::OnClientAreaChanged( |
- uint32_t window_id, |
- const gfx::Insets& new_client_area, |
- mojo::Array<gfx::Rect> new_additional_client_areas) {} |
- |
-void TestWindowTreeClient::OnTransientWindowAdded( |
- uint32_t window_id, |
- uint32_t transient_window_id) {} |
- |
-void TestWindowTreeClient::OnTransientWindowRemoved( |
- uint32_t window_id, |
- uint32_t transient_window_id) {} |
- |
-void TestWindowTreeClient::OnWindowHierarchyChanged( |
- uint32_t window, |
- uint32_t old_parent, |
- uint32_t new_parent, |
- mojo::Array<mojom::WindowDataPtr> windows) { |
- tracker_.OnWindowHierarchyChanged(window, old_parent, new_parent, |
- std::move(windows)); |
-} |
- |
-void TestWindowTreeClient::OnWindowReordered(uint32_t window_id, |
- uint32_t relative_window_id, |
- mojom::OrderDirection direction) { |
- tracker_.OnWindowReordered(window_id, relative_window_id, direction); |
-} |
- |
-void TestWindowTreeClient::OnWindowDeleted(uint32_t window) { |
- tracker_.OnWindowDeleted(window); |
-} |
- |
-void TestWindowTreeClient::OnWindowVisibilityChanged(uint32_t window, |
- bool visible) { |
- tracker_.OnWindowVisibilityChanged(window, visible); |
-} |
- |
-void TestWindowTreeClient::OnWindowOpacityChanged(uint32_t window, |
- float old_opacity, |
- float new_opacity) { |
- tracker_.OnWindowOpacityChanged(window, new_opacity); |
-} |
- |
-void TestWindowTreeClient::OnWindowParentDrawnStateChanged(uint32_t window, |
- bool drawn) { |
- tracker_.OnWindowParentDrawnStateChanged(window, drawn); |
-} |
- |
-void TestWindowTreeClient::OnWindowSharedPropertyChanged( |
- uint32_t window, |
- const mojo::String& name, |
- mojo::Array<uint8_t> new_data) { |
- tracker_.OnWindowSharedPropertyChanged(window, name, std::move(new_data)); |
-} |
- |
-void TestWindowTreeClient::OnWindowInputEvent(uint32_t event_id, |
- uint32_t window, |
- std::unique_ptr<ui::Event> event, |
- uint32_t event_observer_id) { |
- tracker_.OnWindowInputEvent(window, *event.get(), event_observer_id); |
-} |
- |
-void TestWindowTreeClient::OnEventObserved(std::unique_ptr<ui::Event> event, |
- uint32_t event_observer_id) { |
- tracker_.OnEventObserved(*event.get(), event_observer_id); |
-} |
- |
-void TestWindowTreeClient::OnWindowFocused(uint32_t focused_window_id) { |
- tracker_.OnWindowFocused(focused_window_id); |
-} |
- |
-void TestWindowTreeClient::OnWindowPredefinedCursorChanged( |
- uint32_t window_id, |
- mojom::Cursor cursor_id) { |
- tracker_.OnWindowPredefinedCursorChanged(window_id, cursor_id); |
-} |
- |
-void TestWindowTreeClient::OnChangeCompleted(uint32_t change_id, bool success) { |
- if (record_on_change_completed_) |
- tracker_.OnChangeCompleted(change_id, success); |
-} |
- |
-void TestWindowTreeClient::RequestClose(uint32_t window_id) {} |
- |
-void TestWindowTreeClient::GetWindowManager( |
- mojo::AssociatedInterfaceRequest<mojom::WindowManager> internal) {} |
- |
-// TestWindowTreeBinding ------------------------------------------------------ |
- |
-TestWindowTreeBinding::TestWindowTreeBinding(WindowTree* tree) |
- : WindowTreeBinding(&client_), tree_(tree) {} |
-TestWindowTreeBinding::~TestWindowTreeBinding() {} |
- |
-mojom::WindowManager* TestWindowTreeBinding::GetWindowManager() { |
- if (!window_manager_.get()) |
- window_manager_.reset(new TestWindowManager); |
- return window_manager_.get(); |
-} |
-void TestWindowTreeBinding::SetIncomingMethodCallProcessingPaused(bool paused) { |
- is_paused_ = paused; |
-} |
- |
-// TestWindowServerDelegate ---------------------------------------------- |
- |
-TestWindowServerDelegate::TestWindowServerDelegate() {} |
-TestWindowServerDelegate::~TestWindowServerDelegate() {} |
- |
-Display* TestWindowServerDelegate::AddDisplay() { |
- // Display manages its own lifetime. |
- Display* display = new Display(window_server_, PlatformDisplayInitParams()); |
- display->Init(nullptr); |
- return display; |
-} |
- |
-void TestWindowServerDelegate::OnNoMoreDisplays() { |
- got_on_no_more_displays_ = true; |
-} |
- |
-std::unique_ptr<WindowTreeBinding> |
-TestWindowServerDelegate::CreateWindowTreeBinding( |
- BindingType type, |
- ws::WindowServer* window_server, |
- ws::WindowTree* tree, |
- mojom::WindowTreeRequest* tree_request, |
- mojom::WindowTreeClientPtr* client) { |
- std::unique_ptr<TestWindowTreeBinding> binding( |
- new TestWindowTreeBinding(tree)); |
- bindings_.push_back(binding.get()); |
- return std::move(binding); |
-} |
- |
-void TestWindowServerDelegate::CreateDefaultDisplays() { |
- DCHECK(num_displays_to_create_); |
- DCHECK(window_server_); |
- |
- for (int i = 0; i < num_displays_to_create_; ++i) |
- AddDisplay(); |
-} |
- |
-bool TestWindowServerDelegate::IsTestConfig() const { |
- return true; |
-} |
- |
-// WindowEventTargetingHelper ------------------------------------------------ |
- |
-WindowEventTargetingHelper::WindowEventTargetingHelper() |
- : wm_client_(nullptr), |
- cursor_id_(0), |
- platform_display_factory_(&cursor_id_), |
- display_binding_(nullptr), |
- display_(nullptr), |
- surfaces_state_(new SurfacesState()), |
- window_server_(nullptr) { |
- PlatformDisplay::set_factory_for_testing(&platform_display_factory_); |
- window_server_.reset( |
- new WindowServer(&window_server_delegate_, surfaces_state_)); |
- PlatformDisplayInitParams display_init_params; |
- display_init_params.surfaces_state = surfaces_state_; |
- display_ = new Display(window_server_.get(), display_init_params); |
- display_binding_ = new TestDisplayBinding(window_server_.get()); |
- display_->Init(base::WrapUnique(display_binding_)); |
- wm_client_ = window_server_delegate_.last_client(); |
- wm_client_->tracker()->changes()->clear(); |
-} |
- |
-WindowEventTargetingHelper::~WindowEventTargetingHelper() {} |
- |
-ServerWindow* WindowEventTargetingHelper::CreatePrimaryTree( |
- const gfx::Rect& root_window_bounds, |
- const gfx::Rect& window_bounds) { |
- WindowTree* wm_tree = window_server_->GetTreeWithId(1); |
- const ClientWindowId embed_window_id( |
- WindowIdToTransportId(WindowId(wm_tree->id(), 1))); |
- EXPECT_TRUE(wm_tree->NewWindow(embed_window_id, ServerWindow::Properties())); |
- EXPECT_TRUE(wm_tree->SetWindowVisibility(embed_window_id, true)); |
- EXPECT_TRUE(wm_tree->AddWindow(FirstRootId(wm_tree), embed_window_id)); |
- display_->root_window()->SetBounds(root_window_bounds); |
- mojom::WindowTreeClientPtr client; |
- mojom::WindowTreeClientRequest client_request = GetProxy(&client); |
- wm_client_->Bind(std::move(client_request)); |
- const uint32_t embed_flags = 0; |
- wm_tree->Embed(embed_window_id, std::move(client), embed_flags); |
- ServerWindow* embed_window = wm_tree->GetWindowByClientId(embed_window_id); |
- WindowTree* tree1 = window_server_->GetTreeWithRoot(embed_window); |
- EXPECT_NE(nullptr, tree1); |
- EXPECT_NE(tree1, wm_tree); |
- WindowTreeTestApi(tree1).set_user_id(wm_tree->user_id()); |
- |
- embed_window->SetBounds(window_bounds); |
- |
- return embed_window; |
-} |
- |
-void WindowEventTargetingHelper::CreateSecondaryTree( |
- ServerWindow* embed_window, |
- const gfx::Rect& window_bounds, |
- TestWindowTreeClient** out_client, |
- WindowTree** window_tree, |
- ServerWindow** window) { |
- WindowTree* tree1 = window_server_->GetTreeWithRoot(embed_window); |
- ASSERT_TRUE(tree1 != nullptr); |
- const ClientWindowId child1_id( |
- WindowIdToTransportId(WindowId(tree1->id(), 1))); |
- EXPECT_TRUE(tree1->NewWindow(child1_id, ServerWindow::Properties())); |
- ServerWindow* child1 = tree1->GetWindowByClientId(child1_id); |
- ASSERT_TRUE(child1); |
- EXPECT_TRUE(tree1->AddWindow(ClientWindowIdForWindow(tree1, embed_window), |
- child1_id)); |
- tree1->GetDisplay(embed_window)->AddActivationParent(embed_window); |
- |
- child1->SetVisible(true); |
- child1->SetBounds(window_bounds); |
- EnableHitTest(child1); |
- |
- TestWindowTreeClient* embed_client = |
- window_server_delegate_.last_client(); |
- embed_client->tracker()->changes()->clear(); |
- wm_client_->tracker()->changes()->clear(); |
- |
- *out_client = embed_client; |
- *window_tree = tree1; |
- *window = child1; |
-} |
- |
-void WindowEventTargetingHelper::SetTaskRunner( |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
- message_loop_.SetTaskRunner(task_runner); |
-} |
- |
-// ---------------------------------------------------------------------------- |
- |
-ServerWindow* FirstRoot(WindowTree* tree) { |
- return tree->roots().size() == 1u |
- ? tree->GetWindow((*tree->roots().begin())->id()) |
- : nullptr; |
-} |
- |
-ClientWindowId FirstRootId(WindowTree* tree) { |
- ServerWindow* first_root = FirstRoot(tree); |
- return first_root ? ClientWindowIdForWindow(tree, first_root) |
- : ClientWindowId(); |
-} |
- |
-ClientWindowId ClientWindowIdForWindow(WindowTree* tree, |
- const ServerWindow* window) { |
- ClientWindowId client_window_id; |
- // If window isn't known we'll return 0, which should then error out. |
- tree->IsWindowKnown(window, &client_window_id); |
- return client_window_id; |
-} |
- |
-ServerWindow* NewWindowInTree(WindowTree* tree, ClientWindowId* client_id) { |
- return NewWindowInTreeWithParent(tree, FirstRoot(tree), client_id); |
-} |
- |
-ServerWindow* NewWindowInTreeWithParent(WindowTree* tree, |
- ServerWindow* parent, |
- ClientWindowId* client_id) { |
- if (!parent) |
- return nullptr; |
- ClientWindowId parent_client_id; |
- if (!tree->IsWindowKnown(parent, &parent_client_id)) |
- return nullptr; |
- ClientWindowId client_window_id = NextUnusedClientWindowId(tree); |
- if (!tree->NewWindow(client_window_id, ServerWindow::Properties())) |
- return nullptr; |
- if (!tree->SetWindowVisibility(client_window_id, true)) |
- return nullptr; |
- if (!tree->AddWindow(parent_client_id, client_window_id)) |
- return nullptr; |
- *client_id = client_window_id; |
- return tree->GetWindowByClientId(client_window_id); |
-} |
- |
-} // namespace test |
-} // namespace ws |
-} // namespace mus |