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

Side by Side Diff: components/mus/ws/window_tree_apptest.cc

Issue 1352043005: mus: Implement Window Server Capture Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added capture unit tests Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "components/mus/public/interfaces/window_tree.mojom.h" 9 #include "components/mus/public/interfaces/window_tree.mojom.h"
10 #include "components/mus/public/interfaces/window_tree_host.mojom.h" 10 #include "components/mus/public/interfaces/window_tree_host.mojom.h"
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 tree_ = tree.Pass(); 291 tree_ = tree.Pass();
292 connection_id_ = connection_id; 292 connection_id_ = connection_id;
293 tracker()->OnEmbed(connection_id, root.Pass()); 293 tracker()->OnEmbed(connection_id, root.Pass());
294 if (embed_run_loop_) 294 if (embed_run_loop_)
295 embed_run_loop_->Quit(); 295 embed_run_loop_->Quit();
296 } 296 }
297 void OnEmbeddedAppDisconnected(Id window_id) override { 297 void OnEmbeddedAppDisconnected(Id window_id) override {
298 tracker()->OnEmbeddedAppDisconnected(window_id); 298 tracker()->OnEmbeddedAppDisconnected(window_id);
299 } 299 }
300 void OnUnembed() override { tracker()->OnUnembed(); } 300 void OnUnembed() override { tracker()->OnUnembed(); }
301 void OnLostCapture(Id window_id) override {
302 tracker()->OnLostCapture(window_id);
303 }
301 void OnWindowBoundsChanged(Id window_id, 304 void OnWindowBoundsChanged(Id window_id,
302 RectPtr old_bounds, 305 RectPtr old_bounds,
303 RectPtr new_bounds) override { 306 RectPtr new_bounds) override {
304 // The bounds of the root may change during startup on Android at random 307 // The bounds of the root may change during startup on Android at random
305 // times. As this doesn't matter, and shouldn't impact test exepctations, 308 // times. As this doesn't matter, and shouldn't impact test exepctations,
306 // it is ignored. 309 // it is ignored.
307 if (window_id == root_window_id_) 310 if (window_id == root_window_id_)
308 return; 311 return;
309 tracker()->OnWindowBoundsChanged(window_id, old_bounds.Pass(), 312 tracker()->OnWindowBoundsChanged(window_id, old_bounds.Pass(),
310 new_bounds.Pass()); 313 new_bounds.Pass());
(...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 1759
1757 changes1()->clear(); 1760 changes1()->clear();
1758 ASSERT_TRUE(DeleteWindow(ws2(), window_2_1)); 1761 ASSERT_TRUE(DeleteWindow(ws2(), window_2_1));
1759 ws_client1()->WaitForChangeCount(2); 1762 ws_client1()->WaitForChangeCount(2);
1760 EXPECT_EQ("WindowDeleted window=" + IdToString(window_2_2), 1763 EXPECT_EQ("WindowDeleted window=" + IdToString(window_2_2),
1761 ChangesToDescription1(*changes1())[0]); 1764 ChangesToDescription1(*changes1())[0]);
1762 EXPECT_EQ("WindowDeleted window=" + IdToString(window_2_1), 1765 EXPECT_EQ("WindowDeleted window=" + IdToString(window_2_1),
1763 ChangesToDescription1(*changes1())[1]); 1766 ChangesToDescription1(*changes1())[1]);
1764 } 1767 }
1765 1768
1769 TEST_F(WindowTreeAppTest, ExplicitCapturePropagation) {
1770 Id window_1_1 = ws_client1()->NewWindow(1);
1771 Id window_1_2 = ws_client1()->NewWindow(2);
1772 changes1()->clear();
1773 // Window 1 takes capture then Window 2 takes capture.
1774 // Verify that window 1 has lost capture.
1775 ws1()->SetCapture(1, window_1_1);
1776 ws1()->SetCapture(2, window_1_2);
1777 ws_client1_->WaitForChangeCount(1);
1778
1779 EXPECT_EQ("OnLostCapture window=" + IdToString(window_1_1),
1780 SingleChangeToDescription(*changes1()));
1781 changes1()->clear();
1782 ws1()->ReleaseCapture(3, window_1_2);
1783 ws_client1_->WaitForChangeCount(1);
1784
1785 EXPECT_EQ("OnLostCapture window=" + IdToString(window_1_2),
1786 SingleChangeToDescription(*changes1()));
1787 }
1788
1766 // TODO(sky): need to better track changes to initial connection. For example, 1789 // TODO(sky): need to better track changes to initial connection. For example,
1767 // that SetBounsdWindows/AddWindow and the like don't result in messages to the 1790 // that SetBounsdWindows/AddWindow and the like don't result in messages to the
1768 // originating connection. 1791 // originating connection.
1769 1792
1770 // TODO(sky): make sure coverage of what was 1793 // TODO(sky): make sure coverage of what was
1771 // WindowManagerTest.SecondEmbedRoot_InitService and 1794 // WindowManagerTest.SecondEmbedRoot_InitService and
1772 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window 1795 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window
1773 // manager 1796 // manager
1774 // tests. 1797 // tests.
1775 1798
1776 } // namespace ws 1799 } // namespace ws
1777 } // namespace mus 1800 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698