OLD | NEW |
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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 messages_.erase(messages_.begin() + i); | 152 messages_.erase(messages_.begin() + i); |
153 i--; | 153 i--; |
154 } | 154 } |
155 } | 155 } |
156 msgs->push_back(cur_requests); | 156 msgs->push_back(cur_requests); |
157 } | 157 } |
158 messages_.erase(messages_.begin()); | 158 messages_.erase(messages_.begin()); |
159 } | 159 } |
160 } | 160 } |
161 | 161 |
162 class MockURLRequestContextSelector | |
163 : public ResourceMessageFilter::URLRequestContextSelector { | |
164 public: | |
165 explicit MockURLRequestContextSelector( | |
166 net::URLRequestContext* request_context) | |
167 : request_context_(request_context) {} | |
168 | |
169 virtual net::URLRequestContext* GetRequestContext( | |
170 ResourceType::Type request_type) OVERRIDE { | |
171 return request_context_; | |
172 } | |
173 | |
174 private: | |
175 net::URLRequestContext* const request_context_; | |
176 }; | |
177 | |
178 // This class forwards the incoming messages to the ResourceDispatcherHostTest. | 162 // This class forwards the incoming messages to the ResourceDispatcherHostTest. |
179 // This is used to emulate different sub-processes, since this filter will | 163 // This is used to emulate different sub-processes, since this filter will |
180 // have a different ID than the original. For the test, we want all the incoming | 164 // have a different ID than the original. For the test, we want all the incoming |
181 // messages to go to the same place, which is why this forwards. | 165 // messages to go to the same place, which is why this forwards. |
182 class ForwardingFilter : public ResourceMessageFilter { | 166 class ForwardingFilter : public ResourceMessageFilter { |
183 public: | 167 public: |
184 explicit ForwardingFilter(IPC::Sender* dest, | 168 explicit ForwardingFilter(IPC::Sender* dest, |
185 ResourceContext* resource_context) | 169 ResourceContext* resource_context) |
186 : ResourceMessageFilter( | 170 : ResourceMessageFilter( |
187 ChildProcessHostImpl::GenerateChildProcessUniqueId(), | 171 ChildProcessHostImpl::GenerateChildProcessUniqueId(), |
188 PROCESS_TYPE_RENDERER, | 172 PROCESS_TYPE_RENDERER, NULL, NULL, NULL, |
189 resource_context, NULL, NULL, NULL, | 173 base::Bind(&ForwardingFilter::GetContexts, |
190 new MockURLRequestContextSelector( | 174 base::Unretained(this))), |
191 resource_context->GetRequestContext())), | 175 dest_(dest), |
192 dest_(dest) { | 176 resource_context_(resource_context) { |
193 OnChannelConnected(base::GetCurrentProcId()); | 177 OnChannelConnected(base::GetCurrentProcId()); |
194 } | 178 } |
195 | 179 |
196 // ResourceMessageFilter override | 180 // ResourceMessageFilter override |
197 virtual bool Send(IPC::Message* msg) OVERRIDE { | 181 virtual bool Send(IPC::Message* msg) OVERRIDE { |
198 if (!dest_) | 182 if (!dest_) |
199 return false; | 183 return false; |
200 return dest_->Send(msg); | 184 return dest_->Send(msg); |
201 } | 185 } |
202 | 186 |
| 187 ResourceContext* resource_context() { return resource_context_; } |
| 188 |
203 protected: | 189 protected: |
204 virtual ~ForwardingFilter() {} | 190 virtual ~ForwardingFilter() {} |
205 | 191 |
206 private: | 192 private: |
| 193 void GetContexts(const ResourceHostMsg_Request& request, |
| 194 ResourceContext** resource_context, |
| 195 net::URLRequestContext** request_context) { |
| 196 *resource_context = resource_context_; |
| 197 *request_context = resource_context_->GetRequestContext(); |
| 198 } |
| 199 |
207 IPC::Sender* dest_; | 200 IPC::Sender* dest_; |
| 201 ResourceContext* resource_context_; |
208 | 202 |
209 DISALLOW_COPY_AND_ASSIGN(ForwardingFilter); | 203 DISALLOW_COPY_AND_ASSIGN(ForwardingFilter); |
210 }; | 204 }; |
211 | 205 |
212 // This class is a variation on URLRequestTestJob in that it does | 206 // This class is a variation on URLRequestTestJob in that it does |
213 // not complete start upon entry, only when specifically told to. | 207 // not complete start upon entry, only when specifically told to. |
214 class URLRequestTestDelayedStartJob : public net::URLRequestTestJob { | 208 class URLRequestTestDelayedStartJob : public net::URLRequestTestJob { |
215 public: | 209 public: |
216 URLRequestTestDelayedStartJob(net::URLRequest* request, | 210 URLRequestTestDelayedStartJob(net::URLRequest* request, |
217 net::NetworkDelegate* network_delegate) | 211 net::NetworkDelegate* network_delegate) |
(...skipping 1780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1998 } | 1992 } |
1999 | 1993 |
2000 base::MessageLoop::current()->RunUntilIdle(); | 1994 base::MessageLoop::current()->RunUntilIdle(); |
2001 | 1995 |
2002 msgs.clear(); | 1996 msgs.clear(); |
2003 accum_.GetClassifiedMessages(&msgs); | 1997 accum_.GetClassifiedMessages(&msgs); |
2004 } | 1998 } |
2005 } | 1999 } |
2006 | 2000 |
2007 } // namespace content | 2001 } // namespace content |
OLD | NEW |