| Index: chrome/browser/chromeos/file_system_provider/provided_file_system.h
|
| diff --git a/chrome/browser/chromeos/file_system_provider/provided_file_system.h b/chrome/browser/chromeos/file_system_provider/provided_file_system.h
|
| index 2cdf6db5e8af1647b52f8b7928a7f7162f2f5fa1..d94c51271e0bfa5282b7b1668dc5fac59c2fb3d0 100644
|
| --- a/chrome/browser/chromeos/file_system_provider/provided_file_system.h
|
| +++ b/chrome/browser/chromeos/file_system_provider/provided_file_system.h
|
| @@ -31,13 +31,16 @@ namespace base {
|
| class FilePath;
|
| } // namespace base
|
|
|
| -namespace extensions {
|
| -class EventRouter;
|
| -} // namespace extensions
|
| -
|
| namespace chromeos {
|
| namespace file_system_provider {
|
|
|
| +// Define a policy that gets specific routers
|
| +template <int source = Source_Type::extension>
|
| +struct SourcePolicy : Source_Traits<source> {
|
| + typedef typename Source_Traits<source>::EventRouterType EventRouterType;
|
| + EventRouterType* Get(Profile* profile);
|
| +};
|
| +
|
| class NotificationManagerInterface;
|
|
|
| // Automatically calls the |update_callback| after all of the callbacks created
|
| @@ -73,7 +76,9 @@ class AutoUpdater : public base::RefCounted<AutoUpdater> {
|
|
|
| // Provided file system implementation. Forwards requests between providers and
|
| // clients.
|
| -class ProvidedFileSystem : public ProvidedFileSystemInterface {
|
| +template <int source = Source_Type::extension>
|
| +class ProvidedFileSystem : public ProvidedFileSystemInterface,
|
| + public SourcePolicy<source> {
|
| public:
|
| ProvidedFileSystem(Profile* profile,
|
| const ProvidedFileSystemInfo& file_system_info);
|
| @@ -81,7 +86,8 @@ class ProvidedFileSystem : public ProvidedFileSystemInterface {
|
|
|
| // Sets a custom event router. Used in unit tests to mock out the real
|
| // extension.
|
| - void SetEventRouterForTesting(extensions::EventRouter* event_router);
|
| + void SetEventRouterForTesting(
|
| + typename SourcePolicy<source>::EventRouterType* event_router);
|
|
|
| // Sets a custom notification manager. It will recreate the request manager,
|
| // so is must be called just after creating ProvideFileSystem instance.
|
| @@ -232,8 +238,10 @@ class ProvidedFileSystem : public ProvidedFileSystemInterface {
|
| const storage::AsyncFileUtil::StatusCallback& callback,
|
| base::File::Error result);
|
|
|
| - Profile* profile_; // Not owned.
|
| - extensions::EventRouter* event_router_; // Not owned. May be NULL.
|
| + // Not owned.
|
| + Profile* profile_;
|
| + // Not owned. May be NULL
|
| + typename SourcePolicy<source>::EventRouterType* event_router_;
|
| ProvidedFileSystemInfo file_system_info_;
|
| scoped_ptr<NotificationManagerInterface> notification_manager_;
|
| scoped_ptr<RequestManager> request_manager_;
|
| @@ -242,8 +250,8 @@ class ProvidedFileSystem : public ProvidedFileSystemInterface {
|
| OpenedFiles opened_files_;
|
| ObserverList<ProvidedFileSystemObserver> observers_;
|
|
|
| - base::WeakPtrFactory<ProvidedFileSystem> weak_ptr_factory_;
|
| - DISALLOW_COPY_AND_ASSIGN(ProvidedFileSystem);
|
| + base::WeakPtrFactory<ProvidedFileSystem<source>> weak_ptr_factory_;
|
| + DISALLOW_COPY_AND_ASSIGN(ProvidedFileSystem<source>);
|
| };
|
|
|
| } // namespace file_system_provider
|
|
|