Index: chrome/browser/extensions/chrome_process_manager_delegate.cc |
diff --git a/chrome/browser/extensions/chrome_process_manager_delegate.cc b/chrome/browser/extensions/chrome_process_manager_delegate.cc |
index e5804aab7c89b436ade61cc18225ba081b7f3229..4577cfc816935d2a892848be9428f9f1b94e66f4 100644 |
--- a/chrome/browser/extensions/chrome_process_manager_delegate.cc |
+++ b/chrome/browser/extensions/chrome_process_manager_delegate.cc |
@@ -9,6 +9,7 @@ |
#include "build/build_config.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/extensions/extension_management.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/ui/browser.h" |
@@ -21,6 +22,10 @@ |
#include "extensions/browser/process_manager_factory.h" |
#include "extensions/common/one_shot_event.h" |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/chromeos/profiles/profile_helper.h" |
+#endif |
+ |
namespace extensions { |
ChromeProcessManagerDelegate::ChromeProcessManagerDelegate() { |
@@ -45,8 +50,22 @@ bool ChromeProcessManagerDelegate::IsBackgroundPageAllowed( |
bool is_normal_session = !profile->IsGuestSession() && |
!profile->IsSystemProfile(); |
#if defined(OS_CHROMEOS) |
- is_normal_session = is_normal_session && |
- user_manager::UserManager::Get()->IsUserLoggedIn(); |
+ if (is_normal_session) { |
+ const bool user_logged_in = |
+ user_manager::UserManager::Get()->IsUserLoggedIn(); |
+ const bool is_signin_profile = |
+ chromeos::ProfileHelper::IsSigninProfile(profile); |
+ const bool login_apps_enabled = |
+ base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableLoginApps); |
+ const bool login_apps_installed = |
+ !ExtensionManagementFactory::GetForBrowserContext(profile) |
+ ->GetForceInstallList() |
+ ->empty(); |
+ is_normal_session = |
+ user_logged_in || |
+ (is_signin_profile && login_apps_enabled && login_apps_installed); |
+ } |
#endif |
// Disallow if the current session is a Guest mode session or login screen but |