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

Side by Side Diff: mojo/edk/system/platform_handle_dispatcher_unittest.cc

Issue 1350023003: Add a Mojo EDK for Chrome that uses one OS pipe per message pipe. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more cleanup Created 5 years, 2 months 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 "third_party/mojo/src/mojo/edk/system/platform_handle_dispatcher.h" 5 #include "mojo/edk/system/platform_handle_dispatcher.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/scoped_file.h" 11 #include "base/files/scoped_file.h"
12 #include "base/files/scoped_temp_dir.h" 12 #include "base/files/scoped_temp_dir.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "mojo/edk/test/test_utils.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/mojo/src/mojo/edk/test/test_utils.h"
16 16
17 namespace mojo { 17 namespace mojo {
18 namespace system { 18 namespace edk {
19 namespace { 19 namespace {
20 20
21 TEST(PlatformHandleDispatcherTest, Basic) { 21 TEST(PlatformHandleDispatcherTest, Basic) {
22 base::ScopedTempDir temp_dir; 22 base::ScopedTempDir temp_dir;
23 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 23 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
24 24
25 static const char kHelloWorld[] = "hello world"; 25 static const char kHelloWorld[] = "hello world";
26 26
27 base::FilePath unused; 27 base::FilePath unused;
28 base::ScopedFILE fp( 28 base::ScopedFILE fp(
29 CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused)); 29 CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused));
30 ASSERT_TRUE(fp); 30 ASSERT_TRUE(fp);
31 EXPECT_EQ(sizeof(kHelloWorld), 31 EXPECT_EQ(sizeof(kHelloWorld),
32 fwrite(kHelloWorld, 1, sizeof(kHelloWorld), fp.get())); 32 fwrite(kHelloWorld, 1, sizeof(kHelloWorld), fp.get()));
33 33
34 embedder::ScopedPlatformHandle h( 34 ScopedPlatformHandle h(test::PlatformHandleFromFILE(fp.Pass()));
35 mojo::test::PlatformHandleFromFILE(fp.Pass()));
36 EXPECT_FALSE(fp); 35 EXPECT_FALSE(fp);
37 ASSERT_TRUE(h.is_valid()); 36 ASSERT_TRUE(h.is_valid());
38 37
39 scoped_refptr<PlatformHandleDispatcher> dispatcher = 38 scoped_refptr<PlatformHandleDispatcher> dispatcher =
40 PlatformHandleDispatcher::Create(h.Pass()); 39 PlatformHandleDispatcher::Create(h.Pass());
41 EXPECT_FALSE(h.is_valid()); 40 EXPECT_FALSE(h.is_valid());
42 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, dispatcher->GetType()); 41 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, dispatcher->GetType());
43 42
44 h = dispatcher->PassPlatformHandle().Pass(); 43 h = dispatcher->PassPlatformHandle().Pass();
45 EXPECT_TRUE(h.is_valid()); 44 EXPECT_TRUE(h.is_valid());
46 45
47 fp = mojo::test::FILEFromPlatformHandle(h.Pass(), "rb").Pass(); 46 fp = test::FILEFromPlatformHandle(h.Pass(), "rb").Pass();
48 EXPECT_FALSE(h.is_valid()); 47 EXPECT_FALSE(h.is_valid());
49 EXPECT_TRUE(fp); 48 EXPECT_TRUE(fp);
50 49
51 rewind(fp.get()); 50 rewind(fp.get());
52 char read_buffer[1000] = {}; 51 char read_buffer[1000] = {};
53 EXPECT_EQ(sizeof(kHelloWorld), 52 EXPECT_EQ(sizeof(kHelloWorld),
54 fread(read_buffer, 1, sizeof(read_buffer), fp.get())); 53 fread(read_buffer, 1, sizeof(read_buffer), fp.get()));
55 EXPECT_STREQ(kHelloWorld, read_buffer); 54 EXPECT_STREQ(kHelloWorld, read_buffer);
56 55
57 // Try getting the handle again. (It should fail cleanly.) 56 // Try getting the handle again. (It should fail cleanly.)
58 h = dispatcher->PassPlatformHandle().Pass(); 57 h = dispatcher->PassPlatformHandle().Pass();
59 EXPECT_FALSE(h.is_valid()); 58 EXPECT_FALSE(h.is_valid());
60 59
61 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 60 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
62 } 61 }
63 62
64 TEST(PlatformHandleDispatcherTest, CreateEquivalentDispatcherAndClose) { 63 TEST(PlatformHandleDispatcherTest, CreateEquivalentDispatcherAndClose) {
65 base::ScopedTempDir temp_dir; 64 base::ScopedTempDir temp_dir;
66 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 65 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
67 66
68 static const char kFooBar[] = "foo bar"; 67 static const char kFooBar[] = "foo bar";
69 68
70 base::FilePath unused; 69 base::FilePath unused;
71 base::ScopedFILE fp( 70 base::ScopedFILE fp(
72 CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused)); 71 CreateAndOpenTemporaryFileInDir(temp_dir.path(), &unused));
73 EXPECT_EQ(sizeof(kFooBar), fwrite(kFooBar, 1, sizeof(kFooBar), fp.get())); 72 EXPECT_EQ(sizeof(kFooBar), fwrite(kFooBar, 1, sizeof(kFooBar), fp.get()));
74 73
75 scoped_refptr<PlatformHandleDispatcher> dispatcher = 74 scoped_refptr<PlatformHandleDispatcher> dispatcher =
76 PlatformHandleDispatcher::Create( 75 PlatformHandleDispatcher::Create(
77 mojo::test::PlatformHandleFromFILE(fp.Pass())); 76 test::PlatformHandleFromFILE(fp.Pass()));
78 77
79 DispatcherTransport transport( 78 DispatcherTransport transport(
80 test::DispatcherTryStartTransport(dispatcher.get())); 79 test::DispatcherTryStartTransport(dispatcher.get()));
81 EXPECT_TRUE(transport.is_valid()); 80 EXPECT_TRUE(transport.is_valid());
82 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, transport.GetType()); 81 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, transport.GetType());
83 EXPECT_FALSE(transport.IsBusy()); 82 EXPECT_FALSE(transport.IsBusy());
84 83
85 scoped_refptr<Dispatcher> generic_dispatcher = 84 scoped_refptr<Dispatcher> generic_dispatcher =
86 transport.CreateEquivalentDispatcherAndClose(); 85 transport.CreateEquivalentDispatcherAndClose();
87 ASSERT_TRUE(generic_dispatcher); 86 ASSERT_TRUE(generic_dispatcher);
88 87
89 transport.End(); 88 transport.End();
90 EXPECT_TRUE(dispatcher->HasOneRef()); 89 EXPECT_TRUE(dispatcher->HasOneRef());
91 dispatcher = nullptr; 90 dispatcher = nullptr;
92 91
93 ASSERT_EQ(Dispatcher::Type::PLATFORM_HANDLE, generic_dispatcher->GetType()); 92 ASSERT_EQ(Dispatcher::Type::PLATFORM_HANDLE, generic_dispatcher->GetType());
94 dispatcher = static_cast<PlatformHandleDispatcher*>(generic_dispatcher.get()); 93 dispatcher = static_cast<PlatformHandleDispatcher*>(generic_dispatcher.get());
95 94
96 fp = mojo::test::FILEFromPlatformHandle(dispatcher->PassPlatformHandle(), 95 fp = test::FILEFromPlatformHandle(dispatcher->PassPlatformHandle(),
97 "rb").Pass(); 96 "rb").Pass();
98 EXPECT_TRUE(fp); 97 EXPECT_TRUE(fp);
99 98
100 rewind(fp.get()); 99 rewind(fp.get());
101 char read_buffer[1000] = {}; 100 char read_buffer[1000] = {};
102 EXPECT_EQ(sizeof(kFooBar), 101 EXPECT_EQ(sizeof(kFooBar),
103 fread(read_buffer, 1, sizeof(read_buffer), fp.get())); 102 fread(read_buffer, 1, sizeof(read_buffer), fp.get()));
104 EXPECT_STREQ(kFooBar, read_buffer); 103 EXPECT_STREQ(kFooBar, read_buffer);
105 104
106 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 105 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
107 } 106 }
108 107
109 } // namespace 108 } // namespace
110 } // namespace system 109 } // namespace edk
111 } // namespace mojo 110 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698