| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "mojo/edk/system/core.h" | 5 #include "mojo/edk/system/core.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1785 EXPECT_EQ(MOJO_RESULT_OK, | 1785 EXPECT_EQ(MOJO_RESULT_OK, |
| 1786 core()->WriteMessage(h0, NullUserPointer(), 0, | 1786 core()->WriteMessage(h0, NullUserPointer(), 0, |
| 1787 MakeUserPointer(h_passed), 2, | 1787 MakeUserPointer(h_passed), 2, |
| 1788 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1788 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1789 | 1789 |
| 1790 // Again, nothing bad happens, but again you can only close |h0|. | 1790 // Again, nothing bad happens, but again you can only close |h0|. |
| 1791 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h0)); | 1791 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h0)); |
| 1792 } | 1792 } |
| 1793 } | 1793 } |
| 1794 | 1794 |
| 1795 // Tests not having versus not having the transfer right. |
| 1796 TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing4) { |
| 1797 MojoHandle h0 = MOJO_HANDLE_INVALID; |
| 1798 MojoHandle h1 = MOJO_HANDLE_INVALID; |
| 1799 EXPECT_EQ(MOJO_RESULT_OK, |
| 1800 core()->CreateMessagePipe(NullUserPointer(), MakeUserPointer(&h0), |
| 1801 MakeUserPointer(&h1))); |
| 1802 |
| 1803 MojoHandle h_transferrable = MOJO_HANDLE_INVALID; |
| 1804 EXPECT_EQ(MOJO_RESULT_OK, |
| 1805 core()->CreateSharedBuffer(NullUserPointer(), 100, |
| 1806 MakeUserPointer(&h_transferrable))); |
| 1807 MojoHandle h_not_transferrable = MOJO_HANDLE_INVALID; |
| 1808 EXPECT_EQ(MOJO_RESULT_OK, core()->DuplicateHandleWithReducedRights( |
| 1809 h_transferrable, MOJO_HANDLE_RIGHT_TRANSFER, |
| 1810 MakeUserPointer(&h_not_transferrable))); |
| 1811 |
| 1812 // We can send |h_transferrable|. |
| 1813 EXPECT_EQ(MOJO_RESULT_OK, |
| 1814 core()->WriteMessage(h0, NullUserPointer(), 0, |
| 1815 MakeUserPointer(&h_transferrable), 1, |
| 1816 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1817 |
| 1818 // But not |h_not_transferrable|. |
| 1819 EXPECT_EQ(MOJO_RESULT_PERMISSION_DENIED, |
| 1820 core()->WriteMessage(h0, NullUserPointer(), 0, |
| 1821 MakeUserPointer(&h_not_transferrable), 1, |
| 1822 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1823 |
| 1824 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h0)); |
| 1825 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h1)); |
| 1826 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_not_transferrable)); |
| 1827 } |
| 1828 |
| 1795 struct TestAsyncWaiter { | 1829 struct TestAsyncWaiter { |
| 1796 TestAsyncWaiter() : result(MOJO_RESULT_UNKNOWN) {} | 1830 TestAsyncWaiter() : result(MOJO_RESULT_UNKNOWN) {} |
| 1797 | 1831 |
| 1798 void Awake(MojoResult r) { result = r; } | 1832 void Awake(MojoResult r) { result = r; } |
| 1799 | 1833 |
| 1800 MojoResult result; | 1834 MojoResult result; |
| 1801 }; | 1835 }; |
| 1802 | 1836 |
| 1803 TEST_F(CoreTest, AsyncWait) { | 1837 TEST_F(CoreTest, AsyncWait) { |
| 1804 TestAsyncWaiter waiter; | 1838 TestAsyncWaiter waiter; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1823 | 1857 |
| 1824 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); | 1858 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
| 1825 } | 1859 } |
| 1826 | 1860 |
| 1827 // TODO(vtl): Test |CreateSharedBuffer()|, |DuplicateBufferHandle()|, and | 1861 // TODO(vtl): Test |CreateSharedBuffer()|, |DuplicateBufferHandle()|, and |
| 1828 // |MapBuffer()|. | 1862 // |MapBuffer()|. |
| 1829 | 1863 |
| 1830 } // namespace | 1864 } // namespace |
| 1831 } // namespace system | 1865 } // namespace system |
| 1832 } // namespace mojo | 1866 } // namespace mojo |
| OLD | NEW |