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 "content/public/renderer/resource_fetcher.h" | 5 #include "content/public/renderer/resource_fetcher.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 } | 146 } |
147 | 147 |
148 void ResourceFetcherDownloadOnRenderer(const GURL& url) { | 148 void ResourceFetcherDownloadOnRenderer(const GURL& url) { |
149 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 149 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
150 | 150 |
151 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); | 151 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); |
152 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 152 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
153 fetcher->Start(frame, | 153 fetcher->Start(frame, |
154 WebURLRequest::RequestContextInternal, | 154 WebURLRequest::RequestContextInternal, |
155 WebURLRequest::FrameTypeNone, | 155 WebURLRequest::FrameTypeNone, |
| 156 ResourceFetcher::PLATFORM_LOADER, |
156 delegate->NewCallback()); | 157 delegate->NewCallback()); |
157 | 158 |
158 delegate->WaitForResponse(); | 159 delegate->WaitForResponse(); |
159 | 160 |
160 ASSERT_TRUE(delegate->completed()); | 161 ASSERT_TRUE(delegate->completed()); |
161 EXPECT_EQ(delegate->response().httpStatusCode(), 200); | 162 EXPECT_EQ(delegate->response().httpStatusCode(), 200); |
162 std::string text = delegate->data(); | 163 std::string text = delegate->data(); |
163 EXPECT_TRUE(text.find("Basic html test.") != std::string::npos); | 164 EXPECT_TRUE(text.find("Basic html test.") != std::string::npos); |
164 } | 165 } |
165 | 166 |
166 void ResourceFetcher404OnRenderer(const GURL& url) { | 167 void ResourceFetcher404OnRenderer(const GURL& url) { |
167 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 168 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
168 | 169 |
169 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); | 170 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); |
170 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 171 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
171 fetcher->Start(frame, | 172 fetcher->Start(frame, |
172 WebURLRequest::RequestContextInternal, | 173 WebURLRequest::RequestContextInternal, |
173 WebURLRequest::FrameTypeNone, | 174 WebURLRequest::FrameTypeNone, |
| 175 ResourceFetcher::PLATFORM_LOADER, |
174 delegate->NewCallback()); | 176 delegate->NewCallback()); |
175 | 177 |
176 delegate->WaitForResponse(); | 178 delegate->WaitForResponse(); |
177 | 179 |
178 ASSERT_TRUE(delegate->completed()); | 180 ASSERT_TRUE(delegate->completed()); |
179 EXPECT_EQ(delegate->response().httpStatusCode(), 404); | 181 EXPECT_EQ(delegate->response().httpStatusCode(), 404); |
180 EXPECT_TRUE(delegate->data().find("Not Found.") != std::string::npos); | 182 EXPECT_TRUE(delegate->data().find("Not Found.") != std::string::npos); |
181 } | 183 } |
182 | 184 |
183 void ResourceFetcherDidFailOnRenderer() { | 185 void ResourceFetcherDidFailOnRenderer() { |
184 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 186 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
185 | 187 |
186 // Try to fetch a page on a site that doesn't exist. | 188 // Try to fetch a page on a site that doesn't exist. |
187 GURL url("http://localhost:1339/doesnotexist"); | 189 GURL url("http://localhost:1339/doesnotexist"); |
188 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); | 190 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); |
189 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 191 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
190 fetcher->Start(frame, | 192 fetcher->Start(frame, |
191 WebURLRequest::RequestContextInternal, | 193 WebURLRequest::RequestContextInternal, |
192 WebURLRequest::FrameTypeNone, | 194 WebURLRequest::FrameTypeNone, |
| 195 ResourceFetcher::PLATFORM_LOADER, |
193 delegate->NewCallback()); | 196 delegate->NewCallback()); |
194 | 197 |
195 delegate->WaitForResponse(); | 198 delegate->WaitForResponse(); |
196 | 199 |
197 // When we fail, we still call the Delegate callback but we pass in empty | 200 // When we fail, we still call the Delegate callback but we pass in empty |
198 // values. | 201 // values. |
199 EXPECT_TRUE(delegate->completed()); | 202 EXPECT_TRUE(delegate->completed()); |
200 EXPECT_TRUE(delegate->response().isNull()); | 203 EXPECT_TRUE(delegate->response().isNull()); |
201 EXPECT_EQ(delegate->data(), std::string()); | 204 EXPECT_EQ(delegate->data(), std::string()); |
202 EXPECT_FALSE(delegate->timed_out()); | 205 EXPECT_FALSE(delegate->timed_out()); |
203 } | 206 } |
204 | 207 |
205 void ResourceFetcherTimeoutOnRenderer(const GURL& url) { | 208 void ResourceFetcherTimeoutOnRenderer(const GURL& url) { |
206 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 209 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
207 | 210 |
208 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); | 211 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); |
209 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 212 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
210 fetcher->Start(frame, | 213 fetcher->Start(frame, |
211 WebURLRequest::RequestContextInternal, | 214 WebURLRequest::RequestContextInternal, |
212 WebURLRequest::FrameTypeNone, | 215 WebURLRequest::FrameTypeNone, |
| 216 ResourceFetcher::PLATFORM_LOADER, |
213 delegate->NewCallback()); | 217 delegate->NewCallback()); |
214 fetcher->SetTimeout(base::TimeDelta()); | 218 fetcher->SetTimeout(base::TimeDelta()); |
215 | 219 |
216 delegate->WaitForResponse(); | 220 delegate->WaitForResponse(); |
217 | 221 |
218 // When we timeout, we still call the Delegate callback but we pass in empty | 222 // When we timeout, we still call the Delegate callback but we pass in empty |
219 // values. | 223 // values. |
220 EXPECT_TRUE(delegate->completed()); | 224 EXPECT_TRUE(delegate->completed()); |
221 EXPECT_TRUE(delegate->response().isNull()); | 225 EXPECT_TRUE(delegate->response().isNull()); |
222 EXPECT_EQ(delegate->data(), std::string()); | 226 EXPECT_EQ(delegate->data(), std::string()); |
223 EXPECT_FALSE(delegate->timed_out()); | 227 EXPECT_FALSE(delegate->timed_out()); |
224 } | 228 } |
225 | 229 |
226 void ResourceFetcherDeletedInCallbackOnRenderer(const GURL& url) { | 230 void ResourceFetcherDeletedInCallbackOnRenderer(const GURL& url) { |
227 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 231 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
228 | 232 |
229 scoped_ptr<EvilFetcherDelegate> delegate(new EvilFetcherDelegate); | 233 scoped_ptr<EvilFetcherDelegate> delegate(new EvilFetcherDelegate); |
230 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 234 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
231 fetcher->Start(frame, | 235 fetcher->Start(frame, |
232 WebURLRequest::RequestContextInternal, | 236 WebURLRequest::RequestContextInternal, |
233 WebURLRequest::FrameTypeNone, | 237 WebURLRequest::FrameTypeNone, |
| 238 ResourceFetcher::PLATFORM_LOADER, |
234 delegate->NewCallback()); | 239 delegate->NewCallback()); |
235 fetcher->SetTimeout(base::TimeDelta()); | 240 fetcher->SetTimeout(base::TimeDelta()); |
236 delegate->SetFetcher(fetcher.release()); | 241 delegate->SetFetcher(fetcher.release()); |
237 | 242 |
238 delegate->WaitForResponse(); | 243 delegate->WaitForResponse(); |
239 EXPECT_FALSE(delegate->timed_out()); | 244 EXPECT_FALSE(delegate->timed_out()); |
240 } | 245 } |
241 | 246 |
242 void ResourceFetcherPost(const GURL& url) { | 247 void ResourceFetcherPost(const GURL& url) { |
243 const char* kBody = "Really nifty POST body!"; | 248 const char* kBody = "Really nifty POST body!"; |
244 | 249 |
245 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 250 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
246 | 251 |
247 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); | 252 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); |
248 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 253 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
249 fetcher->SetMethod("POST"); | 254 fetcher->SetMethod("POST"); |
250 fetcher->SetBody(kBody); | 255 fetcher->SetBody(kBody); |
251 fetcher->Start(frame, | 256 fetcher->Start(frame, |
252 WebURLRequest::RequestContextInternal, | 257 WebURLRequest::RequestContextInternal, |
253 WebURLRequest::FrameTypeNone, | 258 WebURLRequest::FrameTypeNone, |
| 259 ResourceFetcher::PLATFORM_LOADER, |
254 delegate->NewCallback()); | 260 delegate->NewCallback()); |
255 | 261 |
256 delegate->WaitForResponse(); | 262 delegate->WaitForResponse(); |
257 ASSERT_TRUE(delegate->completed()); | 263 ASSERT_TRUE(delegate->completed()); |
258 EXPECT_EQ(delegate->response().httpStatusCode(), 200); | 264 EXPECT_EQ(delegate->response().httpStatusCode(), 200); |
259 EXPECT_EQ(kBody, delegate->data()); | 265 EXPECT_EQ(kBody, delegate->data()); |
260 } | 266 } |
261 | 267 |
262 void ResourceFetcherSetHeader(const GURL& url) { | 268 void ResourceFetcherSetHeader(const GURL& url) { |
263 const char* kHeader = "Rather boring header."; | 269 const char* kHeader = "Rather boring header."; |
264 | 270 |
265 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); | 271 WebFrame* frame = GetRenderView()->GetWebView()->mainFrame(); |
266 | 272 |
267 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); | 273 scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate); |
268 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); | 274 scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url)); |
269 fetcher->SetHeader("header", kHeader); | 275 fetcher->SetHeader("header", kHeader); |
270 fetcher->Start(frame, | 276 fetcher->Start(frame, |
271 WebURLRequest::RequestContextInternal, | 277 WebURLRequest::RequestContextInternal, |
272 WebURLRequest::FrameTypeNone, | 278 WebURLRequest::FrameTypeNone, |
| 279 ResourceFetcher::PLATFORM_LOADER, |
273 delegate->NewCallback()); | 280 delegate->NewCallback()); |
274 | 281 |
275 delegate->WaitForResponse(); | 282 delegate->WaitForResponse(); |
276 ASSERT_TRUE(delegate->completed()); | 283 ASSERT_TRUE(delegate->completed()); |
277 EXPECT_EQ(delegate->response().httpStatusCode(), 200); | 284 EXPECT_EQ(delegate->response().httpStatusCode(), 200); |
278 EXPECT_EQ(kHeader, delegate->data()); | 285 EXPECT_EQ(kHeader, delegate->data()); |
279 } | 286 } |
280 }; | 287 }; |
281 | 288 |
282 #if defined(OS_ANDROID) | 289 #if defined(OS_ANDROID) |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 ASSERT_TRUE(test_server()->Start()); | 398 ASSERT_TRUE(test_server()->Start()); |
392 GURL url(test_server()->GetURL("echoheader?header")); | 399 GURL url(test_server()->GetURL("echoheader?header")); |
393 | 400 |
394 PostTaskToInProcessRendererAndWait( | 401 PostTaskToInProcessRendererAndWait( |
395 base::Bind( | 402 base::Bind( |
396 &ResourceFetcherTests::ResourceFetcherSetHeader, | 403 &ResourceFetcherTests::ResourceFetcherSetHeader, |
397 base::Unretained(this), url)); | 404 base::Unretained(this), url)); |
398 } | 405 } |
399 | 406 |
400 } // namespace content | 407 } // namespace content |
OLD | NEW |