| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 } | 273 } |
| 274 | 274 |
| 275 // WindowTreeClient: | 275 // WindowTreeClient: |
| 276 void OnEmbed( | 276 void OnEmbed( |
| 277 ClientSpecificId client_id, | 277 ClientSpecificId client_id, |
| 278 WindowDataPtr root, | 278 WindowDataPtr root, |
| 279 mojom::WindowTreePtr tree, | 279 mojom::WindowTreePtr tree, |
| 280 int64_t display_id, | 280 int64_t display_id, |
| 281 Id focused_window_id, | 281 Id focused_window_id, |
| 282 bool drawn, | 282 bool drawn, |
| 283 const cc::FrameSinkId& frame_sink_id, | |
| 284 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { | 283 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { |
| 285 // TODO(sky): add coverage of |focused_window_id|. | 284 // TODO(sky): add coverage of |focused_window_id|. |
| 286 ASSERT_TRUE(root); | 285 ASSERT_TRUE(root); |
| 287 root_window_id_ = root->window_id; | 286 root_window_id_ = root->window_id; |
| 288 tree_ = std::move(tree); | 287 tree_ = std::move(tree); |
| 289 client_id_ = client_id; | 288 client_id_ = client_id; |
| 290 tracker()->OnEmbed(client_id, std::move(root), drawn, frame_sink_id); | 289 tracker()->OnEmbed(client_id, std::move(root), drawn); |
| 291 if (embed_run_loop_) | 290 if (embed_run_loop_) |
| 292 embed_run_loop_->Quit(); | 291 embed_run_loop_->Quit(); |
| 293 } | 292 } |
| 294 void OnEmbeddedAppDisconnected(Id window_id) override { | 293 void OnEmbeddedAppDisconnected(Id window_id) override { |
| 295 tracker()->OnEmbeddedAppDisconnected(window_id); | 294 tracker()->OnEmbeddedAppDisconnected(window_id); |
| 296 } | 295 } |
| 297 void OnUnembed(Id window_id) override { tracker()->OnUnembed(window_id); } | 296 void OnUnembed(Id window_id) override { tracker()->OnUnembed(window_id); } |
| 298 void OnCaptureChanged(Id new_capture_window_id, | 297 void OnCaptureChanged(Id new_capture_window_id, |
| 299 Id old_capture_window_id) override { | 298 Id old_capture_window_id) override { |
| 300 tracker()->OnCaptureChanged(new_capture_window_id, old_capture_window_id); | 299 tracker()->OnCaptureChanged(new_capture_window_id, old_capture_window_id); |
| 301 } | 300 } |
| 302 void OnFrameSinkIdAllocated(Id window_id, | 301 void OnFrameSinkIdAllocated(Id window_id, |
| 303 const cc::FrameSinkId& frame_sink_id) override {} | 302 const cc::FrameSinkId& frame_sink_id) override {} |
| 304 void OnTopLevelCreated( | 303 void OnTopLevelCreated( |
| 305 uint32_t change_id, | 304 uint32_t change_id, |
| 306 mojom::WindowDataPtr data, | 305 mojom::WindowDataPtr data, |
| 307 int64_t display_id, | 306 int64_t display_id, |
| 308 bool drawn, | 307 bool drawn, |
| 309 const cc::FrameSinkId& frame_sink_id, | |
| 310 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { | 308 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { |
| 311 tracker()->OnTopLevelCreated(change_id, std::move(data), drawn, | 309 tracker()->OnTopLevelCreated(change_id, std::move(data), drawn); |
| 312 frame_sink_id); | |
| 313 } | 310 } |
| 314 void OnWindowBoundsChanged( | 311 void OnWindowBoundsChanged( |
| 315 Id window_id, | 312 Id window_id, |
| 316 const gfx::Rect& old_bounds, | 313 const gfx::Rect& old_bounds, |
| 317 const gfx::Rect& new_bounds, | 314 const gfx::Rect& new_bounds, |
| 318 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { | 315 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { |
| 319 // The bounds of the root may change during startup on Android at random | 316 // The bounds of the root may change during startup on Android at random |
| 320 // times. As this doesn't matter, and shouldn't impact test exepctations, | 317 // times. As this doesn't matter, and shouldn't impact test exepctations, |
| 321 // it is ignored. | 318 // it is ignored. |
| 322 if (window_id == root_window_id_ && !track_root_bounds_changes_) | 319 if (window_id == root_window_id_ && !track_root_bounds_changes_) |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 446 this, std::move(internal)); | 443 this, std::move(internal)); |
| 447 tree_->GetWindowManagerClient(MakeRequest(&window_manager_client_)); | 444 tree_->GetWindowManagerClient(MakeRequest(&window_manager_client_)); |
| 448 } | 445 } |
| 449 | 446 |
| 450 // mojom::WindowManager: | 447 // mojom::WindowManager: |
| 451 void OnConnect(uint16_t client_id) override {} | 448 void OnConnect(uint16_t client_id) override {} |
| 452 void WmNewDisplayAdded( | 449 void WmNewDisplayAdded( |
| 453 const display::Display& display, | 450 const display::Display& display, |
| 454 mojom::WindowDataPtr root_data, | 451 mojom::WindowDataPtr root_data, |
| 455 bool drawn, | 452 bool drawn, |
| 456 const cc::FrameSinkId& frame_sink_id, | |
| 457 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { | 453 const base::Optional<cc::LocalSurfaceId>& local_surface_id) override { |
| 458 NOTIMPLEMENTED(); | 454 NOTIMPLEMENTED(); |
| 459 } | 455 } |
| 460 void WmDisplayRemoved(int64_t display_id) override { NOTIMPLEMENTED(); } | 456 void WmDisplayRemoved(int64_t display_id) override { NOTIMPLEMENTED(); } |
| 461 void WmDisplayModified(const display::Display& display) override { | 457 void WmDisplayModified(const display::Display& display) override { |
| 462 NOTIMPLEMENTED(); | 458 NOTIMPLEMENTED(); |
| 463 } | 459 } |
| 464 void WmSetBounds(uint32_t change_id, | 460 void WmSetBounds(uint32_t change_id, |
| 465 uint32_t window_id, | 461 uint32_t window_id, |
| 466 const gfx::Rect& bounds) override { | 462 const gfx::Rect& bounds) override { |
| (...skipping 1282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1749 Id window_1_1 = wt_client1()->NewWindow(1); | 1745 Id window_1_1 = wt_client1()->NewWindow(1); |
| 1750 ASSERT_TRUE(window_1_1); | 1746 ASSERT_TRUE(window_1_1); |
| 1751 ASSERT_TRUE(wt_client1()->SetWindowVisibility(window_1_1, true)); | 1747 ASSERT_TRUE(wt_client1()->SetWindowVisibility(window_1_1, true)); |
| 1752 Id window_1_2 = wt_client1()->NewWindow(2); | 1748 Id window_1_2 = wt_client1()->NewWindow(2); |
| 1753 ASSERT_TRUE(window_1_2); | 1749 ASSERT_TRUE(window_1_2); |
| 1754 ASSERT_TRUE(wt_client1()->AddWindow(root_window_id(), window_1_1)); | 1750 ASSERT_TRUE(wt_client1()->AddWindow(root_window_id(), window_1_1)); |
| 1755 ASSERT_TRUE(wt_client1()->AddWindow(window_1_1, window_1_2)); | 1751 ASSERT_TRUE(wt_client1()->AddWindow(window_1_1, window_1_2)); |
| 1756 | 1752 |
| 1757 // Establish the second client at 1,2. | 1753 // Establish the second client at 1,2. |
| 1758 ASSERT_NO_FATAL_FAILURE(EstablishSecondClientWithRoot(window_1_2)); | 1754 ASSERT_NO_FATAL_FAILURE(EstablishSecondClientWithRoot(window_1_2)); |
| 1759 EXPECT_EQ( | 1755 EXPECT_EQ("OnEmbed drawn=true", SingleChangeToDescription2(*changes2())); |
| 1760 base::StringPrintf("OnEmbed FrameSinkId(%d, 0) drawn=true", window_1_2), | |
| 1761 SingleChangeToDescription2(*changes2())); | |
| 1762 changes2()->clear(); | 1756 changes2()->clear(); |
| 1763 | 1757 |
| 1764 // Show 1,2 from client 1. Client 2 should see this. | 1758 // Show 1,2 from client 1. Client 2 should see this. |
| 1765 ASSERT_TRUE(wt_client1()->SetWindowVisibility(window_1_2, true)); | 1759 ASSERT_TRUE(wt_client1()->SetWindowVisibility(window_1_2, true)); |
| 1766 { | 1760 { |
| 1767 wt_client2_->WaitForChangeCount(1); | 1761 wt_client2_->WaitForChangeCount(1); |
| 1768 EXPECT_EQ( | 1762 EXPECT_EQ( |
| 1769 "VisibilityChanged window=" + IdToString(window_1_2) + " visible=true", | 1763 "VisibilityChanged window=" + IdToString(window_1_2) + " visible=true", |
| 1770 SingleChangeToDescription(*changes2())); | 1764 SingleChangeToDescription(*changes2())); |
| 1771 } | 1765 } |
| 1772 } | 1766 } |
| 1773 | 1767 |
| 1774 // Assertions for SetWindowVisibility sending notifications. | 1768 // Assertions for SetWindowVisibility sending notifications. |
| 1775 TEST_F(WindowTreeClientTest, SetWindowVisibilityNotifications3) { | 1769 TEST_F(WindowTreeClientTest, SetWindowVisibilityNotifications3) { |
| 1776 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. | 1770 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. |
| 1777 Id window_1_1 = wt_client1()->NewWindow(1); | 1771 Id window_1_1 = wt_client1()->NewWindow(1); |
| 1778 ASSERT_TRUE(window_1_1); | 1772 ASSERT_TRUE(window_1_1); |
| 1779 Id window_1_2 = wt_client1()->NewWindow(2); | 1773 Id window_1_2 = wt_client1()->NewWindow(2); |
| 1780 ASSERT_TRUE(window_1_2); | 1774 ASSERT_TRUE(window_1_2); |
| 1781 ASSERT_TRUE(wt_client1()->AddWindow(root_window_id(), window_1_1)); | 1775 ASSERT_TRUE(wt_client1()->AddWindow(root_window_id(), window_1_1)); |
| 1782 ASSERT_TRUE(wt_client1()->AddWindow(window_1_1, window_1_2)); | 1776 ASSERT_TRUE(wt_client1()->AddWindow(window_1_1, window_1_2)); |
| 1783 | 1777 |
| 1784 // Establish the second client at 1,2. | 1778 // Establish the second client at 1,2. |
| 1785 // TODO(fsamuel): Currently the FrameSinkId maps directly to the server's | 1779 // TODO(fsamuel): Currently the FrameSinkId maps directly to the server's |
| 1786 // window ID. This is likely bad from a security perspective and should be | 1780 // window ID. This is likely bad from a security perspective and should be |
| 1787 // fixed. | 1781 // fixed. |
| 1788 ASSERT_NO_FATAL_FAILURE(EstablishSecondClientWithRoot(window_1_2)); | 1782 ASSERT_NO_FATAL_FAILURE(EstablishSecondClientWithRoot(window_1_2)); |
| 1789 EXPECT_EQ( | 1783 EXPECT_EQ("OnEmbed drawn=false", SingleChangeToDescription2(*changes2())); |
| 1790 base::StringPrintf("OnEmbed FrameSinkId(%d, 0) drawn=false", window_1_2), | |
| 1791 SingleChangeToDescription2(*changes2())); | |
| 1792 changes2()->clear(); | 1784 changes2()->clear(); |
| 1793 | 1785 |
| 1794 // Show 1,1, drawn should be true for 1,2 (as that is all the child sees). | 1786 // Show 1,1, drawn should be true for 1,2 (as that is all the child sees). |
| 1795 ASSERT_TRUE(wt_client1()->SetWindowVisibility(window_1_1, true)); | 1787 ASSERT_TRUE(wt_client1()->SetWindowVisibility(window_1_1, true)); |
| 1796 { | 1788 { |
| 1797 wt_client2_->WaitForChangeCount(1); | 1789 wt_client2_->WaitForChangeCount(1); |
| 1798 EXPECT_EQ( | 1790 EXPECT_EQ( |
| 1799 "DrawnStateChanged window=" + IdToString(window_1_2) + " drawn=true", | 1791 "DrawnStateChanged window=" + IdToString(window_1_2) + " drawn=true", |
| 1800 SingleChangeToDescription(*changes2())); | 1792 SingleChangeToDescription(*changes2())); |
| 1801 } | 1793 } |
| (...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2271 | 2263 |
| 2272 // TODO(sky): make sure coverage of what was | 2264 // TODO(sky): make sure coverage of what was |
| 2273 // WindowManagerTest.SecondEmbedRoot_InitService and | 2265 // WindowManagerTest.SecondEmbedRoot_InitService and |
| 2274 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window | 2266 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window |
| 2275 // manager | 2267 // manager |
| 2276 // tests. | 2268 // tests. |
| 2277 | 2269 |
| 2278 } // namespace test | 2270 } // namespace test |
| 2279 } // namespace ws | 2271 } // namespace ws |
| 2280 } // namespace ui | 2272 } // namespace ui |
| OLD | NEW |