| Index: net/url_request/view_cache_helper.h
|
| ===================================================================
|
| --- net/url_request/view_cache_helper.h (revision 48306)
|
| +++ net/url_request/view_cache_helper.h (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2006-2010 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.
|
|
|
| @@ -7,18 +7,113 @@
|
|
|
| #include <string>
|
|
|
| +#include "net/base/completion_callback.h"
|
| +#include "net/base/io_buffer.h"
|
| +
|
| class URLRequestContext;
|
|
|
| +namespace disk_cache {
|
| +class Backend;
|
| +class Entry;
|
| +}
|
| +
|
| +namespace net {
|
| +
|
| class ViewCacheHelper {
|
| public:
|
| - // Formats the cache information for |key| as HTML.
|
| - static void GetEntryInfoHTML(const std::string& key,
|
| - URLRequestContext* context,
|
| - const std::string& url_prefix,
|
| - std::string* out);
|
| + ViewCacheHelper()
|
| + : disk_cache_(NULL), entry_(NULL), iter_(NULL), buf_len_(0), index_(0),
|
| + data_(NULL), callback_(NULL), next_state_(STATE_NONE),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(
|
| + cache_callback_(this, &ViewCacheHelper::OnIOComplete)),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(
|
| + entry_callback_(new CancelableCompletionCallback<ViewCacheHelper>(
|
| + this, &ViewCacheHelper::OnIOComplete))) {}
|
| + ~ViewCacheHelper();
|
|
|
| - static void GetStatisticsHTML(URLRequestContext* context,
|
| - std::string* out);
|
| + // 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, URLRequestContext* context,
|
| + std::string* out, 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(URLRequestContext* context, const std::string& url_prefix,
|
| + std::string* out, CompletionCallback* callback);
|
| +
|
| + 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, URLRequestContext* context,
|
| + const std::string& url_prefix, std::string* out,
|
| + 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);
|
| +
|
| + scoped_refptr<URLRequestContext> context_;
|
| + disk_cache::Backend* disk_cache_;
|
| + disk_cache::Entry* entry_;
|
| + void* iter_;
|
| + scoped_refptr<net::IOBuffer> buf_;
|
| + int buf_len_;
|
| + int index_;
|
| +
|
| + std::string key_;
|
| + std::string url_prefix_;
|
| + std::string* data_;
|
| + CompletionCallback* callback_;
|
| +
|
| + State next_state_;
|
| +
|
| + CompletionCallbackImpl<ViewCacheHelper> cache_callback_;
|
| + scoped_refptr<CancelableCompletionCallback<ViewCacheHelper> > entry_callback_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ViewCacheHelper);
|
| };
|
|
|
| +} // namespace net.
|
| +
|
| #endif // NET_URL_REQUEST_VIEW_CACHE_HELPER_H_
|
|
|