| 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 |