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

Unified Diff: components/arc/arc_bridge_service.cc

Issue 1551763002: arc-bridge: Expose the Mojo version number of the interfaces (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Created 5 years 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: components/arc/arc_bridge_service.cc
diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
index 3c5f391482c31b691da219c83ac3ec743abceacf..475f19e4199d5992d83a09f62b4e1705cf1bc9d9 100644
--- a/components/arc/arc_bridge_service.cc
+++ b/components/arc/arc_bridge_service.cc
@@ -22,7 +22,7 @@ ArcBridgeService* g_arc_bridge_service = nullptr;
} // namespace
ArcBridgeService::ArcBridgeService()
- : available_(false), state_(State::STOPPED) {
+ : available_(false), state_(State::STOPPED), weak_factory_(this) {
DCHECK(!g_arc_bridge_service);
g_arc_bridge_service = this;
}
@@ -58,39 +58,81 @@ void ArcBridgeService::RemoveObserver(Observer* observer) {
void ArcBridgeService::OnAppInstanceReady(AppInstancePtr app_ptr) {
DCHECK(CalledOnValidThread());
- app_ptr_ = std::move(app_ptr);
+ temporary_app_ptr_ = std::move(app_ptr);
+ temporary_app_ptr_.QueryVersion(base::Bind(
+ &ArcBridgeService::OnAppVersionReady, weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnAppVersionReady(int32_t version) {
+ DCHECK(CalledOnValidThread());
+ app_ptr_ = std::move(temporary_app_ptr_);
FOR_EACH_OBSERVER(Observer, observer_list(), OnAppInstanceReady());
}
void ArcBridgeService::OnInputInstanceReady(InputInstancePtr input_ptr) {
DCHECK(CalledOnValidThread());
- input_ptr_ = std::move(input_ptr);
+ temporary_input_ptr_ = std::move(input_ptr);
+ temporary_input_ptr_.QueryVersion(base::Bind(
+ &ArcBridgeService::OnInputVersionReady, weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnInputVersionReady(int32_t version) {
+ DCHECK(CalledOnValidThread());
+ input_ptr_ = std::move(temporary_input_ptr_);
FOR_EACH_OBSERVER(Observer, observer_list(), OnInputInstanceReady());
}
void ArcBridgeService::OnNotificationsInstanceReady(
NotificationsInstancePtr notifications_ptr) {
DCHECK(CalledOnValidThread());
- notifications_ptr_ = std::move(notifications_ptr);
+ temporary_notifications_ptr_ = std::move(notifications_ptr);
+ temporary_notifications_ptr_.QueryVersion(
+ base::Bind(&ArcBridgeService::OnNotificationsVersionReady,
+ weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnNotificationsVersionReady(int32_t version) {
+ DCHECK(CalledOnValidThread());
+ notifications_ptr_ = std::move(temporary_notifications_ptr_);
FOR_EACH_OBSERVER(Observer, observer_list(), OnNotificationsInstanceReady());
}
void ArcBridgeService::OnPowerInstanceReady(PowerInstancePtr power_ptr) {
DCHECK(CalledOnValidThread());
- power_ptr_ = std::move(power_ptr);
+ temporary_power_ptr_ = std::move(power_ptr);
+ temporary_power_ptr_.QueryVersion(base::Bind(
+ &ArcBridgeService::OnPowerVersionReady, weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnPowerVersionReady(int32_t version) {
+ DCHECK(CalledOnValidThread());
+ power_ptr_ = std::move(temporary_power_ptr_);
FOR_EACH_OBSERVER(Observer, observer_list(), OnPowerInstanceReady());
}
void ArcBridgeService::OnProcessInstanceReady(ProcessInstancePtr process_ptr) {
DCHECK(CalledOnValidThread());
- process_ptr_ = std::move(process_ptr);
+ temporary_process_ptr_ = std::move(process_ptr);
+ temporary_process_ptr_.QueryVersion(base::Bind(
+ &ArcBridgeService::OnProcessVersionReady, weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnProcessVersionReady(int32_t version) {
+ DCHECK(CalledOnValidThread());
+ process_ptr_ = std::move(temporary_process_ptr_);
FOR_EACH_OBSERVER(Observer, observer_list(), OnProcessInstanceReady());
}
void ArcBridgeService::OnSettingsInstanceReady(
SettingsInstancePtr settings_ptr) {
DCHECK(CalledOnValidThread());
- settings_ptr_ = std::move(settings_ptr);
+ temporary_settings_ptr_ = std::move(settings_ptr);
+ temporary_settings_ptr_.QueryVersion(base::Bind(
+ &ArcBridgeService::OnSettingsVersionReady, weak_factory_.GetWeakPtr()));
+}
+
+void ArcBridgeService::OnSettingsVersionReady(int32_t version) {
+ settings_ptr_ = std::move(temporary_settings_ptr_);
FOR_EACH_OBSERVER(Observer, observer_list(), OnSettingsInstanceReady());
}

Powered by Google App Engine
This is Rietveld 408576698