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

Side by Side Diff: components/arc/arc_bridge_service_impl.cc

Issue 2133653002: arc: Notify ARC instance failures via callbacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address lhchavez's comments + improve unit test. Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/arc/arc_bridge_service_impl.h" 5 #include "components/arc/arc_bridge_service_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 void ArcBridgeServiceImpl::PrerequisitesChanged() { 71 void ArcBridgeServiceImpl::PrerequisitesChanged() {
72 DCHECK(CalledOnValidThread()); 72 DCHECK(CalledOnValidThread());
73 VLOG(1) << "Prerequisites changed. " 73 VLOG(1) << "Prerequisites changed. "
74 << "state=" << static_cast<uint32_t>(state()) 74 << "state=" << static_cast<uint32_t>(state())
75 << ", available=" << available() 75 << ", available=" << available()
76 << ", session_started=" << session_started_; 76 << ", session_started=" << session_started_;
77 if (state() == State::STOPPED) { 77 if (state() == State::STOPPED) {
78 if (!available() || !session_started_) 78 if (!available() || !session_started_)
79 return; 79 return;
80 VLOG(0) << "Prerequisites met, starting ARC"; 80 VLOG(0) << "Prerequisites met, starting ARC";
81 SetStopReason(StopReason::SHUTDOWN);
81 SetState(State::CONNECTING); 82 SetState(State::CONNECTING);
82 bootstrap_->Start(); 83 bootstrap_->Start();
83 } else { 84 } else {
84 if (available() && session_started_) 85 if (available() && session_started_)
85 return; 86 return;
86 VLOG(0) << "Prerequisites stopped being met, stopping ARC"; 87 VLOG(0) << "Prerequisites stopped being met, stopping ARC";
87 StopInstance(); 88 StopInstance();
88 } 89 }
89 } 90 }
90 91
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 130
130 instance_ptr_->Init(binding_.CreateInterfacePtrAndBind()); 131 instance_ptr_->Init(binding_.CreateInterfacePtrAndBind());
131 132
132 // The container can be considered to have been successfully launched, so 133 // The container can be considered to have been successfully launched, so
133 // restart if the connection goes down without being requested. 134 // restart if the connection goes down without being requested.
134 reconnect_ = true; 135 reconnect_ = true;
135 VLOG(0) << "ARC ready"; 136 VLOG(0) << "ARC ready";
136 SetState(State::READY); 137 SetState(State::READY);
137 } 138 }
138 139
139 void ArcBridgeServiceImpl::OnStopped() { 140 void ArcBridgeServiceImpl::OnStopped(StopReason stop_reason) {
140 DCHECK(CalledOnValidThread()); 141 DCHECK(CalledOnValidThread());
142 SetStopReason(stop_reason);
141 SetState(State::STOPPED); 143 SetState(State::STOPPED);
142 VLOG(0) << "ARC stopped"; 144 VLOG(0) << "ARC stopped";
143 if (reconnect_) { 145 if (reconnect_) {
144 // There was a previous invocation and it crashed for some reason. Try 146 // There was a previous invocation and it crashed for some reason. Try
145 // starting the container again. 147 // starting the container again.
146 reconnect_ = false; 148 reconnect_ = false;
147 VLOG(0) << "ARC reconnecting"; 149 VLOG(0) << "ARC reconnecting";
148 if (use_delay_before_reconnecting_) { 150 if (use_delay_before_reconnecting_) {
149 // Instead of immediately trying to restart the container, give it some 151 // Instead of immediately trying to restart the container, give it some
150 // time to finish tearing down in case it is still in the process of 152 // time to finish tearing down in case it is still in the process of
(...skipping 16 matching lines...) Expand all
167 return; 169 return;
168 } 170 }
169 VLOG(1) << "Mojo connection lost"; 171 VLOG(1) << "Mojo connection lost";
170 instance_ptr_.reset(); 172 instance_ptr_.reset();
171 if (binding_.is_bound()) 173 if (binding_.is_bound())
172 binding_.Close(); 174 binding_.Close();
173 CloseAllChannels(); 175 CloseAllChannels();
174 } 176 }
175 177
176 } // namespace arc 178 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698