Index: components/arc/net/arc_net_host_impl.cc |
diff --git a/components/arc/net/arc_net_host_impl.cc b/components/arc/net/arc_net_host_impl.cc |
index be17b60cc45eb144608db2a4e0ee234b53d6640a..938a824ddd54e2dee3118af9fc48a77be7451d1b 100644 |
--- a/components/arc/net/arc_net_host_impl.cc |
+++ b/components/arc/net/arc_net_host_impl.cc |
@@ -293,13 +293,12 @@ namespace arc { |
ArcNetHostImpl::ArcNetHostImpl(ArcBridgeService* bridge_service) |
: ArcService(bridge_service), binding_(this), weak_factory_(this) { |
arc_bridge_service()->net()->AddObserver(this); |
- GetStateHandler()->AddObserver(this, FROM_HERE); |
} |
ArcNetHostImpl::~ArcNetHostImpl() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
arc_bridge_service()->net()->RemoveObserver(this); |
- if (chromeos::NetworkHandler::IsInitialized()) { |
+ if (observing_network_state_) { |
Yusuke Sato
2016/11/30 23:29:39
Do we need the check? I think the convention in Ch
Luis Héctor Chávez
2016/11/30 23:45:08
Yes, but https://cs.chromium.org/chromium/src/chro
Yusuke Sato
2016/11/30 23:59:30
Acknowledged.
|
GetStateHandler()->RemoveObserver(this, FROM_HERE); |
} |
} |
@@ -312,6 +311,19 @@ void ArcNetHostImpl::OnInstanceReady() { |
auto* instance = arc_bridge_service()->net()->GetInstanceForMethod("Init"); |
DCHECK(instance); |
instance->Init(std::move(host)); |
+ |
+ if (chromeos::NetworkHandler::IsInitialized()) { |
+ GetStateHandler()->AddObserver(this, FROM_HERE); |
+ observing_network_state_ = true; |
+ } |
+} |
+ |
+void ArcNetHostImpl::OnInstanceClosed() { |
+ if (!observing_network_state_) |
Yusuke Sato
2016/11/30 23:29:39
same
|
+ return; |
+ |
+ GetStateHandler()->RemoveObserver(this, FROM_HERE); |
+ observing_network_state_ = false; |
} |
void ArcNetHostImpl::GetNetworksDeprecated( |
@@ -647,7 +659,9 @@ void ArcNetHostImpl::DeviceListChanged() { |
} |
void ArcNetHostImpl::OnShuttingDown() { |
+ DCHECK(observing_network_state_); |
Yusuke Sato
2016/11/30 23:29:39
same
|
GetStateHandler()->RemoveObserver(this, FROM_HERE); |
+ observing_network_state_ = false; |
} |
} // namespace arc |