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

Unified Diff: chrome/browser/chromeos/file_system_provider/service.cc

Issue 625463002: [fsp] Add support for observing entries and notifying about changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 6 years, 2 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/file_system_provider/service.cc
diff --git a/chrome/browser/chromeos/file_system_provider/service.cc b/chrome/browser/chromeos/file_system_provider/service.cc
index ade921d87bd784342f93d8ee56164d66eca2b4a5..25305b1d58a18da1c65cc70fb7b95beff56a6458 100644
--- a/chrome/browser/chromeos/file_system_provider/service.cc
+++ b/chrome/browser/chromeos/file_system_provider/service.cc
@@ -12,7 +12,6 @@
#include "chrome/browser/chromeos/file_system_provider/observer.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
-#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
#include "chrome/browser/chromeos/file_system_provider/service_factory.h"
#include "chrome/common/pref_names.h"
#include "components/pref_registry/pref_registry_syncable.h"
@@ -40,6 +39,7 @@ ProvidedFileSystemInterface* CreateProvidedFileSystem(
const char kPrefKeyFileSystemId[] = "file-system-id";
const char kPrefKeyDisplayName[] = "display-name";
const char kPrefKeyWritable[] = "writable";
+const char kPrefKeySupportsNotifyTag[] = "supports-notify-tag";
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterDictionaryPref(
@@ -103,7 +103,8 @@ void Service::SetFileSystemFactoryForTesting(
bool Service::MountFileSystem(const std::string& extension_id,
const std::string& file_system_id,
const std::string& display_name,
- bool writable) {
+ bool writable,
+ bool supports_notify_tag) {
DCHECK(thread_checker_.CalledOnValidThread());
// If already exists a file system provided by the same extension with this
@@ -154,9 +155,14 @@ bool Service::MountFileSystem(const std::string& extension_id,
// file_system_id = hello_world
// mount_point_name = b33f1337-hello_world-5aa5
// writable = false
+ // supports_notify_tag = false
// mount_path = /provided/b33f1337-hello_world-5aa5
- ProvidedFileSystemInfo file_system_info(
- extension_id, file_system_id, display_name, writable, mount_path);
+ ProvidedFileSystemInfo file_system_info(extension_id,
+ file_system_id,
+ display_name,
+ writable,
+ supports_notify_tag,
+ mount_path);
ProvidedFileSystemInterface* file_system =
file_system_factory_.Run(profile_, file_system_info);
@@ -327,6 +333,27 @@ void Service::OnRequestUnmountStatus(
}
}
+void Service::OnObservedEntryChanged(
+ const ProvidedFileSystemInfo& file_system_info,
+ const base::FilePath& observed_path,
+ ChangeType change_type,
+ const ChildChanges& child_changes,
+ const base::Closure& callback) {
+ callback.Run();
+}
+
+void Service::OnObservedEntryTagUpdated(
+ const ProvidedFileSystemInfo& file_system_info,
+ const base::FilePath& observed_path) {
+ // TODO(mtomasz): Store tags of observed entries in preferences, or better
+ // in leveldb.
+}
+
+void Service::OnObservedEntryListChanged(
+ const ProvidedFileSystemInfo& file_system_info) {
+ // TODO(mtomasz): Store observed entries in preferences or leveldb.
+}
+
void Service::RememberFileSystem(
const ProvidedFileSystemInfo& file_system_info) {
base::DictionaryValue* file_system = new base::DictionaryValue();
@@ -336,6 +363,8 @@ void Service::RememberFileSystem(
file_system_info.display_name());
file_system->SetBooleanWithoutPathExpansion(kPrefKeyWritable,
file_system_info.writable());
+ file_system->SetBooleanWithoutPathExpansion(
+ kPrefKeySupportsNotifyTag, file_system_info.supports_notify_tag());
PrefService* const pref_service = profile_->GetPrefs();
DCHECK(pref_service);
@@ -374,6 +403,7 @@ void Service::ForgetFileSystem(const std::string& extension_id,
}
void Service::RestoreFileSystems(const std::string& extension_id) {
+ // TODO(mtomasz): Restore observed entries together with their tags.
PrefService* const pref_service = profile_->GetPrefs();
DCHECK(pref_service);
@@ -383,8 +413,9 @@ void Service::RestoreFileSystems(const std::string& extension_id) {
const base::DictionaryValue* file_systems_per_extension = NULL;
if (!file_systems->GetDictionaryWithoutPathExpansion(
- extension_id, &file_systems_per_extension))
+ extension_id, &file_systems_per_extension)) {
return; // Nothing to restore.
+ }
// Use a copy of the dictionary, since the original one may be modified while
// iterating over it.
@@ -402,7 +433,8 @@ void Service::RestoreFileSystems(const std::string& extension_id) {
std::string file_system_id;
std::string display_name;
- bool writable;
+ bool writable = false;
+ bool supports_notify_tag = false;
if (!file_system_value->GetAsDictionary(&file_system) ||
!file_system->GetStringWithoutPathExpansion(kPrefKeyFileSystemId,
@@ -411,14 +443,18 @@ void Service::RestoreFileSystems(const std::string& extension_id) {
&display_name) ||
!file_system->GetBooleanWithoutPathExpansion(kPrefKeyWritable,
&writable) ||
+ !file_system->GetBooleanWithoutPathExpansion(kPrefKeySupportsNotifyTag,
+ &supports_notify_tag) ||
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, writable);
+ const bool result = MountFileSystem(extension_id,
+ file_system_id,
+ display_name,
+ writable,
+ supports_notify_tag);
if (!result) {
LOG(ERROR) << "Failed to restore a provided file system from "
<< "preferences: " << extension_id << ", " << file_system_id

Powered by Google App Engine
This is Rietveld 408576698