Index: net/dns/dns_test_util.h |
diff --git a/net/dns/dns_test_util.h b/net/dns/dns_test_util.h |
index d28c9e446092e9d177f34b6b52699397c81e65de..136a3becc0b1907ef0177135e094df3decbd251b 100644 |
--- a/net/dns/dns_test_util.h |
+++ b/net/dns/dns_test_util.h |
@@ -12,6 +12,8 @@ |
#include <string> |
#include <vector> |
+#include "base/big_endian.h" |
+#include "base/callback_forward.h" |
#include "net/dns/dns_client.h" |
#include "net/dns/dns_config_service.h" |
#include "net/dns/dns_protocol.h" |
@@ -165,18 +167,42 @@ struct MockDnsClientRule { |
OK, // Return a response with loopback address. |
}; |
+ // The type of callback invoked in order to prepare a response to a mock DNS |
+ // request. An empty response will be created, which can then be manipulated |
+ // via the |response_header| and |answer_writer|. It must return net::OK |
+ // when done, unless it is intended that the request fail, in which case it |
+ // must return a different net::Error. |
+ using ResponseCallback = |
+ base::Callback<int(dns_protocol::Header* response_header, |
+ base::BigEndianWriter* answer_writer)>; |
+ |
+ // Expect a mock DNS request with the given |prefix| and |qtype|. |
+ // The response is dictated by |result|. |
// If |delay| is true, matching transactions will be delayed until triggered |
// by the consumer. |
- MockDnsClientRule(const std::string& prefix_arg, |
- uint16_t qtype_arg, |
- Result result_arg, |
- bool delay) |
- : result(result_arg), |
- prefix(prefix_arg), |
- qtype(qtype_arg), |
- delay(delay) {} |
- |
- Result result; |
+ MockDnsClientRule(const std::string& prefix, |
+ uint16_t qtype, |
+ Result result, |
+ bool delay); |
+ |
+ // Expect a mock DNS request with the given |prefix| and |qtype|. |
+ // In response, invoke |response_callback|, which can modify the response |
+ // header, write answers into the response, or return a net::Error. |
+ // If |delay| is true, matching transactions will be delayed until triggered |
+ // by the consumer. |
+ MockDnsClientRule(const std::string& prefix, |
+ uint16_t qtype, |
+ ResponseCallback response_callback, |
+ bool delay); |
+ |
+ MockDnsClientRule(const MockDnsClientRule& copy); |
+ MockDnsClientRule(MockDnsClientRule&& move); |
+ ~MockDnsClientRule(); |
+ MockDnsClientRule& operator=(MockDnsClientRule o); |
+ |
+ friend void swap(MockDnsClientRule& x, MockDnsClientRule& y); |
+ |
+ ResponseCallback response_callback; |
std::string prefix; |
uint16_t qtype; |
bool delay; |