| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "services/ui/ws/test_utils.h" | 5 #include "services/ui/ws/test_utils.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "cc/output/copy_output_request.h" | 10 #include "cc/output/copy_output_request.h" |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 411 DCHECK(window_server_); | 411 DCHECK(window_server_); |
| 412 | 412 |
| 413 for (int i = 0; i < num_displays_to_create_; ++i) | 413 for (int i = 0; i < num_displays_to_create_; ++i) |
| 414 AddDisplay(); | 414 AddDisplay(); |
| 415 } | 415 } |
| 416 | 416 |
| 417 bool TestWindowServerDelegate::IsTestConfig() const { | 417 bool TestWindowServerDelegate::IsTestConfig() const { |
| 418 return true; | 418 return true; |
| 419 } | 419 } |
| 420 | 420 |
| 421 // WindowServerTestHelper --------------------------------------------------- |
| 422 |
| 423 WindowServerTestHelper::WindowServerTestHelper() |
| 424 : cursor_id_(0), platform_display_factory_(&cursor_id_) { |
| 425 PlatformDisplay::set_factory_for_testing(&platform_display_factory_); |
| 426 window_server_.reset(new WindowServer(&window_server_delegate_)); |
| 427 window_server_delegate_.set_window_server(window_server_.get()); |
| 428 } |
| 429 |
| 430 WindowServerTestHelper::~WindowServerTestHelper() { |
| 431 // Destroy |window_server_| while the message-loop is still alive. |
| 432 window_server_.reset(); |
| 433 } |
| 434 |
| 421 // WindowEventTargetingHelper ------------------------------------------------ | 435 // WindowEventTargetingHelper ------------------------------------------------ |
| 422 | 436 |
| 423 WindowEventTargetingHelper::WindowEventTargetingHelper() | 437 WindowEventTargetingHelper::WindowEventTargetingHelper() |
| 424 : wm_client_(nullptr), | 438 : wm_client_(nullptr), |
| 425 cursor_id_(0), | |
| 426 platform_display_factory_(&cursor_id_), | |
| 427 display_binding_(nullptr), | 439 display_binding_(nullptr), |
| 428 display_(nullptr), | 440 display_(nullptr), |
| 429 surfaces_state_(new SurfacesState()), | 441 surfaces_state_(new SurfacesState()) { |
| 430 window_server_(nullptr) { | |
| 431 PlatformDisplay::set_factory_for_testing(&platform_display_factory_); | |
| 432 window_server_.reset(new WindowServer(&window_server_delegate_)); | |
| 433 PlatformDisplayInitParams display_init_params; | 442 PlatformDisplayInitParams display_init_params; |
| 434 display_init_params.surfaces_state = surfaces_state_; | 443 display_init_params.surfaces_state = surfaces_state_; |
| 435 display_ = new Display(window_server_.get(), display_init_params); | 444 display_ = new Display(window_server(), display_init_params); |
| 436 display_binding_ = new TestDisplayBinding(window_server_.get()); | 445 display_binding_ = new TestDisplayBinding(window_server()); |
| 437 display_->Init(base::WrapUnique(display_binding_)); | 446 display_->Init(base::WrapUnique(display_binding_)); |
| 438 wm_client_ = window_server_delegate_.last_client(); | 447 wm_client_ = ws_test_helper_.window_server_delegate()->last_client(); |
| 439 wm_client_->tracker()->changes()->clear(); | 448 wm_client_->tracker()->changes()->clear(); |
| 440 } | 449 } |
| 441 | 450 |
| 442 WindowEventTargetingHelper::~WindowEventTargetingHelper() {} | 451 WindowEventTargetingHelper::~WindowEventTargetingHelper() {} |
| 443 | 452 |
| 444 ServerWindow* WindowEventTargetingHelper::CreatePrimaryTree( | 453 ServerWindow* WindowEventTargetingHelper::CreatePrimaryTree( |
| 445 const gfx::Rect& root_window_bounds, | 454 const gfx::Rect& root_window_bounds, |
| 446 const gfx::Rect& window_bounds) { | 455 const gfx::Rect& window_bounds) { |
| 447 WindowTree* wm_tree = window_server_->GetTreeWithId(1); | 456 WindowTree* wm_tree = window_server()->GetTreeWithId(1); |
| 448 const ClientWindowId embed_window_id( | 457 const ClientWindowId embed_window_id( |
| 449 WindowIdToTransportId(WindowId(wm_tree->id(), 1))); | 458 WindowIdToTransportId(WindowId(wm_tree->id(), 1))); |
| 450 EXPECT_TRUE(wm_tree->NewWindow(embed_window_id, ServerWindow::Properties())); | 459 EXPECT_TRUE(wm_tree->NewWindow(embed_window_id, ServerWindow::Properties())); |
| 451 EXPECT_TRUE(wm_tree->SetWindowVisibility(embed_window_id, true)); | 460 EXPECT_TRUE(wm_tree->SetWindowVisibility(embed_window_id, true)); |
| 452 EXPECT_TRUE(wm_tree->AddWindow(FirstRootId(wm_tree), embed_window_id)); | 461 EXPECT_TRUE(wm_tree->AddWindow(FirstRootId(wm_tree), embed_window_id)); |
| 453 display_->root_window()->SetBounds(root_window_bounds); | 462 display_->root_window()->SetBounds(root_window_bounds); |
| 454 mojom::WindowTreeClientPtr client; | 463 mojom::WindowTreeClientPtr client; |
| 455 mojom::WindowTreeClientRequest client_request = GetProxy(&client); | 464 mojom::WindowTreeClientRequest client_request = GetProxy(&client); |
| 456 wm_client_->Bind(std::move(client_request)); | 465 wm_client_->Bind(std::move(client_request)); |
| 457 const uint32_t embed_flags = 0; | 466 const uint32_t embed_flags = 0; |
| 458 wm_tree->Embed(embed_window_id, std::move(client), embed_flags); | 467 wm_tree->Embed(embed_window_id, std::move(client), embed_flags); |
| 459 ServerWindow* embed_window = wm_tree->GetWindowByClientId(embed_window_id); | 468 ServerWindow* embed_window = wm_tree->GetWindowByClientId(embed_window_id); |
| 460 WindowTree* tree1 = window_server_->GetTreeWithRoot(embed_window); | 469 WindowTree* tree1 = window_server()->GetTreeWithRoot(embed_window); |
| 461 EXPECT_NE(nullptr, tree1); | 470 EXPECT_NE(nullptr, tree1); |
| 462 EXPECT_NE(tree1, wm_tree); | 471 EXPECT_NE(tree1, wm_tree); |
| 463 WindowTreeTestApi(tree1).set_user_id(wm_tree->user_id()); | 472 WindowTreeTestApi(tree1).set_user_id(wm_tree->user_id()); |
| 464 | 473 |
| 465 embed_window->SetBounds(window_bounds); | 474 embed_window->SetBounds(window_bounds); |
| 466 | 475 |
| 467 return embed_window; | 476 return embed_window; |
| 468 } | 477 } |
| 469 | 478 |
| 470 void WindowEventTargetingHelper::CreateSecondaryTree( | 479 void WindowEventTargetingHelper::CreateSecondaryTree( |
| 471 ServerWindow* embed_window, | 480 ServerWindow* embed_window, |
| 472 const gfx::Rect& window_bounds, | 481 const gfx::Rect& window_bounds, |
| 473 TestWindowTreeClient** out_client, | 482 TestWindowTreeClient** out_client, |
| 474 WindowTree** window_tree, | 483 WindowTree** window_tree, |
| 475 ServerWindow** window) { | 484 ServerWindow** window) { |
| 476 WindowTree* tree1 = window_server_->GetTreeWithRoot(embed_window); | 485 WindowTree* tree1 = window_server()->GetTreeWithRoot(embed_window); |
| 477 ASSERT_TRUE(tree1 != nullptr); | 486 ASSERT_TRUE(tree1 != nullptr); |
| 478 const ClientWindowId child1_id( | 487 const ClientWindowId child1_id( |
| 479 WindowIdToTransportId(WindowId(tree1->id(), 1))); | 488 WindowIdToTransportId(WindowId(tree1->id(), 1))); |
| 480 EXPECT_TRUE(tree1->NewWindow(child1_id, ServerWindow::Properties())); | 489 EXPECT_TRUE(tree1->NewWindow(child1_id, ServerWindow::Properties())); |
| 481 ServerWindow* child1 = tree1->GetWindowByClientId(child1_id); | 490 ServerWindow* child1 = tree1->GetWindowByClientId(child1_id); |
| 482 ASSERT_TRUE(child1); | 491 ASSERT_TRUE(child1); |
| 483 EXPECT_TRUE(tree1->AddWindow(ClientWindowIdForWindow(tree1, embed_window), | 492 EXPECT_TRUE(tree1->AddWindow(ClientWindowIdForWindow(tree1, embed_window), |
| 484 child1_id)); | 493 child1_id)); |
| 485 tree1->GetDisplay(embed_window)->AddActivationParent(embed_window); | 494 tree1->GetDisplay(embed_window)->AddActivationParent(embed_window); |
| 486 | 495 |
| 487 child1->SetVisible(true); | 496 child1->SetVisible(true); |
| 488 child1->SetBounds(window_bounds); | 497 child1->SetBounds(window_bounds); |
| 489 EnableHitTest(child1); | 498 EnableHitTest(child1); |
| 490 | 499 |
| 491 TestWindowTreeClient* embed_client = | 500 TestWindowTreeClient* embed_client = |
| 492 window_server_delegate_.last_client(); | 501 ws_test_helper_.window_server_delegate()->last_client(); |
| 493 embed_client->tracker()->changes()->clear(); | 502 embed_client->tracker()->changes()->clear(); |
| 494 wm_client_->tracker()->changes()->clear(); | 503 wm_client_->tracker()->changes()->clear(); |
| 495 | 504 |
| 496 *out_client = embed_client; | 505 *out_client = embed_client; |
| 497 *window_tree = tree1; | 506 *window_tree = tree1; |
| 498 *window = child1; | 507 *window = child1; |
| 499 } | 508 } |
| 500 | 509 |
| 501 void WindowEventTargetingHelper::SetTaskRunner( | 510 void WindowEventTargetingHelper::SetTaskRunner( |
| 502 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { | 511 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
| 503 message_loop_.SetTaskRunner(task_runner); | 512 ws_test_helper_.message_loop()->SetTaskRunner(task_runner); |
| 504 } | 513 } |
| 505 | 514 |
| 506 // ---------------------------------------------------------------------------- | 515 // ---------------------------------------------------------------------------- |
| 507 | 516 |
| 508 ServerWindow* FirstRoot(WindowTree* tree) { | 517 ServerWindow* FirstRoot(WindowTree* tree) { |
| 509 return tree->roots().size() == 1u | 518 return tree->roots().size() == 1u |
| 510 ? tree->GetWindow((*tree->roots().begin())->id()) | 519 ? tree->GetWindow((*tree->roots().begin())->id()) |
| 511 : nullptr; | 520 : nullptr; |
| 512 } | 521 } |
| 513 | 522 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 544 return nullptr; | 553 return nullptr; |
| 545 if (!tree->AddWindow(parent_client_id, client_window_id)) | 554 if (!tree->AddWindow(parent_client_id, client_window_id)) |
| 546 return nullptr; | 555 return nullptr; |
| 547 *client_id = client_window_id; | 556 *client_id = client_window_id; |
| 548 return tree->GetWindowByClientId(client_window_id); | 557 return tree->GetWindowByClientId(client_window_id); |
| 549 } | 558 } |
| 550 | 559 |
| 551 } // namespace test | 560 } // namespace test |
| 552 } // namespace ws | 561 } // namespace ws |
| 553 } // namespace ui | 562 } // namespace ui |
| OLD | NEW |