Index: chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc |
diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc |
index 67e87f512441445a0d4c0a0415efe44c2c233804..23eaa568aedd50f579727c46bb66f6efea6e3d28 100644 |
--- a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc |
+++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc |
@@ -36,6 +36,14 @@ namespace chromeos { |
namespace { |
+ExtensionService* GetDefaultExtensionService() { |
+ Profile* default_profile = ProfileManager::GetDefaultProfile(); |
+ if (!default_profile) |
+ return NULL; |
+ return extensions::ExtensionSystem::Get( |
+ default_profile)->extension_service(); |
+} |
+ |
typedef base::Callback<void( |
scoped_refptr<Extension>, |
const base::FilePath&)> UnpackCallback; |
@@ -96,6 +104,12 @@ void ScreensaverUnpackerClient::LoadScreensaverExtension( |
const base::FilePath& screensaver_extension_path) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); |
+ ExtensionService* service = GetDefaultExtensionService(); |
+ // TODO(rkc): This is a HACK, please remove this method from extension |
+ // service once this code is deprecated. See crbug.com/280363 |
+ if (service) |
+ service->disable_garbage_collection(); |
+ |
std::string error; |
scoped_refptr<Extension> screensaver_extension = |
extension_file_util::LoadExtension(screensaver_extension_path, |
@@ -153,6 +167,12 @@ KioskModeScreensaver::KioskModeScreensaver() |
KioskModeScreensaver::~KioskModeScreensaver() { |
// If the extension was unpacked. |
if (!extension_base_path_.empty()) { |
+ ExtensionService* service = GetDefaultExtensionService(); |
+ // TODO(rkc): This is a HACK, please remove this method from extension |
+ // service once this code is deprecated. See crbug.com/280363 |
+ if (service) |
+ service->enable_garbage_collection(); |
+ |
// Delete it. |
content::BrowserThread::PostTask( |
content::BrowserThread::FILE, |
@@ -183,8 +203,8 @@ void KioskModeScreensaver::ScreensaverPathCallback( |
Profile* default_profile = ProfileManager::GetDefaultProfile(); |
if (!default_profile) |
return; |
- base::FilePath extensions_dir = extensions::ExtensionSystem::Get( |
- default_profile)->extension_service()->install_directory(); |
+ base::FilePath extensions_dir = |
+ GetDefaultExtensionService()->install_directory(); |
scoped_refptr<SandboxedUnpacker> screensaver_unpacker( |
new SandboxedUnpacker( |
screensaver_crx, |