| Index: chrome/browser/browsing_data_file_system_helper.h
|
| diff --git a/chrome/browser/browsing_data_file_system_helper.h b/chrome/browser/browsing_data_file_system_helper.h
|
| index eebbb2e3e582852fa8fe09a45e8b42dfc6835c4a..83899194b3d84b6daa197ab6d8ac3d66c263d1e9 100644
|
| --- a/chrome/browser/browsing_data_file_system_helper.h
|
| +++ b/chrome/browser/browsing_data_file_system_helper.h
|
| @@ -21,16 +21,18 @@
|
|
|
| class Profile;
|
|
|
| -// BrowsingDataFileSystemHelper is an interface for classes dealing with
|
| -// aggregating and deleting browsing data stored in local filesystems. A
|
| -// client of this class needs to call StartFetching from the UI thread to
|
| -// initiate the flow, and it'll be notified by the callback in its UI thread at
|
| -// some later point. The client must call CancelNotification() if it's
|
| -// destroyed before the callback is notified.
|
| +// Defines an interface for classes that deal with aggregating and deleting
|
| +// browsing data stored in an origin's file systems. Clients of this interface
|
| +// must call StartFetching from the UI thread to initiate the flow, and will
|
| +// be notified via a callback at some later point (also in the UI thread). If
|
| +// the client is destroyed before the callback is triggered, it must call
|
| +// CancelNotification.
|
| class BrowsingDataFileSystemHelper
|
| : public base::RefCountedThreadSafe<BrowsingDataFileSystemHelper> {
|
| public:
|
| - // Contains detailed information about a filesystem
|
| + // Detailed information about a file system, including it's origin GURL,
|
| + // the presence or absence of persistent and temporary storage, and the
|
| + // amount of data (in bytes) each contains.
|
| struct FileSystemInfo {
|
| FileSystemInfo(
|
| const GURL& origin,
|
| @@ -40,10 +42,6 @@ class BrowsingDataFileSystemHelper
|
| int64 usage_temporary);
|
| ~FileSystemInfo();
|
|
|
| - bool IsFileSchemeData() {
|
| - return origin.scheme() == chrome::kFileScheme;
|
| - }
|
| -
|
| GURL origin;
|
| bool has_persistent;
|
| bool has_temporary;
|
| @@ -51,20 +49,23 @@ class BrowsingDataFileSystemHelper
|
| int64 usage_temporary;
|
| };
|
|
|
| - // Create a BrowsingDataFileSystemHelper instance for the filesystems
|
| + // Create a BrowsingDataFileSystemHelper instance for the file systems
|
| // stored in |profile|'s user data directory.
|
| static BrowsingDataFileSystemHelper* Create(Profile* profile);
|
|
|
| - // Starts the fetching process, which will notify its completion via
|
| - // callback.
|
| + // Starts the process of fetching file system data, which will call |callback|
|
| + // upon completion, passing it a constant vector of FileSystemInfo objects.
|
| // This must be called only in the UI thread.
|
| virtual void StartFetching(
|
| Callback1<const std::vector<FileSystemInfo>& >::Type* callback) = 0;
|
| - // Cancels the notification callback (i.e., the window that created it no
|
| - // longer exists).
|
| - // This must be called only in the UI thread.
|
| +
|
| + // Cancels the notification callback associated with StartFetching. Clients
|
| + // that are destroyed before the callback is triggered must call this, and
|
| + // it must be called only on the UI thread.
|
| virtual void CancelNotification() = 0;
|
| - // Requests a single filesystem to be deleted in the FILE thread.
|
| +
|
| + // Deletes all file systems associated with |origin|. The deletion will occur
|
| + // on the FILE thread, but this function must be called only on the UI thread.
|
| virtual void DeleteFileSystemOrigin(const GURL& origin) = 0;
|
|
|
| protected:
|
| @@ -72,26 +73,31 @@ class BrowsingDataFileSystemHelper
|
| virtual ~BrowsingDataFileSystemHelper() {}
|
| };
|
|
|
| -// This class is an implementation of BrowsingDataFileSystemHelper that does
|
| -// not fetch its information from the filesystem tracker, but gets it passed
|
| -// in as a parameter.
|
| +// An implementation of the BrowsingDataFileSystemHelper interface that can
|
| +// be manually populated with data, rather than fetching data from the file
|
| +// systems created in a particular Profile.
|
| class CannedBrowsingDataFileSystemHelper
|
| : public BrowsingDataFileSystemHelper {
|
| public:
|
| + // |profile| is unused in this canned implementation, but it's the interface
|
| + // we're writing to, so we'll accept it, but not store it.
|
| explicit CannedBrowsingDataFileSystemHelper(Profile* profile);
|
|
|
| - // Return a copy of the filesystem helper. Only one consumer can use the
|
| - // StartFetching method at a time, so we need to create a copy of the helper
|
| - // everytime we instantiate a cookies tree model for it.
|
| + // Creates a copy of the file system helper. StartFetching can only respond
|
| + // to one client at a time; we need to be able to act on multiple parallel
|
| + // requests in certain situations (see CookiesTreeModel and its clients). For
|
| + // these cases, simply clone the object and fire off another fetching process.
|
| CannedBrowsingDataFileSystemHelper* Clone();
|
|
|
| - // Add a filesystem to the set of canned filesystems that is
|
| - // returned by this helper.
|
| + // Manually add a filesystem to the set of canned file systems that this
|
| + // helper returns via StartFetching. If an origin contains both a temporary
|
| + // and a persistent filesystem, AddFileSystem must be called twice (once for
|
| + // each file system type).
|
| void AddFileSystem(const GURL& origin,
|
| fileapi::FileSystemType type,
|
| int64 size);
|
|
|
| - // Clear the list of canned filesystems.
|
| + // Clear this helper's list of canned filesystems.
|
| void Reset();
|
|
|
| // True if no filesystems are currently stored.
|
| @@ -104,6 +110,14 @@ class CannedBrowsingDataFileSystemHelper
|
| virtual void DeleteFileSystemOrigin(const GURL& origin) {}
|
|
|
| private:
|
| + // Used by Clone() to create an object without a Profile
|
| + CannedBrowsingDataFileSystemHelper();
|
| + virtual ~CannedBrowsingDataFileSystemHelper();
|
| +
|
| + // AddFileSystem doesn't store file systems directly, but holds them until
|
| + // StartFetching is called. At that point, the pending file system data is
|
| + // merged with the current file system data before being returned to the
|
| + // client.
|
| struct PendingFileSystemInfo {
|
| PendingFileSystemInfo();
|
| PendingFileSystemInfo(const GURL& origin,
|
| @@ -116,25 +130,27 @@ class CannedBrowsingDataFileSystemHelper
|
| int64 size;
|
| };
|
|
|
| - // StartFetching's callback should be executed asynchronously, Notify handles
|
| - // that nicely.
|
| - void Notify();
|
| -
|
| - virtual ~CannedBrowsingDataFileSystemHelper();
|
| -
|
| - Profile* profile_;
|
| + // Triggers the success callback as the end of a StartFetching workflow. This
|
| + // must be called on the UI thread.
|
| + void NotifyOnUIThread();
|
|
|
| + // Holds file systems that have been added to the helper until StartFetching
|
| + // is called.
|
| std::vector<PendingFileSystemInfo> pending_file_system_info_;
|
|
|
| + // Holds the current list of file systems returned to the client after
|
| + // StartFetching is called.
|
| std::vector<FileSystemInfo> file_system_info_;
|
|
|
| + // Holds the callback passed in at the beginning of the StartFetching workflow
|
| + // so that it can be triggered via NotifyOnUIThread.
|
| scoped_ptr<Callback1<const std::vector<FileSystemInfo>& >::Type >
|
| completion_callback_;
|
|
|
| - // Indicates whether or not we're currently fetching information:
|
| - // it's true when StartFetching() is called in the UI thread, and it's reset
|
| - // after we notified the callback in the UI thread.
|
| - // This only mutates on the UI thread.
|
| + // Indicates whether or not we're currently fetching information: set to true
|
| + // when StartFetching is called on the UI thread, and reset to false when
|
| + // NotifyOnUIThread triggers the success callback.
|
| + // This property only mutates on the UI thread.
|
| bool is_fetching_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(CannedBrowsingDataFileSystemHelper);
|
|
|