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