Index: chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h |
diff --git a/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h b/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cd3c9d57bb54a70bd62e3041192c9bd99c2eedc4 |
--- /dev/null |
+++ b/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h |
@@ -0,0 +1,75 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_OBSERVER_H_ |
+#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_OBSERVER_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/callback.h" |
+#include "base/files/file_path.h" |
+ |
+namespace chromeos { |
+namespace file_system_provider { |
+ |
+class ProvidedFileSystemInfo; |
+class RequestManager; |
+ |
+// Observer class to be notified about changes happened to the provided file |
+// system, especially observed entries. |
+class ProvidedFileSystemObserver { |
+ public: |
+ struct ChildChange; |
+ |
+ // Type of a change to an observed entry. |
+ enum ChangeType { CHANGED, DELETED }; |
+ |
+ // Lust of child changes. |
+ typedef std::vector<ChildChange> ChildChanges; |
+ |
+ // Represents an observed entry on the file system. |
+ struct ObservedEntry { |
+ ObservedEntry(); |
+ ~ObservedEntry(); |
+ |
+ base::FilePath entry_path; |
+ bool recursive; |
+ std::string last_tag; |
+ }; |
+ |
+ // Describes a change in an entry contained in an observed directory. |
+ struct ChildChange { |
+ ChildChange(); |
+ ~ChildChange(); |
+ |
+ base::FilePath entry_path; |
+ ChangeType change_type; |
+ }; |
+ |
+ // Called when an observed entry is changed, including removals. |callback| |
+ // *must* be called after the entry change is handled. Once all observers |
+ // call the callback, the tag will be updated and OnObservedEntryTagUpdated |
+ // called. |
+ virtual void OnObservedEntryChanged( |
+ const ProvidedFileSystemInfo& file_system_info, |
+ const base::FilePath& observed_path, |
+ ChangeType change_type, |
+ const ChildChanges& child_changes, |
+ const base::Closure& callback) = 0; |
+ |
+ // Called when tag value is updated for the observed entry. |
+ virtual void OnObservedEntryTagUpdated( |
+ const ProvidedFileSystemInfo& file_system_info, |
+ const base::FilePath& observed_path) = 0; |
+ |
+ // Called when list of observed entries is changed. |
+ virtual void OnObservedEntryListChanged( |
+ const ProvidedFileSystemInfo& file_system_info) = 0; |
+}; |
+ |
+} // namespace file_system_provider |
+} // namespace chromeos |
+ |
+#endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_PROVIDED_FILE_SYSTEM_OBSERVER_H_ |