Home | History | Annotate | Download | only in managed_mode
      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_INTERSTITIAL_H_
      6 #define CHROME_BROWSER_MANAGED_MODE_MANAGED_MODE_INTERSTITIAL_H_
      7 
      8 #include <string>
      9 
     10 #include "base/callback.h"
     11 #include "base/compiler_specific.h"
     12 #include "base/memory/weak_ptr.h"
     13 #include "content/public/browser/interstitial_page_delegate.h"
     14 #include "url/gurl.h"
     15 
     16 namespace content {
     17 class InterstitialPage;
     18 class WebContents;
     19 }
     20 
     21 // Delegate for an interstitial page when a page is blocked in managed mode
     22 // because it is not on any whitelist. It lets an authorized user preview the
     23 // blocked page, to decide later whether to manually allow it.
     24 class ManagedModeInterstitial : public content::InterstitialPageDelegate {
     25  public:
     26   ManagedModeInterstitial(content::WebContents* web_contents,
     27                           const GURL& url,
     28                           const base::Callback<void(bool)>& callback);
     29   virtual ~ManagedModeInterstitial();
     30 
     31  private:
     32   // InterstitialPageDelegate implementation.
     33   virtual std::string GetHTMLContents() OVERRIDE;
     34   virtual void CommandReceived(const std::string& command) OVERRIDE;
     35   virtual void OnProceed() OVERRIDE;
     36   virtual void OnDontProceed() OVERRIDE;
     37 
     38   void DispatchContinueRequest(bool continue_request);
     39 
     40   // Owns the interstitial, which owns us.
     41   content::WebContents* web_contents_;
     42 
     43   content::InterstitialPage* interstitial_page_;  // Owns us.
     44 
     45   // The UI language. Used for formatting the URL for display.
     46   std::string languages_;
     47   GURL url_;
     48 
     49   base::WeakPtrFactory<ManagedModeInterstitial> weak_ptr_factory_;
     50   base::Callback<void(bool)> callback_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(ManagedModeInterstitial);
     53 };
     54 
     55 #endif  // CHROME_BROWSER_MANAGED_MODE_MANAGED_MODE_INTERSTITIAL_H_
     56