Index: trunk/src/chrome/browser/chromeos/file_system_provider/service.cc |
=================================================================== |
--- trunk/src/chrome/browser/chromeos/file_system_provider/service.cc (revision 282906) |
+++ trunk/src/chrome/browser/chromeos/file_system_provider/service.cc (working copy) |
@@ -39,6 +39,7 @@ |
const char kPrefKeyFileSystemId[] = "file-system-id"; |
const char kPrefKeyDisplayName[] = "display-name"; |
+const char kPrefKeyWritable[] = "writable"; |
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { |
registry->RegisterDictionaryPref( |
@@ -101,7 +102,8 @@ |
bool Service::MountFileSystem(const std::string& extension_id, |
const std::string& file_system_id, |
- const std::string& display_name) { |
+ const std::string& display_name, |
+ bool writable) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
// If already exists a file system provided by the same extension with this |
@@ -149,11 +151,12 @@ |
// Store the file system descriptor. Use the mount point name as the file |
// system provider file system id. |
// Examples: |
- // file_system_id = 41 |
- // mount_point_name = b33f1337-41-5aa5 |
- // mount_path = /provided/b33f1337-41-5aa5 |
+ // file_system_id = hello_world |
+ // mount_point_name = b33f1337-hello_world-5aa5 |
+ // writable = false |
+ // mount_path = /provided/b33f1337-hello_world-5aa5 |
ProvidedFileSystemInfo file_system_info( |
- extension_id, file_system_id, display_name, mount_path); |
+ extension_id, file_system_id, display_name, writable, mount_path); |
ProvidedFileSystemInterface* file_system = |
file_system_factory_.Run(profile_, file_system_info); |
@@ -331,6 +334,8 @@ |
file_system_info.file_system_id()); |
file_system->SetStringWithoutPathExpansion(kPrefKeyDisplayName, |
file_system_info.display_name()); |
+ file_system->SetBooleanWithoutPathExpansion(kPrefKeyWritable, |
+ file_system_info.writable()); |
PrefService* const pref_service = profile_->GetPrefs(); |
DCHECK(pref_service); |
@@ -397,21 +402,23 @@ |
std::string file_system_id; |
std::string display_name; |
- if (file_system_value->GetAsDictionary(&file_system)) { |
- file_system->GetStringWithoutPathExpansion(kPrefKeyFileSystemId, |
- &file_system_id); |
- file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName, |
- &display_name); |
- } |
+ bool writable; |
- if (file_system_id.empty() || display_name.empty()) { |
+ if (!file_system_value->GetAsDictionary(&file_system) || |
+ !file_system->GetStringWithoutPathExpansion(kPrefKeyFileSystemId, |
+ &file_system_id) || |
+ !file_system->GetStringWithoutPathExpansion(kPrefKeyDisplayName, |
+ &display_name) || |
+ !file_system->GetBooleanWithoutPathExpansion(kPrefKeyWritable, |
+ &writable) || |
+ file_system_id.empty() || display_name.empty()) { |
LOG(ERROR) |
<< "Malformed provided file system information in preferences."; |
continue; |
} |
const bool result = |
- MountFileSystem(extension_id, file_system_id, display_name); |
+ MountFileSystem(extension_id, file_system_id, display_name, writable); |
if (!result) { |
LOG(ERROR) << "Failed to restore a provided file system from " |
<< "preferences: " << extension_id << ", " << file_system_id |