190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FILE_UTIL_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FILE_UTIL_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h" 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/weak_ptr.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/media_galleries/fileapi/native_media_file_util.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace picasa { 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PicasaDataProvider; 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)extern const char kPicasaDirAlbums[]; 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)extern const char kPicasaDirFolders[]; 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// PicasaFileUtil virtual directory structure example: 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /albums/ 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /albums/albumname 2013-08-21/ 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /albums/albumname 2013-08-21/imagename.jpg 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /albums/duplicatename 2013-08-21/ 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /albums/duplicatename 2013-08-21 (1)/ 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /folders/ 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /folders/My Pictures 2013-08-21/flower.jpg 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// - /folders/Photos 2013-08-21/ 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class PicasaFileUtil : public NativeMediaFileUtil { 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) explicit PicasaFileUtil(MediaPathFilter* media_path_filter); 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~PicasaFileUtil(); 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) protected: 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // NativeMediaFileUtil overrides. 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void GetFileInfoOnTaskRunnerThread( 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<fileapi::FileSystemOperationContext> context, 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const fileapi::FileSystemURL& url, 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const GetFileInfoCallback& callback) OVERRIDE; 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void ReadDirectoryOnTaskRunnerThread( 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<fileapi::FileSystemOperationContext> context, 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const fileapi::FileSystemURL& url, 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const ReadDirectoryCallback& callback) OVERRIDE; 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::File::Error GetFileInfoSync( 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fileapi::FileSystemOperationContext* context, 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const fileapi::FileSystemURL& url, 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::File::Info* file_info, 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::FilePath* platform_path) OVERRIDE; 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::File::Error ReadDirectorySync( 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fileapi::FileSystemOperationContext* context, 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const fileapi::FileSystemURL& url, 51868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EntryList* file_list) OVERRIDE; 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::File::Error DeleteDirectorySync( 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) fileapi::FileSystemOperationContext* context, 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const fileapi::FileSystemURL& url) OVERRIDE; 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::File::Error DeleteFileSync( 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) fileapi::FileSystemOperationContext* context, 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const fileapi::FileSystemURL& url) OVERRIDE; 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::File::Error GetLocalFilePath( 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fileapi::FileSystemOperationContext* context, 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const fileapi::FileSystemURL& url, 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::FilePath* local_file_path) OVERRIDE; 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private: 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void GetFileInfoWithFreshDataProvider( 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<fileapi::FileSystemOperationContext> context, 667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const fileapi::FileSystemURL& url, 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GetFileInfoCallback& callback, 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool success); 697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void ReadDirectoryWithFreshDataProvider( 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<fileapi::FileSystemOperationContext> context, 717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const fileapi::FileSystemURL& url, 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const ReadDirectoryCallback& callback, 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool success); 747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual PicasaDataProvider* GetDataProvider(); 767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::WeakPtrFactory<PicasaFileUtil> weak_factory_; 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PicasaFileUtil); 8090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace picasa 8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FILE_UTIL_H_ 85