Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(433)

Unified Diff: chrome/browser/chromeos/extensions/file_browser_private_api.cc

Issue 10067021: Postpone setting up file handler's file permissions if handler is running lazy background page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/extensions/file_browser_private_api.cc
diff --git a/chrome/browser/chromeos/extensions/file_browser_private_api.cc b/chrome/browser/chromeos/extensions/file_browser_private_api.cc
index 57c700d77e3ae81402a9e016b5ec08bd4d5634d2..819685c2d38c39c409b8df61a69bac215625219e 100644
--- a/chrome/browser/chromeos/extensions/file_browser_private_api.cc
+++ b/chrome/browser/chromeos/extensions/file_browser_private_api.cc
@@ -590,7 +590,7 @@ class ExecuteTasksFileBrowserFunction::Executor: public FileTaskExecutor {
protected:
// FileTaskExecutor overrides.
virtual Browser* browser() { return function_->GetCurrentBrowser(); }
- virtual void Done(bool success) { function_->SendResponse(success); }
+ virtual void Done(bool success) { function_->OnTaskExecuted(success); }
private:
scoped_refptr<ExecuteTasksFileBrowserFunction> function_;
@@ -635,15 +635,27 @@ bool ExecuteTasksFileBrowserFunction::RunImpl() {
file_urls.push_back(GURL(origin_file_url));
}
- scoped_refptr<Executor> executor =
- new Executor(profile(), source_url(), extension_id, action_id, this);
- if (!executor->Execute(file_urls))
+ executor_ = new Executor(profile(), source_url(), extension_id, action_id,
+ this);
+
+ if (!executor_->Execute(file_urls)) {
+ // Executor has our reference, so we have to unref it if we don't want to
+ // leak.
+ executor_ = NULL;
return false;
+ }
result_.reset(new base::FundamentalValue(true));
return true;
}
+void ExecuteTasksFileBrowserFunction::OnTaskExecuted(bool success) {
+ SendResponse(success);
+ // Executor has our reference, so we have to unref it if we don't want to
+ // leak.
+ executor_ = NULL;
+}
+
FileBrowserFunction::FileBrowserFunction() {
}

Powered by Google App Engine
This is Rietveld 408576698