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

Unified Diff: chrome/browser/chromeos/file_system_provider/file_system_plugin/plugin_service.h

Issue 1093383002: [WIP] Provided file system from NACL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved several modules to chromeos folder. Created 5 years, 5 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/file_system_plugin/plugin_service.h
diff --git a/chrome/browser/chromeos/file_system_provider/file_system_plugin/plugin_service.h b/chrome/browser/chromeos/file_system_provider/file_system_plugin/plugin_service.h
new file mode 100644
index 0000000000000000000000000000000000000000..334950fc5503e4b0d33a95fd8e19cb6cbcb9ee3a
--- /dev/null
+++ b/chrome/browser/chromeos/file_system_provider/file_system_plugin/plugin_service.h
@@ -0,0 +1,102 @@
+// Copyright 2015 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_FILE_SYSTEM_PLUGIN_PLUGIN_SERVICE_H_
+#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_FILE_SYSTEM_PLUGIN_PLUGIN_SERVICE_H_
+
+#include "base/files/file.h"
+#include "base/files/file_path.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/observer_list.h"
+#include "base/threading/thread_checker.h"
+#include "base/values.h"
+#include "chrome/browser/chromeos/file_system_provider/file_system_plugin/provided_file_system_adapter.h"
+#include "chrome/browser/chromeos/file_system_provider/observer.h"
+#include "chrome/browser/chromeos/file_system_provider/provided_file_system_defs.h"
+#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
+#include "chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h"
+#include "chrome/browser/chromeos/file_system_provider/watcher.h"
+#include "chrome/browser/profiles/profile.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/browser/browser_context.h"
+#include "storage/browser/fileapi/watcher_manager.h"
+
+namespace chromeos {
+namespace file_system_provider {
+
+class ProvidedFileSystemInfo;
+class ProvidedFileSystemInterface;
+struct MountOptions;
+
+// Manages and registers the file system plugin provider service.
+class PluginService : public KeyedService/*,
+ public ProvidedFileSystemObserver*/ {
+ public:
+ enum UnmountReason { UNMOUNT_REASON_USER, UNMOUNT_REASON_SHUTDOWN };
+ PluginService(Profile* profile);
+ ~PluginService() override;
+ base::File::Error MountFileSystem(
+ const std::string& source_id,
+ const MountOptions& options);
+ base::File::Error UnmountFileSystem( const std::string& source_id,
+ const std::string& file_system_id,
+ UnmountReason reason);
+
+ // Adds and removes observers.
+ void AddObserver(Observer* observer);
+ void RemoveObserver(Observer* observer);
+ // Gets the singleton instance for the |context|.
+ static PluginService* Get(content::BrowserContext* context);
+ ProvidedFileSystemAdapter* GetProvidedFileSystemAdapter(
+ const std::string& plugin_id,
+ const std::string& file_system_id);
+ ProvidedFileSystemInterface* GetProvidedFileSystem(
+ const std::string& source_id,
+ const std::string& file_system_id);
+ // Returns a provided file system attached to the the passed
+ // |mount_point_name|. If not found, then returns NULL.
+ ProvidedFileSystemInterface* GetProvidedFileSystem(
+ const std::string& mount_point_name);
+ // Returns a list of information of all currently provided file systems. All
+ // items are copied.
+ std::vector<ProvidedFileSystemInfo> GetProvidedFileSystemInfoList();
+// // ProvidedFileSystemInterface::Observer overrides.
+// void OnWatcherChanged(const ProvidedFileSystemInfo& file_system_info,
+// const Watcher& watcher,
+// storage::WatcherManager::ChangeType change_type,
+// const ProvidedFileSystemObserver::Changes& changes,
+// const base::Closure& callback) override;
+// void OnWatcherTagUpdated(const ProvidedFileSystemInfo& file_system_info,
+// const Watcher& watcher) override;
+// void OnWatcherListChanged(const ProvidedFileSystemInfo& file_system_info,
+// const Watchers& watchers) override;
+ private:
+ base::File::Error MountFileSystemInternal(
+ const std::string& source_id,
+ const MountOptions& options,
+ MountContext context);
+ // Key is a pair of an extension id and file system id, which makes it
+ // unique among the entire service instance.
+ typedef std::pair<std::string, std::string> FileSystemKey;
+
+ typedef std::map<FileSystemKey, ProvidedFileSystemAdapter*>
+ ProvidedFileSystemMap;
+ typedef std::map<std::string, FileSystemKey> MountPointNameToKeyMap;
+
+ Profile* profile_;
+ base::ObserverList<Observer> observers_;
+ ProvidedFileSystemMap file_system_map_; // Owns pointers.
+ MountPointNameToKeyMap mount_point_name_to_key_map_;
+ base::ThreadChecker thread_checker_;
+
+ base::WeakPtrFactory<PluginService> weak_ptr_factory_;
+ DISALLOW_COPY_AND_ASSIGN(PluginService);
+};
+
+} // namespace file_system_provider
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_FILE_SYSTEM_PLUGIN_PLUGIN_SERVICE_H_
+

Powered by Google App Engine
This is Rietveld 408576698