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

Side by Side Diff: chrome/browser/service/service_process_control.cc

Issue 3872002: Thread IO safety: file_util annotated, IO thread blocked from doing IO (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 10 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/service/service_process_control.h" 5 #include "chrome/browser/service/service_process_control.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/process_util.h" 9 #include "base/process_util.h"
10 #include "base/stl_util-inl.h" 10 #include "base/stl_util-inl.h"
11 #include "base/thread.h" 11 #include "base/thread.h"
12 #include "base/thread_restrictions.h"
12 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/browser_thread.h" 14 #include "chrome/browser/browser_thread.h"
14 #include "chrome/browser/io_thread.h" 15 #include "chrome/browser/io_thread.h"
15 #include "chrome/browser/upgrade_detector.h" 16 #include "chrome/browser/upgrade_detector.h"
16 #include "chrome/common/child_process_host.h" 17 #include "chrome/common/child_process_host.h"
17 #include "chrome/common/chrome_switches.h" 18 #include "chrome/common/chrome_switches.h"
18 #include "chrome/common/notification_service.h" 19 #include "chrome/common/notification_service.h"
19 #include "chrome/common/service_messages.h" 20 #include "chrome/common/service_messages.h"
20 #include "chrome/common/service_process_util.h" 21 #include "chrome/common/service_process_util.h"
21 22
(...skipping 26 matching lines...) Expand all
48 void DoRun(Task* task) { 49 void DoRun(Task* task) {
49 base::LaunchApp(*cmd_line_.get(), false, true, NULL); 50 base::LaunchApp(*cmd_line_.get(), false, true, NULL);
50 BrowserThread::PostTask( 51 BrowserThread::PostTask(
51 BrowserThread::IO, FROM_HERE, 52 BrowserThread::IO, FROM_HERE,
52 NewRunnableMethod(this, &Launcher::DoDetectLaunched, task)); 53 NewRunnableMethod(this, &Launcher::DoDetectLaunched, task));
53 } 54 }
54 55
55 void DoDetectLaunched(Task* task) { 56 void DoDetectLaunched(Task* task) {
56 const uint32 kMaxLaunchDetectRetries = 10; 57 const uint32 kMaxLaunchDetectRetries = 10;
57 58
58 launched_ = CheckServiceProcessReady(); 59 {
60 // We should not be doing blocking disk IO from this thread!
61 // Temporarily allowed until we fix
62 // http://code.google.com/p/chromium/issues/detail?id=60207
63 base::ThreadRestrictions::ScopedAllowIO allow_io;
64 launched_ = CheckServiceProcessReady();
65 }
66
59 if (launched_ || (retry_count_ >= kMaxLaunchDetectRetries)) { 67 if (launched_ || (retry_count_ >= kMaxLaunchDetectRetries)) {
60 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 68 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
61 NewRunnableMethod(this, &Launcher::Notify, task)); 69 NewRunnableMethod(this, &Launcher::Notify, task));
62 return; 70 return;
63 } 71 }
64 retry_count_++; 72 retry_count_++;
65 // If the service process is not launched yet then check again in 2 seconds. 73 // If the service process is not launched yet then check again in 2 seconds.
66 const int kDetectLaunchRetry = 2000; 74 const int kDetectLaunchRetry = 2000;
67 MessageLoop::current()->PostDelayedTask( 75 MessageLoop::current()->PostDelayedTask(
68 FROM_HERE, 76 FROM_HERE,
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 } 305 }
298 306
299 bool ServiceProcessControl::GetCloudPrintProxyStatus( 307 bool ServiceProcessControl::GetCloudPrintProxyStatus(
300 Callback2<bool, std::string>::Type* cloud_print_status_callback) { 308 Callback2<bool, std::string>::Type* cloud_print_status_callback) {
301 DCHECK(cloud_print_status_callback); 309 DCHECK(cloud_print_status_callback);
302 cloud_print_status_callback_.reset(cloud_print_status_callback); 310 cloud_print_status_callback_.reset(cloud_print_status_callback);
303 return Send(new ServiceMsg_IsCloudPrintProxyEnabled); 311 return Send(new ServiceMsg_IsCloudPrintProxyEnabled);
304 } 312 }
305 313
306 DISABLE_RUNNABLE_METHOD_REFCOUNT(ServiceProcessControl); 314 DISABLE_RUNNABLE_METHOD_REFCOUNT(ServiceProcessControl);
OLDNEW
« no previous file with comments | « chrome/browser/printing/print_dialog_cloud_uitest.cc ('k') | chrome/common/extensions/extension_resource.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698