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

Side by Side Diff: chrome/browser/chromeos/arc/process/arc_process_service.cc

Issue 2541843003: arc: Reduce logspam when ARC is not enabled/available (Closed)
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 // The main point of this class is to cache ARC proc nspid<->pid mapping 5 // The main point of this class is to cache ARC proc nspid<->pid mapping
6 // globally. Since the calculation is costly, a dedicated worker thread is 6 // globally. Since the calculation is costly, a dedicated worker thread is
7 // used. All read/write of its internal data structure (i.e., the mapping) 7 // used. All read/write of its internal data structure (i.e., the mapping)
8 // should be on this thread. 8 // should be on this thread.
9 9
10 #include "chrome/browser/chromeos/arc/process/arc_process_service.h" 10 #include "chrome/browser/chromeos/arc/process/arc_process_service.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 g_arc_process_service = nullptr; 220 g_arc_process_service = nullptr;
221 arc_bridge_service()->process()->RemoveObserver(this); 221 arc_bridge_service()->process()->RemoveObserver(this);
222 } 222 }
223 223
224 // static 224 // static
225 ArcProcessService* ArcProcessService::Get() { 225 ArcProcessService* ArcProcessService::Get() {
226 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 226 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
227 return g_arc_process_service; 227 return g_arc_process_service;
228 } 228 }
229 229
230 void ArcProcessService::OnInstanceReady() {
231 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
232 GetTaskRunner()->PostTask(FROM_HERE, base::Bind(&Reset, nspid_to_pid_));
233 }
234
235 void ArcProcessService::RequestSystemProcessList( 230 void ArcProcessService::RequestSystemProcessList(
236 RequestProcessListCallback callback) { 231 RequestProcessListCallback callback) {
237 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 232 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
238 233
239 base::PostTaskAndReplyWithResult(GetTaskRunner().get(), FROM_HERE, 234 base::PostTaskAndReplyWithResult(GetTaskRunner().get(), FROM_HERE,
240 base::Bind(&GetArcSystemProcessList), 235 base::Bind(&GetArcSystemProcessList),
241 callback); 236 callback);
242 } 237 }
243 238
244 bool ArcProcessService::RequestAppProcessList( 239 bool ArcProcessService::RequestAppProcessList(
245 RequestProcessListCallback callback) { 240 RequestProcessListCallback callback) {
246 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 241 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
247 242
243 // Since several services call this class to get information about the ARC
244 // process list, it can produce a lot of logspam when the board is ARC-ready
245 // but the user has not opted into ARC. This redundant check avoids that
246 // logspam.
247 if (!instance_ready_)
248 return false;
Yusuke Sato 2016/11/30 23:29:39 I think this would also remove legit logs when the
Luis Héctor Chávez 2016/11/30 23:45:08 ArcBridgeService::GetEnabled() unfortunately does
Yusuke Sato 2016/11/30 23:59:30 The DCHECK in ~ObserverList<> is actually an optio
Yusuke Sato 2016/12/01 02:29:21 Chatted with Luis offline. Let's keep the member v
249
248 mojom::ProcessInstance* process_instance = 250 mojom::ProcessInstance* process_instance =
249 arc_bridge_service()->process()->GetInstanceForMethod( 251 arc_bridge_service()->process()->GetInstanceForMethod(
250 "RequestProcessList"); 252 "RequestProcessList");
251 if (!process_instance) { 253 if (!process_instance)
252 return false; 254 return false;
253 } 255
254 process_instance->RequestProcessList( 256 process_instance->RequestProcessList(
255 base::Bind(&ArcProcessService::OnReceiveProcessList, 257 base::Bind(&ArcProcessService::OnReceiveProcessList,
256 weak_ptr_factory_.GetWeakPtr(), callback)); 258 weak_ptr_factory_.GetWeakPtr(), callback));
257 return true; 259 return true;
258 } 260 }
259 261
260 void ArcProcessService::OnReceiveProcessList( 262 void ArcProcessService::OnReceiveProcessList(
261 const RequestProcessListCallback& callback, 263 const RequestProcessListCallback& callback,
262 std::vector<mojom::RunningAppProcessInfoPtr> instance_processes) { 264 std::vector<mojom::RunningAppProcessInfoPtr> instance_processes) {
263 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 265 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
264 266
265 base::PostTaskAndReplyWithResult( 267 base::PostTaskAndReplyWithResult(
266 GetTaskRunner().get(), FROM_HERE, 268 GetTaskRunner().get(), FROM_HERE,
267 base::Bind(&UpdateAndReturnProcessList, nspid_to_pid_, 269 base::Bind(&UpdateAndReturnProcessList, nspid_to_pid_,
268 base::Passed(&instance_processes)), 270 base::Passed(&instance_processes)),
269 callback); 271 callback);
270 } 272 }
271 273
272 scoped_refptr<base::SingleThreadTaskRunner> ArcProcessService::GetTaskRunner() { 274 scoped_refptr<base::SingleThreadTaskRunner> ArcProcessService::GetTaskRunner() {
273 return heavy_task_thread_.task_runner(); 275 return heavy_task_thread_.task_runner();
274 } 276 }
275 277
278 void ArcProcessService::OnInstanceReady() {
279 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
280 GetTaskRunner()->PostTask(FROM_HERE, base::Bind(&Reset, nspid_to_pid_));
281 instance_ready_ = true;
282 }
283
284 void ArcProcessService::OnInstanceClosed() {
285 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
286 instance_ready_ = false;
287 }
288
276 inline ArcProcessService::NSPidToPidMap::NSPidToPidMap() {} 289 inline ArcProcessService::NSPidToPidMap::NSPidToPidMap() {}
277 290
278 inline ArcProcessService::NSPidToPidMap::~NSPidToPidMap() {} 291 inline ArcProcessService::NSPidToPidMap::~NSPidToPidMap() {}
279 292
280 } // namespace arc 293 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698