diff options
author | sammc@chromium.org <sammc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-29 14:16:24 +0000 |
---|---|---|
committer | sammc@chromium.org <sammc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-29 14:16:24 +0000 |
commit | 6b7ecdd48738d917c870a18e1ba3bb7707a4894e (patch) | |
tree | a1fd71148f5c1f89c166ac35cce308c29ddcb5a1 /apps/saved_files_service.cc | |
parent | f5f2b724da0926b45c9a6bd34df0e974206819c5 (diff) | |
download | chromium_src-6b7ecdd48738d917c870a18e1ba3bb7707a4894e.zip chromium_src-6b7ecdd48738d917c870a18e1ba3bb7707a4894e.tar.gz chromium_src-6b7ecdd48738d917c870a18e1ba3bb7707a4894e.tar.bz2 |
Add support for directory access to the file system API.
This adds 'openDirectory' as a type option for
chrome.fileSystem.chooseEntry to allow access to directories. This is
restricted to apps with the fileSystem.directory permission.
BUG=148486
Review URL: https://chromiumcodereview.appspot.com/23146016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220287 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps/saved_files_service.cc')
-rw-r--r-- | apps/saved_files_service.cc | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/apps/saved_files_service.cc b/apps/saved_files_service.cc index aa64af9..f832ffe 100644 --- a/apps/saved_files_service.cc +++ b/apps/saved_files_service.cc @@ -36,6 +36,9 @@ const char kFileEntries[] = "file_entries"; // The path to a file entry that the app had permission to access. const char kFileEntryPath[] = "path"; +// Whether or not the the entry refers to a directory. +const char kFileEntryIsDirectory[] = "is_directory"; + // The sequence number in the LRU of the file entry. const char kFileEntrySequenceNumber[] = "sequence_number"; @@ -59,6 +62,7 @@ void AddSavedFileEntry(ExtensionPrefs* prefs, DictionaryValue* file_entry_dict = new DictionaryValue(); file_entry_dict->Set(kFileEntryPath, CreateFilePathValue(file_entry.path)); + file_entry_dict->SetBoolean(kFileEntryIsDirectory, file_entry.is_directory); file_entry_dict->SetInteger(kFileEntrySequenceNumber, file_entry.sequence_number); file_entries->SetWithoutPathExpansion(file_entry.id, file_entry_dict); @@ -118,25 +122,30 @@ std::vector<SavedFileEntry> GetSavedFileEntries( base::FilePath file_path; if (!GetValueAsFilePath(*path_value, &file_path)) continue; + bool is_directory = false; + file_entry->GetBoolean(kFileEntryIsDirectory, &is_directory); int sequence_number = 0; if (!file_entry->GetInteger(kFileEntrySequenceNumber, &sequence_number)) continue; if (!sequence_number) continue; - result.push_back(SavedFileEntry(it.key(), file_path, sequence_number)); + result.push_back( + SavedFileEntry(it.key(), file_path, is_directory, sequence_number)); } return result; } } // namespace -SavedFileEntry::SavedFileEntry() : sequence_number(0) {} +SavedFileEntry::SavedFileEntry() : is_directory(false), sequence_number(0) {} SavedFileEntry::SavedFileEntry(const std::string& id, const base::FilePath& path, + bool is_directory, int sequence_number) : id(id), path(path), + is_directory(is_directory), sequence_number(sequence_number) {} class SavedFilesService::SavedFiles { @@ -145,7 +154,8 @@ class SavedFilesService::SavedFiles { ~SavedFiles(); void RegisterFileEntry(const std::string& id, - const base::FilePath& file_path); + const base::FilePath& file_path, + bool is_directory); void EnqueueFileEntry(const std::string& id); bool IsRegistered(const std::string& id) const; const SavedFileEntry* GetFileEntry(const std::string& id) const; @@ -219,8 +229,9 @@ void SavedFilesService::Observe(int type, void SavedFilesService::RegisterFileEntry(const std::string& extension_id, const std::string& id, - const base::FilePath& file_path) { - GetOrInsert(extension_id)->RegisterFileEntry(id, file_path); + const base::FilePath& file_path, + bool is_directory) { + GetOrInsert(extension_id)->RegisterFileEntry(id, file_path, is_directory); } void SavedFilesService::EnqueueFileEntry(const std::string& extension_id, @@ -303,12 +314,13 @@ SavedFilesService::SavedFiles::~SavedFiles() {} void SavedFilesService::SavedFiles::RegisterFileEntry( const std::string& id, - const base::FilePath& file_path) { + const base::FilePath& file_path, + bool is_directory) { if (ContainsKey(registered_file_entries_, id)) return; registered_file_entries_.insert( - std::make_pair(id, new SavedFileEntry(id, file_path, 0))); + std::make_pair(id, new SavedFileEntry(id, file_path, is_directory, 0))); } void SavedFilesService::SavedFiles::EnqueueFileEntry(const std::string& id) { |