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

Side by Side Diff: chrome/browser/extensions/extension_service.cc

Issue 2945023002: Introduce profile for lock screen apps (Closed)
Patch Set: rebase Created 3 years, 5 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_service.h" 5 #include "chrome/browser/extensions/extension_service.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <iterator> 10 #include <iterator>
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING, 348 registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING,
349 content::NotificationService::AllBrowserContextsAndSources()); 349 content::NotificationService::AllBrowserContextsAndSources());
350 registrar_.Add(this, 350 registrar_.Add(this,
351 extensions::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, 351 extensions::NOTIFICATION_EXTENSION_PROCESS_TERMINATED,
352 content::NotificationService::AllBrowserContextsAndSources()); 352 content::NotificationService::AllBrowserContextsAndSources());
353 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, 353 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
354 content::NotificationService::AllBrowserContextsAndSources()); 354 content::NotificationService::AllBrowserContextsAndSources());
355 registrar_.Add(this, 355 registrar_.Add(this,
356 chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 356 chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
357 content::Source<Profile>(profile_)); 357 content::Source<Profile>(profile_));
358 #if defined(OS_CHROMEOS)
359 // Sign in profile extension service should observe session start - when the
360 // session is started, the context's process map should be updated to consider
361 // extension scripts to run in lock screen context (as the sign-in profile
362 // will be used to host lock screen apps from that point).
363 // TODO(tbarzic): Consider introducing a profile dedicated to lock screen apps
364 // so the process map's 'is lock screen context' flag does not have to be
365 // changed when the user session starts.
366 if (chromeos::ProfileHelper::IsSigninProfile(profile_)) {
367 registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
368 content::NotificationService::AllSources());
369 }
370 #endif
371 358
372 UpgradeDetector::GetInstance()->AddObserver(this); 359 UpgradeDetector::GetInstance()->AddObserver(this);
373 360
374 extensions::ExtensionManagementFactory::GetForBrowserContext(profile_) 361 extensions::ExtensionManagementFactory::GetForBrowserContext(profile_)
375 ->AddObserver(this); 362 ->AddObserver(this);
376 363
377 // Set up the ExtensionUpdater. 364 // Set up the ExtensionUpdater.
378 if (autoupdate_enabled) { 365 if (autoupdate_enabled) {
379 int update_frequency = extensions::kDefaultUpdateFrequencySeconds; 366 int update_frequency = extensions::kDefaultUpdateFrequencySeconds;
380 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) { 367 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 TRACE_EVENT0("browser,startup", "ExtensionService::Init"); 445 TRACE_EVENT0("browser,startup", "ExtensionService::Init");
459 SCOPED_UMA_HISTOGRAM_TIMER("Extensions.ExtensionServiceInitTime"); 446 SCOPED_UMA_HISTOGRAM_TIMER("Extensions.ExtensionServiceInitTime");
460 447
461 DCHECK(!is_ready()); // Can't redo init. 448 DCHECK(!is_ready()); // Can't redo init.
462 DCHECK_EQ(registry_->enabled_extensions().size(), 0u); 449 DCHECK_EQ(registry_->enabled_extensions().size(), 0u);
463 450
464 component_loader_->LoadAll(); 451 component_loader_->LoadAll();
465 bool load_saved_extensions = true; 452 bool load_saved_extensions = true;
466 bool load_command_line_extensions = extensions_enabled_; 453 bool load_command_line_extensions = extensions_enabled_;
467 #if defined(OS_CHROMEOS) 454 #if defined(OS_CHROMEOS)
468 if (chromeos::ProfileHelper::IsSigninProfile(profile_)) { 455 if (chromeos::ProfileHelper::IsSigninProfile(profile_) ||
456 chromeos::ProfileHelper::IsLockScreenAppProfile(profile_)) {
469 load_saved_extensions = false; 457 load_saved_extensions = false;
470 load_command_line_extensions = false; 458 load_command_line_extensions = false;
471 } 459 }
472 #endif 460 #endif
473 if (load_saved_extensions) 461 if (load_saved_extensions)
474 extensions::InstalledLoader(this).LoadAllExtensions(); 462 extensions::InstalledLoader(this).LoadAllExtensions();
475 463
476 OnInstalledExtensionsLoaded(); 464 OnInstalledExtensionsLoaded();
477 465
478 LoadExtensionsFromCommandLineFlag(switches::kDisableExtensionsExcept); 466 LoadExtensionsFromCommandLineFlag(switches::kDisableExtensionsExcept);
(...skipping 1781 matching lines...) Expand 10 before | Expand all | Expand 10 after
2260 BrowserThread::PostTask( 2248 BrowserThread::PostTask(
2261 BrowserThread::IO, FROM_HERE, 2249 BrowserThread::IO, FROM_HERE,
2262 base::BindOnce(&extensions::InfoMap::UnregisterAllExtensionsInProcess, 2250 base::BindOnce(&extensions::InfoMap::UnregisterAllExtensionsInProcess,
2263 system_->info_map(), process->GetID())); 2251 system_->info_map(), process->GetID()));
2264 break; 2252 break;
2265 } 2253 }
2266 case chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED: { 2254 case chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED: {
2267 OnProfileDestructionStarted(); 2255 OnProfileDestructionStarted();
2268 break; 2256 break;
2269 } 2257 }
2270 #if defined(OS_CHROMEOS)
2271 case chrome::NOTIFICATION_SESSION_STARTED: {
2272 DCHECK(chromeos::ProfileHelper::IsSigninProfile(profile_));
2273
2274 // When the user session starts, mark the signin context as lock screen
2275 // context, as it will be used to host apps on lock screen.
2276 extensions::ProcessMap::Get(profile_)->set_is_lock_screen_context(true);
2277 BrowserThread::PostTask(
2278 BrowserThread::IO, FROM_HERE,
2279 base::BindOnce(&extensions::InfoMap::SetIsLockScreenContext,
2280 system_->info_map(), true));
2281 break;
2282 }
2283 #endif
2284 2258
2285 default: 2259 default:
2286 NOTREACHED() << "Unexpected notification type."; 2260 NOTREACHED() << "Unexpected notification type.";
2287 } 2261 }
2288 } 2262 }
2289 2263
2290 int ExtensionService::GetDisableReasonsOnInstalled(const Extension* extension) { 2264 int ExtensionService::GetDisableReasonsOnInstalled(const Extension* extension) {
2291 bool is_update_from_same_type = false; 2265 bool is_update_from_same_type = false;
2292 { 2266 {
2293 const Extension* existing_extension = 2267 const Extension* existing_extension =
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
2605 2579
2606 if (!has_orphaned_dev_tools && !is_component_extension) 2580 if (!has_orphaned_dev_tools && !is_component_extension)
2607 return; 2581 return;
2608 2582
2609 // Wake up the event page by posting a dummy task. 2583 // Wake up the event page by posting a dummy task.
2610 extensions::LazyBackgroundTaskQueue* queue = 2584 extensions::LazyBackgroundTaskQueue* queue =
2611 extensions::LazyBackgroundTaskQueue::Get(profile_); 2585 extensions::LazyBackgroundTaskQueue::Get(profile_);
2612 queue->AddPendingTask(profile_, extension->id(), 2586 queue->AddPendingTask(profile_, extension->id(),
2613 base::Bind(&DoNothingWithExtensionHost)); 2587 base::Bind(&DoNothingWithExtensionHost));
2614 } 2588 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/chrome_process_manager_delegate.cc ('k') | chrome/browser/extensions/extension_system_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698