Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/browser/browsing_data_file_system_helper.h

Issue 7104026: Stylistic fixes for BrowsingDataFileSystemHelper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Dropping profile from CannedBrowsingDataThingie. Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/browsing_data_file_system_helper.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_BROWSING_DATA_FILE_SYSTEM_HELPER_H_ 5 #ifndef CHROME_BROWSER_BROWSING_DATA_FILE_SYSTEM_HELPER_H_
6 #define CHROME_BROWSER_BROWSING_DATA_FILE_SYSTEM_HELPER_H_ 6 #define CHROME_BROWSER_BROWSING_DATA_FILE_SYSTEM_HELPER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/callback_old.h" 12 #include "base/callback_old.h"
13 #include "base/file_path.h" 13 #include "base/file_path.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
16 #include "base/synchronization/lock.h" 16 #include "base/synchronization/lock.h"
17 #include "base/time.h" 17 #include "base/time.h"
18 #include "chrome/common/url_constants.h" 18 #include "chrome/common/url_constants.h"
19 #include "googleurl/src/gurl.h" 19 #include "googleurl/src/gurl.h"
20 #include "webkit/fileapi/file_system_types.h" 20 #include "webkit/fileapi/file_system_types.h"
21 21
22 class Profile; 22 class Profile;
23 23
24 // BrowsingDataFileSystemHelper is an interface for classes dealing with 24 // Defines an interface for classes that deal with aggregating and deleting
25 // aggregating and deleting browsing data stored in local filesystems. A 25 // browsing data stored in an origin's file systems. Clients of this interface
26 // client of this class needs to call StartFetching from the UI thread to 26 // must call StartFetching from the UI thread to initiate the flow, and will
27 // initiate the flow, and it'll be notified by the callback in its UI thread at 27 // be notified via a callback at some later point (also in the UI thread). If
28 // some later point. The client must call CancelNotification() if it's 28 // the client is destroyed before the callback is triggered, it must call
29 // destroyed before the callback is notified. 29 // CancelNotification.
30 class BrowsingDataFileSystemHelper 30 class BrowsingDataFileSystemHelper
31 : public base::RefCountedThreadSafe<BrowsingDataFileSystemHelper> { 31 : public base::RefCountedThreadSafe<BrowsingDataFileSystemHelper> {
32 public: 32 public:
33 // Contains detailed information about a filesystem 33 // Detailed information about a file system, including it's origin GURL,
34 // the presence or absence of persistent and temporary storage, and the
35 // amount of data (in bytes) each contains.
34 struct FileSystemInfo { 36 struct FileSystemInfo {
35 FileSystemInfo( 37 FileSystemInfo(
36 const GURL& origin, 38 const GURL& origin,
37 bool has_persistent, 39 bool has_persistent,
38 bool has_temporary, 40 bool has_temporary,
39 int64 usage_persistent, 41 int64 usage_persistent,
40 int64 usage_temporary); 42 int64 usage_temporary);
41 ~FileSystemInfo(); 43 ~FileSystemInfo();
42 44
43 bool IsFileSchemeData() {
44 return origin.scheme() == chrome::kFileScheme;
45 }
46
47 GURL origin; 45 GURL origin;
48 bool has_persistent; 46 bool has_persistent;
49 bool has_temporary; 47 bool has_temporary;
50 int64 usage_persistent; 48 int64 usage_persistent;
51 int64 usage_temporary; 49 int64 usage_temporary;
52 }; 50 };
53 51
54 // Create a BrowsingDataFileSystemHelper instance for the filesystems 52 // Create a BrowsingDataFileSystemHelper instance for the file systems
55 // stored in |profile|'s user data directory. 53 // stored in |profile|'s user data directory.
56 static BrowsingDataFileSystemHelper* Create(Profile* profile); 54 static BrowsingDataFileSystemHelper* Create(Profile* profile);
57 55
58 // Starts the fetching process, which will notify its completion via 56 // Starts the process of fetching file system data, which will call |callback|
59 // callback. 57 // upon completion, passing it a constant vector of FileSystemInfo objects.
60 // This must be called only in the UI thread. 58 // This must be called only in the UI thread.
61 virtual void StartFetching( 59 virtual void StartFetching(
62 Callback1<const std::vector<FileSystemInfo>& >::Type* callback) = 0; 60 Callback1<const std::vector<FileSystemInfo>& >::Type* callback) = 0;
63 // Cancels the notification callback (i.e., the window that created it no 61
64 // longer exists). 62 // Cancels the notification callback associated with StartFetching. Clients
65 // This must be called only in the UI thread. 63 // that are destroyed before the callback is triggered must call this, and
64 // it must be called only on the UI thread.
66 virtual void CancelNotification() = 0; 65 virtual void CancelNotification() = 0;
67 // Requests a single filesystem to be deleted in the FILE thread. 66
67 // Deletes all file systems associated with |origin|. The deletion will occur
68 // on the FILE thread, but this function must be called only on the UI thread.
68 virtual void DeleteFileSystemOrigin(const GURL& origin) = 0; 69 virtual void DeleteFileSystemOrigin(const GURL& origin) = 0;
69 70
70 protected: 71 protected:
71 friend class base::RefCountedThreadSafe<BrowsingDataFileSystemHelper>; 72 friend class base::RefCountedThreadSafe<BrowsingDataFileSystemHelper>;
72 virtual ~BrowsingDataFileSystemHelper() {} 73 virtual ~BrowsingDataFileSystemHelper() {}
73 }; 74 };
74 75
75 // This class is an implementation of BrowsingDataFileSystemHelper that does 76 // An implementation of the BrowsingDataFileSystemHelper interface that can
76 // not fetch its information from the filesystem tracker, but gets it passed 77 // be manually populated with data, rather than fetching data from the file
77 // in as a parameter. 78 // systems created in a particular Profile.
78 class CannedBrowsingDataFileSystemHelper 79 class CannedBrowsingDataFileSystemHelper
79 : public BrowsingDataFileSystemHelper { 80 : public BrowsingDataFileSystemHelper {
80 public: 81 public:
82 // |profile| is unused in this canned implementation, but it's the interface
83 // we're writing to, so we'll accept it, but not store it.
81 explicit CannedBrowsingDataFileSystemHelper(Profile* profile); 84 explicit CannedBrowsingDataFileSystemHelper(Profile* profile);
82 85
83 // Return a copy of the filesystem helper. Only one consumer can use the 86 // Creates a copy of the file system helper. StartFetching can only respond
84 // StartFetching method at a time, so we need to create a copy of the helper 87 // to one client at a time; we need to be able to act on multiple parallel
85 // everytime we instantiate a cookies tree model for it. 88 // requests in certain situations (see CookiesTreeModel and its clients). For
89 // these cases, simply clone the object and fire off another fetching process.
86 CannedBrowsingDataFileSystemHelper* Clone(); 90 CannedBrowsingDataFileSystemHelper* Clone();
87 91
88 // Add a filesystem to the set of canned filesystems that is 92 // Manually add a filesystem to the set of canned file systems that this
89 // returned by this helper. 93 // helper returns via StartFetching. If an origin contains both a temporary
94 // and a persistent filesystem, AddFileSystem must be called twice (once for
95 // each file system type).
90 void AddFileSystem(const GURL& origin, 96 void AddFileSystem(const GURL& origin,
91 fileapi::FileSystemType type, 97 fileapi::FileSystemType type,
92 int64 size); 98 int64 size);
93 99
94 // Clear the list of canned filesystems. 100 // Clear this helper's list of canned filesystems.
95 void Reset(); 101 void Reset();
96 102
97 // True if no filesystems are currently stored. 103 // True if no filesystems are currently stored.
98 bool empty() const; 104 bool empty() const;
99 105
100 // BrowsingDataFileSystemHelper methods. 106 // BrowsingDataFileSystemHelper methods.
101 virtual void StartFetching( 107 virtual void StartFetching(
102 Callback1<const std::vector<FileSystemInfo>& >::Type* callback); 108 Callback1<const std::vector<FileSystemInfo>& >::Type* callback);
103 virtual void CancelNotification(); 109 virtual void CancelNotification();
104 virtual void DeleteFileSystemOrigin(const GURL& origin) {} 110 virtual void DeleteFileSystemOrigin(const GURL& origin) {}
105 111
106 private: 112 private:
113 // Used by Clone() to create an object without a Profile
114 CannedBrowsingDataFileSystemHelper();
115 virtual ~CannedBrowsingDataFileSystemHelper();
116
117 // AddFileSystem doesn't store file systems directly, but holds them until
118 // StartFetching is called. At that point, the pending file system data is
119 // merged with the current file system data before being returned to the
120 // client.
107 struct PendingFileSystemInfo { 121 struct PendingFileSystemInfo {
108 PendingFileSystemInfo(); 122 PendingFileSystemInfo();
109 PendingFileSystemInfo(const GURL& origin, 123 PendingFileSystemInfo(const GURL& origin,
110 fileapi::FileSystemType type, 124 fileapi::FileSystemType type,
111 int64 size); 125 int64 size);
112 ~PendingFileSystemInfo(); 126 ~PendingFileSystemInfo();
113 127
114 GURL origin; 128 GURL origin;
115 fileapi::FileSystemType type; 129 fileapi::FileSystemType type;
116 int64 size; 130 int64 size;
117 }; 131 };
118 132
119 // StartFetching's callback should be executed asynchronously, Notify handles 133 // Triggers the success callback as the end of a StartFetching workflow. This
120 // that nicely. 134 // must be called on the UI thread.
121 void Notify(); 135 void NotifyOnUIThread();
122 136
123 virtual ~CannedBrowsingDataFileSystemHelper(); 137 // Holds file systems that have been added to the helper until StartFetching
124 138 // is called.
125 Profile* profile_;
126
127 std::vector<PendingFileSystemInfo> pending_file_system_info_; 139 std::vector<PendingFileSystemInfo> pending_file_system_info_;
128 140
141 // Holds the current list of file systems returned to the client after
142 // StartFetching is called.
129 std::vector<FileSystemInfo> file_system_info_; 143 std::vector<FileSystemInfo> file_system_info_;
130 144
145 // Holds the callback passed in at the beginning of the StartFetching workflow
146 // so that it can be triggered via NotifyOnUIThread.
131 scoped_ptr<Callback1<const std::vector<FileSystemInfo>& >::Type > 147 scoped_ptr<Callback1<const std::vector<FileSystemInfo>& >::Type >
132 completion_callback_; 148 completion_callback_;
133 149
134 // Indicates whether or not we're currently fetching information: 150 // Indicates whether or not we're currently fetching information: set to true
135 // it's true when StartFetching() is called in the UI thread, and it's reset 151 // when StartFetching is called on the UI thread, and reset to false when
136 // after we notified the callback in the UI thread. 152 // NotifyOnUIThread triggers the success callback.
137 // This only mutates on the UI thread. 153 // This property only mutates on the UI thread.
138 bool is_fetching_; 154 bool is_fetching_;
139 155
140 DISALLOW_COPY_AND_ASSIGN(CannedBrowsingDataFileSystemHelper); 156 DISALLOW_COPY_AND_ASSIGN(CannedBrowsingDataFileSystemHelper);
141 }; 157 };
142 158
143 #endif // CHROME_BROWSER_BROWSING_DATA_FILE_SYSTEM_HELPER_H_ 159 #endif // CHROME_BROWSER_BROWSING_DATA_FILE_SYSTEM_HELPER_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/browsing_data_file_system_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698