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

Side by Side Diff: mojo/public/cpp/bindings/tests/handle_passing_unittest.cc

Issue 668663006: Standardize usage of virtual/override/final in mojo/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 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/public/cpp/environment/environment.h" 5 #include "mojo/public/cpp/environment/environment.h"
6 #include "mojo/public/cpp/test_support/test_utils.h" 6 #include "mojo/public/cpp/test_support/test_utils.h"
7 #include "mojo/public/cpp/utility/run_loop.h" 7 #include "mojo/public/cpp/utility/run_loop.h"
8 #include "mojo/public/interfaces/bindings/tests/sample_factory.mojom.h" 8 #include "mojo/public/interfaces/bindings/tests/sample_factory.mojom.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 namespace mojo { 11 namespace mojo {
12 namespace test { 12 namespace test {
13 namespace { 13 namespace {
14 14
15 const char kText1[] = "hello"; 15 const char kText1[] = "hello";
16 const char kText2[] = "world"; 16 const char kText2[] = "world";
17 17
18 class StringRecorder { 18 class StringRecorder {
19 public: 19 public:
20 explicit StringRecorder(std::string* buf) : buf_(buf) {} 20 explicit StringRecorder(std::string* buf) : buf_(buf) {}
21 void Run(const String& a) const { *buf_ = a.To<std::string>(); } 21 void Run(const String& a) const { *buf_ = a.To<std::string>(); }
22 22
23 private: 23 private:
24 std::string* buf_; 24 std::string* buf_;
25 }; 25 };
26 26
27 class ImportedInterfaceImpl 27 class ImportedInterfaceImpl
28 : public InterfaceImpl<imported::ImportedInterface> { 28 : public InterfaceImpl<imported::ImportedInterface> {
29 public: 29 public:
30 virtual void DoSomething() override { do_something_count_++; } 30 void DoSomething() override { do_something_count_++; }
31 31
32 static int do_something_count() { return do_something_count_; } 32 static int do_something_count() { return do_something_count_; }
33 33
34 private: 34 private:
35 static int do_something_count_; 35 static int do_something_count_;
36 }; 36 };
37 int ImportedInterfaceImpl::do_something_count_ = 0; 37 int ImportedInterfaceImpl::do_something_count_ = 0;
38 38
39 class SampleNamedObjectImpl : public InterfaceImpl<sample::NamedObject> { 39 class SampleNamedObjectImpl : public InterfaceImpl<sample::NamedObject> {
40 public: 40 public:
41 virtual void SetName(const mojo::String& name) override { name_ = name; } 41 void SetName(const mojo::String& name) override { name_ = name; }
42 42
43 virtual void GetName( 43 void GetName(const mojo::Callback<void(mojo::String)>& callback) override {
44 const mojo::Callback<void(mojo::String)>& callback) override {
45 callback.Run(name_); 44 callback.Run(name_);
46 } 45 }
47 46
48 private: 47 private:
49 std::string name_; 48 std::string name_;
50 }; 49 };
51 50
52 class SampleFactoryImpl : public InterfaceImpl<sample::Factory> { 51 class SampleFactoryImpl : public InterfaceImpl<sample::Factory> {
53 public: 52 public:
54 virtual void DoStuff(sample::RequestPtr request, 53 void DoStuff(sample::RequestPtr request,
55 ScopedMessagePipeHandle pipe) override { 54 ScopedMessagePipeHandle pipe) override {
56 std::string text1; 55 std::string text1;
57 if (pipe.is_valid()) 56 if (pipe.is_valid())
58 EXPECT_TRUE(ReadTextMessage(pipe.get(), &text1)); 57 EXPECT_TRUE(ReadTextMessage(pipe.get(), &text1));
59 58
60 std::string text2; 59 std::string text2;
61 if (request->pipe.is_valid()) { 60 if (request->pipe.is_valid()) {
62 EXPECT_TRUE(ReadTextMessage(request->pipe.get(), &text2)); 61 EXPECT_TRUE(ReadTextMessage(request->pipe.get(), &text2));
63 62
64 // Ensure that simply accessing request->pipe does not close it. 63 // Ensure that simply accessing request->pipe does not close it.
65 EXPECT_TRUE(request->pipe.is_valid()); 64 EXPECT_TRUE(request->pipe.is_valid());
66 } 65 }
67 66
68 ScopedMessagePipeHandle pipe0; 67 ScopedMessagePipeHandle pipe0;
69 if (!text2.empty()) { 68 if (!text2.empty()) {
70 CreateMessagePipe(nullptr, &pipe0, &pipe1_); 69 CreateMessagePipe(nullptr, &pipe0, &pipe1_);
71 EXPECT_TRUE(WriteTextMessage(pipe1_.get(), text2)); 70 EXPECT_TRUE(WriteTextMessage(pipe1_.get(), text2));
72 } 71 }
73 72
74 sample::ResponsePtr response(sample::Response::New()); 73 sample::ResponsePtr response(sample::Response::New());
75 response->x = 2; 74 response->x = 2;
76 response->pipe = pipe0.Pass(); 75 response->pipe = pipe0.Pass();
77 client()->DidStuff(response.Pass(), text1); 76 client()->DidStuff(response.Pass(), text1);
78 77
79 if (request->obj) 78 if (request->obj)
80 request->obj->DoSomething(); 79 request->obj->DoSomething();
81 } 80 }
82 81
83 virtual void DoStuff2(ScopedDataPipeConsumerHandle pipe) override { 82 void DoStuff2(ScopedDataPipeConsumerHandle pipe) override {
84 // Read the data from the pipe, writing the response (as a string) to 83 // Read the data from the pipe, writing the response (as a string) to
85 // DidStuff2(). 84 // DidStuff2().
86 ASSERT_TRUE(pipe.is_valid()); 85 ASSERT_TRUE(pipe.is_valid());
87 uint32_t data_size = 0; 86 uint32_t data_size = 0;
88 ASSERT_EQ(MOJO_RESULT_OK, 87 ASSERT_EQ(MOJO_RESULT_OK,
89 ReadDataRaw( 88 ReadDataRaw(
90 pipe.get(), nullptr, &data_size, MOJO_READ_DATA_FLAG_QUERY)); 89 pipe.get(), nullptr, &data_size, MOJO_READ_DATA_FLAG_QUERY));
91 ASSERT_NE(0, static_cast<int>(data_size)); 90 ASSERT_NE(0, static_cast<int>(data_size));
92 char data[64]; 91 char data[64];
93 ASSERT_LT(static_cast<int>(data_size), 64); 92 ASSERT_LT(static_cast<int>(data_size), 64);
94 ASSERT_EQ( 93 ASSERT_EQ(
95 MOJO_RESULT_OK, 94 MOJO_RESULT_OK,
96 ReadDataRaw( 95 ReadDataRaw(
97 pipe.get(), data, &data_size, MOJO_READ_DATA_FLAG_ALL_OR_NONE)); 96 pipe.get(), data, &data_size, MOJO_READ_DATA_FLAG_ALL_OR_NONE));
98 97
99 client()->DidStuff2(data); 98 client()->DidStuff2(data);
100 } 99 }
101 100
102 virtual void CreateNamedObject( 101 void CreateNamedObject(
103 InterfaceRequest<sample::NamedObject> object_request) override { 102 InterfaceRequest<sample::NamedObject> object_request) override {
104 EXPECT_TRUE(object_request.is_pending()); 103 EXPECT_TRUE(object_request.is_pending());
105 BindToRequest(new SampleNamedObjectImpl(), &object_request); 104 BindToRequest(new SampleNamedObjectImpl(), &object_request);
106 } 105 }
107 106
108 // These aren't called or implemented, but exist here to test that the 107 // These aren't called or implemented, but exist here to test that the
109 // methods are generated with the correct argument types for imported 108 // methods are generated with the correct argument types for imported
110 // interfaces. 109 // interfaces.
111 virtual void RequestImportedInterface( 110 void RequestImportedInterface(
112 InterfaceRequest<imported::ImportedInterface> imported, 111 InterfaceRequest<imported::ImportedInterface> imported,
113 const mojo::Callback<void(InterfaceRequest<imported::ImportedInterface>)>& 112 const mojo::Callback<void(InterfaceRequest<imported::ImportedInterface>)>&
114 callback) override {} 113 callback) override {}
115 virtual void TakeImportedInterface( 114 void TakeImportedInterface(
116 imported::ImportedInterfacePtr imported, 115 imported::ImportedInterfacePtr imported,
117 const mojo::Callback<void(imported::ImportedInterfacePtr)>& callback) 116 const mojo::Callback<void(imported::ImportedInterfacePtr)>& callback)
118 override {} 117 override {}
119 118
120 private: 119 private:
121 ScopedMessagePipeHandle pipe1_; 120 ScopedMessagePipeHandle pipe1_;
122 }; 121 };
123 122
124 class SampleFactoryClientImpl : public sample::FactoryClient { 123 class SampleFactoryClientImpl : public sample::FactoryClient {
125 public: 124 public:
126 SampleFactoryClientImpl() : got_response_(false) {} 125 SampleFactoryClientImpl() : got_response_(false) {}
127 126
128 void set_expected_text_reply(const std::string& expected_text_reply) { 127 void set_expected_text_reply(const std::string& expected_text_reply) {
129 expected_text_reply_ = expected_text_reply; 128 expected_text_reply_ = expected_text_reply;
130 } 129 }
131 130
132 bool got_response() const { return got_response_; } 131 bool got_response() const { return got_response_; }
133 132
134 virtual void DidStuff(sample::ResponsePtr response, 133 void DidStuff(sample::ResponsePtr response,
135 const String& text_reply) override { 134 const String& text_reply) override {
136 EXPECT_EQ(expected_text_reply_, text_reply); 135 EXPECT_EQ(expected_text_reply_, text_reply);
137 136
138 if (response->pipe.is_valid()) { 137 if (response->pipe.is_valid()) {
139 std::string text2; 138 std::string text2;
140 EXPECT_TRUE(ReadTextMessage(response->pipe.get(), &text2)); 139 EXPECT_TRUE(ReadTextMessage(response->pipe.get(), &text2));
141 140
142 // Ensure that simply accessing response.pipe does not close it. 141 // Ensure that simply accessing response.pipe does not close it.
143 EXPECT_TRUE(response->pipe.is_valid()); 142 EXPECT_TRUE(response->pipe.is_valid());
144 143
145 EXPECT_EQ(std::string(kText2), text2); 144 EXPECT_EQ(std::string(kText2), text2);
146 145
147 // Do some more tests of handle passing: 146 // Do some more tests of handle passing:
148 ScopedMessagePipeHandle p = response->pipe.Pass(); 147 ScopedMessagePipeHandle p = response->pipe.Pass();
149 EXPECT_TRUE(p.is_valid()); 148 EXPECT_TRUE(p.is_valid());
150 EXPECT_FALSE(response->pipe.is_valid()); 149 EXPECT_FALSE(response->pipe.is_valid());
151 } 150 }
152 151
153 got_response_ = true; 152 got_response_ = true;
154 } 153 }
155 154
156 virtual void DidStuff2(const String& text_reply) override { 155 void DidStuff2(const String& text_reply) override {
157 got_response_ = true; 156 got_response_ = true;
158 EXPECT_EQ(expected_text_reply_, text_reply); 157 EXPECT_EQ(expected_text_reply_, text_reply);
159 } 158 }
160 159
161 private: 160 private:
162 ScopedMessagePipeHandle pipe1_; 161 ScopedMessagePipeHandle pipe1_;
163 ScopedMessagePipeHandle pipe3_; 162 ScopedMessagePipeHandle pipe3_;
164 std::string expected_text_reply_; 163 std::string expected_text_reply_;
165 bool got_response_; 164 bool got_response_;
166 }; 165 };
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 333
335 PumpMessages(); // Yield for results. 334 PumpMessages(); // Yield for results.
336 335
337 EXPECT_EQ(std::string("object1"), name1); 336 EXPECT_EQ(std::string("object1"), name1);
338 EXPECT_EQ(std::string("object2"), name2); 337 EXPECT_EQ(std::string("object2"), name2);
339 } 338 }
340 339
341 } // namespace 340 } // namespace
342 } // namespace test 341 } // namespace test
343 } // namespace mojo 342 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/tests/connector_unittest.cc ('k') | mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698