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_CHROMEOS_LOGIN_SCREENS_EULA_SCREEN_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_EULA_SCREEN_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "chrome/browser/chromeos/login/screens/eula_screen_actor.h" 12 #include "chrome/browser/chromeos/login/screens/wizard_screen.h" 13 #include "chrome/browser/chromeos/login/tpm_password_fetcher.h" 14 #include "url/gurl.h" 15 16 namespace chromeos { 17 18 // Representation independent class that controls OOBE screen showing EULA 19 // to users. 20 class EulaScreen : public WizardScreen, 21 public EulaScreenActor::Delegate, 22 public TpmPasswordFetcherDelegate { 23 public: 24 EulaScreen(ScreenObserver* observer, EulaScreenActor* actor); 25 virtual ~EulaScreen(); 26 27 // WizardScreen implementation: 28 virtual void PrepareToShow() OVERRIDE; 29 virtual void Show() OVERRIDE; 30 virtual void Hide() OVERRIDE; 31 virtual std::string GetName() const OVERRIDE; 32 33 // EulaScreenActor::Delegate implementation: 34 virtual GURL GetOemEulaUrl() const OVERRIDE; 35 virtual void OnExit(bool accepted, bool usage_stats_enabled) OVERRIDE; 36 virtual void InitiatePasswordFetch() OVERRIDE; 37 virtual bool IsUsageStatsEnabled() const OVERRIDE; 38 virtual void OnActorDestroyed(EulaScreenActor* actor) OVERRIDE; 39 40 // TpmPasswordFetcherDelegate implementation: 41 virtual void OnPasswordFetched(const std::string& tpm_password) OVERRIDE; 42 43 private: 44 // URL of the OEM EULA page (on disk). 45 GURL oem_eula_page_; 46 47 // TPM password local storage. By convention, we clear the password 48 // from TPM as soon as we read it. We store it here locally until 49 // EULA screen is closed. 50 // TODO(glotov): Sanitize memory used to store password when 51 // it's destroyed. 52 std::string tpm_password_; 53 54 EulaScreenActor* actor_; 55 56 TpmPasswordFetcher password_fetcher_; 57 58 DISALLOW_COPY_AND_ASSIGN(EulaScreen); 59 }; 60 61 } // namespace chromeos 62 63 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_EULA_SCREEN_H_ 64