Home | History | Annotate | Download | only in supervised_user
      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_INTERSTITIAL_H_
      6 #define CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_INTERSTITIAL_H_
      7 
      8 #include <string>
      9 
     10 #include "base/callback.h"
     11 #include "chrome/browser/supervised_user/supervised_user_service_observer.h"
     12 #include "content/public/browser/interstitial_page_delegate.h"
     13 #include "url/gurl.h"
     14 
     15 namespace content {
     16 class InterstitialPage;
     17 class WebContents;
     18 }
     19 
     20 class Profile;
     21 
     22 // Delegate for an interstitial page when a page is blocked for a supervised
     23 // user because it is on a blacklist (in "allow everything" mode) or not on any
     24 // whitelist (in "allow only specified sites" mode).
     25 class SupervisedUserInterstitial : public content::InterstitialPageDelegate,
     26                                    public SupervisedUserServiceObserver {
     27  public:
     28   static void Show(content::WebContents* web_contents,
     29                    const GURL& url,
     30                    const base::Callback<void(bool)>& callback);
     31 
     32  private:
     33   SupervisedUserInterstitial(content::WebContents* web_contents,
     34                              const GURL& url,
     35                              const base::Callback<void(bool)>& callback);
     36   virtual ~SupervisedUserInterstitial();
     37 
     38   bool Init();
     39 
     40   // InterstitialPageDelegate implementation.
     41   virtual std::string GetHTMLContents() OVERRIDE;
     42   virtual void CommandReceived(const std::string& command) OVERRIDE;
     43   virtual void OnProceed() OVERRIDE;
     44   virtual void OnDontProceed() OVERRIDE;
     45 
     46   // SupervisedUserServiceObserver implementation.
     47   virtual void OnURLFilterChanged() OVERRIDE;
     48 
     49   // Returns whether the blocked URL is now allowed. Called initially before the
     50   // interstitial is shown (to catch race conditions), or when the URL filtering
     51   // prefs change.
     52   bool ShouldProceed();
     53 
     54   void DispatchContinueRequest(bool continue_request);
     55 
     56   // Owns the interstitial, which owns us.
     57   content::WebContents* web_contents_;
     58 
     59   Profile* profile_;
     60 
     61   content::InterstitialPage* interstitial_page_;  // Owns us.
     62 
     63   GURL url_;
     64 
     65   base::Callback<void(bool)> callback_;
     66 
     67   DISALLOW_COPY_AND_ASSIGN(SupervisedUserInterstitial);
     68 };
     69 
     70 #endif  // CHROME_BROWSER_SUPERVISED_USER_SUPERVISED_USER_INTERSTITIAL_H_
     71