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

Side by Side Diff: net/dns/dns_test_util.cc

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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
« no previous file with comments | « net/dns/dns_test_util.h ('k') | net/dns/dns_transaction.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/dns/dns_test_util.h" 5 #include "net/dns/dns_test_util.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/big_endian.h" 9 #include "base/big_endian.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 23 matching lines...) Expand all
34 callback.Run(true, list); 34 callback.Run(true, list);
35 } 35 }
36 }; 36 };
37 37
38 // A DnsTransaction which uses MockDnsClientRuleList to determine the response. 38 // A DnsTransaction which uses MockDnsClientRuleList to determine the response.
39 class MockTransaction : public DnsTransaction, 39 class MockTransaction : public DnsTransaction,
40 public base::SupportsWeakPtr<MockTransaction> { 40 public base::SupportsWeakPtr<MockTransaction> {
41 public: 41 public:
42 MockTransaction(const MockDnsClientRuleList& rules, 42 MockTransaction(const MockDnsClientRuleList& rules,
43 const std::string& hostname, 43 const std::string& hostname,
44 uint16 qtype, 44 uint16_t qtype,
45 const DnsTransactionFactory::CallbackType& callback) 45 const DnsTransactionFactory::CallbackType& callback)
46 : result_(MockDnsClientRule::FAIL), 46 : result_(MockDnsClientRule::FAIL),
47 hostname_(hostname), 47 hostname_(hostname),
48 qtype_(qtype), 48 qtype_(qtype),
49 callback_(callback), 49 callback_(callback),
50 started_(false), 50 started_(false),
51 delayed_(false) { 51 delayed_(false) {
52 // Find the relevant rule which matches |qtype| and prefix of |hostname|. 52 // Find the relevant rule which matches |qtype| and prefix of |hostname|.
53 for (size_t i = 0; i < rules.size(); ++i) { 53 for (size_t i = 0; i < rules.size(); ++i) {
54 const std::string& prefix = rules[i].prefix; 54 const std::string& prefix = rules[i].prefix;
55 if ((rules[i].qtype == qtype) && 55 if ((rules[i].qtype == qtype) &&
56 (hostname.size() >= prefix.size()) && 56 (hostname.size() >= prefix.size()) &&
57 (hostname.compare(0, prefix.size(), prefix) == 0)) { 57 (hostname.compare(0, prefix.size(), prefix) == 0)) {
58 result_ = rules[i].result; 58 result_ = rules[i].result;
59 delayed_ = rules[i].delay; 59 delayed_ = rules[i].delay;
60 break; 60 break;
61 } 61 }
62 } 62 }
63 } 63 }
64 64
65 const std::string& GetHostname() const override { return hostname_; } 65 const std::string& GetHostname() const override { return hostname_; }
66 66
67 uint16 GetType() const override { return qtype_; } 67 uint16_t GetType() const override { return qtype_; }
68 68
69 void Start() override { 69 void Start() override {
70 EXPECT_FALSE(started_); 70 EXPECT_FALSE(started_);
71 started_ = true; 71 started_ = true;
72 if (delayed_) 72 if (delayed_)
73 return; 73 return;
74 // Using WeakPtr to cleanly cancel when transaction is destroyed. 74 // Using WeakPtr to cleanly cancel when transaction is destroyed.
75 base::ThreadTaskRunnerHandle::Get()->PostTask( 75 base::ThreadTaskRunnerHandle::Get()->PostTask(
76 FROM_HERE, base::Bind(&MockTransaction::Finish, AsWeakPtr())); 76 FROM_HERE, base::Bind(&MockTransaction::Finish, AsWeakPtr()));
77 } 77 }
(...skipping 17 matching lines...) Expand all
95 95
96 DnsResponse response; 96 DnsResponse response;
97 char* buffer = response.io_buffer()->data(); 97 char* buffer = response.io_buffer()->data();
98 int nbytes = query.io_buffer()->size(); 98 int nbytes = query.io_buffer()->size();
99 memcpy(buffer, query.io_buffer()->data(), nbytes); 99 memcpy(buffer, query.io_buffer()->data(), nbytes);
100 dns_protocol::Header* header = 100 dns_protocol::Header* header =
101 reinterpret_cast<dns_protocol::Header*>(buffer); 101 reinterpret_cast<dns_protocol::Header*>(buffer);
102 header->flags |= dns_protocol::kFlagResponse; 102 header->flags |= dns_protocol::kFlagResponse;
103 103
104 if (MockDnsClientRule::OK == result_) { 104 if (MockDnsClientRule::OK == result_) {
105 const uint16 kPointerToQueryName = 105 const uint16_t kPointerToQueryName =
106 static_cast<uint16>(0xc000 | sizeof(*header)); 106 static_cast<uint16_t>(0xc000 | sizeof(*header));
107 107
108 const uint32 kTTL = 86400; // One day. 108 const uint32_t kTTL = 86400; // One day.
109 109
110 // Size of RDATA which is a IPv4 or IPv6 address. 110 // Size of RDATA which is a IPv4 or IPv6 address.
111 size_t rdata_size = qtype_ == dns_protocol::kTypeA ? kIPv4AddressSize 111 size_t rdata_size = qtype_ == dns_protocol::kTypeA ? kIPv4AddressSize
112 : kIPv6AddressSize; 112 : kIPv6AddressSize;
113 113
114 // 12 is the sum of sizes of the compressed name reference, TYPE, 114 // 12 is the sum of sizes of the compressed name reference, TYPE,
115 // CLASS, TTL and RDLENGTH. 115 // CLASS, TTL and RDLENGTH.
116 size_t answer_size = 12 + rdata_size; 116 size_t answer_size = 12 + rdata_size;
117 117
118 // Write answer with loopback IP address. 118 // Write answer with loopback IP address.
119 header->ancount = base::HostToNet16(1); 119 header->ancount = base::HostToNet16(1);
120 base::BigEndianWriter writer(buffer + nbytes, answer_size); 120 base::BigEndianWriter writer(buffer + nbytes, answer_size);
121 writer.WriteU16(kPointerToQueryName); 121 writer.WriteU16(kPointerToQueryName);
122 writer.WriteU16(qtype_); 122 writer.WriteU16(qtype_);
123 writer.WriteU16(dns_protocol::kClassIN); 123 writer.WriteU16(dns_protocol::kClassIN);
124 writer.WriteU32(kTTL); 124 writer.WriteU32(kTTL);
125 writer.WriteU16(static_cast<uint16>(rdata_size)); 125 writer.WriteU16(static_cast<uint16_t>(rdata_size));
126 if (qtype_ == dns_protocol::kTypeA) { 126 if (qtype_ == dns_protocol::kTypeA) {
127 char kIPv4Loopback[] = { 0x7f, 0, 0, 1 }; 127 char kIPv4Loopback[] = { 0x7f, 0, 0, 1 };
128 writer.WriteBytes(kIPv4Loopback, sizeof(kIPv4Loopback)); 128 writer.WriteBytes(kIPv4Loopback, sizeof(kIPv4Loopback));
129 } else { 129 } else {
130 char kIPv6Loopback[] = { 0, 0, 0, 0, 0, 0, 0, 0, 130 char kIPv6Loopback[] = { 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 0, 0, 0, 0, 1 }; 131 0, 0, 0, 0, 0, 0, 0, 1 };
132 writer.WriteBytes(kIPv6Loopback, sizeof(kIPv6Loopback)); 132 writer.WriteBytes(kIPv6Loopback, sizeof(kIPv6Loopback));
133 } 133 }
134 nbytes += answer_size; 134 nbytes += answer_size;
135 } 135 }
136 EXPECT_TRUE(response.InitParse(nbytes, query)); 136 EXPECT_TRUE(response.InitParse(nbytes, query));
137 callback_.Run(this, OK, &response); 137 callback_.Run(this, OK, &response);
138 } break; 138 } break;
139 case MockDnsClientRule::FAIL: 139 case MockDnsClientRule::FAIL:
140 callback_.Run(this, ERR_NAME_NOT_RESOLVED, NULL); 140 callback_.Run(this, ERR_NAME_NOT_RESOLVED, NULL);
141 break; 141 break;
142 case MockDnsClientRule::TIMEOUT: 142 case MockDnsClientRule::TIMEOUT:
143 callback_.Run(this, ERR_DNS_TIMED_OUT, NULL); 143 callback_.Run(this, ERR_DNS_TIMED_OUT, NULL);
144 break; 144 break;
145 default: 145 default:
146 NOTREACHED(); 146 NOTREACHED();
147 break; 147 break;
148 } 148 }
149 } 149 }
150 150
151 MockDnsClientRule::Result result_; 151 MockDnsClientRule::Result result_;
152 const std::string hostname_; 152 const std::string hostname_;
153 const uint16 qtype_; 153 const uint16_t qtype_;
154 DnsTransactionFactory::CallbackType callback_; 154 DnsTransactionFactory::CallbackType callback_;
155 bool started_; 155 bool started_;
156 bool delayed_; 156 bool delayed_;
157 }; 157 };
158 158
159 } // namespace 159 } // namespace
160 160
161 // A DnsTransactionFactory which creates MockTransaction. 161 // A DnsTransactionFactory which creates MockTransaction.
162 class MockTransactionFactory : public DnsTransactionFactory { 162 class MockTransactionFactory : public DnsTransactionFactory {
163 public: 163 public:
164 explicit MockTransactionFactory(const MockDnsClientRuleList& rules) 164 explicit MockTransactionFactory(const MockDnsClientRuleList& rules)
165 : rules_(rules) {} 165 : rules_(rules) {}
166 166
167 ~MockTransactionFactory() override {} 167 ~MockTransactionFactory() override {}
168 168
169 scoped_ptr<DnsTransaction> CreateTransaction( 169 scoped_ptr<DnsTransaction> CreateTransaction(
170 const std::string& hostname, 170 const std::string& hostname,
171 uint16 qtype, 171 uint16_t qtype,
172 const DnsTransactionFactory::CallbackType& callback, 172 const DnsTransactionFactory::CallbackType& callback,
173 const BoundNetLog&) override { 173 const BoundNetLog&) override {
174 MockTransaction* transaction = 174 MockTransaction* transaction =
175 new MockTransaction(rules_, hostname, qtype, callback); 175 new MockTransaction(rules_, hostname, qtype, callback);
176 if (transaction->delayed()) 176 if (transaction->delayed())
177 delayed_transactions_.push_back(transaction->AsWeakPtr()); 177 delayed_transactions_.push_back(transaction->AsWeakPtr());
178 return scoped_ptr<DnsTransaction>(transaction); 178 return scoped_ptr<DnsTransaction>(transaction);
179 } 179 }
180 180
181 void CompleteDelayedTransactions() { 181 void CompleteDelayedTransactions() {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 218
219 AddressSorter* MockDnsClient::GetAddressSorter() { 219 AddressSorter* MockDnsClient::GetAddressSorter() {
220 return address_sorter_.get(); 220 return address_sorter_.get();
221 } 221 }
222 222
223 void MockDnsClient::CompleteDelayedTransactions() { 223 void MockDnsClient::CompleteDelayedTransactions() {
224 factory_->CompleteDelayedTransactions(); 224 factory_->CompleteDelayedTransactions();
225 } 225 }
226 226
227 } // namespace net 227 } // namespace net
OLDNEW
« no previous file with comments | « net/dns/dns_test_util.h ('k') | net/dns/dns_transaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698