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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/media_galleries/fileapi/media_file_validator_factory.h" 6 7 #include "base/files/file_path.h" 8 #include "chrome/browser/media_galleries/fileapi/supported_audio_video_checker.h" 9 #include "chrome/browser/media_galleries/fileapi/supported_image_type_validator.h" 10 #include "storage/browser/fileapi/copy_or_move_file_validator.h" 11 #include "storage/browser/fileapi/file_system_url.h" 12 13 namespace { 14 15 class InvalidFileValidator : public storage::CopyOrMoveFileValidator { 16 public: 17 virtual ~InvalidFileValidator() {} 18 virtual void StartPreWriteValidation( 19 const storage::CopyOrMoveFileValidator::ResultCallback& result_callback) 20 OVERRIDE { 21 result_callback.Run(base::File::FILE_ERROR_SECURITY); 22 } 23 24 virtual void StartPostWriteValidation( 25 const base::FilePath& dest_platform_path, 26 const storage::CopyOrMoveFileValidator::ResultCallback& result_callback) 27 OVERRIDE { 28 result_callback.Run(base::File::FILE_ERROR_SECURITY); 29 } 30 31 private: 32 friend class ::MediaFileValidatorFactory; 33 34 InvalidFileValidator() {} 35 36 DISALLOW_COPY_AND_ASSIGN(InvalidFileValidator); 37 }; 38 39 } // namespace 40 41 MediaFileValidatorFactory::MediaFileValidatorFactory() {} 42 MediaFileValidatorFactory::~MediaFileValidatorFactory() {} 43 44 storage::CopyOrMoveFileValidator* 45 MediaFileValidatorFactory::CreateCopyOrMoveFileValidator( 46 const storage::FileSystemURL& src, 47 const base::FilePath& platform_path) { 48 base::FilePath src_path = src.virtual_path(); 49 if (SupportedImageTypeValidator::SupportsFileType(src_path)) 50 return new SupportedImageTypeValidator(platform_path); 51 if (SupportedAudioVideoChecker::SupportsFileType(src_path)) 52 return new SupportedAudioVideoChecker(platform_path); 53 54 return new InvalidFileValidator(); 55 } 56