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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 | 99 |
100 ~SupervisedUserService() override; | 100 ~SupervisedUserService() override; |
101 | 101 |
102 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | 102 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
103 | 103 |
104 // Initializes this object. | 104 // Initializes this object. |
105 void Init(); | 105 void Init(); |
106 | 106 |
107 void SetDelegate(Delegate* delegate); | 107 void SetDelegate(Delegate* delegate); |
108 | 108 |
109 // Returns the URL filter for the IO thread, for filtering network requests | 109 // Returns the URL filter for filtering navigations and classifying sites in |
110 // (in SupervisedUserResourceThrottle). | 110 // the history view. Both this method and the returned filter may only be used |
111 scoped_refptr<const SupervisedUserURLFilter> GetURLFilterForIOThread(); | 111 // on the UI thread. |
112 | 112 SupervisedUserURLFilter* GetURLFilter(); |
113 // Returns the URL filter for the UI thread, for filtering navigations and | |
114 // classifying sites in the history view. | |
115 SupervisedUserURLFilter* GetURLFilterForUIThread(); | |
116 | 113 |
117 // Returns the whitelist service. | 114 // Returns the whitelist service. |
118 SupervisedUserWhitelistService* GetWhitelistService(); | 115 SupervisedUserWhitelistService* GetWhitelistService(); |
119 | 116 |
120 const std::vector<scoped_refptr<SupervisedUserSiteList>>& whitelists() const { | 117 const std::vector<scoped_refptr<SupervisedUserSiteList>>& whitelists() const { |
121 return whitelists_; | 118 return whitelists_; |
122 } | 119 } |
123 | 120 |
124 // Whether the user can request to get access to blocked URLs or to new | 121 // Whether the user can request to get access to blocked URLs or to new |
125 // extensions. | 122 // extensions. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 FRIEND_TEST_ALL_PREFIXES( | 229 FRIEND_TEST_ALL_PREFIXES( |
233 SupervisedUserServiceExtensionTest, | 230 SupervisedUserServiceExtensionTest, |
234 ExtensionManagementPolicyProviderWithoutSUInitiatedInstalls); | 231 ExtensionManagementPolicyProviderWithoutSUInitiatedInstalls); |
235 FRIEND_TEST_ALL_PREFIXES( | 232 FRIEND_TEST_ALL_PREFIXES( |
236 SupervisedUserServiceExtensionTest, | 233 SupervisedUserServiceExtensionTest, |
237 ExtensionManagementPolicyProviderWithSUInitiatedInstalls); | 234 ExtensionManagementPolicyProviderWithSUInitiatedInstalls); |
238 | 235 |
239 using CreatePermissionRequestCallback = | 236 using CreatePermissionRequestCallback = |
240 base::Callback<void(PermissionRequestCreator*, const SuccessCallback&)>; | 237 base::Callback<void(PermissionRequestCreator*, const SuccessCallback&)>; |
241 | 238 |
242 // A bridge from the UI thread to the SupervisedUserURLFilters, one of which | |
243 // lives on the IO thread. This class mediates access to them and makes sure | |
244 // they are kept in sync. | |
245 class URLFilterContext { | |
246 public: | |
247 URLFilterContext(); | |
248 ~URLFilterContext(); | |
249 | |
250 SupervisedUserURLFilter* ui_url_filter() const; | |
251 SupervisedUserURLFilter* io_url_filter() const; | |
252 | |
253 void SetDefaultFilteringBehavior( | |
254 SupervisedUserURLFilter::FilteringBehavior behavior); | |
255 void LoadWhitelists( | |
256 const std::vector<scoped_refptr<SupervisedUserSiteList>>& site_lists); | |
257 // TODO(treib): Make SupervisedUserBlacklist refcounted, so the IO thread | |
258 // will retain a reference to the blacklist. | |
259 void SetBlacklist(const SupervisedUserBlacklist* blacklist); | |
260 bool HasBlacklist() const; | |
261 void SetManualHosts(std::unique_ptr<std::map<std::string, bool>> host_map); | |
262 void SetManualURLs(std::unique_ptr<std::map<GURL, bool>> url_map); | |
263 | |
264 void InitAsyncURLChecker( | |
265 const scoped_refptr<net::URLRequestContextGetter>& context); | |
266 bool HasAsyncURLChecker() const; | |
267 void ClearAsyncURLChecker(); | |
268 | |
269 void Clear(); | |
270 | |
271 private: | |
272 void OnBlacklistLoaded(const base::Closure& callback); | |
273 | |
274 // SupervisedUserURLFilter is refcounted because the IO thread filter is | |
275 // used both by ProfileImplIOData and OffTheRecordProfileIOData (to filter | |
276 // network requests), so they both keep a reference to it. | |
277 // Clients should not keep references to the UI thread filter, however | |
278 // (the filter will live as long as the profile lives, and afterwards it | |
279 // should not be used anymore either). | |
280 scoped_refptr<SupervisedUserURLFilter> ui_url_filter_; | |
281 scoped_refptr<SupervisedUserURLFilter> io_url_filter_; | |
282 | |
283 DISALLOW_COPY_AND_ASSIGN(URLFilterContext); | |
284 }; | |
285 | |
286 // Use |SupervisedUserServiceFactory::GetForProfile(..)| to get | 239 // Use |SupervisedUserServiceFactory::GetForProfile(..)| to get |
287 // an instance of this service. | 240 // an instance of this service. |
288 explicit SupervisedUserService(Profile* profile); | 241 explicit SupervisedUserService(Profile* profile); |
289 | 242 |
290 void SetActive(bool active); | 243 void SetActive(bool active); |
291 | 244 |
292 #if !defined(OS_ANDROID) | 245 #if !defined(OS_ANDROID) |
293 void OnCustodianProfileDownloaded(const base::string16& full_name); | 246 void OnCustodianProfileDownloaded(const base::string16& full_name); |
294 | 247 |
295 void OnSupervisedUserRegistered(const AuthErrorCallback& callback, | 248 void OnSupervisedUserRegistered(const AuthErrorCallback& callback, |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 bool is_profile_active_; | 384 bool is_profile_active_; |
432 | 385 |
433 std::vector<NavigationBlockedCallback> navigation_blocked_callbacks_; | 386 std::vector<NavigationBlockedCallback> navigation_blocked_callbacks_; |
434 | 387 |
435 // True only when |Init()| method has been called. | 388 // True only when |Init()| method has been called. |
436 bool did_init_; | 389 bool did_init_; |
437 | 390 |
438 // True only when |Shutdown()| method has been called. | 391 // True only when |Shutdown()| method has been called. |
439 bool did_shutdown_; | 392 bool did_shutdown_; |
440 | 393 |
441 URLFilterContext url_filter_context_; | 394 SupervisedUserURLFilter url_filter_; |
442 | 395 |
443 // Stores a map from extension_id -> approved version by the custodian. | 396 // Stores a map from extension_id -> approved version by the custodian. |
444 // It is only relevant for SU-initiated installs. | 397 // It is only relevant for SU-initiated installs. |
445 std::map<std::string, base::Version> approved_extensions_map_; | 398 std::map<std::string, base::Version> approved_extensions_map_; |
446 | 399 |
447 enum class BlacklistLoadState { | 400 enum class BlacklistLoadState { |
448 NOT_LOADED, | 401 NOT_LOADED, |
449 LOAD_STARTED, | 402 LOAD_STARTED, |
450 LOADED | 403 LOADED |
451 } blacklist_state_; | 404 } blacklist_state_; |
(...skipping 19 matching lines...) Expand all Loading... |
471 | 424 |
472 base::ObserverList<SupervisedUserServiceObserver> observer_list_; | 425 base::ObserverList<SupervisedUserServiceObserver> observer_list_; |
473 | 426 |
474 // Prevents Sync from running until configuration is complete. | 427 // Prevents Sync from running until configuration is complete. |
475 std::unique_ptr<syncer::SyncSetupInProgressHandle> sync_blocker_; | 428 std::unique_ptr<syncer::SyncSetupInProgressHandle> sync_blocker_; |
476 | 429 |
477 base::WeakPtrFactory<SupervisedUserService> weak_ptr_factory_; | 430 base::WeakPtrFactory<SupervisedUserService> weak_ptr_factory_; |
478 }; | 431 }; |
479 | 432 |
480 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ | 433 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_SERVICE_H_ |
OLD | NEW |