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

Side by Side Diff: chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.cc

Issue 303693011: Add garbage collection for shared extensions on Chrome OS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed Chromium OS valgrind bot Created 6 years, 6 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/users/fake_user_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chromeos/kiosk_mode/kiosk_mode_screensaver.h" 5 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
6 6
7 #include "ash/screensaver/screensaver_view.h" 7 #include "ash/screensaver/screensaver_view.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/lazy_instance.h" 11 #include "base/lazy_instance.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
14 #include "chrome/browser/chrome_notification_types.h" 14 #include "chrome/browser/chrome_notification_types.h"
15 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" 15 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
16 #include "chrome/browser/chromeos/login/existing_user_controller.h" 16 #include "chrome/browser/chromeos/login/existing_user_controller.h"
17 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 17 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
18 #include "chrome/browser/chromeos/policy/app_pack_updater.h" 18 #include "chrome/browser/chromeos/policy/app_pack_updater.h"
19 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 19 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
20 #include "chrome/browser/chromeos/profiles/profile_helper.h" 20 #include "chrome/browser/chromeos/profiles/profile_helper.h"
21 #include "chrome/browser/extensions/extension_garbage_collector.h" 21 #include "chrome/browser/extensions/extension_garbage_collector_chromeos.h"
22 #include "chrome/browser/extensions/extension_service.h" 22 #include "chrome/browser/extensions/extension_service.h"
23 #include "chrome/browser/extensions/sandboxed_unpacker.h" 23 #include "chrome/browser/extensions/sandboxed_unpacker.h"
24 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 24 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
25 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" 25 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
26 #include "chromeos/login/login_state.h" 26 #include "chromeos/login/login_state.h"
27 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
28 #include "content/public/browser/notification_service.h" 28 #include "content/public/browser/notification_service.h"
29 #include "extensions/browser/extension_system.h" 29 #include "extensions/browser/extension_system.h"
30 #include "extensions/common/extension.h" 30 #include "extensions/common/extension.h"
31 #include "extensions/common/file_util.h" 31 #include "extensions/common/file_util.h"
32 #include "ui/wm/core/user_activity_detector.h" 32 #include "ui/wm/core/user_activity_detector.h"
33 33
34 using extensions::Extension; 34 using extensions::Extension;
35 using extensions::ExtensionGarbageCollector; 35 using extensions::ExtensionGarbageCollectorChromeOS;
36 using extensions::SandboxedUnpacker; 36 using extensions::SandboxedUnpacker;
37 37
38 namespace chromeos { 38 namespace chromeos {
39 39
40 namespace { 40 namespace {
41 41
42 ExtensionService* GetDefaultExtensionService() { 42 ExtensionService* GetDefaultExtensionService() {
43 Profile* default_profile = ProfileHelper::GetSigninProfile(); 43 Profile* default_profile = ProfileHelper::GetSigninProfile();
44 if (!default_profile) 44 if (!default_profile)
45 return NULL; 45 return NULL;
46 return extensions::ExtensionSystem::Get( 46 return extensions::ExtensionSystem::Get(
47 default_profile)->extension_service(); 47 default_profile)->extension_service();
48 } 48 }
49 49
50 ExtensionGarbageCollector* GetDefaultExtensionGarbageCollector() { 50 ExtensionGarbageCollectorChromeOS* GetDefaultExtensionGarbageCollector() {
51 Profile* default_profile = ProfileHelper::GetSigninProfile(); 51 Profile* default_profile = ProfileHelper::GetSigninProfile();
52 if (!default_profile) 52 if (!default_profile)
53 return NULL; 53 return NULL;
54 return ExtensionGarbageCollector::Get(default_profile); 54 return ExtensionGarbageCollectorChromeOS::Get(default_profile);
55 } 55 }
56 56
57 typedef base::Callback<void( 57 typedef base::Callback<void(
58 scoped_refptr<Extension>, 58 scoped_refptr<Extension>,
59 const base::FilePath&)> UnpackCallback; 59 const base::FilePath&)> UnpackCallback;
60 60
61 class ScreensaverUnpackerClient 61 class ScreensaverUnpackerClient
62 : public extensions::SandboxedUnpackerClient { 62 : public extensions::SandboxedUnpackerClient {
63 public: 63 public:
64 ScreensaverUnpackerClient(const base::FilePath& crx_path, 64 ScreensaverUnpackerClient(const base::FilePath& crx_path,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 NotifyAppPackOfDamagedFile(); 109 NotifyAppPackOfDamagedFile();
110 } 110 }
111 111
112 void ScreensaverUnpackerClient::LoadScreensaverExtension( 112 void ScreensaverUnpackerClient::LoadScreensaverExtension(
113 const base::FilePath& extension_base_path, 113 const base::FilePath& extension_base_path,
114 const base::FilePath& screensaver_extension_path) { 114 const base::FilePath& screensaver_extension_path) {
115 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); 115 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE));
116 116
117 // TODO(rkc): This is a HACK, please remove this method from extension 117 // TODO(rkc): This is a HACK, please remove this method from extension
118 // service once this code is deprecated. See crbug.com/280363 118 // service once this code is deprecated. See crbug.com/280363
119 ExtensionGarbageCollector* gc = GetDefaultExtensionGarbageCollector(); 119 ExtensionGarbageCollectorChromeOS* gc = GetDefaultExtensionGarbageCollector();
120 if (gc) 120 if (gc)
121 gc->disable_garbage_collection(); 121 gc->disable_garbage_collection();
122 122
123 std::string error; 123 std::string error;
124 scoped_refptr<Extension> screensaver_extension = 124 scoped_refptr<Extension> screensaver_extension =
125 extensions::file_util::LoadExtension(screensaver_extension_path, 125 extensions::file_util::LoadExtension(screensaver_extension_path,
126 extensions::Manifest::COMPONENT, 126 extensions::Manifest::COMPONENT,
127 Extension::NO_FLAGS, 127 Extension::NO_FLAGS,
128 &error); 128 &error);
129 if (!screensaver_extension.get()) { 129 if (!screensaver_extension.get()) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 KioskModeScreensaver::~KioskModeScreensaver() { 177 KioskModeScreensaver::~KioskModeScreensaver() {
178 // If we are shutting down the system might already be gone and we shouldn't 178 // If we are shutting down the system might already be gone and we shouldn't
179 // do anything (see crbug.com/288216). 179 // do anything (see crbug.com/288216).
180 if (!g_browser_process || g_browser_process->IsShuttingDown()) 180 if (!g_browser_process || g_browser_process->IsShuttingDown())
181 return; 181 return;
182 182
183 // If the extension was unpacked. 183 // If the extension was unpacked.
184 if (!extension_base_path_.empty()) { 184 if (!extension_base_path_.empty()) {
185 // TODO(rkc): This is a HACK, please remove this method from extension 185 // TODO(rkc): This is a HACK, please remove this method from extension
186 // service once this code is deprecated. See crbug.com/280363 186 // service once this code is deprecated. See crbug.com/280363
187 ExtensionGarbageCollector* gc = GetDefaultExtensionGarbageCollector(); 187 ExtensionGarbageCollectorChromeOS* gc =
188 GetDefaultExtensionGarbageCollector();
188 if (gc) 189 if (gc)
189 gc->enable_garbage_collection(); 190 gc->enable_garbage_collection();
190 191
191 // Delete it. 192 // Delete it.
192 content::BrowserThread::PostTask( 193 content::BrowserThread::PostTask(
193 content::BrowserThread::FILE, 194 content::BrowserThread::FILE,
194 FROM_HERE, 195 FROM_HERE,
195 base::Bind( 196 base::Bind(
196 &extensions::file_util::DeleteFile, extension_base_path_, true)); 197 &extensions::file_util::DeleteFile, extension_base_path_, true));
197 } 198 }
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 309
309 g_kiosk_mode_screensaver = new KioskModeScreensaver(); 310 g_kiosk_mode_screensaver = new KioskModeScreensaver();
310 } 311 }
311 312
312 void ShutdownKioskModeScreensaver() { 313 void ShutdownKioskModeScreensaver() {
313 delete g_kiosk_mode_screensaver; 314 delete g_kiosk_mode_screensaver;
314 g_kiosk_mode_screensaver = NULL; 315 g_kiosk_mode_screensaver = NULL;
315 } 316 }
316 317
317 } // namespace chromeos 318 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/users/fake_user_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698