class GURL;

namespace security_interstitials {
class MetricsHelper;
}

namespace web {
class WebInterstitial;
class WebState;
}

// Provides embedder-specific logic for the security error page controller.
class IOSChromeControllerClient
    : public security_interstitials::ControllerClient {
 public:
  IOSChromeControllerClient(
      web::WebState* web_state,
      std::unique_ptr<security_interstitials::MetricsHelper> metrics_helper);
  ~IOSChromeControllerClient() override;

  void SetWebInterstitial(web::WebInterstitial* web_interstitial);

 private:
  // security_interstitials::ControllerClient implementation.
  bool CanLaunchDateAndTimeSettings() override;
  void LaunchDateAndTimeSettings() override;
  void GoBack() override;
  void Proceed() override;
  void Reload() override;
  void OpenUrlInCurrentTab(const GURL& url) override;
  const std::string& GetApplicationLocale() override;
  PrefService* GetPrefService() override;
  const std::string GetExtendedReportingPrefName() override;

  web::WebState* web_state_;
  web::WebInterstitial* web_interstitial_;

  DISALLOW_COPY_AND_ASSIGN(IOSChromeControllerClient);
};

#endif  // IOS_CHROME_BROWSER_INTERSTITIALS_IOS_CHROME_CONTROLLER_CLIENT_H_
