terms_of_service_screen.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright (c) 2013 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_CHROMEOS_LOGIN_SCREENS_TERMS_OF_SERVICE_SCREEN_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_TERMS_OF_SERVICE_SCREEN_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "base/memory/scoped_ptr.h" 11#include "base/timer/timer.h" 12#include "chrome/browser/chromeos/login/screens/terms_of_service_screen_actor.h" 13#include "chrome/browser/chromeos/login/screens/wizard_screen.h" 14#include "net/url_request/url_fetcher_delegate.h" 15 16namespace net { 17class URLFetcher; 18} 19 20namespace chromeos { 21 22class ScreenObserver; 23 24// A screen that shows Terms of Service which have been configured through 25// policy. The screen is shown during login and requires the user to accept the 26// Terms of Service before proceeding. Currently, Terms of Service are available 27// for public sessions only. 28class TermsOfServiceScreen : public WizardScreen, 29 public TermsOfServiceScreenActor::Delegate, 30 public net::URLFetcherDelegate { 31 public: 32 TermsOfServiceScreen(ScreenObserver* screen_observer, 33 TermsOfServiceScreenActor* actor); 34 virtual ~TermsOfServiceScreen(); 35 36 // WizardScreen: 37 virtual void PrepareToShow() OVERRIDE; 38 virtual void Show() OVERRIDE; 39 virtual void Hide() OVERRIDE; 40 virtual std::string GetName() const OVERRIDE; 41 42 // TermsOfServiceScreenActor::Delegate: 43 virtual void OnDecline() OVERRIDE; 44 virtual void OnAccept() OVERRIDE; 45 virtual void OnActorDestroyed(TermsOfServiceScreenActor* actor) OVERRIDE; 46 47 private: 48 // Start downloading the Terms of Service. 49 void StartDownload(); 50 51 // Abort the attempt to download the Terms of Service if it takes too long. 52 void OnDownloadTimeout(); 53 54 // net::URLFetcherDelegate: 55 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 56 57 TermsOfServiceScreenActor* actor_; 58 59 scoped_ptr<net::URLFetcher> terms_of_service_fetcher_; 60 61 // Timer that enforces a custom (shorter) timeout on the attempt to download 62 // the Terms of Service. 63 base::OneShotTimer<TermsOfServiceScreen> download_timer_; 64 65 DISALLOW_COPY_AND_ASSIGN(TermsOfServiceScreen); 66}; 67 68} // namespace chromeos 69 70#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_TERMS_OF_SERVICE_SCREEN_H_ 71