| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/extension_garbage_collector.h" | 5 #include "chrome/browser/extensions/extension_garbage_collector.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/files/file_enumerator.h" | 8 #include "base/files/file_enumerator.h" |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 base::FileEnumerator::DIRECTORIES); | 152 base::FileEnumerator::DIRECTORIES); |
| 153 | 153 |
| 154 for (base::FilePath extension_path = enumerator.Next(); | 154 for (base::FilePath extension_path = enumerator.Next(); |
| 155 !extension_path.empty(); | 155 !extension_path.empty(); |
| 156 extension_path = enumerator.Next()) { | 156 extension_path = enumerator.Next()) { |
| 157 CheckExtensionDirectory(extension_path, extension_paths); | 157 CheckExtensionDirectory(extension_path, extension_paths); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 void ExtensionGarbageCollector::GarbageCollectExtensions() { | 161 void ExtensionGarbageCollector::GarbageCollectExtensions() { |
| 162 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 162 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 163 | 163 |
| 164 ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(context_); | 164 ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(context_); |
| 165 DCHECK(extension_prefs); | 165 DCHECK(extension_prefs); |
| 166 | 166 |
| 167 if (extension_prefs->pref_service()->ReadOnly()) | 167 if (extension_prefs->pref_service()->ReadOnly()) |
| 168 return; | 168 return; |
| 169 | 169 |
| 170 if (crx_installs_in_progress_ > 0) { | 170 if (crx_installs_in_progress_ > 0) { |
| 171 // Don't garbage collect while there are installations in progress, | 171 // Don't garbage collect while there are installations in progress, |
| 172 // which may be using the temporary installation directory. Try to garbage | 172 // which may be using the temporary installation directory. Try to garbage |
| (...skipping 25 matching lines...) Expand all Loading... |
| 198 if (!service->GetFileTaskRunner()->PostTask( | 198 if (!service->GetFileTaskRunner()->PostTask( |
| 199 FROM_HERE, | 199 FROM_HERE, |
| 200 base::Bind(&GarbageCollectExtensionsOnFileThread, | 200 base::Bind(&GarbageCollectExtensionsOnFileThread, |
| 201 service->install_directory(), | 201 service->install_directory(), |
| 202 extension_paths))) { | 202 extension_paths))) { |
| 203 NOTREACHED(); | 203 NOTREACHED(); |
| 204 } | 204 } |
| 205 } | 205 } |
| 206 | 206 |
| 207 void ExtensionGarbageCollector::GarbageCollectIsolatedStorageIfNeeded() { | 207 void ExtensionGarbageCollector::GarbageCollectIsolatedStorageIfNeeded() { |
| 208 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 208 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 209 | 209 |
| 210 ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(context_); | 210 ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(context_); |
| 211 DCHECK(extension_prefs); | 211 DCHECK(extension_prefs); |
| 212 if (!extension_prefs->NeedsStorageGarbageCollection()) | 212 if (!extension_prefs->NeedsStorageGarbageCollection()) |
| 213 return; | 213 return; |
| 214 extension_prefs->SetNeedsStorageGarbageCollection(false); | 214 extension_prefs->SetNeedsStorageGarbageCollection(false); |
| 215 | 215 |
| 216 scoped_ptr<base::hash_set<base::FilePath> > active_paths( | 216 scoped_ptr<base::hash_set<base::FilePath> > active_paths( |
| 217 new base::hash_set<base::FilePath>()); | 217 new base::hash_set<base::FilePath>()); |
| 218 scoped_ptr<ExtensionSet> extensions = | 218 scoped_ptr<ExtensionSet> extensions = |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 // accounting. | 252 // accounting. |
| 253 NOTREACHED(); | 253 NOTREACHED(); |
| 254 | 254 |
| 255 // Don't let the count go negative to avoid garbage collecting when | 255 // Don't let the count go negative to avoid garbage collecting when |
| 256 // an install is actually in progress. | 256 // an install is actually in progress. |
| 257 crx_installs_in_progress_ = 0; | 257 crx_installs_in_progress_ = 0; |
| 258 } | 258 } |
| 259 } | 259 } |
| 260 | 260 |
| 261 } // namespace extensions | 261 } // namespace extensions |
| OLD | NEW |