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

Unified Diff: components/arc/arc_bridge_service.cc

Issue 1996933002: arc: IPC definition of file system interfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Created 4 years, 7 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
« no previous file with comments | « components/arc/arc_bridge_service.h ('k') | components/arc/common/arc_bridge.mojom » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/arc/arc_bridge_service.cc
diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
index 48145c885adb7e86b5a11326dab6200f022181cb..92b6a2207b95c9b0e41d6fb39b3f615f06d9f2fc 100644
--- a/components/arc/arc_bridge_service.cc
+++ b/components/arc/arc_bridge_service.cc
@@ -70,6 +70,8 @@ void ArcBridgeService::AddObserver(Observer* observer) {
observer->OnClipboardInstanceReady();
if (crash_collector_instance())
observer->OnCrashCollectorInstanceReady();
+ if (file_system_instance())
+ observer->OnFileSystemInstanceReady();
if (ime_instance())
observer->OnImeInstanceReady();
if (metrics_instance())
@@ -246,6 +248,34 @@ void ArcBridgeService::CloseCrashCollectorChannel() {
OnCrashCollectorInstanceClosed());
}
+void ArcBridgeService::OnFileSystemInstanceReady(
+ mojom::FileSystemInstancePtr file_system_ptr) {
+ DCHECK(CalledOnValidThread());
+ temporary_file_system_ptr_ = std::move(file_system_ptr);
+ temporary_file_system_ptr_.QueryVersion(
+ base::Bind(&ArcBridgeService::OnFileSystemVersionReady,
+ weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnFileSystemVersionReady(int32_t version) {
+ DCHECK(CalledOnValidThread());
+ file_system_ptr_ = std::move(temporary_file_system_ptr_);
+ file_system_ptr_.set_connection_error_handler(
+ base::Bind(&ArcBridgeService::CloseFileSystemChannel,
+ weak_factory_.GetWeakPtr()));
+ FOR_EACH_OBSERVER(Observer, observer_list(), OnFileSystemInstanceReady());
+}
+
+void ArcBridgeService::CloseFileSystemChannel() {
+ DCHECK(CalledOnValidThread());
+ if (!file_system_ptr_)
+ return;
+
+ file_system_ptr_.reset();
+ FOR_EACH_OBSERVER(Observer, observer_list(),
+ OnFileSystemInstanceClosed());
+}
+
void ArcBridgeService::OnImeInstanceReady(mojom::ImeInstancePtr ime_ptr) {
DCHECK(CalledOnValidThread());
temporary_ime_ptr_ = std::move(ime_ptr);
@@ -554,6 +584,7 @@ void ArcBridgeService::CloseAllChannels() {
CloseBluetoothChannel();
CloseClipboardChannel();
CloseCrashCollectorChannel();
+ CloseFileSystemChannel();
CloseImeChannel();
CloseIntentHelperChannel();
CloseMetricsChannel();
« no previous file with comments | « components/arc/arc_bridge_service.h ('k') | components/arc/common/arc_bridge.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698