summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_page_capture_api.cc
diff options
context:
space:
mode:
authormichaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-29 23:00:00 +0000
committermichaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-29 23:00:00 +0000
commita5230508efeea42e05005f43f9ffa140fbcc64c0 (patch)
tree89b4aedc784c9b0b1c93b757b35631e0fd06a884 /chrome/browser/extensions/extension_page_capture_api.cc
parent55df9099f9350d906d7b03a4390687ac95269210 (diff)
downloadchromium_src-a5230508efeea42e05005f43f9ffa140fbcc64c0.zip
chromium_src-a5230508efeea42e05005f43f9ffa140fbcc64c0.tar.gz
chromium_src-a5230508efeea42e05005f43f9ffa140fbcc64c0.tar.bz2
Modify DeletableFileReference to not necessarily delete after all. Renamed the class to ShareableFileReference and fixed up the current callers with the new name and gypi files.
BUG=115603 Review URL: https://chromiumcodereview.appspot.com/9466025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124276 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_page_capture_api.cc')
-rw-r--r--chrome/browser/extensions/extension_page_capture_api.cc28
1 files changed, 22 insertions, 6 deletions
diff --git a/chrome/browser/extensions/extension_page_capture_api.cc b/chrome/browser/extensions/extension_page_capture_api.cc
index 52cbc59..77c1b4f 100644
--- a/chrome/browser/extensions/extension_page_capture_api.cc
+++ b/chrome/browser/extensions/extension_page_capture_api.cc
@@ -22,6 +22,7 @@
using content::BrowserThread;
using content::ChildProcessSecurityPolicy;
using content::WebContents;
+using webkit_blob::ShareableFileReference;
// Error messages.
const char* const kFileTooBigError = "The MHTML file generated is too big.";
@@ -37,6 +38,10 @@ PageCaptureSaveAsMHTMLFunction::PageCaptureSaveAsMHTMLFunction() : tab_id_(0) {
}
PageCaptureSaveAsMHTMLFunction::~PageCaptureSaveAsMHTMLFunction() {
+ if (mhtml_file_.get()) {
+ BrowserThread::ReleaseSoon(BrowserThread::IO, FROM_HERE,
+ mhtml_file_.release());
+ }
}
void PageCaptureSaveAsMHTMLFunction::SetTestDelegate(TestDelegate* delegate) {
@@ -86,12 +91,28 @@ void PageCaptureSaveAsMHTMLFunction::CreateTemporaryFile() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
bool success = file_util::CreateTemporaryFile(&mhtml_path_);
BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
+ BrowserThread::IO, FROM_HERE,
base::Bind(&PageCaptureSaveAsMHTMLFunction::TemporaryFileCreated, this,
success));
}
void PageCaptureSaveAsMHTMLFunction::TemporaryFileCreated(bool success) {
+ if (BrowserThread::CurrentlyOn(BrowserThread::IO)) {
+ if (success) {
+ // Setup a ShareableFileReference so the temporary file gets deleted
+ // once it is no longer used.
+ mhtml_file_ = ShareableFileReference::GetOrCreate(
+ mhtml_path_, ShareableFileReference::DELETE_ON_FINAL_RELEASE,
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
+ }
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&PageCaptureSaveAsMHTMLFunction::TemporaryFileCreated, this,
+ success));
+ return;
+ }
+
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!success) {
ReturnFailure(kTemporaryFileError);
return;
@@ -100,11 +121,6 @@ void PageCaptureSaveAsMHTMLFunction::TemporaryFileCreated(bool success) {
if (test_delegate_)
test_delegate_->OnTemporaryFileCreated(mhtml_path_);
- // Sets a DeletableFileReference so the temporary file gets deleted once it is
- // no longer used.
- mhtml_file_ = webkit_blob::DeletableFileReference::GetOrCreate(mhtml_path_,
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
-
WebContents* web_contents = GetWebContents();
if (!web_contents) {
ReturnFailure(kTabClosedError);