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 13namespace { 14 15class 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 41MediaFileValidatorFactory::MediaFileValidatorFactory() {} 42MediaFileValidatorFactory::~MediaFileValidatorFactory() {} 43 44storage::CopyOrMoveFileValidator* 45MediaFileValidatorFactory::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