• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CONTENT_RENDERER_FETCHERS_WEB_URL_LOADER_CLIENT_IMPL_H_
6 #define CONTENT_RENDERER_FETCHERS_WEB_URL_LOADER_CLIENT_IMPL_H_
7 
8 #include <string>
9 
10 #include "base/memory/scoped_ptr.h"
11 #include "third_party/WebKit/public/platform/WebURLLoaderClient.h"
12 #include "third_party/WebKit/public/platform/WebURLResponse.h"
13 
14 namespace blink {
15 class WebURLLoader;
16 struct WebURLError;
17 }
18 
19 namespace content {
20 
21 class WebURLLoaderClientImpl : public blink::WebURLLoaderClient {
22  protected:
23   enum LoadStatus {
24     LOADING,
25     LOAD_FAILED,
26     LOAD_SUCCEEDED,
27   };
28 
29   WebURLLoaderClientImpl();
30   virtual ~WebURLLoaderClientImpl();
31 
32   virtual void Cancel();
33 
completed()34   bool completed() const { return completed_; }
data()35   const std::string& data() const { return data_; }
response()36   const blink::WebURLResponse& response() const { return response_; }
metadata()37   const std::string& metadata() const { return metadata_; }
status()38   LoadStatus status() const { return status_; }
39 
40   virtual void OnLoadComplete() = 0;
41 
42  private:
43   void OnLoadCompleteInternal(LoadStatus);
44 
45   // WebWebURLLoaderClientImpl methods:
46   virtual void didReceiveResponse(
47       blink::WebURLLoader* loader, const blink::WebURLResponse& response);
48   virtual void didReceiveCachedMetadata(
49       blink::WebURLLoader* loader, const char* data, int data_length);
50   virtual void didReceiveData(
51       blink::WebURLLoader* loader,
52       const char* data,
53       int data_length,
54       int encoded_data_length);
55   virtual void didFinishLoading(
56       blink::WebURLLoader* loader,
57       double finishTime,
58       int64_t total_encoded_data_length);
59   virtual void didFail(
60       blink::WebURLLoader* loader, const blink::WebURLError& error);
61 
62  private:
63   // Set to true once the request is complete.
64   bool completed_;
65 
66   // Buffer to hold the content from the server.
67   std::string data_;
68 
69   // A copy of the original resource response.
70   blink::WebURLResponse response_;
71 
72   // Buffer to hold metadata from the cache.
73   std::string metadata_;
74 
75   LoadStatus status_;
76 
77   DISALLOW_COPY_AND_ASSIGN(WebURLLoaderClientImpl);
78 };
79 
80 }  // namespace content
81 
82 #endif  // CONTENT_RENDERER_FETCHERS_URL_LOADER_CLIENT_H_
83