11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/renderer/fetchers/manifest_fetcher.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/bind.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/logging.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/renderer/resource_fetcher.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/platform/WebURLRequest.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/web/WebFrame.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace content { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciManifestFetcher::ManifestFetcher(const GURL& url) 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : completed_(false) { 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher_.reset(ResourceFetcher::Create(url)); 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciManifestFetcher::~ManifestFetcher() { 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!completed_) 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Cancel(); 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ManifestFetcher::Start(blink::WebFrame* frame, const Callback& callback) { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci callback_ = callback; 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher_->Start(frame, 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLRequest::RequestContextManifest, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLRequest::FrameTypeNone, 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourceFetcher::FRAME_ASSOCIATED_LOADER, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&ManifestFetcher::OnLoadComplete, 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(this))); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ManifestFetcher::Cancel() { 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(!completed_); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fetcher_->Cancel(); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ManifestFetcher::OnLoadComplete(const blink::WebURLResponse& response, 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& data) { 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(!completed_); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci completed_ = true; 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Callback callback = callback_; 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci callback.Run(response, data); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace content 50