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_NAVIGATION_OBSERVER_H_ | 5 #ifndef CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_ |
6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_ | 6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "base/memory/scoped_vector.h" | 11 #include "base/memory/scoped_vector.h" |
12 #include "chrome/browser/supervised_user/supervised_user_service_observer.h" | 12 #include "chrome/browser/supervised_user/supervised_user_service_observer.h" |
13 #include "chrome/browser/supervised_user/supervised_user_url_filter.h" | 13 #include "chrome/browser/supervised_user/supervised_user_url_filter.h" |
14 #include "chrome/browser/supervised_user/supervised_users.h" | 14 #include "chrome/browser/supervised_user/supervised_users.h" |
15 #include "components/sessions/core/serialized_navigation_entry.h" | 15 #include "components/sessions/core/serialized_navigation_entry.h" |
| 16 #include "components/supervised_user_error_page/supervised_user_error_page.h" |
16 #include "content/public/browser/resource_request_info.h" | 17 #include "content/public/browser/resource_request_info.h" |
17 #include "content/public/browser/web_contents_user_data.h" | 18 #include "content/public/browser/web_contents_user_data.h" |
18 | 19 |
19 class SupervisedUserService; | 20 class SupervisedUserService; |
20 | 21 |
21 namespace content { | 22 namespace content { |
22 class NavigationEntry; | 23 class NavigationEntry; |
23 class WebContents; | 24 class WebContents; |
24 } | 25 } |
25 | 26 |
26 class SupervisedUserNavigationObserver | 27 class SupervisedUserNavigationObserver |
27 : public content::WebContentsUserData<SupervisedUserNavigationObserver>, | 28 : public content::WebContentsUserData<SupervisedUserNavigationObserver>, |
28 public SupervisedUserServiceObserver { | 29 public SupervisedUserServiceObserver { |
29 public: | 30 public: |
30 ~SupervisedUserNavigationObserver() override; | 31 ~SupervisedUserNavigationObserver() override; |
31 | 32 |
32 const std::vector<const sessions::SerializedNavigationEntry*>* | 33 const std::vector<const sessions::SerializedNavigationEntry*>* |
33 blocked_navigations() const { | 34 blocked_navigations() const { |
34 return &blocked_navigations_.get(); | 35 return &blocked_navigations_.get(); |
35 } | 36 } |
36 | 37 |
37 // Called when a network request to |url| is blocked. | 38 // Called when a network request to |url| is blocked. |
38 static void OnRequestBlocked( | 39 static void OnRequestBlocked( |
39 const content::ResourceRequestInfo::WebContentsGetter& | 40 const content::ResourceRequestInfo::WebContentsGetter& |
40 web_contents_getter, | 41 web_contents_getter, |
41 const GURL& url, | 42 const GURL& url, |
42 SupervisedUserURLFilter::FilteringBehaviorReason reason, | 43 supervised_user_error_page::FilteringBehaviorReason reason, |
43 const base::Callback<void(bool)>& callback); | 44 const base::Callback<void(bool)>& callback); |
44 | 45 |
45 // SupervisedUserServiceObserver implementation. | 46 // SupervisedUserServiceObserver implementation. |
46 void OnURLFilterChanged() override; | 47 void OnURLFilterChanged() override; |
47 | 48 |
48 void URLFilterCheckCallback( | 49 void URLFilterCheckCallback( |
49 const GURL& url, | 50 const GURL& url, |
50 SupervisedUserURLFilter::FilteringBehavior behavior, | 51 SupervisedUserURLFilter::FilteringBehavior behavior, |
51 SupervisedUserURLFilter::FilteringBehaviorReason reason, | 52 supervised_user_error_page::FilteringBehaviorReason reason, |
52 bool uncertain); | 53 bool uncertain); |
53 | 54 |
54 private: | 55 private: |
55 friend class content::WebContentsUserData<SupervisedUserNavigationObserver>; | 56 friend class content::WebContentsUserData<SupervisedUserNavigationObserver>; |
56 | 57 |
57 explicit SupervisedUserNavigationObserver(content::WebContents* web_contents); | 58 explicit SupervisedUserNavigationObserver(content::WebContents* web_contents); |
58 | 59 |
59 void OnRequestBlockedInternal(const GURL& url); | 60 void OnRequestBlockedInternal(const GURL& url); |
60 | 61 |
61 content::WebContents* web_contents_; | 62 content::WebContents* web_contents_; |
62 | 63 |
63 // Owned by SupervisedUserService. | 64 // Owned by SupervisedUserService. |
64 const SupervisedUserURLFilter* url_filter_; | 65 const SupervisedUserURLFilter* url_filter_; |
65 | 66 |
66 // Owned by SupervisedUserServiceFactory (lifetime of Profile). | 67 // Owned by SupervisedUserServiceFactory (lifetime of Profile). |
67 SupervisedUserService* supervised_user_service_; | 68 SupervisedUserService* supervised_user_service_; |
68 | 69 |
69 ScopedVector<const sessions::SerializedNavigationEntry> blocked_navigations_; | 70 ScopedVector<const sessions::SerializedNavigationEntry> blocked_navigations_; |
70 | 71 |
71 base::WeakPtrFactory<SupervisedUserNavigationObserver> weak_ptr_factory_; | 72 base::WeakPtrFactory<SupervisedUserNavigationObserver> weak_ptr_factory_; |
72 | 73 |
73 DISALLOW_COPY_AND_ASSIGN(SupervisedUserNavigationObserver); | 74 DISALLOW_COPY_AND_ASSIGN(SupervisedUserNavigationObserver); |
74 }; | 75 }; |
75 | 76 |
76 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_ | 77 #endif // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_ |
OLD | NEW |