Index: net/disk_cache/simple/simple_entry_impl.h |
diff --git a/net/disk_cache/simple/simple_entry_impl.h b/net/disk_cache/simple/simple_entry_impl.h |
index 2d78d8bfe0a04c984916d9b09e3ee7d208855cd0..2dfb757e19a5292ea8495ff4155850944ed9b5e5 100644 |
--- a/net/disk_cache/simple/simple_entry_impl.h |
+++ b/net/disk_cache/simple/simple_entry_impl.h |
@@ -11,7 +11,6 @@ |
#include "base/files/file_path.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
#include "base/threading/thread_checker.h" |
#include "net/base/cache_type.h" |
#include "net/base/net_export.h" |
@@ -40,8 +39,7 @@ struct SimpleEntryCreationResults; |
// disk cache. It proxies for the SimpleSynchronousEntry, which performs IO |
// on the worker thread. |
class NET_EXPORT_PRIVATE SimpleEntryImpl : public Entry, |
- public base::RefCounted<SimpleEntryImpl>, |
- public base::SupportsWeakPtr<SimpleEntryImpl> { |
+ public base::RefCounted<SimpleEntryImpl> { |
friend class base::RefCounted<SimpleEntryImpl>; |
public: |
enum OperationsMode { |
@@ -49,6 +47,14 @@ class NET_EXPORT_PRIVATE SimpleEntryImpl : public Entry, |
OPTIMISTIC_OPERATIONS, |
}; |
+ // The Backend provides an |ActiveEntryProxy| instance to this entry when it |
+ // is active, meaning it's the canonical entry for this |entry_hash_|. The |
+ // entry can make itself inactive by deleting its proxy. |
+ class ActiveEntryProxy { |
+ public: |
+ virtual ~ActiveEntryProxy() = 0; |
+ }; |
+ |
SimpleEntryImpl(net::CacheType cache_type, |
const base::FilePath& path, |
uint64 entry_hash, |
@@ -56,6 +62,9 @@ class NET_EXPORT_PRIVATE SimpleEntryImpl : public Entry, |
SimpleBackendImpl* backend, |
net::NetLog* net_log); |
+ void SetActiveEntryProxy( |
+ scoped_ptr<ActiveEntryProxy> active_entry_proxy); |
+ |
// Adds another reader/writer to this entry, if possible, returning |this| to |
// |entry|. |
int OpenEntry(Entry** entry, const CompletionCallback& callback); |
@@ -150,10 +159,6 @@ class NET_EXPORT_PRIVATE SimpleEntryImpl : public Entry, |
// count. |
void ReturnEntryToCaller(Entry** out_entry); |
- // Ensures that |this| is no longer referenced by our |backend_|, this |
- // guarantees that this entry cannot have OpenEntry/CreateEntry called again. |
- void RemoveSelfFromBackend(); |
- |
// An error occured, and the SimpleSynchronousEntry should have Doomed |
// us at this point. We need to remove |this| from the Backend and the |
// index. |
@@ -297,6 +302,8 @@ class NET_EXPORT_PRIVATE SimpleEntryImpl : public Entry, |
int length, |
int stream_index); |
+ scoped_ptr<ActiveEntryProxy> active_entry_proxy_; |
+ |
// All nonstatic SimpleEntryImpl methods should always be called on the IO |
// thread, in all cases. |io_thread_checker_| documents and enforces this. |
base::ThreadChecker io_thread_checker_; |