Index: components/arc/arc_bridge_service.cc |
diff --git a/components/arc/arc_bridge_service.cc b/components/arc/arc_bridge_service.cc |
index 179cde95e721386b0dfb1b13311f8e9dba1766f0..22ee97e5170ed681a545100c42fe458bb2ec4f92 100644 |
--- a/components/arc/arc_bridge_service.cc |
+++ b/components/arc/arc_bridge_service.cc |
@@ -17,8 +17,10 @@ namespace arc { |
ArcBridgeService* g_arc_bridge_service = nullptr; |
ArcBridgeService::ArcBridgeService() |
- : available_(false), state_(State::STOPPED), weak_factory_(this) { |
-} |
+ : available_(false), |
+ state_(State::STOPPED), |
+ stop_reason_(StopReason::NO_ERROR), |
+ weak_factory_(this) {} |
ArcBridgeService::~ArcBridgeService() { |
DCHECK(CalledOnValidThread()); |
@@ -584,7 +586,7 @@ void ArcBridgeService::SetState(State state) { |
if (state_ == State::READY) |
FOR_EACH_OBSERVER(Observer, observer_list(), OnBridgeReady()); |
else if (state == State::STOPPED) |
- FOR_EACH_OBSERVER(Observer, observer_list(), OnBridgeStopped()); |
+ FOR_EACH_OBSERVER(Observer, observer_list(), OnBridgeStopped(stop_reason_)); |
} |
void ArcBridgeService::SetAvailable(bool available) { |
@@ -594,6 +596,11 @@ void ArcBridgeService::SetAvailable(bool available) { |
FOR_EACH_OBSERVER(Observer, observer_list(), OnAvailableChanged(available_)); |
} |
+void ArcBridgeService::SetStopReason(StopReason stop_reason) { |
+ DCHECK(CalledOnValidThread()); |
+ stop_reason_ = stop_reason; |
+} |
+ |
bool ArcBridgeService::CalledOnValidThread() { |
return thread_checker_.CalledOnValidThread(); |
} |