11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2011 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#ifndef CONTENT_RENDERER_FETCHERS_WEB_URL_LOADER_CLIENT_IMPL_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CONTENT_RENDERER_FETCHERS_WEB_URL_LOADER_CLIENT_IMPL_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <string> 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/scoped_ptr.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/platform/WebURLLoaderClient.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/platform/WebURLResponse.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace blink { 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebURLLoader; 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct WebURLError; 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace content { 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebURLLoaderClientImpl : public blink::WebURLLoaderClient { 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum LoadStatus { 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOADING, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOAD_FAILED, 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LOAD_SUCCEEDED, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci }; 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci WebURLLoaderClientImpl(); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~WebURLLoaderClientImpl(); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void Cancel(); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool completed() const { return completed_; } 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& data() const { return data_; } 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const blink::WebURLResponse& response() const { return response_; } 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& metadata() const { return metadata_; } 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LoadStatus status() const { return status_; } 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnLoadComplete() = 0; 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnLoadCompleteInternal(LoadStatus); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // WebWebURLLoaderClientImpl methods: 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void didReceiveResponse( 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLLoader* loader, const blink::WebURLResponse& response); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void didReceiveCachedMetadata( 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLLoader* loader, const char* data, int data_length); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void didReceiveData( 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLLoader* loader, 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char* data, 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int data_length, 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int encoded_data_length); 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void didFinishLoading( 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLLoader* loader, 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci double finishTime, 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int64_t total_encoded_data_length); 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void didFail( 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLLoader* loader, const blink::WebURLError& error); 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Set to true once the request is complete. 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool completed_; 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Buffer to hold the content from the server. 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string data_; 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // A copy of the original resource response. 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebURLResponse response_; 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Buffer to hold metadata from the cache. 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string metadata_; 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LoadStatus status_; 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(WebURLLoaderClientImpl); 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace content 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // CONTENT_RENDERER_FETCHERS_URL_LOADER_CLIENT_H_ 83