summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/extensions/file_handler_util.h
diff options
context:
space:
mode:
authortbarzic@chromium.org <tbarzic@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-16 21:26:03 +0000
committertbarzic@chromium.org <tbarzic@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-16 21:26:03 +0000
commitd3d50e0051fa855b7db675012e904b69a924a7e4 (patch)
tree69e8fb57ec1c2e156c70e42ad35af0852620a0fc /chrome/browser/chromeos/extensions/file_handler_util.h
parent4dcf83c6ebca519c47c0f8f2f6604a53cb1a3428 (diff)
downloadchromium_src-d3d50e0051fa855b7db675012e904b69a924a7e4.zip
chromium_src-d3d50e0051fa855b7db675012e904b69a924a7e4.tar.gz
chromium_src-d3d50e0051fa855b7db675012e904b69a924a7e4.tar.bz2
Postpone setting up file handler's file permissions if handler is running lazy background page.
We have to wait until handler's extension host loads before we can setup file access permissions with ChilsProcessSecurityPolicy. We can't get the extensions host process id before that. BUG=chromium-os:29475 TEST=*FileBrowser* Review URL: https://chromiumcodereview.appspot.com/10067021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132458 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/extensions/file_handler_util.h')
-rw-r--r--chrome/browser/chromeos/extensions/file_handler_util.h29
1 files changed, 24 insertions, 5 deletions
diff --git a/chrome/browser/chromeos/extensions/file_handler_util.h b/chrome/browser/chromeos/extensions/file_handler_util.h
index 899f36b..cab121f 100644
--- a/chrome/browser/chromeos/extensions/file_handler_util.h
+++ b/chrome/browser/chromeos/extensions/file_handler_util.h
@@ -6,11 +6,14 @@
#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_HANDLER_UTIL_H_
#pragma once
+#include <vector>
+
#include "base/platform_file.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/url_pattern_set.h"
class Browser;
+class ExtensionHost;
class FileBrowserHandler;
class GURL;
class Profile;
@@ -89,6 +92,7 @@ class FileTaskExecutor : public base::RefCountedThreadSafe<FileTaskExecutor> {
FilePath absolute_path;
bool is_directory;
};
+
typedef std::vector<FileDefinition> FileDefinitionList;
class ExecuteTasksFileSystemCallbackDispatcher;
void RequestFileEntryOnFileThread(
@@ -96,20 +100,35 @@ class FileTaskExecutor : public base::RefCountedThreadSafe<FileTaskExecutor> {
const scoped_refptr<const Extension>& handler,
int handler_pid,
const std::vector<GURL>& file_urls);
- void SetupFileAccessPermissionsForGDataCache(
- const FileDefinitionList& file_list,
- int handler_pid);
- void RespondFailedOnUIThread(base::PlatformFileError error_code);
+
+ void ExecuteFailedOnUIThread();
void ExecuteFileActionsOnUIThread(const std::string& file_system_name,
const GURL& file_system_root,
const FileDefinitionList& file_list,
int handler_id);
- void ExecuteFailedOnUIThread();
+ void SetupPermissionsAndDispatchEvent(const std::string& file_system_name,
+ const GURL& file_system_root,
+ const FileDefinitionList& file_list,
+ int handler_pid_in,
+ ExtensionHost* host);
+
+ // Populates |handler_host_permissions| with file path-permissions pairs that
+ // will be given to the handler extension host process.
+ void InitHandlerHostFileAccessPermissions(
+ const FileDefinitionList& file_list,
+ const Extension* handler_extension,
+ const std::string& action_id);
+ // Registers file permissions from |handler_host_permissions_| with
+ // ChildProcessSecurityPolicy for process with id |handler_pid|.
+ void SetupHandlerHostFileAccessPermissions(int handler_pid);
Profile* profile_;
const GURL source_url_;
const std::string extension_id_;
const std::string action_id_;
+
+ // (File path, permission for file path) pairs for the handler.
+ std::vector<std::pair<FilePath, int> > handler_host_permissions_;
};
} // namespace file_handler_util