OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_BROWSER_MANAGED_MODE_MANAGED_MODE_NAVIGATION_OBSERVER_H_ | |
6 #define CHROME_BROWSER_MANAGED_MODE_MANAGED_MODE_NAVIGATION_OBSERVER_H_ | |
7 | |
8 #include <set> | |
9 #include <vector> | |
10 | |
11 #include "base/memory/scoped_vector.h" | |
12 #include "base/values.h" | |
13 #include "chrome/browser/managed_mode/managed_users.h" | |
14 #include "content/public/browser/web_contents_observer.h" | |
15 #include "content/public/browser/web_contents_user_data.h" | |
16 | |
17 class ManagedModeURLFilter; | |
18 class ManagedUserService; | |
19 | |
20 namespace content { | |
21 class NavigationEntry; | |
22 } | |
23 | |
24 namespace infobars { | |
25 class InfoBar; | |
26 } | |
27 | |
28 class ManagedModeNavigationObserver | |
29 : public content::WebContentsObserver, | |
30 public content::WebContentsUserData<ManagedModeNavigationObserver> { | |
31 public: | |
32 virtual ~ManagedModeNavigationObserver(); | |
33 | |
34 // Sets the specific infobar as dismissed. | |
35 void WarnInfoBarDismissed(); | |
36 | |
37 const std::vector<const content::NavigationEntry*>* | |
38 blocked_navigations() const { | |
39 return &blocked_navigations_.get(); | |
40 } | |
41 | |
42 // Called when a network request to |url| is blocked. | |
43 static void OnRequestBlocked(int render_process_host_id, | |
44 int render_view_id, | |
45 const GURL& url, | |
46 const base::Callback<void(bool)>& callback); | |
47 | |
48 private: | |
49 friend class content::WebContentsUserData<ManagedModeNavigationObserver>; | |
50 | |
51 explicit ManagedModeNavigationObserver(content::WebContents* web_contents); | |
52 | |
53 // content::WebContentsObserver implementation. | |
54 virtual void ProvisionalChangeToMainFrameUrl( | |
55 const GURL& url, | |
56 content::RenderFrameHost* render_frame_host) OVERRIDE; | |
57 virtual void DidCommitProvisionalLoadForFrame( | |
58 int64 frame_id, | |
59 const base::string16& frame_unique_name, | |
60 bool is_main_frame, | |
61 const GURL& url, | |
62 content::PageTransition transition_type, | |
63 content::RenderViewHost* render_view_host) OVERRIDE; | |
64 | |
65 void OnRequestBlockedInternal(const GURL& url); | |
66 | |
67 // Owned by the profile, so outlives us. | |
68 ManagedUserService* managed_user_service_; | |
69 | |
70 // Owned by ManagedUserService. | |
71 const ManagedModeURLFilter* url_filter_; | |
72 | |
73 // Owned by the InfoBarService, which has the same lifetime as this object. | |
74 infobars::InfoBar* warn_infobar_; | |
75 | |
76 ScopedVector<const content::NavigationEntry> blocked_navigations_; | |
77 | |
78 DISALLOW_COPY_AND_ASSIGN(ManagedModeNavigationObserver); | |
79 }; | |
80 | |
81 #endif // CHROME_BROWSER_MANAGED_MODE_MANAGED_MODE_NAVIGATION_OBSERVER_H_ | |
OLD | NEW |