Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2555)

Unified Diff: chrome/browser/chromeos/attestation/platform_verification_flow.cc

Issue 106373003: Restructured PlatformVerificationFlow testing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/attestation/platform_verification_flow.cc
diff --git a/chrome/browser/chromeos/attestation/platform_verification_flow.cc b/chrome/browser/chromeos/attestation/platform_verification_flow.cc
index 557abb663e22076556dd047f54ea4ab1fcc9e9b1..132e1a7b0975cc855a94eecff6e29981f55b4f47 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_flow.cc
+++ b/chrome/browser/chromeos/attestation/platform_verification_flow.cc
@@ -76,6 +76,34 @@ class DefaultDelegate : public PlatformVerificationFlow::Delegate {
PlatformVerificationDialog::ShowDialog(web_contents, callback);
}
+ virtual PrefService* GetPrefs(content::WebContents* web_contents) OVERRIDE {
+ return user_prefs::UserPrefs::Get(web_contents->GetBrowserContext());
+ }
+
+ virtual const GURL& GetURL(content::WebContents* web_contents) OVERRIDE {
+ const GURL& url = web_contents->GetLastCommittedURL();
+ if (!url.is_valid())
+ return web_contents->GetVisibleURL();
+ return url;
+ }
+
+ virtual User* GetUser(content::WebContents* web_contents) OVERRIDE {
+ return UserManager::Get()->GetUserByProfile(
+ Profile::FromBrowserContext(web_contents->GetBrowserContext()));
+ }
+
+ virtual HostContentSettingsMap* GetContentSettings(
+ content::WebContents* web_contents) OVERRIDE {
+ return Profile::FromBrowserContext(web_contents->GetBrowserContext())->
+ GetHostContentSettingsMap();
+ }
+
+ virtual bool IsGuestOrIncognito(content::WebContents* web_contents) OVERRIDE {
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ return (profile->IsOffTheRecord() || profile->IsGuestSession());
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(DefaultDelegate);
};
@@ -96,10 +124,7 @@ PlatformVerificationFlow::PlatformVerificationFlow()
: attestation_flow_(NULL),
async_caller_(cryptohome::AsyncMethodCaller::GetInstance()),
cryptohome_client_(DBusThreadManager::Get()->GetCryptohomeClient()),
- user_manager_(UserManager::Get()),
delegate_(NULL),
- testing_prefs_(NULL),
- testing_content_settings_(NULL),
timeout_delay_(base::TimeDelta::FromSeconds(kTimeoutInSeconds)) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
scoped_ptr<ServerProxy> attestation_ca_client(new AttestationCAClient());
@@ -116,17 +141,17 @@ PlatformVerificationFlow::PlatformVerificationFlow(
AttestationFlow* attestation_flow,
cryptohome::AsyncMethodCaller* async_caller,
CryptohomeClient* cryptohome_client,
- UserManager* user_manager,
Delegate* delegate)
: attestation_flow_(attestation_flow),
async_caller_(async_caller),
cryptohome_client_(cryptohome_client),
- user_manager_(user_manager),
delegate_(delegate),
- testing_prefs_(NULL),
- testing_content_settings_(NULL),
timeout_delay_(base::TimeDelta::FromSeconds(kTimeoutInSeconds)) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ if (!delegate_) {
+ default_delegate_.reset(new DefaultDelegate());
+ delegate_ = default_delegate_.get();
+ }
}
PlatformVerificationFlow::~PlatformVerificationFlow() {
@@ -138,7 +163,7 @@ void PlatformVerificationFlow::ChallengePlatformKey(
const std::string& challenge,
const ChallengeCallback& callback) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- if (!GetURL(web_contents).is_valid()) {
+ if (!delegate_->GetURL(web_contents).is_valid()) {
LOG(WARNING) << "PlatformVerificationFlow: Invalid URL.";
ReportError(callback, INTERNAL_ERROR);
return;
@@ -149,7 +174,7 @@ void PlatformVerificationFlow::ChallengePlatformKey(
}
// A platform key must be bound to a user. They are not allowed in incognito
// or guest mode.
- if (IsGuestOrIncognito(web_contents)) {
+ if (delegate_->IsGuestOrIncognito(web_contents)) {
ReportError(callback, PLATFORM_NOT_VERIFIED);
return;
}
@@ -163,7 +188,7 @@ void PlatformVerificationFlow::ChallengePlatformKey(
void PlatformVerificationFlow::CheckConsent(const ChallengeContext& context,
bool attestation_enrolled) {
- PrefService* pref_service = GetPrefs(context.web_contents);
+ PrefService* pref_service = delegate_->GetPrefs(context.web_contents);
if (!pref_service) {
LOG(ERROR) << "Failed to get user prefs.";
ReportError(context.callback, INTERNAL_ERROR);
@@ -176,10 +201,9 @@ void PlatformVerificationFlow::CheckConsent(const ChallengeContext& context,
// protection on this device.
!pref_service->GetBoolean(prefs::kRAConsentFirstTime) ||
// Consent required if consent has never been given for this domain.
- !GetDomainPref(GetContentSettings(context.web_contents),
- GetURL(context.web_contents),
+ !GetDomainPref(delegate_->GetContentSettings(context.web_contents),
+ delegate_->GetURL(context.web_contents),
NULL));
-
Delegate::ConsentCallback consent_callback = base::Bind(
&PlatformVerificationFlow::OnConsentResponse,
this,
@@ -226,7 +250,7 @@ void PlatformVerificationFlow::OnConsentResponse(
// At this point all user interaction is complete and we can proceed with the
// certificate request.
- chromeos::User* user = GetUser(context.web_contents);
+ chromeos::User* user = delegate_->GetUser(context.web_contents);
if (!user) {
ReportError(context.callback, INTERNAL_ERROR);
LOG(ERROR) << "Profile does not map to a valid user.";
@@ -328,38 +352,6 @@ void PlatformVerificationFlow::OnChallengeReady(
certificate);
}
-PrefService* PlatformVerificationFlow::GetPrefs(
- content::WebContents* web_contents) {
- if (testing_prefs_)
- return testing_prefs_;
- return user_prefs::UserPrefs::Get(web_contents->GetBrowserContext());
-}
-
-const GURL& PlatformVerificationFlow::GetURL(
- content::WebContents* web_contents) {
- if (!testing_url_.is_empty())
- return testing_url_;
- const GURL& url = web_contents->GetLastCommittedURL();
- if (!url.is_valid())
- return web_contents->GetVisibleURL();
- return url;
-}
-
-User* PlatformVerificationFlow::GetUser(content::WebContents* web_contents) {
- if (!web_contents)
- return user_manager_->GetActiveUser();
- return user_manager_->GetUserByProfile(
- Profile::FromBrowserContext(web_contents->GetBrowserContext()));
-}
-
-HostContentSettingsMap* PlatformVerificationFlow::GetContentSettings(
- content::WebContents* web_contents) {
- if (testing_content_settings_)
- return testing_content_settings_;
- return Profile::FromBrowserContext(web_contents->GetBrowserContext())->
- GetHostContentSettingsMap();
-}
-
bool PlatformVerificationFlow::IsAttestationEnabled(
content::WebContents* web_contents) {
// Check the device policy for the feature.
@@ -373,7 +365,7 @@ bool PlatformVerificationFlow::IsAttestationEnabled(
return false;
// Check the user preference for the feature.
- PrefService* pref_service = GetPrefs(web_contents);
+ PrefService* pref_service = delegate_->GetPrefs(web_contents);
if (!pref_service) {
LOG(ERROR) << "Failed to get user prefs.";
return false;
@@ -383,8 +375,8 @@ bool PlatformVerificationFlow::IsAttestationEnabled(
// Check the user preference for this domain.
bool enabled_for_domain = false;
- bool found = GetDomainPref(GetContentSettings(web_contents),
- GetURL(web_contents),
+ bool found = GetDomainPref(delegate_->GetContentSettings(web_contents),
+ delegate_->GetURL(web_contents),
&enabled_for_domain);
return (!found || enabled_for_domain);
}
@@ -392,14 +384,14 @@ bool PlatformVerificationFlow::IsAttestationEnabled(
bool PlatformVerificationFlow::UpdateSettings(
content::WebContents* web_contents,
ConsentResponse consent_response) {
- PrefService* pref_service = GetPrefs(web_contents);
+ PrefService* pref_service = delegate_->GetPrefs(web_contents);
if (!pref_service) {
LOG(ERROR) << "Failed to get user prefs.";
return false;
}
pref_service->SetBoolean(prefs::kRAConsentFirstTime, true);
- RecordDomainConsent(GetContentSettings(web_contents),
- GetURL(web_contents),
+ RecordDomainConsent(delegate_->GetContentSettings(web_contents),
+ delegate_->GetURL(web_contents),
(consent_response == CONSENT_RESPONSE_ALLOW));
return true;
}
@@ -467,14 +459,5 @@ bool PlatformVerificationFlow::IsExpired(const std::string& certificate) {
return (base::Time::Now() > x509->valid_expiry());
}
-bool PlatformVerificationFlow::IsGuestOrIncognito(
- content::WebContents* web_contents) {
- if (!web_contents)
- return false;
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- return profile->IsOffTheRecord() || profile->IsGuestSession();
-}
-
} // namespace attestation
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698