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

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

Issue 2159103006: Add policy provider that would filter extensions/apps allowed on the (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a way to bypass checks for tests Created 4 years, 1 month 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 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_system_impl.h" 5 #include "chrome/browser/extensions/extension_system_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base_switches.h" 9 #include "base/base_switches.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #if defined(ENABLE_NOTIFICATIONS) 59 #if defined(ENABLE_NOTIFICATIONS)
60 #include "chrome/browser/notifications/notifier_state_tracker.h" 60 #include "chrome/browser/notifications/notifier_state_tracker.h"
61 #include "chrome/browser/notifications/notifier_state_tracker_factory.h" 61 #include "chrome/browser/notifications/notifier_state_tracker_factory.h"
62 #include "ui/message_center/notifier_settings.h" 62 #include "ui/message_center/notifier_settings.h"
63 #endif 63 #endif
64 64
65 #if defined(OS_CHROMEOS) 65 #if defined(OS_CHROMEOS)
66 #include "chrome/browser/app_mode/app_mode_utils.h" 66 #include "chrome/browser/app_mode/app_mode_utils.h"
67 #include "chrome/browser/chromeos/app_mode/kiosk_app_update_install_gate.h" 67 #include "chrome/browser/chromeos/app_mode/kiosk_app_update_install_gate.h"
68 #include "chrome/browser/chromeos/extensions/device_local_account_management_pol icy_provider.h" 68 #include "chrome/browser/chromeos/extensions/device_local_account_management_pol icy_provider.h"
69 #include "chrome/browser/chromeos/extensions/signin_screen_policy_provider.h"
69 #include "chrome/browser/chromeos/policy/device_local_account.h" 70 #include "chrome/browser/chromeos/policy/device_local_account.h"
71 #include "chrome/browser/chromeos/profiles/profile_helper.h"
70 #include "chromeos/chromeos_switches.h" 72 #include "chromeos/chromeos_switches.h"
71 #include "chromeos/login/login_state.h" 73 #include "chromeos/login/login_state.h"
72 #include "components/user_manager/user.h" 74 #include "components/user_manager/user.h"
73 #include "components/user_manager/user_manager.h" 75 #include "components/user_manager/user_manager.h"
74 #endif 76 #endif
75 77
76 using content::BrowserThread; 78 using content::BrowserThread;
77 79
78 namespace extensions { 80 namespace extensions {
79 81
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 const user_manager::User* user = 123 const user_manager::User* user =
122 user_manager::UserManager::Get()->GetActiveUser(); 124 user_manager::UserManager::Get()->GetActiveUser();
123 policy::DeviceLocalAccount::Type device_local_account_type; 125 policy::DeviceLocalAccount::Type device_local_account_type;
124 if (user && 126 if (user &&
125 policy::IsDeviceLocalAccountUser(user->GetAccountId().GetUserEmail(), 127 policy::IsDeviceLocalAccountUser(user->GetAccountId().GetUserEmail(),
126 &device_local_account_type)) { 128 &device_local_account_type)) {
127 device_local_account_management_policy_provider_.reset( 129 device_local_account_management_policy_provider_.reset(
128 new chromeos::DeviceLocalAccountManagementPolicyProvider( 130 new chromeos::DeviceLocalAccountManagementPolicyProvider(
129 device_local_account_type)); 131 device_local_account_type));
130 } 132 }
131 #endif // defined(OS_CHROMEOS) 133 // We can not perform check for Signin Profile here, as it would result in
134 // recursive call upon creation of Signin Profile, so we will create
135 // SigninScreenPolicyProvider lazily in RegisterManagementPolicyProviders.
136 #endif
132 } 137 }
133 138
134 void ExtensionSystemImpl::Shared::RegisterManagementPolicyProviders() { 139 void ExtensionSystemImpl::Shared::RegisterManagementPolicyProviders() {
135 management_policy_->RegisterProviders( 140 management_policy_->RegisterProviders(
136 ExtensionManagementFactory::GetForBrowserContext(profile_) 141 ExtensionManagementFactory::GetForBrowserContext(profile_)
137 ->GetProviders()); 142 ->GetProviders());
138 143
139 #if defined(OS_CHROMEOS) 144 #if defined(OS_CHROMEOS)
145 // Lazy creation of SigninScreenPolicyProvider.
146 if (!signin_screen_policy_provider_) {
147 if (profile_ ==
148 chromeos::ProfileHelper::GetSigninProfile()->GetOriginalProfile()) {
Devlin 2016/11/11 16:35:08 nit: prefer Profile::IsSameProfile()
Denis Kuznetsov (DE-MUC) 2016/11/11 21:26:34 Acknowledged.
149 signin_screen_policy_provider_.reset(
150 new chromeos::SigninScreenPolicyProvider());
151 }
152 }
153
140 if (device_local_account_management_policy_provider_) { 154 if (device_local_account_management_policy_provider_) {
141 management_policy_->RegisterProvider( 155 management_policy_->RegisterProvider(
142 device_local_account_management_policy_provider_.get()); 156 device_local_account_management_policy_provider_.get());
143 } 157 }
158 if (signin_screen_policy_provider_)
159 management_policy_->RegisterProvider(signin_screen_policy_provider_.get());
144 #endif // defined(OS_CHROMEOS) 160 #endif // defined(OS_CHROMEOS)
145 161
146 management_policy_->RegisterProvider(InstallVerifier::Get(profile_)); 162 management_policy_->RegisterProvider(InstallVerifier::Get(profile_));
147 } 163 }
148 164
149 void ExtensionSystemImpl::Shared::InitInstallGates() { 165 void ExtensionSystemImpl::Shared::InitInstallGates() {
150 update_install_gate_.reset(new UpdateInstallGate(extension_service_.get())); 166 update_install_gate_.reset(new UpdateInstallGate(extension_service_.get()));
151 extension_service_->RegisterInstallGate( 167 extension_service_->RegisterInstallGate(
152 ExtensionPrefs::DELAY_REASON_WAIT_FOR_IDLE, update_install_gate_.get()); 168 ExtensionPrefs::DELAY_REASON_WAIT_FOR_IDLE, update_install_gate_.get());
153 extension_service_->RegisterInstallGate( 169 extension_service_->RegisterInstallGate(
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( 465 void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts(
450 const std::string& extension_id, 466 const std::string& extension_id,
451 const UnloadedExtensionInfo::Reason reason) { 467 const UnloadedExtensionInfo::Reason reason) {
452 BrowserThread::PostTask( 468 BrowserThread::PostTask(
453 BrowserThread::IO, 469 BrowserThread::IO,
454 FROM_HERE, 470 FROM_HERE,
455 base::Bind(&InfoMap::RemoveExtension, info_map(), extension_id, reason)); 471 base::Bind(&InfoMap::RemoveExtension, info_map(), extension_id, reason));
456 } 472 }
457 473
458 } // namespace extensions 474 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698