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

Side by Side Diff: chrome/browser/media_galleries/fileapi/picasa_file_util.cc

Issue 1432403003: Do not call stat() when reading directories via File API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed FSP tests. Created 5 years, 1 month 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/media_galleries/fileapi/picasa_file_util.h" 5 #include "chrome/browser/media_galleries/fileapi/picasa_file_util.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 return error; 200 return error;
201 201
202 if (!file_info.is_directory) 202 if (!file_info.is_directory)
203 return base::File::FILE_ERROR_NOT_A_DIRECTORY; 203 return base::File::FILE_ERROR_NOT_A_DIRECTORY;
204 204
205 std::vector<std::string> components = GetVirtualPathComponents(url); 205 std::vector<std::string> components = GetVirtualPathComponents(url);
206 switch (components.size()) { 206 switch (components.size()) {
207 case 0: { 207 case 0: {
208 // Root directory. 208 // Root directory.
209 file_list->push_back( 209 file_list->push_back(
210 DirectoryEntry(kPicasaDirAlbums, DirectoryEntry::DIRECTORY, 0, 210 DirectoryEntry(kPicasaDirAlbums, DirectoryEntry::DIRECTORY));
211 base::Time()));
212 file_list->push_back( 211 file_list->push_back(
213 DirectoryEntry(kPicasaDirFolders, DirectoryEntry::DIRECTORY, 0, 212 DirectoryEntry(kPicasaDirFolders, DirectoryEntry::DIRECTORY));
214 base::Time()));
215 break; 213 break;
216 } 214 }
217 case 1: 215 case 1:
218 if (components[0] == kPicasaDirAlbums) { 216 if (components[0] == kPicasaDirAlbums) {
219 scoped_ptr<AlbumMap> albums = GetDataProvider()->GetAlbums(); 217 scoped_ptr<AlbumMap> albums = GetDataProvider()->GetAlbums();
220 if (!albums) 218 if (!albums)
221 return base::File::FILE_ERROR_NOT_FOUND; 219 return base::File::FILE_ERROR_NOT_FOUND;
222 220
223 for (AlbumMap::const_iterator it = albums->begin(); 221 for (AlbumMap::const_iterator it = albums->begin();
224 it != albums->end(); ++it) { 222 it != albums->end(); ++it) {
225 file_list->push_back( 223 file_list->push_back(
226 DirectoryEntry(it->first, DirectoryEntry::DIRECTORY, 0, 224 DirectoryEntry(it->first, DirectoryEntry::DIRECTORY));
227 it->second.timestamp));
228 } 225 }
229 } else if (components[0] == kPicasaDirFolders) { 226 } else if (components[0] == kPicasaDirFolders) {
230 scoped_ptr<AlbumMap> folders = GetDataProvider()->GetFolders(); 227 scoped_ptr<AlbumMap> folders = GetDataProvider()->GetFolders();
231 if (!folders) 228 if (!folders)
232 return base::File::FILE_ERROR_NOT_FOUND; 229 return base::File::FILE_ERROR_NOT_FOUND;
233 230
234 for (AlbumMap::const_iterator it = folders->begin(); 231 for (AlbumMap::const_iterator it = folders->begin();
235 it != folders->end(); ++it) { 232 it != folders->end(); ++it) {
236 file_list->push_back( 233 file_list->push_back(
237 DirectoryEntry(it->first, DirectoryEntry::DIRECTORY, 0, 234 DirectoryEntry(it->first, DirectoryEntry::DIRECTORY));
238 it->second.timestamp));
239 } 235 }
240 } 236 }
241 break; 237 break;
242 case 2: 238 case 2:
243 if (components[0] == kPicasaDirAlbums) { 239 if (components[0] == kPicasaDirAlbums) {
244 scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetAlbums(); 240 scoped_ptr<AlbumMap> album_map = GetDataProvider()->GetAlbums();
245 AlbumInfo album_info; 241 AlbumInfo album_info;
246 base::File::Error error = 242 base::File::Error error =
247 FindAlbumInfo(components[1], album_map.get(), &album_info); 243 FindAlbumInfo(components[1], album_map.get(), &album_info);
248 if (error != base::File::FILE_OK) 244 if (error != base::File::FILE_OK)
249 return error; 245 return error;
250 246
251 scoped_ptr<AlbumImages> album_images = 247 scoped_ptr<AlbumImages> album_images =
252 GetDataProvider()->FindAlbumImages(album_info.uid, &error); 248 GetDataProvider()->FindAlbumImages(album_info.uid, &error);
253 if (error != base::File::FILE_OK) 249 if (error != base::File::FILE_OK)
254 return error; 250 return error;
255 251
256 for (AlbumImages::const_iterator it = album_images->begin(); 252 for (AlbumImages::const_iterator it = album_images->begin();
257 it != album_images->end(); 253 it != album_images->end();
258 ++it) { 254 ++it) {
259 storage::DirectoryEntry entry; 255 storage::DirectoryEntry entry;
260 base::File::Info info; 256 base::File::Info info;
261 257
262 // Simply skip files that we can't get info on. 258 // Simply skip files that we can't get info on.
263 if (storage::NativeFileUtil::GetFileInfo(it->second, &info) != 259 if (storage::NativeFileUtil::GetFileInfo(it->second, &info) !=
264 base::File::FILE_OK) { 260 base::File::FILE_OK) {
265 continue; 261 continue;
266 } 262 }
267 263
268 file_list->push_back(DirectoryEntry( 264 file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE));
269 it->first, DirectoryEntry::FILE, info.size, info.last_modified));
270 } 265 }
271 } 266 }
272 267
273 if (components[0] == kPicasaDirFolders) { 268 if (components[0] == kPicasaDirFolders) {
274 EntryList super_list; 269 EntryList super_list;
275 base::File::Error error = 270 base::File::Error error =
276 NativeMediaFileUtil::ReadDirectorySync(context, url, &super_list); 271 NativeMediaFileUtil::ReadDirectorySync(context, url, &super_list);
277 if (error != base::File::FILE_OK) 272 if (error != base::File::FILE_OK)
278 return error; 273 return error;
279 274
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 } 393 }
399 NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread( 394 NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread(
400 context.Pass(), url, callback); 395 context.Pass(), url, callback);
401 } 396 }
402 397
403 PicasaDataProvider* PicasaFileUtil::GetDataProvider() { 398 PicasaDataProvider* PicasaFileUtil::GetDataProvider() {
404 return ImportedMediaGalleryRegistry::PicasaDataProvider(); 399 return ImportedMediaGalleryRegistry::PicasaDataProvider();
405 } 400 }
406 401
407 } // namespace picasa 402 } // namespace picasa
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698