diff options
Diffstat (limited to 'patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch')
-rw-r--r-- | patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch | 653 |
1 files changed, 653 insertions, 0 deletions
diff --git a/patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch b/patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch new file mode 100644 index 000000000..ce3d9bb30 --- /dev/null +++ b/patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch @@ -0,0 +1,653 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Zeno Albisser <zeno.albisser@digia.com> +Date: Thu, 27 Jun 2013 15:58:32 +0200 +Subject: Clang / libc++ does not support incomplete types in templates. See: + http://clang.llvm.org/compatibility.html#undep_incomplete + +Therefore forward declarations must be removed in several places: +- AudioBus::QueuedAudioBuffer +- base::Callback +- GURL +- HttpAuthCache::Entry +- ImageFamily::MapKey +- MediaStreamDispatcher::Request +- MediaStreamDispatcher::Stream +- MediaStreamDispatcherHost::StreamRequest +- MessagePortService::MessagePort +- MockCertVerifier::Rule +- PepperRendererInstanceData +- RuleBasedHostResolverProc::Rule +- WebURLError +- WebURLLoaderMockFactory::ResponseInfo +- WorkerDevToolsManager::InspectedWorker +- WorkerDevToolsManager::TerminatedInspectedWorker +--- + base/callback_forward.h | 9 +----- + .../browser/devtools/worker_devtools_manager.cc | 24 ---------------- + content/browser/devtools/worker_devtools_manager.h | 26 ++++++++++++++++-- + .../media/media_stream_dispatcher_host.cc | 11 -------- + .../media/media_stream_dispatcher_host.h | 12 +++++++- + .../browser/worker_host/message_port_service.cc | 22 --------------- + content/browser/worker_host/message_port_service.h | 23 +++++++++++++++- + content/common/gpu/gpu_messages.h | 4 ++- + content/renderer/media/media_stream_dispatcher.cc | 31 --------------------- + content/renderer/media/media_stream_dispatcher.h | 31 +++++++++++++++++++-- + content/renderer/pepper/message_channel.cc | 12 -------- + content/renderer/pepper/message_channel.h | 18 ++++++++---- + gpu/config/dx_diag_node.cc | 4 +++ + gpu/config/dx_diag_node.h | 4 +++ + media/filters/ffmpeg_audio_decoder.cc | 6 ---- + media/filters/ffmpeg_audio_decoder.h | 8 +++++- + net/cert/mock_cert_verifier.cc | 19 ------------- + net/cert/mock_cert_verifier.h | 20 +++++++++++++- + net/dns/mock_host_resolver.cc | 31 --------------------- + net/dns/mock_host_resolver.h | 32 +++++++++++++++++++++- + 20 files changed, 168 insertions(+), 179 deletions(-) + +diff --git a/base/callback_forward.h b/base/callback_forward.h +index 7983248..8538bb2 100644 +--- a/base/callback_forward.h ++++ b/base/callback_forward.h +@@ -5,13 +5,6 @@ + #ifndef BASE_CALLBACK_FORWARD_H_ + #define BASE_CALLBACK_FORWARD_H_ + +-namespace base { +- +-template <typename Sig> +-class Callback; +- +-typedef Callback<void(void)> Closure; +- +-} // namespace base ++#include "base/callback.h" + + #endif // BASE_CALLBACK_FORWARD_H +diff --git a/content/browser/devtools/worker_devtools_manager.cc b/content/browser/devtools/worker_devtools_manager.cc +index f08523b..983c55c 100644 +--- a/content/browser/devtools/worker_devtools_manager.cc ++++ b/content/browser/devtools/worker_devtools_manager.cc +@@ -51,17 +51,6 @@ base::LazyInstance<AgentHosts>::Leaky g_orphan_map = LAZY_INSTANCE_INITIALIZER; + + } // namespace + +-struct WorkerDevToolsManager::TerminatedInspectedWorker { +- TerminatedInspectedWorker(WorkerId id, const GURL& url, const string16& name) +- : old_worker_id(id), +- worker_url(url), +- worker_name(name) {} +- WorkerId old_worker_id; +- GURL worker_url; +- string16 worker_name; +-}; +- +- + class WorkerDevToolsManager::WorkerDevToolsAgentHost + : public IPCDevToolsAgentHost { + public: +@@ -200,19 +189,6 @@ class WorkerDevToolsManager::DetachedClientHosts { + } + }; + +-struct WorkerDevToolsManager::InspectedWorker { +- InspectedWorker(WorkerProcessHost* host, int route_id, const GURL& url, +- const string16& name) +- : host(host), +- route_id(route_id), +- worker_url(url), +- worker_name(name) {} +- WorkerProcessHost* const host; +- int const route_id; +- GURL worker_url; +- string16 worker_name; +-}; +- + // static + WorkerDevToolsManager* WorkerDevToolsManager::GetInstance() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); +diff --git a/content/browser/devtools/worker_devtools_manager.h b/content/browser/devtools/worker_devtools_manager.h +index 8a9a708..e6d090c 100644 +--- a/content/browser/devtools/worker_devtools_manager.h ++++ b/content/browser/devtools/worker_devtools_manager.h +@@ -54,7 +54,20 @@ class WorkerDevToolsManager { + private: + friend struct DefaultSingletonTraits<WorkerDevToolsManager>; + class DetachedClientHosts; +- struct InspectedWorker; ++ ++ struct InspectedWorker { ++ InspectedWorker(WorkerProcessHost* host, int route_id, const GURL& url, ++ const string16& name) ++ : host(host), ++ route_id(route_id), ++ worker_url(url), ++ worker_name(name) {} ++ WorkerProcessHost* const host; ++ int const route_id; ++ GURL worker_url; ++ string16 worker_name; ++ }; ++ + typedef std::list<InspectedWorker> InspectedWorkersList; + + WorkerDevToolsManager(); +@@ -84,7 +97,16 @@ class WorkerDevToolsManager { + + InspectedWorkersList inspected_workers_; + +- struct TerminatedInspectedWorker; ++ struct TerminatedInspectedWorker { ++ TerminatedInspectedWorker(WorkerId id, const GURL& url, const string16& name) ++ : old_worker_id(id), ++ worker_url(url), ++ worker_name(name) {} ++ WorkerId old_worker_id; ++ GURL worker_url; ++ string16 worker_name; ++ }; ++ + typedef std::list<TerminatedInspectedWorker> TerminatedInspectedWorkers; + // List of terminated workers for which there may be a devtools client on + // the UI thread. Worker entry is added into this list when inspected worker +diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host.cc +index ebc4d89..9135b71 100644 +--- a/content/browser/renderer_host/media/media_stream_dispatcher_host.cc ++++ b/content/browser/renderer_host/media/media_stream_dispatcher_host.cc +@@ -12,17 +12,6 @@ + + namespace content { + +-struct MediaStreamDispatcherHost::StreamRequest { +- StreamRequest() : render_view_id(0), page_request_id(0) {} +- StreamRequest(int render_view_id, int page_request_id) +- : render_view_id(render_view_id), +- page_request_id(page_request_id ) { +- } +- int render_view_id; +- // Id of the request generated by MediaStreamDispatcher. +- int page_request_id; +-}; +- + MediaStreamDispatcherHost::MediaStreamDispatcherHost( + int render_process_id, + MediaStreamManager* media_stream_manager) +diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host.h b/content/browser/renderer_host/media/media_stream_dispatcher_host.h +index ec1dd15..cfc6913 100644 +--- a/content/browser/renderer_host/media/media_stream_dispatcher_host.h ++++ b/content/browser/renderer_host/media/media_stream_dispatcher_host.h +@@ -72,7 +72,17 @@ class CONTENT_EXPORT MediaStreamDispatcherHost : public BrowserMessageFilter, + int render_process_id_; + MediaStreamManager* media_stream_manager_; + +- struct StreamRequest; ++ struct StreamRequest { ++ StreamRequest() : render_view_id(0), page_request_id(0) {} ++ StreamRequest(int render_view_id, int page_request_id) ++ : render_view_id(render_view_id), ++ page_request_id(page_request_id ) { ++ } ++ int render_view_id; ++ // Id of the request generated by MediaStreamDispatcher. ++ int page_request_id; ++ }; ++ + typedef std::map<std::string, StreamRequest> StreamMap; + // Streams generated for this host. + StreamMap streams_; +diff --git a/content/browser/worker_host/message_port_service.cc b/content/browser/worker_host/message_port_service.cc +index 3bc8f5a..b413c1f 100644 +--- a/content/browser/worker_host/message_port_service.cc ++++ b/content/browser/worker_host/message_port_service.cc +@@ -9,28 +9,6 @@ + + namespace content { + +-struct MessagePortService::MessagePort { +- // |filter| and |route_id| are what we need to send messages to the port. +- // |filter| is just a weak pointer since we get notified when its process has +- // gone away and remove it. +- WorkerMessageFilter* filter; +- int route_id; +- // A globally unique id for this message port. +- int message_port_id; +- // The globally unique id of the entangled message port. +- int entangled_message_port_id; +- // If true, all messages to this message port are queued and not delivered. +- // This is needed so that when a message port is sent between processes all +- // pending message get transferred. There are two possibilities for pending +- // messages: either they are already received by the child process, or they're +- // in-flight. This flag ensures that the latter type get flushed through the +- // system. +- // This flag should only be set to true in response to +- // WorkerProcessHostMsg_QueueMessages. +- bool queue_messages; +- QueuedMessages queued_messages; +-}; +- + MessagePortService* MessagePortService::GetInstance() { + return Singleton<MessagePortService>::get(); + } +diff --git a/content/browser/worker_host/message_port_service.h b/content/browser/worker_host/message_port_service.h +index b85e76b..30645c7 100644 +--- a/content/browser/worker_host/message_port_service.h ++++ b/content/browser/worker_host/message_port_service.h +@@ -61,7 +61,28 @@ class MessagePortService { + // verify that the message port id exists. + void Erase(int message_port_id); + +- struct MessagePort; ++ struct MessagePort { ++ // |filter| and |route_id| are what we need to send messages to the port. ++ // |filter| is just a weak pointer since we get notified when its process has ++ // gone away and remove it. ++ WorkerMessageFilter* filter; ++ int route_id; ++ // A globally unique id for this message port. ++ int message_port_id; ++ // The globally unique id of the entangled message port. ++ int entangled_message_port_id; ++ // If true, all messages to this message port are queued and not delivered. ++ // This is needed so that when a message port is sent between processes all ++ // pending message get transferred. There are two possibilities for pending ++ // messages: either they are already received by the child process, or they're ++ // in-flight. This flag ensures that the latter type get flushed through the ++ // system. ++ // This flag should only be set to true in response to ++ // WorkerProcessHostMsg_QueueMessages. ++ bool queue_messages; ++ QueuedMessages queued_messages; ++ }; ++ + typedef std::map<int, MessagePort> MessagePorts; + MessagePorts message_ports_; + +diff --git a/content/common/gpu/gpu_messages.h b/content/common/gpu/gpu_messages.h +index b4e5be5..3952d79 100644 +--- a/content/common/gpu/gpu_messages.h ++++ b/content/common/gpu/gpu_messages.h +@@ -116,10 +116,12 @@ IPC_STRUCT_BEGIN(GpuStreamTextureMsg_MatrixChanged_Params) + IPC_STRUCT_END() + #endif + +- IPC_STRUCT_TRAITS_BEGIN(gpu::DxDiagNode) ++#if defined(OS_WIN) ++IPC_STRUCT_TRAITS_BEGIN(gpu::DxDiagNode) + IPC_STRUCT_TRAITS_MEMBER(values) + IPC_STRUCT_TRAITS_MEMBER(children) + IPC_STRUCT_TRAITS_END() ++#endif + + IPC_STRUCT_TRAITS_BEGIN(gpu::GpuPerformanceStats) + IPC_STRUCT_TRAITS_MEMBER(graphics) +diff --git a/content/renderer/media/media_stream_dispatcher.cc b/content/renderer/media/media_stream_dispatcher.cc +index cc241fa..57d65b6 100644 +--- a/content/renderer/media/media_stream_dispatcher.cc ++++ b/content/renderer/media/media_stream_dispatcher.cc +@@ -14,37 +14,6 @@ + + namespace content { + +-// A request is identified by pair (request_id, handler), or ipc_request. +-// There could be multiple clients making requests and each has its own +-// request_id sequence. +-// The ipc_request is garanteed to be unique when it's created in +-// MediaStreamDispatcher. +-struct MediaStreamDispatcher::Request { +- Request(const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler, +- int request_id, +- int ipc_request) +- : handler(handler), +- request_id(request_id), +- ipc_request(ipc_request) { +- } +- bool IsThisRequest( +- int request_id1, +- const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler1) { +- return (request_id1 == request_id && handler1.get() == handler.get()); +- } +- base::WeakPtr<MediaStreamDispatcherEventHandler> handler; +- int request_id; +- int ipc_request; +-}; +- +-struct MediaStreamDispatcher::Stream { +- Stream() {} +- ~Stream() {} +- base::WeakPtr<MediaStreamDispatcherEventHandler> handler; +- StreamDeviceInfoArray audio_array; +- StreamDeviceInfoArray video_array; +-}; +- + MediaStreamDispatcher::EnumerationRequest::EnumerationRequest( + const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler, + int request_id) +diff --git a/content/renderer/media/media_stream_dispatcher.h b/content/renderer/media/media_stream_dispatcher.h +index aa8f345..af25963 100644 +--- a/content/renderer/media/media_stream_dispatcher.h ++++ b/content/renderer/media/media_stream_dispatcher.h +@@ -98,11 +98,38 @@ class CONTENT_EXPORT MediaStreamDispatcher + FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, TestFailure); + FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, CancelGenerateStream); + +- struct Request; ++ // A request is identified by pair (request_id, handler), or ipc_request. ++ // There could be multiple clients making requests and each has its own ++ // request_id sequence. ++ // The ipc_request is garanteed to be unique when it's created in ++ // MediaStreamDispatcher. ++ struct Request { ++ Request(const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler, ++ int request_id, ++ int ipc_request) ++ : handler(handler), ++ request_id(request_id), ++ ipc_request(ipc_request) { ++ } ++ bool IsThisRequest( ++ int request_id1, ++ const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler1) { ++ return (request_id1 == request_id && handler1.get() == handler.get()); ++ } ++ base::WeakPtr<MediaStreamDispatcherEventHandler> handler; ++ int request_id; ++ int ipc_request; ++ }; + + // Private class for keeping track of opened devices and who have + // opened it. +- struct Stream; ++ struct Stream { ++ Stream() {} ++ ~Stream() {} ++ base::WeakPtr<MediaStreamDispatcherEventHandler> handler; ++ StreamDeviceInfoArray audio_array; ++ StreamDeviceInfoArray video_array; ++ }; + + // An enumeration request is identified by pair (request_id, handler). + // It allows multiple clients to make requests and each client could have +diff --git a/content/renderer/pepper/message_channel.cc b/content/renderer/pepper/message_channel.cc +index f06b787..c41be2f 100644 +--- a/content/renderer/pepper/message_channel.cc ++++ b/content/renderer/pepper/message_channel.cc +@@ -279,18 +279,6 @@ NPClass message_channel_class = { + } // namespace + + // MessageChannel -------------------------------------------------------------- +-struct MessageChannel::VarConversionResult { +- VarConversionResult(const ppapi::ScopedPPVar& r, bool s) +- : result(r), +- success(s), +- conversion_completed(true) {} +- VarConversionResult() +- : success(false), +- conversion_completed(false) {} +- ppapi::ScopedPPVar result; +- bool success; +- bool conversion_completed; +-}; + + MessageChannel::MessageChannelNPObject::MessageChannelNPObject() { + } +diff --git a/content/renderer/pepper/message_channel.h b/content/renderer/pepper/message_channel.h +index 9c8c28d..e4e1423 100644 +--- a/content/renderer/pepper/message_channel.h ++++ b/content/renderer/pepper/message_channel.h +@@ -10,15 +10,12 @@ + + #include "base/memory/weak_ptr.h" + #include "ppapi/shared_impl/resource.h" ++#include "ppapi/shared_impl/scoped_pp_var.h" + #include "third_party/WebKit/public/web/WebSerializedScriptValue.h" + #include "third_party/npapi/bindings/npruntime.h" + + struct PP_Var; + +-namespace ppapi { +-class ScopedPPVar; +-} +- + namespace content { + + class PepperPluginInstanceImpl; +@@ -86,7 +83,18 @@ class MessageChannel { + + private: + // Struct for storing the result of a NPVariant being converted to a PP_Var. +- struct VarConversionResult; ++ struct VarConversionResult { ++ VarConversionResult(const ppapi::ScopedPPVar& r, bool s) ++ : result(r), ++ success(s), ++ conversion_completed(true) {} ++ VarConversionResult() ++ : success(false), ++ conversion_completed(false) {} ++ ppapi::ScopedPPVar result; ++ bool success; ++ bool conversion_completed; ++ }; + + // This is called when an NPVariant is finished being converted. + // |result_iteartor| is an iterator into |converted_var_queue_| where the +diff --git a/gpu/config/dx_diag_node.cc b/gpu/config/dx_diag_node.cc +index e0902ca..c1e84ae 100644 +--- a/gpu/config/dx_diag_node.cc ++++ b/gpu/config/dx_diag_node.cc +@@ -4,6 +4,8 @@ + + #include "gpu/config/dx_diag_node.h" + ++#if defined(OS_WIN) ++ + namespace gpu { + + DxDiagNode::DxDiagNode() {} +@@ -11,3 +13,5 @@ DxDiagNode::DxDiagNode() {} + DxDiagNode::~DxDiagNode() {} + + } // namespace gpu ++ ++#endif // defined(OS_WIN) +diff --git a/gpu/config/dx_diag_node.h b/gpu/config/dx_diag_node.h +index 33d29b3..45ffa65 100644 +--- a/gpu/config/dx_diag_node.h ++++ b/gpu/config/dx_diag_node.h +@@ -8,6 +8,8 @@ + #ifndef GPU_CONFIG_DX_DIAG_NODE_H_ + #define GPU_CONFIG_DX_DIAG_NODE_H_ + ++#if defined(OS_WIN) ++ + #include <map> + #include <string> + +@@ -24,4 +26,6 @@ struct GPU_EXPORT DxDiagNode { + + } // namespace gpu + ++#endif // defined(OS_WIN) ++ + #endif // GPU_CONFIG_DX_DIAG_NODE_H_ +diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc +index f922e98..f41c893 100644 +--- a/media/filters/ffmpeg_audio_decoder.cc ++++ b/media/filters/ffmpeg_audio_decoder.cc +@@ -22,12 +22,6 @@ + + namespace media { + +-// Helper structure for managing multiple decoded audio frames per packet. +-struct QueuedAudioBuffer { +- AudioDecoder::Status status; +- scoped_refptr<AudioBuffer> buffer; +-}; +- + // Returns true if the decode result was end of stream. + static inline bool IsEndOfStream(int result, + int decoded_size, +diff --git a/media/filters/ffmpeg_audio_decoder.h b/media/filters/ffmpeg_audio_decoder.h +index 7ea8615..44c9830 100644 +--- a/media/filters/ffmpeg_audio_decoder.h ++++ b/media/filters/ffmpeg_audio_decoder.h +@@ -25,7 +25,13 @@ namespace media { + + class AudioTimestampHelper; + class DecoderBuffer; +-struct QueuedAudioBuffer; ++ ++// Helper structure for managing multiple decoded audio frames per packet. ++struct QueuedAudioBuffer { ++ AudioDecoder::Status status; ++ scoped_refptr<AudioBuffer> buffer; ++}; ++ + + class MEDIA_EXPORT FFmpegAudioDecoder : public AudioDecoder { + public: +diff --git a/net/cert/mock_cert_verifier.cc b/net/cert/mock_cert_verifier.cc +index ea5538e..a30e3d5 100644 +--- a/net/cert/mock_cert_verifier.cc ++++ b/net/cert/mock_cert_verifier.cc +@@ -13,25 +13,6 @@ + + namespace net { + +-struct MockCertVerifier::Rule { +- Rule(X509Certificate* cert, +- const std::string& hostname, +- const CertVerifyResult& result, +- int rv) +- : cert(cert), +- hostname(hostname), +- result(result), +- rv(rv) { +- DCHECK(cert); +- DCHECK(result.verified_cert.get()); +- } +- +- scoped_refptr<X509Certificate> cert; +- std::string hostname; +- CertVerifyResult result; +- int rv; +-}; +- + MockCertVerifier::MockCertVerifier() : default_result_(ERR_CERT_INVALID) {} + + MockCertVerifier::~MockCertVerifier() {} +diff --git a/net/cert/mock_cert_verifier.h b/net/cert/mock_cert_verifier.h +index 5af7b7e..704c66b 100644 +--- a/net/cert/mock_cert_verifier.h ++++ b/net/cert/mock_cert_verifier.h +@@ -57,7 +57,25 @@ class MockCertVerifier : public CertVerifier { + int rv); + + private: +- struct Rule; ++ struct Rule { ++ Rule(X509Certificate* cert, ++ const std::string& hostname, ++ const CertVerifyResult& result, ++ int rv) ++ : cert(cert), ++ hostname(hostname), ++ result(result), ++ rv(rv) { ++ DCHECK(cert); ++ DCHECK(result.verified_cert.get()); ++ } ++ ++ scoped_refptr<X509Certificate> cert; ++ std::string hostname; ++ CertVerifyResult result; ++ int rv; ++ }; ++ + typedef std::list<Rule> RuleList; + + int default_result_; +diff --git a/net/dns/mock_host_resolver.cc b/net/dns/mock_host_resolver.cc +index ff5ffbc..25918ba 100644 +--- a/net/dns/mock_host_resolver.cc ++++ b/net/dns/mock_host_resolver.cc +@@ -212,37 +212,6 @@ void MockHostResolverBase::ResolveNow(size_t id) { + + //----------------------------------------------------------------------------- + +-struct RuleBasedHostResolverProc::Rule { +- enum ResolverType { +- kResolverTypeFail, +- kResolverTypeSystem, +- kResolverTypeIPLiteral, +- }; +- +- ResolverType resolver_type; +- std::string host_pattern; +- AddressFamily address_family; +- HostResolverFlags host_resolver_flags; +- std::string replacement; +- std::string canonical_name; +- int latency_ms; // In milliseconds. +- +- Rule(ResolverType resolver_type, +- const std::string& host_pattern, +- AddressFamily address_family, +- HostResolverFlags host_resolver_flags, +- const std::string& replacement, +- const std::string& canonical_name, +- int latency_ms) +- : resolver_type(resolver_type), +- host_pattern(host_pattern), +- address_family(address_family), +- host_resolver_flags(host_resolver_flags), +- replacement(replacement), +- canonical_name(canonical_name), +- latency_ms(latency_ms) {} +-}; +- + RuleBasedHostResolverProc::RuleBasedHostResolverProc(HostResolverProc* previous) + : HostResolverProc(previous) { + } +diff --git a/net/dns/mock_host_resolver.h b/net/dns/mock_host_resolver.h +index 3593fbd..f8a4240 100644 +--- a/net/dns/mock_host_resolver.h ++++ b/net/dns/mock_host_resolver.h +@@ -209,7 +209,37 @@ class RuleBasedHostResolverProc : public HostResolverProc { + int* os_error) OVERRIDE; + + private: +- struct Rule; ++ struct Rule { ++ enum ResolverType { ++ kResolverTypeFail, ++ kResolverTypeSystem, ++ kResolverTypeIPLiteral, ++ }; ++ ++ ResolverType resolver_type; ++ std::string host_pattern; ++ AddressFamily address_family; ++ HostResolverFlags host_resolver_flags; ++ std::string replacement; ++ std::string canonical_name; ++ int latency_ms; // In milliseconds. ++ ++ Rule(ResolverType resolver_type, ++ const std::string& host_pattern, ++ AddressFamily address_family, ++ HostResolverFlags host_resolver_flags, ++ const std::string& replacement, ++ const std::string& canonical_name, ++ int latency_ms) ++ : resolver_type(resolver_type), ++ host_pattern(host_pattern), ++ address_family(address_family), ++ host_resolver_flags(host_resolver_flags), ++ replacement(replacement), ++ canonical_name(canonical_name), ++ latency_ms(latency_ms) {} ++ }; ++ + typedef std::list<Rule> RuleList; + + virtual ~RuleBasedHostResolverProc(); |