Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / supervised_user / supervised_user_navigation_observer.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_
6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_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/supervised_user/supervised_users.h"
14 #include "content/public/browser/web_contents_observer.h"
15 #include "content/public/browser/web_contents_user_data.h"
16
17 class SupervisedUserService;
18 class SupervisedUserURLFilter;
19
20 namespace content {
21 class NavigationEntry;
22 }
23
24 namespace infobars {
25 class InfoBar;
26 }
27
28 class SupervisedUserNavigationObserver
29     : public content::WebContentsObserver,
30       public content::WebContentsUserData<SupervisedUserNavigationObserver> {
31  public:
32   ~SupervisedUserNavigationObserver() override;
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<SupervisedUserNavigationObserver>;
50
51   explicit SupervisedUserNavigationObserver(content::WebContents* web_contents);
52
53   // content::WebContentsObserver implementation.
54   void DidCommitProvisionalLoadForFrame(
55       content::RenderFrameHost* render_frame_host,
56       const GURL& url,
57       ui::PageTransition transition_type) override;
58
59   void OnRequestBlockedInternal(const GURL& url);
60
61   // Owned by the profile, so outlives us.
62   SupervisedUserService* supervised_user_service_;
63
64   // Owned by SupervisedUserService.
65   const SupervisedUserURLFilter* url_filter_;
66
67   // Owned by the InfoBarService, which has the same lifetime as this object.
68   infobars::InfoBar* warn_infobar_;
69
70   ScopedVector<const content::NavigationEntry> blocked_navigations_;
71
72   DISALLOW_COPY_AND_ASSIGN(SupervisedUserNavigationObserver);
73 };
74
75 #endif  // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_NAVIGATION_OBSERVER_H_