OLD | NEW |
1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ | 5 #ifndef NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ |
6 #define NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ | 6 #define NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "net/base/completion_callback.h" | 11 #include "net/base/completion_callback.h" |
12 #include "net/base/io_buffer.h" | 12 #include "net/base/io_buffer.h" |
13 | 13 |
14 class URLRequestContext; | |
15 | |
16 namespace disk_cache { | 14 namespace disk_cache { |
17 class Backend; | 15 class Backend; |
18 class Entry; | 16 class Entry; |
19 } | 17 } // namespace disk_cache |
20 | 18 |
21 namespace net { | 19 namespace net { |
22 | 20 |
| 21 class URLRequestContext; |
| 22 |
23 class ViewCacheHelper { | 23 class ViewCacheHelper { |
24 public: | 24 public: |
25 ViewCacheHelper(); | 25 ViewCacheHelper(); |
26 ~ViewCacheHelper(); | 26 ~ViewCacheHelper(); |
27 | 27 |
28 // Formats the cache information for |key| as HTML. Returns a net error code. | 28 // Formats the cache information for |key| as HTML. Returns a net error code. |
29 // If this method returns ERR_IO_PENDING, |callback| will be notified when the | 29 // If this method returns ERR_IO_PENDING, |callback| will be notified when the |
30 // operation completes. |out| must remain valid until this operation completes | 30 // operation completes. |out| must remain valid until this operation completes |
31 // or the object is destroyed. | 31 // or the object is destroyed. |
32 int GetEntryInfoHTML(const std::string& key, URLRequestContext* context, | 32 int GetEntryInfoHTML(const std::string& key, |
33 std::string* out, CompletionCallback* callback); | 33 net::URLRequestContext* context, |
| 34 std::string* out, |
| 35 CompletionCallback* callback); |
34 | 36 |
35 // Formats the cache contents as HTML. Returns a net error code. | 37 // Formats the cache contents as HTML. Returns a net error code. |
36 // If this method returns ERR_IO_PENDING, |callback| will be notified when the | 38 // If this method returns ERR_IO_PENDING, |callback| will be notified when the |
37 // operation completes. |out| must remain valid until this operation completes | 39 // operation completes. |out| must remain valid until this operation completes |
38 // or the object is destroyed. |url_prefix| will be prepended to each entry | 40 // or the object is destroyed. |url_prefix| will be prepended to each entry |
39 // key as a link to the entry. | 41 // key as a link to the entry. |
40 int GetContentsHTML(URLRequestContext* context, const std::string& url_prefix, | 42 int GetContentsHTML(net::URLRequestContext* context, |
41 std::string* out, CompletionCallback* callback); | 43 const std::string& url_prefix, |
| 44 std::string* out, |
| 45 CompletionCallback* callback); |
42 | 46 |
43 private: | 47 private: |
44 enum State { | 48 enum State { |
45 STATE_NONE, | 49 STATE_NONE, |
46 STATE_GET_BACKEND, | 50 STATE_GET_BACKEND, |
47 STATE_GET_BACKEND_COMPLETE, | 51 STATE_GET_BACKEND_COMPLETE, |
48 STATE_OPEN_NEXT_ENTRY, | 52 STATE_OPEN_NEXT_ENTRY, |
49 STATE_OPEN_NEXT_ENTRY_COMPLETE, | 53 STATE_OPEN_NEXT_ENTRY_COMPLETE, |
50 STATE_OPEN_ENTRY, | 54 STATE_OPEN_ENTRY, |
51 STATE_OPEN_ENTRY_COMPLETE, | 55 STATE_OPEN_ENTRY_COMPLETE, |
52 STATE_READ_RESPONSE, | 56 STATE_READ_RESPONSE, |
53 STATE_READ_RESPONSE_COMPLETE, | 57 STATE_READ_RESPONSE_COMPLETE, |
54 STATE_READ_DATA, | 58 STATE_READ_DATA, |
55 STATE_READ_DATA_COMPLETE | 59 STATE_READ_DATA_COMPLETE |
56 }; | 60 }; |
57 | 61 |
58 // Implements GetEntryInfoHTML and GetContentsHTML. | 62 // Implements GetEntryInfoHTML and GetContentsHTML. |
59 int GetInfoHTML(const std::string& key, URLRequestContext* context, | 63 int GetInfoHTML(const std::string& key, |
60 const std::string& url_prefix, std::string* out, | 64 net::URLRequestContext* context, |
| 65 const std::string& url_prefix, |
| 66 std::string* out, |
61 CompletionCallback* callback); | 67 CompletionCallback* callback); |
62 | 68 |
63 // This is a helper function used to trigger a completion callback. It may | 69 // This is a helper function used to trigger a completion callback. It may |
64 // only be called if callback_ is non-null. | 70 // only be called if callback_ is non-null. |
65 void DoCallback(int rv); | 71 void DoCallback(int rv); |
66 | 72 |
67 // This will trigger the completion callback if appropriate. | 73 // This will trigger the completion callback if appropriate. |
68 void HandleResult(int rv); | 74 void HandleResult(int rv); |
69 | 75 |
70 // Runs the state transition loop. | 76 // Runs the state transition loop. |
71 int DoLoop(int result); | 77 int DoLoop(int result); |
72 | 78 |
73 // Each of these methods corresponds to a State value. If there is an | 79 // Each of these methods corresponds to a State value. If there is an |
74 // argument, the value corresponds to the return of the previous state or | 80 // argument, the value corresponds to the return of the previous state or |
75 // corresponding callback. | 81 // corresponding callback. |
76 int DoGetBackend(); | 82 int DoGetBackend(); |
77 int DoGetBackendComplete(int result); | 83 int DoGetBackendComplete(int result); |
78 int DoOpenNextEntry(); | 84 int DoOpenNextEntry(); |
79 int DoOpenNextEntryComplete(int result); | 85 int DoOpenNextEntryComplete(int result); |
80 int DoOpenEntry(); | 86 int DoOpenEntry(); |
81 int DoOpenEntryComplete(int result); | 87 int DoOpenEntryComplete(int result); |
82 int DoReadResponse(); | 88 int DoReadResponse(); |
83 int DoReadResponseComplete(int result); | 89 int DoReadResponseComplete(int result); |
84 int DoReadData(); | 90 int DoReadData(); |
85 int DoReadDataComplete(int result); | 91 int DoReadDataComplete(int result); |
86 | 92 |
87 // Called to signal completion of asynchronous IO. | 93 // Called to signal completion of asynchronous IO. |
88 void OnIOComplete(int result); | 94 void OnIOComplete(int result); |
89 | 95 |
90 scoped_refptr<URLRequestContext> context_; | 96 scoped_refptr<net::URLRequestContext> context_; |
91 disk_cache::Backend* disk_cache_; | 97 disk_cache::Backend* disk_cache_; |
92 disk_cache::Entry* entry_; | 98 disk_cache::Entry* entry_; |
93 void* iter_; | 99 void* iter_; |
94 scoped_refptr<net::IOBuffer> buf_; | 100 scoped_refptr<net::IOBuffer> buf_; |
95 int buf_len_; | 101 int buf_len_; |
96 int index_; | 102 int index_; |
97 | 103 |
98 std::string key_; | 104 std::string key_; |
99 std::string url_prefix_; | 105 std::string url_prefix_; |
100 std::string* data_; | 106 std::string* data_; |
101 CompletionCallback* callback_; | 107 CompletionCallback* callback_; |
102 | 108 |
103 State next_state_; | 109 State next_state_; |
104 | 110 |
105 CompletionCallbackImpl<ViewCacheHelper> cache_callback_; | 111 CompletionCallbackImpl<ViewCacheHelper> cache_callback_; |
106 scoped_refptr<CancelableCompletionCallback<ViewCacheHelper> > entry_callback_; | 112 scoped_refptr<CancelableCompletionCallback<ViewCacheHelper> > entry_callback_; |
107 | 113 |
108 DISALLOW_COPY_AND_ASSIGN(ViewCacheHelper); | 114 DISALLOW_COPY_AND_ASSIGN(ViewCacheHelper); |
109 }; | 115 }; |
110 | 116 |
111 } // namespace net. | 117 } // namespace net. |
112 | 118 |
113 #endif // NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ | 119 #endif // NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ |
OLD | NEW |