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