summaryrefslogtreecommitdiffstats
path: root/patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-01-31 16:27:44 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-03 17:50:35 +0100
commitecaab295f96e3d12fc952c49d35a6eb32f72aba1 (patch)
tree0274229243a57462c2a24f4162b597235ce9b755 /patches/chromium/0003-Clang-libc-does-not-support-incomplete-types-in-temp.patch
parenta4b0e2183c23c0173167833c75f0e2970f3ab524 (diff)
Make it easier to update patches and apply them manually
Clean the way that we maintain patches by keeping them ordered by their number and let the shell order them when giving the list to git am. Provide a update-patches.sh that maintains the proper command lines to use and run a cleaning script on the resulting patch to avoid the SHA1 to be added to the file as it changes every time the patch is applied. Change-Id: Ia93cf4b35f5f847a8723a31fc476443864242737 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
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.patch653
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();