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

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

Issue 2064903002: Mojo: Report bindings validation errors via MojoNotifyBadMessage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 6 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 22 matching lines...) Expand all
33 33
34 builder.message()->MoveTo(message); 34 builder.message()->MoveTo(message);
35 } 35 }
36 36
37 MessageAccumulator::MessageAccumulator(MessageQueue* queue, 37 MessageAccumulator::MessageAccumulator(MessageQueue* queue,
38 const base::Closure& closure) 38 const base::Closure& closure)
39 : queue_(queue), closure_(closure) {} 39 : queue_(queue), closure_(closure) {}
40 40
41 MessageAccumulator::~MessageAccumulator() {} 41 MessageAccumulator::~MessageAccumulator() {}
42 42
43 bool MessageAccumulator::Accept(Message* message) { 43 MessageReceiver::Result MessageAccumulator::Accept(Message* message) {
44 queue_->Push(message); 44 queue_->Push(message);
45 if (!closure_.is_null()) { 45 if (!closure_.is_null()) {
46 closure_.Run(); 46 closure_.Run();
47 closure_.Reset(); 47 closure_.Reset();
48 } 48 }
49 return true; 49 return Result::ForSuccess();
50 } 50 }
51 51
52 ResponseGenerator::ResponseGenerator() {} 52 ResponseGenerator::ResponseGenerator() {}
53 53
54 bool ResponseGenerator::Accept(Message* message) { 54 MessageReceiver::Result ResponseGenerator::Accept(Message* message) {
55 return false; 55 return Result::ForUnknownError();
56 } 56 }
57 57
58 bool ResponseGenerator::AcceptWithResponder( 58 MessageReceiver::Result ResponseGenerator::AcceptWithResponder(
59 Message* message, 59 Message* message,
60 MessageReceiverWithStatus* responder) { 60 MessageReceiverWithStatus* responder) {
61 EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse)); 61 EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse));
62 62
63 bool result = SendResponse(message->name(), message->request_id(), 63 bool result = SendResponse(message->name(), message->request_id(),
64 reinterpret_cast<const char*>(message->payload()), 64 reinterpret_cast<const char*>(message->payload()),
65 responder); 65 responder);
66 EXPECT_TRUE(responder->IsValid()); 66 EXPECT_TRUE(responder->IsValid());
67 delete responder; 67 delete responder;
68 return result; 68 if (result)
69 return Result::ForSuccess();
70 return Result::ForUnknownError();
69 } 71 }
70 72
71 bool ResponseGenerator::SendResponse(uint32_t name, 73 bool ResponseGenerator::SendResponse(uint32_t name,
72 uint64_t request_id, 74 uint64_t request_id,
73 const char* request_string, 75 const char* request_string,
74 MessageReceiver* responder) { 76 MessageReceiver* responder) {
75 Message response; 77 Message response;
76 std::string response_string(request_string); 78 std::string response_string(request_string);
77 response_string += " world!"; 79 response_string += " world!";
78 AllocResponseMessage(name, response_string.c_str(), request_id, &response); 80 AllocResponseMessage(name, response_string.c_str(), request_id, &response);
79 81
80 return responder->Accept(&response); 82 return responder->Accept(&response).Succeeded();
83
81 } 84 }
82 85
83 LazyResponseGenerator::LazyResponseGenerator(const base::Closure& closure) 86 LazyResponseGenerator::LazyResponseGenerator(const base::Closure& closure)
84 : responder_(nullptr), name_(0), request_id_(0), closure_(closure) {} 87 : responder_(nullptr), name_(0), request_id_(0), closure_(closure) {}
85 88
86 LazyResponseGenerator::~LazyResponseGenerator() { 89 LazyResponseGenerator::~LazyResponseGenerator() {
87 delete responder_; 90 delete responder_;
88 } 91 }
89 92
90 bool LazyResponseGenerator::AcceptWithResponder( 93 MessageReceiver::Result LazyResponseGenerator::AcceptWithResponder(
91 Message* message, 94 Message* message,
92 MessageReceiverWithStatus* responder) { 95 MessageReceiverWithStatus* responder) {
93 name_ = message->name(); 96 name_ = message->name();
94 request_id_ = message->request_id(); 97 request_id_ = message->request_id();
95 request_string_ = 98 request_string_ =
96 std::string(reinterpret_cast<const char*>(message->payload())); 99 std::string(reinterpret_cast<const char*>(message->payload()));
97 responder_ = responder; 100 responder_ = responder;
98 if (!closure_.is_null()) { 101 if (!closure_.is_null()) {
99 closure_.Run(); 102 closure_.Run();
100 closure_.Reset(); 103 closure_.Reset();
101 } 104 }
102 return true; 105 return Result::ForSuccess();
103 } 106 }
104 107
105 void LazyResponseGenerator::Complete(bool send_response) { 108 void LazyResponseGenerator::Complete(bool send_response) {
106 if (send_response) { 109 if (send_response) {
107 SendResponse(name_, request_id_, request_string_.c_str(), responder_); 110 SendResponse(name_, request_id_, request_string_.c_str(), responder_);
108 } 111 }
109 delete responder_; 112 delete responder_;
110 responder_ = nullptr; 113 responder_ = nullptr;
111 } 114 }
112 115
113 } // namespace test 116 } // namespace test
114 } // namespace mojo 117 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698