| 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/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 int* connection_id) { | 540 int* connection_id) { |
| 541 return EstablishConnectionViaEmbedWithPolicyBitmask( | 541 return EstablishConnectionViaEmbedWithPolicyBitmask( |
| 542 owner, root_id, mojom::WindowTree::kAccessPolicyDefault, connection_id); | 542 owner, root_id, mojom::WindowTree::kAccessPolicyDefault, connection_id); |
| 543 } | 543 } |
| 544 | 544 |
| 545 scoped_ptr<TestWindowTreeClientImpl> | 545 scoped_ptr<TestWindowTreeClientImpl> |
| 546 EstablishConnectionViaEmbedWithPolicyBitmask(WindowTree* owner, | 546 EstablishConnectionViaEmbedWithPolicyBitmask(WindowTree* owner, |
| 547 Id root_id, | 547 Id root_id, |
| 548 uint32_t policy_bitmask, | 548 uint32_t policy_bitmask, |
| 549 int* connection_id) { | 549 int* connection_id) { |
| 550 if (!EmbedUrl(connector(), owner, test_url(), root_id)) { | 550 if (!EmbedUrl(connector(), owner, test_name(), root_id)) { |
| 551 ADD_FAILURE() << "Embed() failed"; | 551 ADD_FAILURE() << "Embed() failed"; |
| 552 return nullptr; | 552 return nullptr; |
| 553 } | 553 } |
| 554 scoped_ptr<TestWindowTreeClientImpl> client = | 554 scoped_ptr<TestWindowTreeClientImpl> client = |
| 555 client_factory_->WaitForInstance(); | 555 client_factory_->WaitForInstance(); |
| 556 if (!client.get()) { | 556 if (!client.get()) { |
| 557 ADD_FAILURE() << "WaitForInstance failed"; | 557 ADD_FAILURE() << "WaitForInstance failed"; |
| 558 return nullptr; | 558 return nullptr; |
| 559 } | 559 } |
| 560 client->WaitForOnEmbed(); | 560 client->WaitForOnEmbed(); |
| (...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1717 ASSERT_TRUE(ws_client2()->AddWindow(window_1_1, window_2_1)); | 1717 ASSERT_TRUE(ws_client2()->AddWindow(window_1_1, window_2_1)); |
| 1718 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(ws2(), window_2_1)); | 1718 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(ws2(), window_2_1)); |
| 1719 | 1719 |
| 1720 Id window_3_3 = ws_client3()->NewWindow(3); | 1720 Id window_3_3 = ws_client3()->NewWindow(3); |
| 1721 ASSERT_TRUE(window_3_3); | 1721 ASSERT_TRUE(window_3_3); |
| 1722 ASSERT_TRUE(ws_client3()->AddWindow(window_2_1, window_3_3)); | 1722 ASSERT_TRUE(ws_client3()->AddWindow(window_2_1, window_3_3)); |
| 1723 | 1723 |
| 1724 // 2 should not be able to embed in window_3_3 as window_3_3 was not created | 1724 // 2 should not be able to embed in window_3_3 as window_3_3 was not created |
| 1725 // by | 1725 // by |
| 1726 // 2. | 1726 // 2. |
| 1727 EXPECT_FALSE(EmbedUrl(connector(), ws2(), test_url(), window_3_3)); | 1727 EXPECT_FALSE(EmbedUrl(connector(), ws2(), test_name(), window_3_3)); |
| 1728 } | 1728 } |
| 1729 | 1729 |
| 1730 // Verifies Embed() from window manager on another connections window works. | 1730 // Verifies Embed() from window manager on another connections window works. |
| 1731 TEST_F(WindowTreeAppTest, EmbedFromOtherConnection) { | 1731 TEST_F(WindowTreeAppTest, EmbedFromOtherConnection) { |
| 1732 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1732 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1733 | 1733 |
| 1734 Id window_1_1 = BuildWindowId(connection_id_1(), 1); | 1734 Id window_1_1 = BuildWindowId(connection_id_1(), 1); |
| 1735 Id window_2_1 = ws_client2()->NewWindow(1); | 1735 Id window_2_1 = ws_client2()->NewWindow(1); |
| 1736 ASSERT_TRUE(window_2_1); | 1736 ASSERT_TRUE(window_2_1); |
| 1737 ASSERT_TRUE(ws_client2()->AddWindow(window_1_1, window_2_1)); | 1737 ASSERT_TRUE(ws_client2()->AddWindow(window_1_1, window_2_1)); |
| 1738 | 1738 |
| 1739 changes2()->clear(); | 1739 changes2()->clear(); |
| 1740 | 1740 |
| 1741 // Establish a third connection in window_2_1. | 1741 // Establish a third connection in window_2_1. |
| 1742 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(ws1(), window_2_1)); | 1742 ASSERT_NO_FATAL_FAILURE(EstablishThirdConnection(ws1(), window_2_1)); |
| 1743 | 1743 |
| 1744 ASSERT_TRUE(ws_client2()->WaitForAllMessages()); | 1744 ASSERT_TRUE(ws_client2()->WaitForAllMessages()); |
| 1745 EXPECT_EQ(std::string(), SingleChangeToDescription(*changes2())); | 1745 EXPECT_EQ(std::string(), SingleChangeToDescription(*changes2())); |
| 1746 } | 1746 } |
| 1747 | 1747 |
| 1748 TEST_F(WindowTreeAppTest, CantEmbedFromConnectionRoot) { | 1748 TEST_F(WindowTreeAppTest, CantEmbedFromConnectionRoot) { |
| 1749 // Shouldn't be able to embed into the root. | 1749 // Shouldn't be able to embed into the root. |
| 1750 ASSERT_FALSE(EmbedUrl(connector(), ws1(), test_url(), root_window_id())); | 1750 ASSERT_FALSE(EmbedUrl(connector(), ws1(), test_name(), root_window_id())); |
| 1751 | 1751 |
| 1752 // Even though the call above failed a WindowTreeClient was obtained. We need | 1752 // Even though the call above failed a WindowTreeClient was obtained. We need |
| 1753 // to | 1753 // to |
| 1754 // wait for it else we throw off the next connect. | 1754 // wait for it else we throw off the next connect. |
| 1755 WaitForWindowTreeClient(); | 1755 WaitForWindowTreeClient(); |
| 1756 | 1756 |
| 1757 // Don't allow a connection to embed into its own root. | 1757 // Don't allow a connection to embed into its own root. |
| 1758 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1758 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1759 EXPECT_FALSE(EmbedUrl(connector(), ws2(), test_url(), | 1759 EXPECT_FALSE(EmbedUrl(connector(), ws2(), test_name(), |
| 1760 BuildWindowId(connection_id_1(), 1))); | 1760 BuildWindowId(connection_id_1(), 1))); |
| 1761 | 1761 |
| 1762 // Need to wait for a WindowTreeClient for same reason as above. | 1762 // Need to wait for a WindowTreeClient for same reason as above. |
| 1763 WaitForWindowTreeClient(); | 1763 WaitForWindowTreeClient(); |
| 1764 | 1764 |
| 1765 Id window_1_2 = ws_client1()->NewWindow(2); | 1765 Id window_1_2 = ws_client1()->NewWindow(2); |
| 1766 ASSERT_TRUE(window_1_2); | 1766 ASSERT_TRUE(window_1_2); |
| 1767 ASSERT_TRUE( | 1767 ASSERT_TRUE( |
| 1768 ws_client1()->AddWindow(BuildWindowId(connection_id_1(), 1), window_1_2)); | 1768 ws_client1()->AddWindow(BuildWindowId(connection_id_1(), 1), window_1_2)); |
| 1769 ASSERT_TRUE(ws_client3_.get() == nullptr); | 1769 ASSERT_TRUE(ws_client3_.get() == nullptr); |
| 1770 ws_client3_ = EstablishConnectionViaEmbedWithPolicyBitmask( | 1770 ws_client3_ = EstablishConnectionViaEmbedWithPolicyBitmask( |
| 1771 ws1(), window_1_2, mojom::WindowTree::kAccessPolicyEmbedRoot, nullptr); | 1771 ws1(), window_1_2, mojom::WindowTree::kAccessPolicyEmbedRoot, nullptr); |
| 1772 ASSERT_TRUE(ws_client3_.get() != nullptr); | 1772 ASSERT_TRUE(ws_client3_.get() != nullptr); |
| 1773 | 1773 |
| 1774 // window_1_2 is ws3's root, so even though v3 is an embed root it should not | 1774 // window_1_2 is ws3's root, so even though v3 is an embed root it should not |
| 1775 // be able to Embed into itself. | 1775 // be able to Embed into itself. |
| 1776 ASSERT_FALSE(EmbedUrl(connector(), ws3(), test_url(), window_1_2)); | 1776 ASSERT_FALSE(EmbedUrl(connector(), ws3(), test_name(), window_1_2)); |
| 1777 } | 1777 } |
| 1778 | 1778 |
| 1779 // Verifies that a transient window tracks its parent's lifetime. | 1779 // Verifies that a transient window tracks its parent's lifetime. |
| 1780 TEST_F(WindowTreeAppTest, TransientWindowTracksTransientParentLifetime) { | 1780 TEST_F(WindowTreeAppTest, TransientWindowTracksTransientParentLifetime) { |
| 1781 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); | 1781 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1782 Id window_1_1 = BuildWindowId(connection_id_1(), 1); | 1782 Id window_1_1 = BuildWindowId(connection_id_1(), 1); |
| 1783 | 1783 |
| 1784 Id window_2_1 = ws_client2()->NewWindow(1); | 1784 Id window_2_1 = ws_client2()->NewWindow(1); |
| 1785 Id window_2_2 = ws_client2()->NewWindow(2); | 1785 Id window_2_2 = ws_client2()->NewWindow(2); |
| 1786 Id window_2_3 = ws_client2()->NewWindow(3); | 1786 Id window_2_3 = ws_client2()->NewWindow(3); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1922 // originating connection. | 1922 // originating connection. |
| 1923 | 1923 |
| 1924 // TODO(sky): make sure coverage of what was | 1924 // TODO(sky): make sure coverage of what was |
| 1925 // WindowManagerTest.SecondEmbedRoot_InitService and | 1925 // WindowManagerTest.SecondEmbedRoot_InitService and |
| 1926 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window | 1926 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window |
| 1927 // manager | 1927 // manager |
| 1928 // tests. | 1928 // tests. |
| 1929 | 1929 |
| 1930 } // namespace ws | 1930 } // namespace ws |
| 1931 } // namespace mus | 1931 } // namespace mus |
| OLD | NEW |