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

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

Issue 2766523002: mojo: MessageReceiver*::AcceptWithResponder() now take a unique_ptr to the responder (Closed)
Patch Set: comments Created 3 years, 9 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/tests/router_test_util.h" 5 #include "mojo/public/cpp/bindings/tests/router_test_util.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <string.h> 9 #include <string.h>
10 10
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 } 51 }
52 52
53 ResponseGenerator::ResponseGenerator() {} 53 ResponseGenerator::ResponseGenerator() {}
54 54
55 bool ResponseGenerator::Accept(Message* message) { 55 bool ResponseGenerator::Accept(Message* message) {
56 return false; 56 return false;
57 } 57 }
58 58
59 bool ResponseGenerator::AcceptWithResponder( 59 bool ResponseGenerator::AcceptWithResponder(
60 Message* message, 60 Message* message,
61 MessageReceiverWithStatus* responder) { 61 std::unique_ptr<MessageReceiverWithStatus> responder) {
62 EXPECT_TRUE(message->has_flag(Message::kFlagExpectsResponse)); 62 EXPECT_TRUE(message->has_flag(Message::kFlagExpectsResponse));
63 63
64 bool result = SendResponse(message->name(), message->request_id(), 64 bool result = SendResponse(message->name(), message->request_id(),
65 reinterpret_cast<const char*>(message->payload()), 65 reinterpret_cast<const char*>(message->payload()),
66 responder); 66 responder.get());
67 EXPECT_TRUE(responder->IsValid()); 67 EXPECT_TRUE(responder->IsValid());
68 delete responder;
69 return result; 68 return result;
70 } 69 }
71 70
72 bool ResponseGenerator::SendResponse(uint32_t name, 71 bool ResponseGenerator::SendResponse(uint32_t name,
73 uint64_t request_id, 72 uint64_t request_id,
74 const char* request_string, 73 const char* request_string,
75 MessageReceiver* responder) { 74 MessageReceiver* responder) {
76 Message response; 75 Message response;
77 std::string response_string(request_string); 76 std::string response_string(request_string);
78 response_string += " world!"; 77 response_string += " world!";
79 AllocResponseMessage(name, response_string.c_str(), request_id, &response); 78 AllocResponseMessage(name, response_string.c_str(), request_id, &response);
80 79
81 return responder->Accept(&response); 80 return responder->Accept(&response);
82 } 81 }
83 82
84 LazyResponseGenerator::LazyResponseGenerator(const base::Closure& closure) 83 LazyResponseGenerator::LazyResponseGenerator(const base::Closure& closure)
85 : responder_(nullptr), name_(0), request_id_(0), closure_(closure) {} 84 : responder_(nullptr), name_(0), request_id_(0), closure_(closure) {}
86 85
87 LazyResponseGenerator::~LazyResponseGenerator() { 86 LazyResponseGenerator::~LazyResponseGenerator() = default;
88 delete responder_;
89 }
90 87
91 bool LazyResponseGenerator::AcceptWithResponder( 88 bool LazyResponseGenerator::AcceptWithResponder(
92 Message* message, 89 Message* message,
93 MessageReceiverWithStatus* responder) { 90 std::unique_ptr<MessageReceiverWithStatus> responder) {
94 name_ = message->name(); 91 name_ = message->name();
95 request_id_ = message->request_id(); 92 request_id_ = message->request_id();
96 request_string_ = 93 request_string_ =
97 std::string(reinterpret_cast<const char*>(message->payload())); 94 std::string(reinterpret_cast<const char*>(message->payload()));
98 responder_ = responder; 95 responder_ = std::move(responder);
99 if (!closure_.is_null()) { 96 if (!closure_.is_null()) {
100 closure_.Run(); 97 closure_.Run();
101 closure_.Reset(); 98 closure_.Reset();
102 } 99 }
103 return true; 100 return true;
104 } 101 }
105 102
106 void LazyResponseGenerator::Complete(bool send_response) { 103 void LazyResponseGenerator::Complete(bool send_response) {
107 if (send_response) { 104 if (send_response) {
108 SendResponse(name_, request_id_, request_string_.c_str(), responder_); 105 SendResponse(name_, request_id_, request_string_.c_str(), responder_.get());
109 } 106 }
110 delete responder_;
111 responder_ = nullptr; 107 responder_ = nullptr;
112 } 108 }
113 109
114 } // namespace test 110 } // namespace test
115 } // namespace mojo 111 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/tests/router_test_util.h ('k') | mojo/public/cpp/bindings/tests/sample_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698