Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #ifndef CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ |
| 6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ | 6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 // extensions. | 118 // extensions. |
| 119 bool AccessRequestsEnabled(); | 119 bool AccessRequestsEnabled(); |
| 120 | 120 |
| 121 // Adds an access request for the given URL. | 121 // Adds an access request for the given URL. |
| 122 void AddURLAccessRequest(const GURL& url, const SuccessCallback& callback); | 122 void AddURLAccessRequest(const GURL& url, const SuccessCallback& callback); |
| 123 | 123 |
| 124 // Reports |url| to the SafeSearch API, because the user thinks this is an | 124 // Reports |url| to the SafeSearch API, because the user thinks this is an |
| 125 // inappropriate URL. | 125 // inappropriate URL. |
| 126 void ReportURL(const GURL& url, const SuccessCallback& callback); | 126 void ReportURL(const GURL& url, const SuccessCallback& callback); |
| 127 | 127 |
| 128 // Adds an install request for the given WebStore item (App/Extension). | |
| 129 void AddExtensionInstallRequest(const std::string& extension_id, | |
| 130 const base::Version& version, | |
| 131 const SuccessCallback& callback); | |
| 132 | |
| 133 // Same as above, but without a callback, just logging errors on failure. | |
| 134 void AddExtensionInstallRequest(const std::string& extension_id, | |
| 135 const base::Version& version); | |
| 136 | |
| 128 // Adds an update request for the given WebStore item (App/Extension). | 137 // Adds an update request for the given WebStore item (App/Extension). |
| 129 void AddExtensionUpdateRequest(const std::string& extension_id, | 138 void AddExtensionUpdateRequest(const std::string& extension_id, |
| 130 const base::Version& version, | 139 const base::Version& version, |
| 131 const SuccessCallback& callback); | 140 const SuccessCallback& callback); |
| 132 | 141 |
| 133 // Same as above, but without a callback, just logging errors on failure. | 142 // Same as above, but without a callback, just logging errors on failure. |
| 134 void AddExtensionUpdateRequest(const std::string& extension_id, | 143 void AddExtensionUpdateRequest(const std::string& extension_id, |
| 135 const base::Version& version); | 144 const base::Version& version); |
| 136 | 145 |
| 137 // Get the string used to identify an extension update request. Public for | 146 // Get the string used to identify an extension install or update request. |
| 138 // testing. | 147 // Public for testing. |
| 139 static std::string GetExtensionUpdateRequestId( | 148 static std::string GetExtensionRequestId(const std::string& extension_id, |
| 140 const std::string& extension_id, | 149 const base::Version& version); |
| 141 const base::Version& version); | |
| 142 | 150 |
| 143 // Returns the email address of the custodian. | 151 // Returns the email address of the custodian. |
| 144 std::string GetCustodianEmailAddress() const; | 152 std::string GetCustodianEmailAddress() const; |
| 145 | 153 |
| 146 // Returns the name of the custodian, or the email address if the name is | 154 // Returns the name of the custodian, or the email address if the name is |
| 147 // empty. | 155 // empty. |
| 148 std::string GetCustodianName() const; | 156 std::string GetCustodianName() const; |
| 149 | 157 |
| 150 // Returns the email address of the second custodian, or the empty string | 158 // Returns the email address of the second custodian, or the empty string |
| 151 // if there is no second custodian. | 159 // if there is no second custodian. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 207 #endif // !defined(OS_ANDROID) | 215 #endif // !defined(OS_ANDROID) |
| 208 | 216 |
| 209 // SupervisedUserURLFilter::Observer implementation: | 217 // SupervisedUserURLFilter::Observer implementation: |
| 210 void OnSiteListUpdated() override; | 218 void OnSiteListUpdated() override; |
| 211 | 219 |
| 212 private: | 220 private: |
| 213 friend class SupervisedUserServiceExtensionTestBase; | 221 friend class SupervisedUserServiceExtensionTestBase; |
| 214 friend class SupervisedUserServiceFactory; | 222 friend class SupervisedUserServiceFactory; |
| 215 FRIEND_TEST_ALL_PREFIXES(SingleClientSupervisedUserSettingsSyncTest, Sanity); | 223 FRIEND_TEST_ALL_PREFIXES(SingleClientSupervisedUserSettingsSyncTest, Sanity); |
| 216 FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceTest, ClearOmitOnRegistration); | 224 FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceTest, ClearOmitOnRegistration); |
| 217 FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceExtensionTest, | 225 FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceTest, |
| 218 ExtensionManagementPolicyProvider); | 226 ChangesIncludedSessionOnChangedSettings); |
| 227 FRIEND_TEST_ALL_PREFIXES(SupervisedUserServiceTest, | |
| 228 ChangesSyncSessionStateOnChangedSettings); | |
|
Marc Treib
2016/05/24 09:54:58
Any reason for adding these unrelated tests here?
mamir
2016/06/03 09:45:55
Nop :-)
I think they came here during a rebase.
| |
| 229 FRIEND_TEST_ALL_PREFIXES( | |
| 230 SupervisedUserServiceExtensionTest, | |
| 231 ExtensionManagementPolicyProviderWithDisabledSUInitiatedInstalls); | |
| 232 FRIEND_TEST_ALL_PREFIXES( | |
| 233 SupervisedUserServiceExtensionTest, | |
| 234 ExtensionManagementPolicyProviderWithEnabledSUInitiatedInstalls); | |
| 235 | |
| 219 | 236 |
| 220 using CreatePermissionRequestCallback = | 237 using CreatePermissionRequestCallback = |
| 221 base::Callback<void(PermissionRequestCreator*, const SuccessCallback&)>; | 238 base::Callback<void(PermissionRequestCreator*, const SuccessCallback&)>; |
| 222 | 239 |
| 223 // A bridge from the UI thread to the SupervisedUserURLFilters, one of which | 240 // A bridge from the UI thread to the SupervisedUserURLFilters, one of which |
| 224 // lives on the IO thread. This class mediates access to them and makes sure | 241 // lives on the IO thread. This class mediates access to them and makes sure |
| 225 // they are kept in sync. | 242 // they are kept in sync. |
| 226 class URLFilterContext { | 243 class URLFilterContext { |
| 227 public: | 244 public: |
| 228 URLFilterContext(); | 245 URLFilterContext(); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 290 | 307 |
| 291 #if defined(ENABLE_EXTENSIONS) | 308 #if defined(ENABLE_EXTENSIONS) |
| 292 // extensions::ManagementPolicy::Provider implementation: | 309 // extensions::ManagementPolicy::Provider implementation: |
| 293 std::string GetDebugPolicyProviderName() const override; | 310 std::string GetDebugPolicyProviderName() const override; |
| 294 bool UserMayLoad(const extensions::Extension* extension, | 311 bool UserMayLoad(const extensions::Extension* extension, |
| 295 base::string16* error) const override; | 312 base::string16* error) const override; |
| 296 bool UserMayModifySettings(const extensions::Extension* extension, | 313 bool UserMayModifySettings(const extensions::Extension* extension, |
| 297 base::string16* error) const override; | 314 base::string16* error) const override; |
| 298 bool MustRemainInstalled(const extensions::Extension* extension, | 315 bool MustRemainInstalled(const extensions::Extension* extension, |
| 299 base::string16* error) const override; | 316 base::string16* error) const override; |
| 317 bool MustRemainDisabled(const extensions::Extension* extension, | |
| 318 extensions::Extension::DisableReason* reason, | |
| 319 base::string16* error) const override; | |
| 320 | |
| 321 // An extension can be in one of the following states: | |
| 322 // | |
| 323 // FORCED: if it is installed by the custodian. | |
| 324 // REQUIRE_APPROVAL: if it is installed by the supervised user and | |
| 325 // hasn't been approved by the custodian yet. | |
| 326 // ALLOWED: Components, Themes, Default extensions ..etc | |
| 327 // are generally allowed. Extensions that have been approved by the | |
| 328 // custodian are also allowed. | |
| 329 // BLOCKED: Extension is blocked if it is not ALLOWED or FORCED | |
|
Marc Treib
2016/05/24 09:54:58
remove "Extension is blocked" to be consistent wit
mamir
2016/06/03 09:45:55
Done.
| |
| 330 // and supervised users initiated installs are disabled. | |
| 331 enum class ExtensionState { FORCED, BLOCKED, ALLOWED, REQUIRE_APPROVAL }; | |
| 332 | |
| 333 ExtensionState GetExtensionState( | |
| 334 const extensions::Extension& extension) const; | |
| 300 | 335 |
| 301 // Extensions helper to SetActive(). | 336 // Extensions helper to SetActive(). |
| 302 void SetExtensionsActive(); | 337 void SetExtensionsActive(); |
| 303 #endif | 338 #endif |
| 304 | 339 |
| 305 SupervisedUserSettingsService* GetSettingsService(); | 340 SupervisedUserSettingsService* GetSettingsService(); |
| 306 | 341 |
| 307 size_t FindEnabledPermissionRequestCreator(size_t start); | 342 size_t FindEnabledPermissionRequestCreator(size_t start); |
| 308 void AddPermissionRequestInternal( | 343 void AddPermissionRequestInternal( |
| 309 const CreatePermissionRequestCallback& create_request, | 344 const CreatePermissionRequestCallback& create_request, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 345 void UpdateBlacklist(); | 380 void UpdateBlacklist(); |
| 346 | 381 |
| 347 // Updates the manual overrides for hosts in the URL filters when the | 382 // Updates the manual overrides for hosts in the URL filters when the |
| 348 // corresponding preference is changed. | 383 // corresponding preference is changed. |
| 349 void UpdateManualHosts(); | 384 void UpdateManualHosts(); |
| 350 | 385 |
| 351 // Updates the manual overrides for URLs in the URL filters when the | 386 // Updates the manual overrides for URLs in the URL filters when the |
| 352 // corresponding preference is changed. | 387 // corresponding preference is changed. |
| 353 void UpdateManualURLs(); | 388 void UpdateManualURLs(); |
| 354 | 389 |
| 390 // Updates the map of approved extensions when the corresponding preference | |
| 391 // is changed. | |
| 392 void UpdateApprovedExtensions(); | |
| 393 | |
| 355 // Returns the human readable name of the supervised user. | 394 // Returns the human readable name of the supervised user. |
| 356 std::string GetSupervisedUserName() const; | 395 std::string GetSupervisedUserName() const; |
| 357 | 396 |
| 358 // Subscribes to the SupervisedUserPrefStore, refreshes | 397 // Subscribes to the SupervisedUserPrefStore, refreshes |
| 359 // |includes_sync_sessions_type_| and triggers reconfiguring the | 398 // |includes_sync_sessions_type_| and triggers reconfiguring the |
| 360 // ProfileSyncService. | 399 // ProfileSyncService. |
| 361 void OnForceSessionSyncChanged(); | 400 void OnForceSessionSyncChanged(); |
| 362 | 401 |
| 363 // The option a custodian sets to either record or prevent recording the | 402 // The option a custodian sets to either record or prevent recording the |
| 364 // supervised user's history. Set by |FetchNewSessionSyncState()| and | 403 // supervised user's history. Set by |FetchNewSessionSyncState()| and |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 381 std::vector<NavigationBlockedCallback> navigation_blocked_callbacks_; | 420 std::vector<NavigationBlockedCallback> navigation_blocked_callbacks_; |
| 382 | 421 |
| 383 // True only when |Init()| method has been called. | 422 // True only when |Init()| method has been called. |
| 384 bool did_init_; | 423 bool did_init_; |
| 385 | 424 |
| 386 // True only when |Shutdown()| method has been called. | 425 // True only when |Shutdown()| method has been called. |
| 387 bool did_shutdown_; | 426 bool did_shutdown_; |
| 388 | 427 |
| 389 URLFilterContext url_filter_context_; | 428 URLFilterContext url_filter_context_; |
| 390 | 429 |
| 430 // Stores a map from extension_id -> latest approved version by the custodian. | |
|
Marc Treib
2016/05/24 09:54:58
It's not really *latest* approved version, but rat
mamir
2016/06/06 15:01:36
Done.
| |
| 431 std::map<std::string, base::Version> approved_extensions_map_; | |
| 432 | |
| 391 enum class BlacklistLoadState { | 433 enum class BlacklistLoadState { |
| 392 NOT_LOADED, | 434 NOT_LOADED, |
| 393 LOAD_STARTED, | 435 LOAD_STARTED, |
| 394 LOADED | 436 LOADED |
| 395 } blacklist_state_; | 437 } blacklist_state_; |
| 396 | 438 |
| 397 SupervisedUserBlacklist blacklist_; | 439 SupervisedUserBlacklist blacklist_; |
| 398 std::unique_ptr<FileDownloader> blacklist_downloader_; | 440 std::unique_ptr<FileDownloader> blacklist_downloader_; |
| 399 | 441 |
| 400 std::unique_ptr<SupervisedUserWhitelistService> whitelist_service_; | 442 std::unique_ptr<SupervisedUserWhitelistService> whitelist_service_; |
| 401 | 443 |
| 402 std::vector<scoped_refptr<SupervisedUserSiteList>> whitelists_; | 444 std::vector<scoped_refptr<SupervisedUserSiteList>> whitelists_; |
| 403 | 445 |
| 404 // Used to create permission requests. | 446 // Used to create permission requests. |
| 405 ScopedVector<PermissionRequestCreator> permissions_creators_; | 447 ScopedVector<PermissionRequestCreator> permissions_creators_; |
| 406 | 448 |
| 407 // Used to report inappropriate URLs to SafeSarch API. | 449 // Used to report inappropriate URLs to SafeSarch API. |
| 408 std::unique_ptr<SafeSearchURLReporter> url_reporter_; | 450 std::unique_ptr<SafeSearchURLReporter> url_reporter_; |
| 409 | 451 |
| 410 base::ObserverList<SupervisedUserServiceObserver> observer_list_; | 452 base::ObserverList<SupervisedUserServiceObserver> observer_list_; |
| 411 | 453 |
| 412 base::WeakPtrFactory<SupervisedUserService> weak_ptr_factory_; | 454 base::WeakPtrFactory<SupervisedUserService> weak_ptr_factory_; |
| 413 }; | 455 }; |
| 414 | 456 |
| 415 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ | 457 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ |
| OLD | NEW |