Index: chrome/browser/chromeos/arc/fileapi/arc_file_system_service.cc |
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_file_system_service.cc b/chrome/browser/chromeos/arc/fileapi/arc_file_system_service.cc |
index 11e02901214ce1564648d02a178140aa523b1a11..5697ea41165128feec3dd0a80409eb8d50a443c0 100644 |
--- a/chrome/browser/chromeos/arc/fileapi/arc_file_system_service.cc |
+++ b/chrome/browser/chromeos/arc/fileapi/arc_file_system_service.cc |
@@ -8,6 +8,7 @@ |
#include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util.h" |
#include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_util.h" |
#include "components/arc/arc_bridge_service.h" |
+#include "components/arc/file_system/arc_file_system_observer.h" |
#include "content/public/browser/browser_thread.h" |
#include "storage/browser/fileapi/external_mount_points.h" |
@@ -15,6 +16,10 @@ using content::BrowserThread; |
namespace arc { |
+// static |
+const char ArcFileSystemService::kArcServiceName[] = |
+ "arc::ArcFileSystemService"; |
+ |
ArcFileSystemService::ArcFileSystemService(ArcBridgeService* bridge_service) |
: ArcService(bridge_service) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
@@ -31,11 +36,15 @@ ArcFileSystemService::ArcFileSystemService(ArcBridgeService* bridge_service) |
storage::kFileSystemTypeArcDocumentsProvider, |
storage::FileSystemMountOption(), |
base::FilePath(kDocumentsProviderMountPointPath)); |
+ |
+ arc_bridge_service()->file_system()->AddObserver(this); |
} |
ArcFileSystemService::~ArcFileSystemService() { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ arc_bridge_service()->file_system()->RemoveObserver(this); |
+ |
storage::ExternalMountPoints* mount_points = |
storage::ExternalMountPoints::GetSystemInstance(); |
@@ -43,4 +52,22 @@ ArcFileSystemService::~ArcFileSystemService() { |
mount_points->RevokeFileSystem(kDocumentsProviderMountPointPath); |
} |
+void ArcFileSystemService::AddObserver(ArcFileSystemObserver* observer) { |
+ observer_list_.AddObserver(observer); |
+} |
+ |
+void ArcFileSystemService::RemoveObserver(ArcFileSystemObserver* observer) { |
+ observer_list_.RemoveObserver(observer); |
+} |
+ |
+void ArcFileSystemService::OnInstanceReady() { |
+ for (auto& observer : observer_list_) |
+ observer.OnFileSystemsReady(); |
+} |
+ |
+void ArcFileSystemService::OnInstanceClosed() { |
+ for (auto& observer : observer_list_) |
+ observer.OnFileSystemsClosed(); |
+} |
+ |
} // namespace arc |