Index: components/offline_pages/offline_page_test_archiver.cc |
diff --git a/components/offline_pages/offline_page_test_archiver.cc b/components/offline_pages/offline_page_test_archiver.cc |
index 6dfe954390299762b948ef9b3d907d3b2bd57d39..e26467c59f448f9189e3c48d3e4018d9f0d69702 100644 |
--- a/components/offline_pages/offline_page_test_archiver.cc |
+++ b/components/offline_pages/offline_page_test_archiver.cc |
@@ -43,7 +43,13 @@ void OfflinePageTestArchiver::CreateArchive( |
void OfflinePageTestArchiver::CompleteCreateArchive() { |
DCHECK(!callback_.is_null()); |
base::FilePath archive_path; |
- ASSERT_TRUE(base::CreateTemporaryFileInDir(archives_dir_, &archive_path)); |
+ if (filename_.empty()) { |
+ ASSERT_TRUE(base::CreateTemporaryFileInDir(archives_dir_, &archive_path)); |
+ } else { |
+ archive_path = archives_dir_.Append(filename_); |
+ // This step ensures the file is created and closed immediately. |
+ base::File file(archive_path, base::File::FLAG_OPEN_ALWAYS); |
+ } |
observer_->SetLastPathCreatedByArchiver(archive_path); |
task_runner_->PostTask(FROM_HERE, base::Bind(callback_, this, result_, url_, |
archive_path, size_to_report_)); |