OLD | NEW |
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/extensions/crx_installer.h" | 5 #include "chrome/browser/extensions/crx_installer.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
11 #include "base/scoped_temp_dir.h" | 11 #include "base/scoped_temp_dir.h" |
12 #include "base/singleton.h" | 12 #include "base/singleton.h" |
13 #include "base/stringprintf.h" | 13 #include "base/stringprintf.h" |
14 #include "base/task.h" | 14 #include "base/task.h" |
| 15 #include "base/thread_restrictions.h" |
15 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
16 #include "base/version.h" | 17 #include "base/version.h" |
17 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
18 #include "chrome/browser/browser_thread.h" | 19 #include "chrome/browser/browser_thread.h" |
19 #include "chrome/browser/extensions/convert_user_script.h" | 20 #include "chrome/browser/extensions/convert_user_script.h" |
20 #include "chrome/browser/extensions/extensions_service.h" | 21 #include "chrome/browser/extensions/extensions_service.h" |
21 #include "chrome/browser/extensions/extension_error_reporter.h" | 22 #include "chrome/browser/extensions/extension_error_reporter.h" |
22 #include "chrome/browser/profile.h" | 23 #include "chrome/browser/profile.h" |
23 #include "chrome/browser/shell_integration.h" | 24 #include "chrome/browser/shell_integration.h" |
24 #include "chrome/browser/web_applications/web_app.h" | 25 #include "chrome/browser/web_applications/web_app.h" |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 | 106 |
106 // Make sure the UI is deleted on the ui thread. | 107 // Make sure the UI is deleted on the ui thread. |
107 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, client_); | 108 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, client_); |
108 client_ = NULL; | 109 client_ = NULL; |
109 } | 110 } |
110 | 111 |
111 void CrxInstaller::InstallCrx(const FilePath& source_file) { | 112 void CrxInstaller::InstallCrx(const FilePath& source_file) { |
112 source_file_ = source_file; | 113 source_file_ = source_file; |
113 | 114 |
114 FilePath user_data_temp_dir; | 115 FilePath user_data_temp_dir; |
115 CHECK(PathService::Get(chrome::DIR_USER_DATA_TEMP, &user_data_temp_dir)); | 116 { |
| 117 // We shouldn't be doing disk IO on the UI thread. |
| 118 // http://code.google.com/p/chromium/issues/detail?id=60634 |
| 119 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 120 CHECK(PathService::Get(chrome::DIR_USER_DATA_TEMP, &user_data_temp_dir)); |
| 121 } |
116 | 122 |
117 scoped_refptr<SandboxedExtensionUnpacker> unpacker( | 123 scoped_refptr<SandboxedExtensionUnpacker> unpacker( |
118 new SandboxedExtensionUnpacker( | 124 new SandboxedExtensionUnpacker( |
119 source_file, | 125 source_file, |
120 user_data_temp_dir, | 126 user_data_temp_dir, |
121 g_browser_process->resource_dispatcher_host(), | 127 g_browser_process->resource_dispatcher_host(), |
122 this)); | 128 this)); |
123 | 129 |
124 BrowserThread::PostTask( | 130 BrowserThread::PostTask( |
125 BrowserThread::FILE, FROM_HERE, | 131 BrowserThread::FILE, FROM_HERE, |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 client_->OnInstallSuccess(extension_.get()); | 405 client_->OnInstallSuccess(extension_.get()); |
400 | 406 |
401 // Tell the frontend about the installation and hand off ownership of | 407 // Tell the frontend about the installation and hand off ownership of |
402 // extension_ to it. | 408 // extension_ to it. |
403 frontend_->OnExtensionInstalled(extension_.release(), | 409 frontend_->OnExtensionInstalled(extension_.release(), |
404 allow_privilege_increase_); | 410 allow_privilege_increase_); |
405 | 411 |
406 // We're done. We don't post any more tasks to ourselves so we are deleted | 412 // We're done. We don't post any more tasks to ourselves so we are deleted |
407 // soon. | 413 // soon. |
408 } | 414 } |
OLD | NEW |