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

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
11 #include "mojo/public/cpp/bindings/error.h"
11 #include "mojo/public/cpp/bindings/lib/message_builder.h" 12 #include "mojo/public/cpp/bindings/lib/message_builder.h"
12 #include "mojo/public/cpp/bindings/tests/message_queue.h" 13 #include "mojo/public/cpp/bindings/tests/message_queue.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace mojo { 16 namespace mojo {
16 namespace test { 17 namespace test {
17 18
18 void AllocRequestMessage(uint32_t name, const char* text, Message* message) { 19 void AllocRequestMessage(uint32_t name, const char* text, Message* message) {
19 size_t payload_size = strlen(text) + 1; // Plus null terminator. 20 size_t payload_size = strlen(text) + 1; // Plus null terminator.
20 internal::RequestMessageBuilder builder(name, payload_size); 21 internal::RequestMessageBuilder builder(name, payload_size);
(...skipping 12 matching lines...) Expand all
33 34
34 builder.message()->MoveTo(message); 35 builder.message()->MoveTo(message);
35 } 36 }
36 37
37 MessageAccumulator::MessageAccumulator(MessageQueue* queue, 38 MessageAccumulator::MessageAccumulator(MessageQueue* queue,
38 const base::Closure& closure) 39 const base::Closure& closure)
39 : queue_(queue), closure_(closure) {} 40 : queue_(queue), closure_(closure) {}
40 41
41 MessageAccumulator::~MessageAccumulator() {} 42 MessageAccumulator::~MessageAccumulator() {}
42 43
43 bool MessageAccumulator::Accept(Message* message) { 44 bool MessageAccumulator::Accept(Message* message, Error* error) {
44 queue_->Push(message); 45 queue_->Push(message);
45 if (!closure_.is_null()) { 46 if (!closure_.is_null()) {
46 closure_.Run(); 47 closure_.Run();
47 closure_.Reset(); 48 closure_.Reset();
48 } 49 }
49 return true; 50 return true;
50 } 51 }
51 52
52 ResponseGenerator::ResponseGenerator() {} 53 ResponseGenerator::ResponseGenerator() {}
53 54
54 bool ResponseGenerator::Accept(Message* message) { 55 bool ResponseGenerator::Accept(Message* message, Error* error) {
55 return false; 56 return false;
56 } 57 }
57 58
58 bool ResponseGenerator::AcceptWithResponder( 59 bool ResponseGenerator::AcceptWithResponder(
59 Message* message, 60 Message* message,
60 MessageReceiverWithStatus* responder) { 61 MessageReceiverWithStatus* responder,
62 Error* error) {
61 EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse)); 63 EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse));
62 64
63 bool result = SendResponse(message->name(), message->request_id(), 65 bool result = SendResponse(message->name(), message->request_id(),
64 reinterpret_cast<const char*>(message->payload()), 66 reinterpret_cast<const char*>(message->payload()),
65 responder); 67 responder);
66 EXPECT_TRUE(responder->IsValid()); 68 EXPECT_TRUE(responder->IsValid());
67 delete responder; 69 delete responder;
68 return result; 70 return result;
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 Error send_error;
83 return responder->Accept(&response, &send_error);
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 bool LazyResponseGenerator::AcceptWithResponder(
91 Message* message, 94 Message* message,
92 MessageReceiverWithStatus* responder) { 95 MessageReceiverWithStatus* responder,
96 Error* error) {
93 name_ = message->name(); 97 name_ = message->name();
94 request_id_ = message->request_id(); 98 request_id_ = message->request_id();
95 request_string_ = 99 request_string_ =
96 std::string(reinterpret_cast<const char*>(message->payload())); 100 std::string(reinterpret_cast<const char*>(message->payload()));
97 responder_ = responder; 101 responder_ = responder;
98 if (!closure_.is_null()) { 102 if (!closure_.is_null()) {
99 closure_.Run(); 103 closure_.Run();
100 closure_.Reset(); 104 closure_.Reset();
101 } 105 }
102 return true; 106 return true;
103 } 107 }
104 108
105 void LazyResponseGenerator::Complete(bool send_response) { 109 void LazyResponseGenerator::Complete(bool send_response) {
106 if (send_response) { 110 if (send_response) {
107 SendResponse(name_, request_id_, request_string_.c_str(), responder_); 111 SendResponse(name_, request_id_, request_string_.c_str(), responder_);
108 } 112 }
109 delete responder_; 113 delete responder_;
110 responder_ = nullptr; 114 responder_ = nullptr;
111 } 115 }
112 116
113 } // namespace test 117 } // namespace test
114 } // namespace mojo 118 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698