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/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 // Overridden from WindowObserver: | 67 // Overridden from WindowObserver: |
68 void OnWindowBoundsChanged(Window* window, | 68 void OnWindowBoundsChanged(Window* window, |
69 const gfx::Rect& old_bounds, | 69 const gfx::Rect& old_bounds, |
70 const gfx::Rect& new_bounds) override { | 70 const gfx::Rect& new_bounds) override { |
71 DCHECK_EQ(window, window_); | 71 DCHECK_EQ(window, window_); |
72 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 72 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
73 } | 73 } |
74 | 74 |
75 Window* window_; | 75 Window* window_; |
76 | 76 |
77 MOJO_DISALLOW_COPY_AND_ASSIGN(BoundsChangeObserver); | 77 DISALLOW_COPY_AND_ASSIGN(BoundsChangeObserver); |
78 }; | 78 }; |
79 | 79 |
80 // Wait until the bounds of the supplied window change; returns false on | 80 // Wait until the bounds of the supplied window change; returns false on |
81 // timeout. | 81 // timeout. |
82 bool WaitForBoundsToChange(Window* window) { | 82 bool WaitForBoundsToChange(Window* window) { |
83 BoundsChangeObserver observer(window); | 83 BoundsChangeObserver observer(window); |
84 return WindowServerTestBase::DoRunLoopWithTimeout(); | 84 return WindowServerTestBase::DoRunLoopWithTimeout(); |
85 } | 85 } |
86 | 86 |
87 class ClientAreaChangeObserver : public WindowObserver { | 87 class ClientAreaChangeObserver : public WindowObserver { |
88 public: | 88 public: |
89 explicit ClientAreaChangeObserver(Window* window) : window_(window) { | 89 explicit ClientAreaChangeObserver(Window* window) : window_(window) { |
90 window_->AddObserver(this); | 90 window_->AddObserver(this); |
91 } | 91 } |
92 ~ClientAreaChangeObserver() override { window_->RemoveObserver(this); } | 92 ~ClientAreaChangeObserver() override { window_->RemoveObserver(this); } |
93 | 93 |
94 private: | 94 private: |
95 // Overridden from WindowObserver: | 95 // Overridden from WindowObserver: |
96 void OnWindowClientAreaChanged( | 96 void OnWindowClientAreaChanged( |
97 Window* window, | 97 Window* window, |
98 const gfx::Insets& old_client_area, | 98 const gfx::Insets& old_client_area, |
99 const std::vector<gfx::Rect>& old_additional_client_areas) override { | 99 const std::vector<gfx::Rect>& old_additional_client_areas) override { |
100 DCHECK_EQ(window, window_); | 100 DCHECK_EQ(window, window_); |
101 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 101 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
102 } | 102 } |
103 | 103 |
104 Window* window_; | 104 Window* window_; |
105 | 105 |
106 MOJO_DISALLOW_COPY_AND_ASSIGN(ClientAreaChangeObserver); | 106 DISALLOW_COPY_AND_ASSIGN(ClientAreaChangeObserver); |
107 }; | 107 }; |
108 | 108 |
109 // Wait until the bounds of the supplied window change; returns false on | 109 // Wait until the bounds of the supplied window change; returns false on |
110 // timeout. | 110 // timeout. |
111 bool WaitForClientAreaToChange(Window* window) { | 111 bool WaitForClientAreaToChange(Window* window) { |
112 ClientAreaChangeObserver observer(window); | 112 ClientAreaChangeObserver observer(window); |
113 return WindowServerTestBase::DoRunLoopWithTimeout(); | 113 return WindowServerTestBase::DoRunLoopWithTimeout(); |
114 } | 114 } |
115 | 115 |
116 // Spins a run loop until the tree beginning at |root| has |tree_size| windows | 116 // Spins a run loop until the tree beginning at |root| has |tree_size| windows |
(...skipping 19 matching lines...) Expand all Loading... |
136 size_t count = 1; | 136 size_t count = 1; |
137 Window::Children::const_iterator it = window->children().begin(); | 137 Window::Children::const_iterator it = window->children().begin(); |
138 for (; it != window->children().end(); ++it) | 138 for (; it != window->children().end(); ++it) |
139 count += CountWindows(*it); | 139 count += CountWindows(*it); |
140 return count; | 140 return count; |
141 } | 141 } |
142 | 142 |
143 Window* tree_; | 143 Window* tree_; |
144 size_t tree_size_; | 144 size_t tree_size_; |
145 | 145 |
146 MOJO_DISALLOW_COPY_AND_ASSIGN(TreeSizeMatchesObserver); | 146 DISALLOW_COPY_AND_ASSIGN(TreeSizeMatchesObserver); |
147 }; | 147 }; |
148 | 148 |
149 // Wait until |window| has |tree_size| descendants; returns false on timeout. | 149 // Wait until |window| has |tree_size| descendants; returns false on timeout. |
150 // The count includes |window|. For example, if you want to wait for |window| to | 150 // The count includes |window|. For example, if you want to wait for |window| to |
151 // have a single child, use a |tree_size| of 2. | 151 // have a single child, use a |tree_size| of 2. |
152 bool WaitForTreeSizeToMatch(Window* window, size_t tree_size) { | 152 bool WaitForTreeSizeToMatch(Window* window, size_t tree_size) { |
153 TreeSizeMatchesObserver observer(window, tree_size); | 153 TreeSizeMatchesObserver observer(window, tree_size); |
154 return observer.IsTreeCorrectSize() || | 154 return observer.IsTreeCorrectSize() || |
155 WindowServerTestBase::DoRunLoopWithTimeout(); | 155 WindowServerTestBase::DoRunLoopWithTimeout(); |
156 } | 156 } |
157 | 157 |
158 class OrderChangeObserver : public WindowObserver { | 158 class OrderChangeObserver : public WindowObserver { |
159 public: | 159 public: |
160 OrderChangeObserver(Window* window) : window_(window) { | 160 OrderChangeObserver(Window* window) : window_(window) { |
161 window_->AddObserver(this); | 161 window_->AddObserver(this); |
162 } | 162 } |
163 ~OrderChangeObserver() override { window_->RemoveObserver(this); } | 163 ~OrderChangeObserver() override { window_->RemoveObserver(this); } |
164 | 164 |
165 private: | 165 private: |
166 // Overridden from WindowObserver: | 166 // Overridden from WindowObserver: |
167 void OnWindowReordered(Window* window, | 167 void OnWindowReordered(Window* window, |
168 Window* relative_window, | 168 Window* relative_window, |
169 mojom::OrderDirection direction) override { | 169 mojom::OrderDirection direction) override { |
170 DCHECK_EQ(window, window_); | 170 DCHECK_EQ(window, window_); |
171 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 171 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
172 } | 172 } |
173 | 173 |
174 Window* window_; | 174 Window* window_; |
175 | 175 |
176 MOJO_DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver); | 176 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver); |
177 }; | 177 }; |
178 | 178 |
179 // Wait until |window|'s tree size matches |tree_size|; returns false on | 179 // Wait until |window|'s tree size matches |tree_size|; returns false on |
180 // timeout. | 180 // timeout. |
181 bool WaitForOrderChange(WindowTreeConnection* connection, Window* window) { | 181 bool WaitForOrderChange(WindowTreeConnection* connection, Window* window) { |
182 OrderChangeObserver observer(window); | 182 OrderChangeObserver observer(window); |
183 return WindowServerTestBase::DoRunLoopWithTimeout(); | 183 return WindowServerTestBase::DoRunLoopWithTimeout(); |
184 } | 184 } |
185 | 185 |
186 // Tracks a window's destruction. Query is_valid() for current state. | 186 // Tracks a window's destruction. Query is_valid() for current state. |
(...skipping 11 matching lines...) Expand all Loading... |
198 | 198 |
199 private: | 199 private: |
200 // Overridden from WindowObserver: | 200 // Overridden from WindowObserver: |
201 void OnWindowDestroyed(Window* window) override { | 201 void OnWindowDestroyed(Window* window) override { |
202 DCHECK_EQ(window, window_); | 202 DCHECK_EQ(window, window_); |
203 window_ = nullptr; | 203 window_ = nullptr; |
204 } | 204 } |
205 | 205 |
206 Window* window_; | 206 Window* window_; |
207 | 207 |
208 MOJO_DISALLOW_COPY_AND_ASSIGN(WindowTracker); | 208 DISALLOW_COPY_AND_ASSIGN(WindowTracker); |
209 }; | 209 }; |
210 | 210 |
211 } // namespace | 211 } // namespace |
212 | 212 |
213 // WindowServer | 213 // WindowServer |
214 // ----------------------------------------------------------------- | 214 // ----------------------------------------------------------------- |
215 | 215 |
216 struct EmbedResult { | 216 struct EmbedResult { |
217 EmbedResult(WindowTreeConnection* connection, ConnectionSpecificId id) | 217 EmbedResult(WindowTreeConnection* connection, ConnectionSpecificId id) |
218 : connection(connection), connection_id(id) {} | 218 : connection(connection), connection_id(id) {} |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 void EmbedCallbackImpl(bool result, ConnectionSpecificId connection_id) { | 321 void EmbedCallbackImpl(bool result, ConnectionSpecificId connection_id) { |
322 embed_details_->callback_run = true; | 322 embed_details_->callback_run = true; |
323 embed_details_->result = result; | 323 embed_details_->result = result; |
324 embed_details_->connection_id = connection_id; | 324 embed_details_->connection_id = connection_id; |
325 if (embed_details_->waiting && (!result || embed_details_->connection)) | 325 if (embed_details_->waiting && (!result || embed_details_->connection)) |
326 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 326 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
327 } | 327 } |
328 | 328 |
329 scoped_ptr<EmbedDetails> embed_details_; | 329 scoped_ptr<EmbedDetails> embed_details_; |
330 | 330 |
331 MOJO_DISALLOW_COPY_AND_ASSIGN(WindowServerTest); | 331 DISALLOW_COPY_AND_ASSIGN(WindowServerTest); |
332 }; | 332 }; |
333 | 333 |
334 TEST_F(WindowServerTest, RootWindow) { | 334 TEST_F(WindowServerTest, RootWindow) { |
335 ASSERT_NE(nullptr, window_manager()); | 335 ASSERT_NE(nullptr, window_manager()); |
336 EXPECT_EQ(1u, window_manager()->GetRoots().size()); | 336 EXPECT_EQ(1u, window_manager()->GetRoots().size()); |
337 } | 337 } |
338 | 338 |
339 TEST_F(WindowServerTest, Embed) { | 339 TEST_F(WindowServerTest, Embed) { |
340 Window* window = window_manager()->NewWindow(); | 340 Window* window = window_manager()->NewWindow(); |
341 ASSERT_NE(nullptr, window); | 341 ASSERT_NE(nullptr, window); |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 | 533 |
534 private: | 534 private: |
535 // Overridden from WindowObserver: | 535 // Overridden from WindowObserver: |
536 void OnWindowVisibilityChanged(Window* window) override { | 536 void OnWindowVisibilityChanged(Window* window) override { |
537 EXPECT_EQ(window, window_); | 537 EXPECT_EQ(window, window_); |
538 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 538 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
539 } | 539 } |
540 | 540 |
541 Window* window_; | 541 Window* window_; |
542 | 542 |
543 MOJO_DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver); | 543 DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver); |
544 }; | 544 }; |
545 | 545 |
546 } // namespace | 546 } // namespace |
547 | 547 |
548 TEST_F(WindowServerTest, Visible) { | 548 TEST_F(WindowServerTest, Visible) { |
549 Window* window1 = window_manager()->NewWindow(); | 549 Window* window1 = window_manager()->NewWindow(); |
550 window1->SetVisible(true); | 550 window1->SetVisible(true); |
551 GetFirstWMRoot()->AddChild(window1); | 551 GetFirstWMRoot()->AddChild(window1); |
552 | 552 |
553 // Embed another app and verify initial state. | 553 // Embed another app and verify initial state. |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 | 597 |
598 private: | 598 private: |
599 // Overridden from WindowObserver: | 599 // Overridden from WindowObserver: |
600 void OnWindowDrawnChanged(Window* window) override { | 600 void OnWindowDrawnChanged(Window* window) override { |
601 EXPECT_EQ(window, window_); | 601 EXPECT_EQ(window, window_); |
602 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 602 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
603 } | 603 } |
604 | 604 |
605 Window* window_; | 605 Window* window_; |
606 | 606 |
607 MOJO_DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver); | 607 DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver); |
608 }; | 608 }; |
609 | 609 |
610 } // namespace | 610 } // namespace |
611 | 611 |
612 TEST_F(WindowServerTest, Drawn) { | 612 TEST_F(WindowServerTest, Drawn) { |
613 Window* window1 = window_manager()->NewWindow(); | 613 Window* window1 = window_manager()->NewWindow(); |
614 window1->SetVisible(true); | 614 window1->SetVisible(true); |
615 GetFirstWMRoot()->AddChild(window1); | 615 GetFirstWMRoot()->AddChild(window1); |
616 | 616 |
617 // Embed another app and verify initial state. | 617 // Embed another app and verify initial state. |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 last_lost_focus_ = lost_focus; | 668 last_lost_focus_ = lost_focus; |
669 if (quit_on_change_) | 669 if (quit_on_change_) |
670 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 670 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
671 } | 671 } |
672 | 672 |
673 Window* window_; | 673 Window* window_; |
674 Window* last_gained_focus_; | 674 Window* last_gained_focus_; |
675 Window* last_lost_focus_; | 675 Window* last_lost_focus_; |
676 bool quit_on_change_; | 676 bool quit_on_change_; |
677 | 677 |
678 MOJO_DISALLOW_COPY_AND_ASSIGN(FocusChangeObserver); | 678 DISALLOW_COPY_AND_ASSIGN(FocusChangeObserver); |
679 }; | 679 }; |
680 | 680 |
681 class NullFocusChangeObserver : public WindowTreeConnectionObserver { | 681 class NullFocusChangeObserver : public WindowTreeConnectionObserver { |
682 public: | 682 public: |
683 explicit NullFocusChangeObserver(WindowTreeConnection* connection) | 683 explicit NullFocusChangeObserver(WindowTreeConnection* connection) |
684 : connection_(connection) { | 684 : connection_(connection) { |
685 connection_->AddObserver(this); | 685 connection_->AddObserver(this); |
686 } | 686 } |
687 ~NullFocusChangeObserver() override { connection_->RemoveObserver(this); } | 687 ~NullFocusChangeObserver() override { connection_->RemoveObserver(this); } |
688 | 688 |
689 private: | 689 private: |
690 // Overridden from WindowTreeConnectionObserver. | 690 // Overridden from WindowTreeConnectionObserver. |
691 void OnWindowTreeFocusChanged(Window* gained_focus, | 691 void OnWindowTreeFocusChanged(Window* gained_focus, |
692 Window* lost_focus) override { | 692 Window* lost_focus) override { |
693 if (!gained_focus) | 693 if (!gained_focus) |
694 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 694 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
695 } | 695 } |
696 | 696 |
697 WindowTreeConnection* connection_; | 697 WindowTreeConnection* connection_; |
698 | 698 |
699 MOJO_DISALLOW_COPY_AND_ASSIGN(NullFocusChangeObserver); | 699 DISALLOW_COPY_AND_ASSIGN(NullFocusChangeObserver); |
700 }; | 700 }; |
701 | 701 |
702 bool WaitForWindowToHaveFocus(Window* window) { | 702 bool WaitForWindowToHaveFocus(Window* window) { |
703 if (window->HasFocus()) | 703 if (window->HasFocus()) |
704 return true; | 704 return true; |
705 FocusChangeObserver observer(window); | 705 FocusChangeObserver observer(window); |
706 return WindowServerTestBase::DoRunLoopWithTimeout(); | 706 return WindowServerTestBase::DoRunLoopWithTimeout(); |
707 } | 707 } |
708 | 708 |
709 bool WaitForNoWindowToHaveFocus(WindowTreeConnection* connection) { | 709 bool WaitForNoWindowToHaveFocus(WindowTreeConnection* connection) { |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
897 window_ = nullptr; | 897 window_ = nullptr; |
898 | 898 |
899 // We should always get OnWindowDestroyed() before OnConnectionLost(). | 899 // We should always get OnWindowDestroyed() before OnConnectionLost(). |
900 EXPECT_FALSE(test_->window_tree_connection_destroyed()); | 900 EXPECT_FALSE(test_->window_tree_connection_destroyed()); |
901 } | 901 } |
902 | 902 |
903 WindowServerTestBase* test_; | 903 WindowServerTestBase* test_; |
904 Window* window_; | 904 Window* window_; |
905 bool* got_destroy_; | 905 bool* got_destroy_; |
906 | 906 |
907 MOJO_DISALLOW_COPY_AND_ASSIGN(DestroyedChangedObserver); | 907 DISALLOW_COPY_AND_ASSIGN(DestroyedChangedObserver); |
908 }; | 908 }; |
909 | 909 |
910 } // namespace | 910 } // namespace |
911 | 911 |
912 // Verifies deleting a WindowServer sends the right notifications. | 912 // Verifies deleting a WindowServer sends the right notifications. |
913 TEST_F(WindowServerTest, DeleteWindowServer) { | 913 TEST_F(WindowServerTest, DeleteWindowServer) { |
914 Window* window = window_manager()->NewWindow(); | 914 Window* window = window_manager()->NewWindow(); |
915 ASSERT_NE(nullptr, window); | 915 ASSERT_NE(nullptr, window); |
916 window->SetVisible(true); | 916 window->SetVisible(true); |
917 GetFirstWMRoot()->AddChild(window); | 917 GetFirstWMRoot()->AddChild(window); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
956 private: | 956 private: |
957 // Overridden from WindowObserver: | 957 // Overridden from WindowObserver: |
958 void OnTreeChanged(const TreeChangeParams& params) override { | 958 void OnTreeChanged(const TreeChangeParams& params) override { |
959 if (params.target == window_ && !params.new_parent) | 959 if (params.target == window_ && !params.new_parent) |
960 was_removed_ = true; | 960 was_removed_ = true; |
961 } | 961 } |
962 | 962 |
963 Window* window_; | 963 Window* window_; |
964 bool was_removed_; | 964 bool was_removed_; |
965 | 965 |
966 MOJO_DISALLOW_COPY_AND_ASSIGN(WindowRemovedFromParentObserver); | 966 DISALLOW_COPY_AND_ASSIGN(WindowRemovedFromParentObserver); |
967 }; | 967 }; |
968 | 968 |
969 TEST_F(WindowServerTest, EmbedRemovesChildren) { | 969 TEST_F(WindowServerTest, EmbedRemovesChildren) { |
970 Window* window1 = window_manager()->NewWindow(); | 970 Window* window1 = window_manager()->NewWindow(); |
971 Window* window2 = window_manager()->NewWindow(); | 971 Window* window2 = window_manager()->NewWindow(); |
972 GetFirstWMRoot()->AddChild(window1); | 972 GetFirstWMRoot()->AddChild(window1); |
973 window1->AddChild(window2); | 973 window1->AddChild(window2); |
974 | 974 |
975 WindowRemovedFromParentObserver observer(window2); | 975 WindowRemovedFromParentObserver observer(window2); |
976 window1->Embed(ConnectAndGetWindowServerClient()); | 976 window1->Embed(ConnectAndGetWindowServerClient()); |
(...skipping 28 matching lines...) Expand all Loading... |
1005 // We should always get OnWindowDestroyed() before | 1005 // We should always get OnWindowDestroyed() before |
1006 // OnWindowManagerDestroyed(). | 1006 // OnWindowManagerDestroyed(). |
1007 EXPECT_FALSE(test_->window_tree_connection_destroyed()); | 1007 EXPECT_FALSE(test_->window_tree_connection_destroyed()); |
1008 | 1008 |
1009 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); | 1009 EXPECT_TRUE(WindowServerTestBase::QuitRunLoop()); |
1010 } | 1010 } |
1011 | 1011 |
1012 WindowServerTestBase* test_; | 1012 WindowServerTestBase* test_; |
1013 bool* got_destroy_; | 1013 bool* got_destroy_; |
1014 | 1014 |
1015 MOJO_DISALLOW_COPY_AND_ASSIGN(DestroyObserver); | 1015 DISALLOW_COPY_AND_ASSIGN(DestroyObserver); |
1016 }; | 1016 }; |
1017 | 1017 |
1018 } // namespace | 1018 } // namespace |
1019 | 1019 |
1020 // Verifies deleting a Window that is the root of another connection notifies | 1020 // Verifies deleting a Window that is the root of another connection notifies |
1021 // observers in the right order (OnWindowDestroyed() before | 1021 // observers in the right order (OnWindowDestroyed() before |
1022 // OnWindowManagerDestroyed()). | 1022 // OnWindowManagerDestroyed()). |
1023 TEST_F(WindowServerTest, WindowServerDestroyedAfterRootObserver) { | 1023 TEST_F(WindowServerTest, WindowServerDestroyedAfterRootObserver) { |
1024 Window* embed_window = window_manager()->NewWindow(); | 1024 Window* embed_window = window_manager()->NewWindow(); |
1025 GetFirstWMRoot()->AddChild(embed_window); | 1025 GetFirstWMRoot()->AddChild(embed_window); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 ASSERT_TRUE(window_in_wm); | 1172 ASSERT_TRUE(window_in_wm); |
1173 | 1173 |
1174 // Change the bounds in the wm, and make sure the child sees it. | 1174 // Change the bounds in the wm, and make sure the child sees it. |
1175 window_in_wm->SetBounds(gfx::Rect(1, 11, 12, 101)); | 1175 window_in_wm->SetBounds(gfx::Rect(1, 11, 12, 101)); |
1176 ASSERT_TRUE(WaitForBoundsToChange(window_in_second_connection)); | 1176 ASSERT_TRUE(WaitForBoundsToChange(window_in_second_connection)); |
1177 EXPECT_EQ(gfx::Rect(1, 11, 12, 101), window_in_second_connection->bounds()); | 1177 EXPECT_EQ(gfx::Rect(1, 11, 12, 101), window_in_second_connection->bounds()); |
1178 } | 1178 } |
1179 | 1179 |
1180 } // namespace ws | 1180 } // namespace ws |
1181 } // namespace mus | 1181 } // namespace mus |
OLD | NEW |