| Index: components/arc/arc_bridge_service.cc
|
| diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc
|
| index d3448c515faef55fe3c529c321f4c617c05a62b2..844f5c88232fcff21e719015f51cfb3a93fd49d1 100644
|
| --- a/components/arc/arc_bridge_service.cc
|
| +++ b/components/arc/arc_bridge_service.cc
|
| @@ -49,6 +49,30 @@ bool ArcBridgeService::GetEnabled(const base::CommandLine* command_line) {
|
| void ArcBridgeService::AddObserver(Observer* observer) {
|
| DCHECK(CalledOnValidThread());
|
| observer_list_.AddObserver(observer);
|
| +
|
| + // If any of the instances were ready before the call to AddObserver(), the
|
| + // |observer| won't get any readiness events. For such cases, we have to call
|
| + // them explicitly now to avoid a race.
|
| + if (app_instance())
|
| + observer->OnAppInstanceReady();
|
| + if (auth_instance())
|
| + observer->OnAuthInstanceReady();
|
| + if (clipboard_instance())
|
| + observer->OnClipboardInstanceReady();
|
| + if (ime_instance())
|
| + observer->OnImeInstanceReady();
|
| + if (input_instance())
|
| + observer->OnInputInstanceReady();
|
| + if (notifications_instance())
|
| + observer->OnNotificationsInstanceReady();
|
| + if (power_instance())
|
| + observer->OnPowerInstanceReady();
|
| + if (process_instance())
|
| + observer->OnProcessInstanceReady();
|
| + if (settings_instance())
|
| + observer->OnSettingsInstanceReady();
|
| + if (video_instance())
|
| + observer->OnVideoInstanceReady();
|
| }
|
|
|
| void ArcBridgeService::RemoveObserver(Observer* observer) {
|
|
|