OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_CHROMEOS_DRIVE_DRIVE_RESOURCE_METADATA_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_RESOURCE_METADATA_H_ |
6 #define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_RESOURCE_METADATA_H_ | 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_RESOURCE_METADATA_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 typedef base::Callback<void(scoped_ptr<EntryInfoPairResult> pair_result)> | 130 typedef base::Callback<void(scoped_ptr<EntryInfoPairResult> pair_result)> |
131 GetEntryInfoPairCallback; | 131 GetEntryInfoPairCallback; |
132 | 132 |
133 // Storage for Drive Metadata. | 133 // Storage for Drive Metadata. |
134 class DriveResourceMetadata { | 134 class DriveResourceMetadata { |
135 public: | 135 public: |
136 // |root_resource_id| is the resource id for the root directory. | 136 // |root_resource_id| is the resource id for the root directory. |
137 DriveResourceMetadata( | 137 DriveResourceMetadata( |
138 const std::string& root_resource_id, | 138 const std::string& root_resource_id, |
139 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner); | 139 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner); |
140 virtual ~DriveResourceMetadata(); | 140 |
| 141 // Destroys this object. This method posts a task to |blocking_task_runner_| |
| 142 // to safely delete this object. |
| 143 void Destroy(); |
141 | 144 |
142 // True if the file system feed is loaded from the cache or from the server. | 145 // True if the file system feed is loaded from the cache or from the server. |
143 bool loaded() const { return loaded_; } | 146 bool loaded() const { return loaded_; } |
144 void set_loaded(bool loaded) { loaded_ = loaded; } | 147 void set_loaded(bool loaded) { loaded_ = loaded; } |
145 | 148 |
146 // Largest change timestamp that was the source of content for the current | 149 // Largest change timestamp that was the source of content for the current |
147 // state of the root directory. | 150 // state of the root directory. |
148 void GetLargestChangestamp(const GetChangestampCallback& callback); | 151 void GetLargestChangestamp(const GetChangestampCallback& callback); |
149 void SetLargestChangestamp(int64 value, | 152 void SetLargestChangestamp(int64 value, |
150 const FileOperationCallback& callback); | 153 const FileOperationCallback& callback); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 // Saves metadata to the specified directory when appropriate. | 230 // Saves metadata to the specified directory when appropriate. |
228 void MaybeSave(const base::FilePath& directory_path); | 231 void MaybeSave(const base::FilePath& directory_path); |
229 | 232 |
230 // Loads metadata from the specified directory. | 233 // Loads metadata from the specified directory. |
231 void Load(const base::FilePath& directory_path, | 234 void Load(const base::FilePath& directory_path, |
232 const FileOperationCallback& callback); | 235 const FileOperationCallback& callback); |
233 | 236 |
234 private: | 237 private: |
235 friend class DriveResourceMetadataTest; | 238 friend class DriveResourceMetadataTest; |
236 | 239 |
| 240 // Note: Use Destroy() to delete this object. |
| 241 virtual ~DriveResourceMetadata(); |
| 242 |
| 243 // Used to implement Destroy(). |
| 244 void DestroyOnBlockingPool(); |
| 245 |
237 // Clears root_ and the resource map. | 246 // Clears root_ and the resource map. |
238 void ClearRoot(); | 247 void ClearRoot(); |
239 | 248 |
240 // Continues with GetEntryInfoPairByPaths after the first DriveEntry has been | 249 // Continues with GetEntryInfoPairByPaths after the first DriveEntry has been |
241 // asynchronously fetched. This fetches the second DriveEntry only if the | 250 // asynchronously fetched. This fetches the second DriveEntry only if the |
242 // first was found. | 251 // first was found. |
243 void GetEntryInfoPairByPathsAfterGetFirst( | 252 void GetEntryInfoPairByPathsAfterGetFirst( |
244 const base::FilePath& first_path, | 253 const base::FilePath& first_path, |
245 const base::FilePath& second_path, | 254 const base::FilePath& second_path, |
246 const GetEntryInfoPairCallback& callback, | 255 const GetEntryInfoPairCallback& callback, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 // This should remain the last member so it'll be destroyed first and | 331 // This should remain the last member so it'll be destroyed first and |
323 // invalidate its weak pointers before other members are destroyed. | 332 // invalidate its weak pointers before other members are destroyed. |
324 base::WeakPtrFactory<DriveResourceMetadata> weak_ptr_factory_; | 333 base::WeakPtrFactory<DriveResourceMetadata> weak_ptr_factory_; |
325 | 334 |
326 DISALLOW_COPY_AND_ASSIGN(DriveResourceMetadata); | 335 DISALLOW_COPY_AND_ASSIGN(DriveResourceMetadata); |
327 }; | 336 }; |
328 | 337 |
329 } // namespace drive | 338 } // namespace drive |
330 | 339 |
331 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_RESOURCE_METADATA_H_ | 340 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_RESOURCE_METADATA_H_ |
OLD | NEW |