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

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

Issue 280003003: Add SetClient method implementation to InterfaceImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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 | Annotate | Revision Log
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/bindings/allocation_scope.h" 5 #include "mojo/public/cpp/bindings/allocation_scope.h"
6 #include "mojo/public/cpp/environment/environment.h" 6 #include "mojo/public/cpp/environment/environment.h"
7 #include "mojo/public/cpp/test_support/test_utils.h" 7 #include "mojo/public/cpp/test_support/test_utils.h"
8 #include "mojo/public/cpp/utility/run_loop.h" 8 #include "mojo/public/cpp/utility/run_loop.h"
9 #include "mojo/public/interfaces/bindings/tests/sample_factory.mojom.h" 9 #include "mojo/public/interfaces/bindings/tests/sample_factory.mojom.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 11
12 namespace mojo { 12 namespace mojo {
13 namespace test { 13 namespace test {
14 namespace { 14 namespace {
15 15
16 const char kText1[] = "hello"; 16 const char kText1[] = "hello";
17 const char kText2[] = "world"; 17 const char kText2[] = "world";
18 18
19 class SampleFactoryImpl : public InterfaceImpl<sample::Factory> { 19 class SampleFactoryImpl : public InterfaceImpl<sample::Factory> {
20 public: 20 public:
21 virtual void OnConnectionError() MOJO_OVERRIDE { 21 virtual void OnConnectionError() MOJO_OVERRIDE {
22 delete this; 22 delete this;
23 } 23 }
24 24
25 virtual void SetClient(sample::FactoryClient* client) MOJO_OVERRIDE {
26 client_ = client;
27 }
28
29 virtual void DoStuff(const sample::Request& request, 25 virtual void DoStuff(const sample::Request& request,
30 ScopedMessagePipeHandle pipe) MOJO_OVERRIDE { 26 ScopedMessagePipeHandle pipe) MOJO_OVERRIDE {
31 std::string text1; 27 std::string text1;
32 if (pipe.is_valid()) 28 if (pipe.is_valid())
33 EXPECT_TRUE(ReadTextMessage(pipe.get(), &text1)); 29 EXPECT_TRUE(ReadTextMessage(pipe.get(), &text1));
34 30
35 std::string text2; 31 std::string text2;
36 if (request.pipe().is_valid()) { 32 if (request.pipe().is_valid()) {
37 EXPECT_TRUE(ReadTextMessage(request.pipe().get(), &text2)); 33 EXPECT_TRUE(ReadTextMessage(request.pipe().get(), &text2));
38 34
39 // Ensure that simply accessing request.pipe() does not close it. 35 // Ensure that simply accessing request.pipe() does not close it.
40 EXPECT_TRUE(request.pipe().is_valid()); 36 EXPECT_TRUE(request.pipe().is_valid());
41 } 37 }
42 38
43 ScopedMessagePipeHandle pipe0; 39 ScopedMessagePipeHandle pipe0;
44 if (!text2.empty()) { 40 if (!text2.empty()) {
45 CreateMessagePipe(&pipe0, &pipe1_); 41 CreateMessagePipe(&pipe0, &pipe1_);
46 EXPECT_TRUE(WriteTextMessage(pipe1_.get(), text2)); 42 EXPECT_TRUE(WriteTextMessage(pipe1_.get(), text2));
47 } 43 }
48 44
49 AllocationScope scope; 45 AllocationScope scope;
50 sample::Response::Builder response; 46 sample::Response::Builder response;
51 response.set_x(2); 47 response.set_x(2);
52 response.set_pipe(pipe0.Pass()); 48 response.set_pipe(pipe0.Pass());
53 client_->DidStuff(response.Finish(), text1); 49 client()->DidStuff(response.Finish(), text1);
54 } 50 }
55 51
56 virtual void DoStuff2(ScopedDataPipeConsumerHandle pipe) MOJO_OVERRIDE { 52 virtual void DoStuff2(ScopedDataPipeConsumerHandle pipe) MOJO_OVERRIDE {
57 // Read the data from the pipe, writing the response (as a string) to 53 // Read the data from the pipe, writing the response (as a string) to
58 // DidStuff2(). 54 // DidStuff2().
59 ASSERT_TRUE(pipe.is_valid()); 55 ASSERT_TRUE(pipe.is_valid());
60 uint32_t data_size = 0; 56 uint32_t data_size = 0;
61 ASSERT_EQ(MOJO_RESULT_OK, 57 ASSERT_EQ(MOJO_RESULT_OK,
62 ReadDataRaw(pipe.get(), NULL, &data_size, 58 ReadDataRaw(pipe.get(), NULL, &data_size,
63 MOJO_READ_DATA_FLAG_QUERY)); 59 MOJO_READ_DATA_FLAG_QUERY));
64 ASSERT_NE(0, static_cast<int>(data_size)); 60 ASSERT_NE(0, static_cast<int>(data_size));
65 char data[64]; 61 char data[64];
66 ASSERT_LT(static_cast<int>(data_size), 64); 62 ASSERT_LT(static_cast<int>(data_size), 64);
67 ASSERT_EQ(MOJO_RESULT_OK, 63 ASSERT_EQ(MOJO_RESULT_OK,
68 ReadDataRaw(pipe.get(), data, &data_size, 64 ReadDataRaw(pipe.get(), data, &data_size,
69 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); 65 MOJO_READ_DATA_FLAG_ALL_OR_NONE));
70 66
71 AllocationScope scope; 67 AllocationScope scope;
72 client_->DidStuff2(String(std::string(data))); 68 client()->DidStuff2(String(std::string(data)));
73 } 69 }
74 70
75 private: 71 private:
76 sample::FactoryClient* client_;
77 ScopedMessagePipeHandle pipe1_; 72 ScopedMessagePipeHandle pipe1_;
78 }; 73 };
79 74
80 class SampleFactoryClientImpl : public sample::FactoryClient { 75 class SampleFactoryClientImpl : public sample::FactoryClient {
81 public: 76 public:
82 SampleFactoryClientImpl() : got_response_(false) { 77 SampleFactoryClientImpl() : got_response_(false) {
83 } 78 }
84 79
85 void set_expected_text_reply(const std::string& expected_text_reply) { 80 void set_expected_text_reply(const std::string& expected_text_reply) {
86 expected_text_reply_ = expected_text_reply; 81 expected_text_reply_ = expected_text_reply;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 } 260 }
266 261
267 // We expect the pipes to have been closed. 262 // We expect the pipes to have been closed.
268 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(handle0_value)); 263 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(handle0_value));
269 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(handle1_value)); 264 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(handle1_value));
270 } 265 }
271 266
272 } // namespace 267 } // namespace
273 } // namespace test 268 } // namespace test
274 } // namespace mojo 269 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/no_interface.h ('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