X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontent%2Fbrowser%2Fservice_worker%2Fservice_worker_fetch_dispatcher.cc;h=7ed3051e3f12ea899454fc69f7a2a5134a72a566;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=cc920c253ba13d9ef33ebf4887148f435f523ceb;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/src/content/browser/service_worker/service_worker_fetch_dispatcher.cc index cc920c2..7ed3051 100644 --- a/src/content/browser/service_worker/service_worker_fetch_dispatcher.cc +++ b/src/content/browser/service_worker/service_worker_fetch_dispatcher.cc @@ -5,31 +5,21 @@ #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" #include "base/bind.h" +#include "base/debug/trace_event.h" #include "content/browser/service_worker/service_worker_version.h" -#include "content/public/browser/resource_request_info.h" -#include "content/public/common/page_transition_types.h" -#include "net/url_request/url_request.h" namespace content { ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( - net::URLRequest* request, + scoped_ptr request, ServiceWorkerVersion* version, - const FetchCallback& callback) + const base::Closure& prepare_callback, + const FetchCallback& fetch_callback) : version_(version), - callback_(callback), + prepare_callback_(prepare_callback), + fetch_callback_(fetch_callback), + request_(request.Pass()), weak_factory_(this) { - request_.url = request->url(); - request_.method = request->method(); - const net::HttpRequestHeaders& headers = request->extra_request_headers(); - for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) - request_.headers[it.name()] = it.value(); - request_.referrer = GURL(request->referrer()); - const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); - if (info) { - request_.is_reload = PageTransitionCoreTypeIs(info->GetPageTransition(), - PAGE_TRANSITION_RELOAD); - } } ServiceWorkerFetchDispatcher::~ServiceWorkerFetchDispatcher() {} @@ -68,19 +58,35 @@ void ServiceWorkerFetchDispatcher::DidFailActivation() { } void ServiceWorkerFetchDispatcher::DispatchFetchEvent() { + TRACE_EVENT_ASYNC_BEGIN0( + "ServiceWorker", + "ServiceWorkerFetchDispatcher::DispatchFetchEvent", + request_.get()); version_->DispatchFetchEvent( - request_, + *request_.get(), + base::Bind(&ServiceWorkerFetchDispatcher::DidPrepare, + weak_factory_.GetWeakPtr()), base::Bind(&ServiceWorkerFetchDispatcher::DidFinish, weak_factory_.GetWeakPtr())); } +void ServiceWorkerFetchDispatcher::DidPrepare() { + DCHECK(!prepare_callback_.is_null()); + base::Closure prepare_callback = prepare_callback_; + prepare_callback.Run(); +} + void ServiceWorkerFetchDispatcher::DidFinish( ServiceWorkerStatusCode status, ServiceWorkerFetchEventResult fetch_result, const ServiceWorkerResponse& response) { - DCHECK(!callback_.is_null()); - FetchCallback callback = callback_; - callback.Run(status, fetch_result, response); + TRACE_EVENT_ASYNC_END0( + "ServiceWorker", + "ServiceWorkerFetchDispatcher::DispatchFetchEvent", + request_.get()); + DCHECK(!fetch_callback_.is_null()); + FetchCallback fetch_callback = fetch_callback_; + fetch_callback.Run(status, fetch_result, response); } } // namespace content