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 #include <utility> |
| 6 |
5 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
6 #include "chrome/browser/chromeos/gdata/gdata_directory_service.h" | 8 #include "chrome/browser/chromeos/gdata/gdata_directory_service.h" |
7 #include "chrome/browser/chromeos/gdata/gdata_files.h" | 9 #include "chrome/browser/chromeos/gdata/gdata_files.h" |
8 #include "chrome/browser/chromeos/gdata/gdata_wapi_feed_processor.h" | 10 #include "chrome/browser/chromeos/gdata/gdata_wapi_feed_processor.h" |
9 #include "content/public/browser/browser_thread.h" | 11 #include "content/public/browser/browser_thread.h" |
10 | 12 |
11 using content::BrowserThread; | 13 using content::BrowserThread; |
12 | 14 |
13 namespace gdata { | 15 namespace gdata { |
14 | 16 |
15 namespace { | |
16 | |
17 // Recursively extracts the paths set of all sub-directories of |entry|. | |
18 void GetChildDirectoryPaths(GDataEntry* entry, | |
19 std::set<FilePath>* changed_dirs) { | |
20 GDataDirectory* dir = entry->AsGDataDirectory(); | |
21 if (!dir) | |
22 return; | |
23 | |
24 for (GDataDirectoryCollection::const_iterator it = | |
25 dir->child_directories().begin(); | |
26 it != dir->child_directories().end(); ++it) { | |
27 GDataDirectory* child_dir = it->second; | |
28 changed_dirs->insert(child_dir->GetFilePath()); | |
29 GetChildDirectoryPaths(child_dir, changed_dirs); | |
30 } | |
31 } | |
32 | |
33 } // namespace | |
34 | |
35 FeedToFileResourceMapUmaStats::FeedToFileResourceMapUmaStats() | 17 FeedToFileResourceMapUmaStats::FeedToFileResourceMapUmaStats() |
36 : num_regular_files(0), | 18 : num_regular_files(0), |
37 num_hosted_documents(0) { | 19 num_hosted_documents(0) { |
38 } | 20 } |
39 | 21 |
40 FeedToFileResourceMapUmaStats::~FeedToFileResourceMapUmaStats() { | 22 FeedToFileResourceMapUmaStats::~FeedToFileResourceMapUmaStats() { |
41 } | 23 } |
42 | 24 |
43 GDataWapiFeedProcessor::GDataWapiFeedProcessor( | 25 GDataWapiFeedProcessor::GDataWapiFeedProcessor( |
44 GDataDirectoryService* directory_service) | 26 GDataDirectoryService* directory_service) |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 } | 193 } |
212 | 194 |
213 // static | 195 // static |
214 void GDataWapiFeedProcessor:: | 196 void GDataWapiFeedProcessor:: |
215 RemoveEntryFromDirectoryAndCollectChangedDirectories( | 197 RemoveEntryFromDirectoryAndCollectChangedDirectories( |
216 GDataDirectory* directory, | 198 GDataDirectory* directory, |
217 GDataEntry* entry, | 199 GDataEntry* entry, |
218 std::set<FilePath>* changed_dirs) { | 200 std::set<FilePath>* changed_dirs) { |
219 // Get the list of all sub-directory paths, so we can notify their listeners | 201 // Get the list of all sub-directory paths, so we can notify their listeners |
220 // that they are smoked. | 202 // that they are smoked. |
221 GetChildDirectoryPaths(entry, changed_dirs); | 203 GDataDirectory* dir = entry->AsGDataDirectory(); |
| 204 if (dir) |
| 205 dir->GetChildDirectoryPaths(changed_dirs); |
222 directory->RemoveEntry(entry); | 206 directory->RemoveEntry(entry); |
223 } | 207 } |
224 | 208 |
225 GDataDirectory* GDataWapiFeedProcessor::FindDirectoryForNewEntry( | 209 GDataDirectory* GDataWapiFeedProcessor::FindDirectoryForNewEntry( |
226 GDataEntry* new_entry, | 210 GDataEntry* new_entry, |
227 const FileResourceIdMap& file_map, | 211 const FileResourceIdMap& file_map, |
228 GDataDirectoryService* orphaned_dir_service) { | 212 GDataDirectoryService* orphaned_dir_service) { |
229 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 213 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
230 GDataDirectory* dir = NULL; | 214 GDataDirectory* dir = NULL; |
231 // Added file. | 215 // Added file. |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 // If the code above fails to parse a feed, any GDataEntry instance | 306 // If the code above fails to parse a feed, any GDataEntry instance |
323 // added to |file_by_url| is not managed by a GDataDirectory instance, | 307 // added to |file_by_url| is not managed by a GDataDirectory instance, |
324 // so we need to explicitly release them here. | 308 // so we need to explicitly release them here. |
325 STLDeleteValues(file_map); | 309 STLDeleteValues(file_map); |
326 } | 310 } |
327 | 311 |
328 return error; | 312 return error; |
329 } | 313 } |
330 | 314 |
331 } // namespace gdata | 315 } // namespace gdata |
OLD | NEW |