Chromium Code Reviews| Index: webkit/glue/resource_fetcher.cc |
| =================================================================== |
| --- webkit/glue/resource_fetcher.cc (revision 19821) |
| +++ webkit/glue/resource_fetcher.cc (working copy) |
| @@ -2,30 +2,28 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "config.h" |
| #include "webkit/glue/resource_fetcher.h" |
| -#include "base/compiler_specific.h" |
| +#include "base/logging.h" |
| +#include "webkit/api/public/WebKit.h" |
| +#include "webkit/api/public/WebKitClient.h" |
| +#include "webkit/api/public/WebURLError.h" |
| +#include "webkit/api/public/WebURLLoader.h" |
| +#include "webkit/api/public/WebURLRequest.h" |
| +#include "webkit/api/public/WebURL.h" |
| +#include "webkit/glue/webframe.h" |
| -MSVC_PUSH_WARNING_LEVEL(0); |
| -#include "FrameLoader.h" |
| -#include "FrameLoaderClient.h" |
| -#include "ResourceHandle.h" |
| -#include "ResourceRequest.h" |
| -MSVC_POP_WARNING(); |
| +using base::TimeDelta; |
| +using WebKit::WebURLError; |
| +using WebKit::WebURLLoader; |
| +using WebKit::WebURLRequest; |
| +using WebKit::WebURLResponse; |
| -#undef LOG |
| -#include "base/logging.h" |
| -#include "webkit/glue/glue_util.h" |
| -#include "net/url_request/url_request_status.h" |
| +namespace webkit_glue { |
| -using WebCore::ResourceError; |
| -using WebCore::ResourceHandle; |
| -using WebCore::ResourceResponse; |
| - |
| -ResourceFetcher::ResourceFetcher(const GURL& url, WebCore::Frame* frame, |
| - Delegate* d) |
| - : url_(url), delegate_(d), completed_(false) { |
| +ResourceFetcher::ResourceFetcher(const GURL& url, WebFrame* frame, |
| + Callback* c) |
| + : url_(url), callback_(c), completed_(false) { |
|
brettw
2009/07/07 15:59:53
Can you put these initializers on separate lines?
darin (slow to review)
2009/07/07 16:20:52
OK
|
| // Can't do anything without a frame. However, delegate can be NULL (so we |
| // can do a http request and ignore the results). |
| DCHECK(frame); |
| @@ -35,7 +33,6 @@ |
| ResourceFetcher::~ResourceFetcher() { |
| if (!completed_ && loader_.get()) |
| loader_->cancel(); |
| - loader_ = NULL; |
| } |
| void ResourceFetcher::Cancel() { |
| @@ -45,68 +42,74 @@ |
| } |
| } |
| -void ResourceFetcher::Start(WebCore::Frame* frame) { |
| - WebCore::ResourceRequest request(webkit_glue::GURLToKURL(url_)); |
| - WebCore::ResourceResponse response; |
| - frame->loader()->client()->dispatchWillSendRequest(NULL, 0, request, |
| - response); |
| +void ResourceFetcher::Start(WebFrame* frame) { |
| + WebURLRequest request(url_); |
| + frame->DispatchWillSendRequest(&request); |
| - loader_ = ResourceHandle::create(request, this, NULL, false, false); |
| + loader_.reset(WebKit::webKitClient()->createURLLoader()); |
| + loader_->loadAsynchronously(request, this); |
| } |
| ///////////////////////////////////////////////////////////////////////////// |
| -// ResourceHandleClient methods |
| -void ResourceFetcher::didReceiveResponse(ResourceHandle* resource_handle, |
| - const ResourceResponse& response) { |
| - ASSERT(!completed_); |
| - // It's safe to use the ResourceResponse copy constructor |
| - // (xmlhttprequest.cpp uses it). |
| +// WebURLLoaderClient methods |
| + |
| +void ResourceFetcher::willSendRequest( |
| + WebURLLoader* loader, WebURLRequest& new_request, |
| + const WebURLResponse& redirect_response) { |
| +} |
| + |
| +void ResourceFetcher::didSendData( |
| + WebURLLoader* loader, unsigned long long bytes_sent, |
| + unsigned long long total_bytes_to_be_sent) { |
| +} |
| + |
| +void ResourceFetcher::didReceiveResponse( |
| + WebURLLoader* loader, const WebURLResponse& response) { |
| + DCHECK(!completed_); |
| response_ = response; |
| } |
| -void ResourceFetcher::didReceiveData(ResourceHandle* resource_handle, |
| - const char* data, int length, |
| - int total_length) { |
| - ASSERT(!completed_); |
| - if (length <= 0) |
| - return; |
| +void ResourceFetcher::didReceiveData( |
| + WebURLLoader* loader, const char* data, int data_length, |
| + long long total_data_length) { |
| + DCHECK(!completed_); |
| + DCHECK(data_length > 0); |
| - data_.append(data, length); |
| + data_.append(data, data_length); |
| } |
| -void ResourceFetcher::didFinishLoading(ResourceHandle* resource_handle) { |
| - ASSERT(!completed_); |
| +void ResourceFetcher::didFinishLoading(WebURLLoader* loader) { |
| + DCHECK(!completed_); |
| completed_ = true; |
| - if (delegate_) |
| - delegate_->OnURLFetchComplete(response_, data_); |
| + if (callback_) |
| + callback_->Run(response_, data_); |
| } |
| -void ResourceFetcher::didFail(ResourceHandle* resource_handle, |
| - const ResourceError& error) { |
| - ASSERT(!completed_); |
| +void ResourceFetcher::didFail(WebURLLoader* loader, const WebURLError& error) { |
| + DCHECK(!completed_); |
| completed_ = true; |
| - // Go ahead and tell our delegate that we're done. Send an empty |
| - // ResourceResponse and string. |
| - if (delegate_) |
| - delegate_->OnURLFetchComplete(ResourceResponse(), std::string()); |
| + // Go ahead and tell our delegate that we're done. |
| + if (callback_) |
| + callback_->Run(WebURLResponse(), std::string()); |
| } |
| ///////////////////////////////////////////////////////////////////////////// |
| // A resource fetcher with a timeout |
| ResourceFetcherWithTimeout::ResourceFetcherWithTimeout( |
| - const GURL& url, WebCore::Frame* frame, double timeout_secs, Delegate* d) |
| - : ResourceFetcher(url, frame, d) { |
| - timeout_timer_.reset(new FetchTimer(this, |
| - &ResourceFetcherWithTimeout::TimeoutFired)); |
| - timeout_timer_->startOneShot(timeout_secs); |
| + const GURL& url, WebFrame* frame, int timeout_secs, Callback* c) |
| + : ResourceFetcher(url, frame, c) { |
| + timeout_timer_.Start(TimeDelta::FromSeconds(timeout_secs), this, |
| + &ResourceFetcherWithTimeout::TimeoutFired); |
| } |
| -void ResourceFetcherWithTimeout::TimeoutFired(FetchTimer* timer) { |
| +void ResourceFetcherWithTimeout::TimeoutFired() { |
| if (!completed_) { |
| loader_->cancel(); |
| - didFail(NULL, ResourceError()); |
| + didFail(NULL, WebURLError()); |
| } |
| } |
| + |
| +} // namespace webkit_glue |