diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/net/url_request/view_cache_helper.h | |
download | qtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz |
Initial import.
Diffstat (limited to 'chromium/net/url_request/view_cache_helper.h')
-rw-r--r-- | chromium/net/url_request/view_cache_helper.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/chromium/net/url_request/view_cache_helper.h b/chromium/net/url_request/view_cache_helper.h new file mode 100644 index 00000000000..d5a7c423d68 --- /dev/null +++ b/chromium/net/url_request/view_cache_helper.h @@ -0,0 +1,124 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ +#define NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ + +#include <string> + +#include "base/memory/weak_ptr.h" +#include "net/base/completion_callback.h" +#include "net/base/io_buffer.h" +#include "net/base/net_export.h" + +namespace disk_cache { +class Backend; +class Entry; +} // namespace disk_cache + +namespace net { + +class URLRequestContext; + +class NET_EXPORT ViewCacheHelper { + public: + ViewCacheHelper(); + ~ViewCacheHelper(); + + // Formats the cache information for |key| as HTML. Returns a net error code. + // If this method returns ERR_IO_PENDING, |callback| will be notified when the + // operation completes. |out| must remain valid until this operation completes + // or the object is destroyed. + int GetEntryInfoHTML(const std::string& key, + const URLRequestContext* context, + std::string* out, + const CompletionCallback& callback); + + // Formats the cache contents as HTML. Returns a net error code. + // If this method returns ERR_IO_PENDING, |callback| will be notified when the + // operation completes. |out| must remain valid until this operation completes + // or the object is destroyed. |url_prefix| will be prepended to each entry + // key as a link to the entry. + int GetContentsHTML(const URLRequestContext* context, + const std::string& url_prefix, + std::string* out, + const CompletionCallback& callback); + + // Lower-level helper to produce a textual representation of binary data. + // The results are appended to |result| and can be used in HTML pages + // provided the dump is contained within <pre></pre> tags. + static void HexDump(const char *buf, size_t buf_len, std::string* result); + + private: + enum State { + STATE_NONE, + STATE_GET_BACKEND, + STATE_GET_BACKEND_COMPLETE, + STATE_OPEN_NEXT_ENTRY, + STATE_OPEN_NEXT_ENTRY_COMPLETE, + STATE_OPEN_ENTRY, + STATE_OPEN_ENTRY_COMPLETE, + STATE_READ_RESPONSE, + STATE_READ_RESPONSE_COMPLETE, + STATE_READ_DATA, + STATE_READ_DATA_COMPLETE + }; + + // Implements GetEntryInfoHTML and GetContentsHTML. + int GetInfoHTML(const std::string& key, + const URLRequestContext* context, + const std::string& url_prefix, + std::string* out, + const CompletionCallback& callback); + + // This is a helper function used to trigger a completion callback. It may + // only be called if callback_ is non-null. + void DoCallback(int rv); + + // This will trigger the completion callback if appropriate. + void HandleResult(int rv); + + // Runs the state transition loop. + int DoLoop(int result); + + // Each of these methods corresponds to a State value. If there is an + // argument, the value corresponds to the return of the previous state or + // corresponding callback. + int DoGetBackend(); + int DoGetBackendComplete(int result); + int DoOpenNextEntry(); + int DoOpenNextEntryComplete(int result); + int DoOpenEntry(); + int DoOpenEntryComplete(int result); + int DoReadResponse(); + int DoReadResponseComplete(int result); + int DoReadData(); + int DoReadDataComplete(int result); + + // Called to signal completion of asynchronous IO. + void OnIOComplete(int result); + + const URLRequestContext* context_; + disk_cache::Backend* disk_cache_; + disk_cache::Entry* entry_; + void* iter_; + scoped_refptr<IOBuffer> buf_; + int buf_len_; + int index_; + + std::string key_; + std::string url_prefix_; + std::string* data_; + CompletionCallback callback_; + + State next_state_; + + base::WeakPtrFactory<ViewCacheHelper> weak_factory_; + + DISALLOW_COPY_AND_ASSIGN(ViewCacheHelper); +}; + +} // namespace net. + +#endif // NET_URL_REQUEST_VIEW_CACHE_HELPER_H_ |