// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef WEBKIT_FILEAPI_FILE_SYSTEM_OPERATION_CONTEXT_H_ #define WEBKIT_FILEAPI_FILE_SYSTEM_OPERATION_CONTEXT_H_ #include "base/logging.h" #include "base/memory/ref_counted.h" #include "googleurl/src/gurl.h" #include "webkit/fileapi/file_system_file_util.h" #include "webkit/fileapi/file_system_types.h" namespace fileapi { class FileSystemContext; class FileSystemOperationContext { public: // The |file_util| parameter is so that unit tests can force their own // preferred class in for both src and dest FSFU; in general these will get // set later by the FileSystemOperation. FileSystemOperationContext(FileSystemContext* context, FileSystemFileUtil* file_util); ~FileSystemOperationContext(); FileSystemContext* file_system_context() const { return file_system_context_.get(); } void set_src_file_util(FileSystemFileUtil* util) { DCHECK(!src_file_util_); src_file_util_ = util; } FileSystemFileUtil* src_file_util() const { return src_file_util_; } void set_dest_file_util(FileSystemFileUtil* util) { DCHECK(!dest_file_util_); dest_file_util_ = util; } FileSystemFileUtil* dest_file_util() const { return dest_file_util_; } void set_src_origin_url(const GURL& url) { src_origin_url_ = url; } const GURL& src_origin_url() const { return src_origin_url_; } void set_dest_origin_url(const GURL& url) { dest_origin_url_ = url; } const GURL& dest_origin_url() const { return dest_origin_url_; } FileSystemType src_type() const { return src_type_; } void set_src_type(FileSystemType src_type) { src_type_ = src_type; } FileSystemType dest_type() const { return dest_type_; } void set_dest_type(FileSystemType dest_type) { dest_type_ = dest_type; } void set_allowed_bytes_growth(const int64& allowed_bytes_growth) { allowed_bytes_growth_ = allowed_bytes_growth; } int64 allowed_bytes_growth() const { return allowed_bytes_growth_; } FileSystemOperationContext* CreateInheritedContextForDest() const; private: scoped_refptr file_system_context_; // These *_file_util_ are not "owned" by FileSystemOperationContext. They // are supposed to be pointers to objects that will outlive us. FileSystemFileUtil* src_file_util_; FileSystemFileUtil* dest_file_util_; GURL src_origin_url_; // Also used for any single-path operation. GURL dest_origin_url_; FileSystemType src_type_; // Also used for any single-path operation. FileSystemType dest_type_; int64 allowed_bytes_growth_; // Used for delayed operation by quota. FilePath src_virtual_path_; // Also used for any single-path operation. FilePath dest_virtual_path_; }; } // namespace fileapi #endif // WEBKIT_FILEAPI_FILE_SYSTEM_OPERATION_CONTEXT_H_