}
scoped_ptr<ScopedTemporaryFile> temp_file(new ScopedTemporaryFile);
- if (!temp_file->InitFromFile(&file_, info.offset, info.size))
+ base::FilePath::StringType ext = path.Extension();
+ if (!temp_file->InitFromFile(&file_, ext, info.offset, info.size))
return false;
#if defined(OS_POSIX)
}
}
-bool ScopedTemporaryFile::Init() {
+bool ScopedTemporaryFile::Init(const base::FilePath::StringType ext) {
if (!path_.empty())
return true;
base::ThreadRestrictions::ScopedAllowIO allow_io;
- return base::CreateTemporaryFile(&path_);
+
+ base::FilePath temporaryPath_;
+ if (!base::CreateTemporaryFile(&temporaryPath_)) {
+ return false;
+ }
+
+ path_ = temporaryPath_.AddExtension(ext);
+ return base::Move(temporaryPath_, path_);
}
bool ScopedTemporaryFile::InitFromFile(base::File* src,
+ const base::FilePath::StringType ext,
uint64 offset, uint64 size) {
if (!src->IsValid())
return false;
- if (!Init())
+ if (!Init(ext))
return false;
std::vector<char> buf(size);
ScopedTemporaryFile();
virtual ~ScopedTemporaryFile();
- // Init an empty temporary file.
- bool Init();
+ // Init an empty temporary file with a certain extension.
+ bool Init(const base::FilePath::StringType ext);
// Init an temporary file and fill it with content of |path|.
- bool InitFromFile(base::File* src, uint64 offset, uint64 size);
+ bool InitFromFile(base::File* src,
+ const base::FilePath::StringType ext,
+ uint64 offset, uint64 size);
base::FilePath path() const { return path_; }