Commit 39f74774 authored by jdoerrie's avatar jdoerrie Committed by Commit Bot

Rename GetAffiliations to GetAffiliationsAndBranding

This change renames |GetAffiliations| to |GetAffiliationsAndBranding|
and also changes the name of related methods.

Bug: 628988
Change-Id: Id3e38a209d63a8e07903eccf4005f70186b34a09
Reviewed-on: https://chromium-review.googlesource.com/574370
Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487467}
parent 3ef8cdd6
...@@ -63,7 +63,7 @@ void AffiliatedMatchHelper::GetAffiliatedAndroidRealms( ...@@ -63,7 +63,7 @@ void AffiliatedMatchHelper::GetAffiliatedAndroidRealms(
if (IsValidWebCredential(observed_form)) { if (IsValidWebCredential(observed_form)) {
FacetURI facet_uri( FacetURI facet_uri(
FacetURI::FromPotentiallyInvalidSpec(observed_form.signon_realm)); FacetURI::FromPotentiallyInvalidSpec(observed_form.signon_realm));
affiliation_service_->GetAffiliations( affiliation_service_->GetAffiliationsAndBranding(
facet_uri, AffiliationService::StrategyOnCacheMiss::FAIL, facet_uri, AffiliationService::StrategyOnCacheMiss::FAIL,
base::Bind(&AffiliatedMatchHelper::CompleteGetAffiliatedAndroidRealms, base::Bind(&AffiliatedMatchHelper::CompleteGetAffiliatedAndroidRealms,
weak_ptr_factory_.GetWeakPtr(), facet_uri, result_callback)); weak_ptr_factory_.GetWeakPtr(), facet_uri, result_callback));
...@@ -76,7 +76,7 @@ void AffiliatedMatchHelper::GetAffiliatedWebRealms( ...@@ -76,7 +76,7 @@ void AffiliatedMatchHelper::GetAffiliatedWebRealms(
const PasswordStore::FormDigest& android_form, const PasswordStore::FormDigest& android_form,
const AffiliatedRealmsCallback& result_callback) { const AffiliatedRealmsCallback& result_callback) {
if (IsValidAndroidCredential(android_form)) { if (IsValidAndroidCredential(android_form)) {
affiliation_service_->GetAffiliations( affiliation_service_->GetAffiliationsAndBranding(
FacetURI::FromPotentiallyInvalidSpec(android_form.signon_realm), FacetURI::FromPotentiallyInvalidSpec(android_form.signon_realm),
AffiliationService::StrategyOnCacheMiss::FETCH_OVER_NETWORK, AffiliationService::StrategyOnCacheMiss::FETCH_OVER_NETWORK,
base::Bind(&AffiliatedMatchHelper::CompleteGetAffiliatedWebRealms, base::Bind(&AffiliatedMatchHelper::CompleteGetAffiliatedWebRealms,
...@@ -99,9 +99,7 @@ void AffiliatedMatchHelper::InjectAffiliationAndBrandingInformation( ...@@ -99,9 +99,7 @@ void AffiliatedMatchHelper::InjectAffiliationAndBrandingInformation(
base::Closure barrier_closure = base::Closure barrier_closure =
base::BarrierClosure(android_credentials.size(), on_get_all_realms); base::BarrierClosure(android_credentials.size(), on_get_all_realms);
for (auto* form : android_credentials) { for (auto* form : android_credentials) {
// TODO(crbug.com/628988): Rename |GetAffiliations| to affiliation_service_->GetAffiliationsAndBranding(
// |GetAffiliationsAndBranding|.
affiliation_service_->GetAffiliations(
FacetURI::FromPotentiallyInvalidSpec(form->signon_realm), FacetURI::FromPotentiallyInvalidSpec(form->signon_realm),
AffiliationService::StrategyOnCacheMiss::FAIL, AffiliationService::StrategyOnCacheMiss::FAIL,
base::Bind(&AffiliatedMatchHelper:: base::Bind(&AffiliatedMatchHelper::
......
...@@ -35,34 +35,35 @@ class MockAffiliationService : public testing::StrictMock<AffiliationService> { ...@@ -35,34 +35,35 @@ class MockAffiliationService : public testing::StrictMock<AffiliationService> {
~MockAffiliationService() override {} ~MockAffiliationService() override {}
MOCK_METHOD2(OnGetAffiliationsCalled, MOCK_METHOD2(OnGetAffiliationsAndBrandingCalled,
AffiliatedFacets(const FacetURI&, StrategyOnCacheMiss)); AffiliatedFacets(const FacetURI&, StrategyOnCacheMiss));
MOCK_METHOD2(Prefetch, void(const FacetURI&, const base::Time&)); MOCK_METHOD2(Prefetch, void(const FacetURI&, const base::Time&));
MOCK_METHOD2(CancelPrefetch, void(const FacetURI&, const base::Time&)); MOCK_METHOD2(CancelPrefetch, void(const FacetURI&, const base::Time&));
MOCK_METHOD1(TrimCacheForFacetURI, void(const FacetURI&)); MOCK_METHOD1(TrimCacheForFacetURI, void(const FacetURI&));
void GetAffiliations(const FacetURI& facet_uri, void GetAffiliationsAndBranding(
StrategyOnCacheMiss cache_miss_strategy, const FacetURI& facet_uri,
const ResultCallback& result_callback) override { StrategyOnCacheMiss cache_miss_strategy,
const ResultCallback& result_callback) override {
AffiliatedFacets affiliation = AffiliatedFacets affiliation =
OnGetAffiliationsCalled(facet_uri, cache_miss_strategy); OnGetAffiliationsAndBrandingCalled(facet_uri, cache_miss_strategy);
result_callback.Run(affiliation, !affiliation.empty()); result_callback.Run(affiliation, !affiliation.empty());
} }
void ExpectCallToGetAffiliationsAndSucceedWithResult( void ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
const FacetURI& expected_facet_uri, const FacetURI& expected_facet_uri,
StrategyOnCacheMiss expected_cache_miss_strategy, StrategyOnCacheMiss expected_cache_miss_strategy,
const AffiliatedFacets& affiliations_to_return) { const AffiliatedFacets& affiliations_to_return) {
EXPECT_CALL(*this, OnGetAffiliationsCalled(expected_facet_uri, EXPECT_CALL(*this, OnGetAffiliationsAndBrandingCalled(
expected_cache_miss_strategy)) expected_facet_uri, expected_cache_miss_strategy))
.WillOnce(testing::Return(affiliations_to_return)); .WillOnce(testing::Return(affiliations_to_return));
} }
void ExpectCallToGetAffiliationsAndEmulateFailure( void ExpectCallToGetAffiliationsAndBrandingAndEmulateFailure(
const FacetURI& expected_facet_uri, const FacetURI& expected_facet_uri,
StrategyOnCacheMiss expected_cache_miss_strategy) { StrategyOnCacheMiss expected_cache_miss_strategy) {
EXPECT_CALL(*this, OnGetAffiliationsCalled(expected_facet_uri, EXPECT_CALL(*this, OnGetAffiliationsAndBrandingCalled(
expected_cache_miss_strategy)) expected_facet_uri, expected_cache_miss_strategy))
.WillOnce(testing::Return(AffiliatedFacets())); .WillOnce(testing::Return(AffiliatedFacets()));
} }
...@@ -360,9 +361,10 @@ class AffiliatedMatchHelperTest : public testing::Test { ...@@ -360,9 +361,10 @@ class AffiliatedMatchHelperTest : public testing::Test {
// applications, and only if the observed form is a secure HTML login form. // applications, and only if the observed form is a secure HTML login form.
TEST_F(AffiliatedMatchHelperTest, GetAffiliatedAndroidRealmsYieldsResults) { TEST_F(AffiliatedMatchHelperTest, GetAffiliatedAndroidRealmsYieldsResults) {
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestWebFacetURIBeta1), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassBeta()); FacetURI::FromCanonicalSpec(kTestWebFacetURIBeta1),
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassBeta());
EXPECT_THAT(GetAffiliatedAndroidRealms( EXPECT_THAT(GetAffiliatedAndroidRealms(
GetTestObservedWebForm(kTestWebRealmBeta1, nullptr)), GetTestObservedWebForm(kTestWebRealmBeta1, nullptr)),
testing::UnorderedElementsAre(kTestAndroidRealmBeta2, testing::UnorderedElementsAre(kTestAndroidRealmBeta2,
...@@ -371,9 +373,10 @@ TEST_F(AffiliatedMatchHelperTest, GetAffiliatedAndroidRealmsYieldsResults) { ...@@ -371,9 +373,10 @@ TEST_F(AffiliatedMatchHelperTest, GetAffiliatedAndroidRealmsYieldsResults) {
TEST_F(AffiliatedMatchHelperTest, TEST_F(AffiliatedMatchHelperTest,
GetAffiliatedAndroidRealmsYieldsOnlyAndroidApps) { GetAffiliatedAndroidRealmsYieldsOnlyAndroidApps) {
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestWebFacetURIAlpha1), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassAlpha()); FacetURI::FromCanonicalSpec(kTestWebFacetURIAlpha1),
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassAlpha());
// This verifies that |kTestWebRealmAlpha2| is not returned. // This verifies that |kTestWebRealmAlpha2| is not returned.
EXPECT_THAT(GetAffiliatedAndroidRealms( EXPECT_THAT(GetAffiliatedAndroidRealms(
GetTestObservedWebForm(kTestWebRealmAlpha1, nullptr)), GetTestObservedWebForm(kTestWebRealmAlpha1, nullptr)),
...@@ -408,9 +411,10 @@ TEST_F(AffiliatedMatchHelperTest, ...@@ -408,9 +411,10 @@ TEST_F(AffiliatedMatchHelperTest,
TEST_F(AffiliatedMatchHelperTest, TEST_F(AffiliatedMatchHelperTest,
GetAffiliatedAndroidRealmsYieldsEmptyResultsWhenNoPrefetch) { GetAffiliatedAndroidRealmsYieldsEmptyResultsWhenNoPrefetch) {
mock_affiliation_service()->ExpectCallToGetAffiliationsAndEmulateFailure( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestWebFacetURIAlpha1), ->ExpectCallToGetAffiliationsAndBrandingAndEmulateFailure(
StrategyOnCacheMiss::FAIL); FacetURI::FromCanonicalSpec(kTestWebFacetURIAlpha1),
StrategyOnCacheMiss::FAIL);
EXPECT_THAT(GetAffiliatedAndroidRealms( EXPECT_THAT(GetAffiliatedAndroidRealms(
GetTestObservedWebForm(kTestWebRealmAlpha1, nullptr)), GetTestObservedWebForm(kTestWebRealmAlpha1, nullptr)),
testing::IsEmpty()); testing::IsEmpty());
...@@ -421,9 +425,11 @@ TEST_F(AffiliatedMatchHelperTest, ...@@ -421,9 +425,11 @@ TEST_F(AffiliatedMatchHelperTest,
// only web sites, and only if an Android application is queried. // only web sites, and only if an Android application is queried.
TEST_F(AffiliatedMatchHelperTest, GetAffiliatedWebRealmsYieldsResults) { TEST_F(AffiliatedMatchHelperTest, GetAffiliatedWebRealmsYieldsResults) {
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestAndroidFacetURIAlpha3), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FETCH_OVER_NETWORK, GetTestEquivalenceClassAlpha()); FacetURI::FromCanonicalSpec(kTestAndroidFacetURIAlpha3),
StrategyOnCacheMiss::FETCH_OVER_NETWORK,
GetTestEquivalenceClassAlpha());
PasswordStore::FormDigest android_form( PasswordStore::FormDigest android_form(
GetTestAndroidCredentials(kTestAndroidRealmAlpha3)); GetTestAndroidCredentials(kTestAndroidRealmAlpha3));
EXPECT_THAT( EXPECT_THAT(
...@@ -432,9 +438,11 @@ TEST_F(AffiliatedMatchHelperTest, GetAffiliatedWebRealmsYieldsResults) { ...@@ -432,9 +438,11 @@ TEST_F(AffiliatedMatchHelperTest, GetAffiliatedWebRealmsYieldsResults) {
} }
TEST_F(AffiliatedMatchHelperTest, GetAffiliatedWebRealmsYieldsOnlyWebsites) { TEST_F(AffiliatedMatchHelperTest, GetAffiliatedWebRealmsYieldsOnlyWebsites) {
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestAndroidFacetURIBeta2), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FETCH_OVER_NETWORK, GetTestEquivalenceClassBeta()); FacetURI::FromCanonicalSpec(kTestAndroidFacetURIBeta2),
StrategyOnCacheMiss::FETCH_OVER_NETWORK,
GetTestEquivalenceClassBeta());
PasswordStore::FormDigest android_form( PasswordStore::FormDigest android_form(
GetTestAndroidCredentials(kTestAndroidRealmBeta2)); GetTestAndroidCredentials(kTestAndroidRealmBeta2));
// This verifies that |kTestAndroidRealmBeta3| is not returned. // This verifies that |kTestAndroidRealmBeta3| is not returned.
...@@ -458,27 +466,31 @@ TEST_F(AffiliatedMatchHelperTest, InjectAffiliationAndBrandingInformation) { ...@@ -458,27 +466,31 @@ TEST_F(AffiliatedMatchHelperTest, InjectAffiliationAndBrandingInformation) {
forms.push_back(base::MakeUnique<autofill::PasswordForm>( forms.push_back(base::MakeUnique<autofill::PasswordForm>(
GetTestAndroidCredentials(kTestAndroidRealmAlpha3))); GetTestAndroidCredentials(kTestAndroidRealmAlpha3)));
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestAndroidFacetURIAlpha3), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassAlpha()); FacetURI::FromCanonicalSpec(kTestAndroidFacetURIAlpha3),
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassAlpha());
forms.push_back(base::MakeUnique<autofill::PasswordForm>( forms.push_back(base::MakeUnique<autofill::PasswordForm>(
GetTestAndroidCredentials(kTestAndroidRealmBeta2))); GetTestAndroidCredentials(kTestAndroidRealmBeta2)));
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestAndroidFacetURIBeta2), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassBeta()); FacetURI::FromCanonicalSpec(kTestAndroidFacetURIBeta2),
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassBeta());
forms.push_back(base::MakeUnique<autofill::PasswordForm>( forms.push_back(base::MakeUnique<autofill::PasswordForm>(
GetTestAndroidCredentials(kTestAndroidRealmBeta3))); GetTestAndroidCredentials(kTestAndroidRealmBeta3)));
mock_affiliation_service()->ExpectCallToGetAffiliationsAndSucceedWithResult( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestAndroidFacetURIBeta3), ->ExpectCallToGetAffiliationsAndBrandingAndSucceedWithResult(
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassBeta()); FacetURI::FromCanonicalSpec(kTestAndroidFacetURIBeta3),
StrategyOnCacheMiss::FAIL, GetTestEquivalenceClassBeta());
forms.push_back(base::MakeUnique<autofill::PasswordForm>( forms.push_back(base::MakeUnique<autofill::PasswordForm>(
GetTestAndroidCredentials(kTestAndroidRealmGamma))); GetTestAndroidCredentials(kTestAndroidRealmGamma)));
mock_affiliation_service()->ExpectCallToGetAffiliationsAndEmulateFailure( mock_affiliation_service()
FacetURI::FromCanonicalSpec(kTestAndroidFacetURIGamma), ->ExpectCallToGetAffiliationsAndBrandingAndEmulateFailure(
StrategyOnCacheMiss::FAIL); FacetURI::FromCanonicalSpec(kTestAndroidFacetURIGamma),
StrategyOnCacheMiss::FAIL);
PasswordStore::FormDigest digest = PasswordStore::FormDigest digest =
GetTestObservedWebForm(kTestWebRealmBeta1, nullptr); GetTestObservedWebForm(kTestWebRealmBeta1, nullptr);
...@@ -524,8 +536,9 @@ TEST_F(AffiliatedMatchHelperTest, IsValidAndroidCredential) { ...@@ -524,8 +536,9 @@ TEST_F(AffiliatedMatchHelperTest, IsValidAndroidCredential) {
// Verifies that affiliations for Android applications with pre-existing // Verifies that affiliations for Android applications with pre-existing
// credentials on start-up are prefetched. // credentials on start-up are prefetched.
TEST_F(AffiliatedMatchHelperTest, TEST_F(
PrefetchAffiliationsForPreexistingAndroidCredentialsOnStartup) { AffiliatedMatchHelperTest,
PrefetchAffiliationsAndBrandingForPreexistingAndroidCredentialsOnStartup) {
AddAndroidAndNonAndroidTestLogins(); AddAndroidAndNonAndroidTestLogins();
match_helper()->Initialize(); match_helper()->Initialize();
...@@ -561,7 +574,7 @@ TEST_F(AffiliatedMatchHelperTest, ...@@ -561,7 +574,7 @@ TEST_F(AffiliatedMatchHelperTest,
} }
TEST_F(AffiliatedMatchHelperTest, TEST_F(AffiliatedMatchHelperTest,
CancelPrefetchingAffiliationsForRemovedAndroidCredentials) { CancelPrefetchingAffiliationsAndBrandingForRemovedAndroidCredentials) {
AddAndroidAndNonAndroidTestLogins(); AddAndroidAndNonAndroidTestLogins();
match_helper()->Initialize(); match_helper()->Initialize();
ExpectPrefetchForAndroidTestLogins(); ExpectPrefetchForAndroidTestLogins();
......
...@@ -56,7 +56,7 @@ void AffiliationBackend::Initialize(const base::FilePath& db_path) { ...@@ -56,7 +56,7 @@ void AffiliationBackend::Initialize(const base::FilePath& db_path) {
cache_->Init(db_path); cache_->Init(db_path);
} }
void AffiliationBackend::GetAffiliations( void AffiliationBackend::GetAffiliationsAndBranding(
const FacetURI& facet_uri, const FacetURI& facet_uri,
StrategyOnCacheMiss cache_miss_strategy, StrategyOnCacheMiss cache_miss_strategy,
const AffiliationService::ResultCallback& callback, const AffiliationService::ResultCallback& callback,
...@@ -65,8 +65,8 @@ void AffiliationBackend::GetAffiliations( ...@@ -65,8 +65,8 @@ void AffiliationBackend::GetAffiliations(
FacetManager* facet_manager = GetOrCreateFacetManager(facet_uri); FacetManager* facet_manager = GetOrCreateFacetManager(facet_uri);
DCHECK(facet_manager); DCHECK(facet_manager);
facet_manager->GetAffiliations(cache_miss_strategy, callback, facet_manager->GetAffiliationsAndBranding(cache_miss_strategy, callback,
callback_task_runner); callback_task_runner);
if (facet_manager->CanBeDiscarded()) if (facet_manager->CanBeDiscarded())
facet_managers_.erase(facet_uri); facet_managers_.erase(facet_uri);
...@@ -101,7 +101,7 @@ void AffiliationBackend::TrimCacheForFacetURI(const FacetURI& facet_uri) { ...@@ -101,7 +101,7 @@ void AffiliationBackend::TrimCacheForFacetURI(const FacetURI& facet_uri) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
AffiliatedFacetsWithUpdateTime affiliation; AffiliatedFacetsWithUpdateTime affiliation;
if (cache_->GetAffiliationsForFacetURI(facet_uri, &affiliation)) if (cache_->GetAffiliationsAndBrandingForFacetURI(facet_uri, &affiliation))
DiscardCachedDataIfNoLongerNeeded(affiliation.facets); DiscardCachedDataIfNoLongerNeeded(affiliation.facets);
} }
...@@ -135,7 +135,7 @@ void AffiliationBackend::DiscardCachedDataIfNoLongerNeeded( ...@@ -135,7 +135,7 @@ void AffiliationBackend::DiscardCachedDataIfNoLongerNeeded(
} }
CHECK(!affiliated_facets.empty()); CHECK(!affiliated_facets.empty());
cache_->DeleteAffiliationsForFacetURI(affiliated_facets[0].uri); cache_->DeleteAffiliationsAndBrandingForFacetURI(affiliated_facets[0].uri);
} }
void AffiliationBackend::OnSendNotification(const FacetURI& facet_uri) { void AffiliationBackend::OnSendNotification(const FacetURI& facet_uri) {
...@@ -150,10 +150,10 @@ void AffiliationBackend::OnSendNotification(const FacetURI& facet_uri) { ...@@ -150,10 +150,10 @@ void AffiliationBackend::OnSendNotification(const FacetURI& facet_uri) {
facet_managers_.erase(facet_uri); facet_managers_.erase(facet_uri);
} }
bool AffiliationBackend::ReadAffiliationsFromDatabase( bool AffiliationBackend::ReadAffiliationsAndBrandingFromDatabase(
const FacetURI& facet_uri, const FacetURI& facet_uri,
AffiliatedFacetsWithUpdateTime* affiliations) { AffiliatedFacetsWithUpdateTime* affiliations) {
return cache_->GetAffiliationsForFacetURI(facet_uri, affiliations); return cache_->GetAffiliationsAndBrandingForFacetURI(facet_uri, affiliations);
} }
void AffiliationBackend::SignalNeedNetworkRequest() { void AffiliationBackend::SignalNeedNetworkRequest() {
...@@ -208,8 +208,9 @@ void AffiliationBackend::OnFetchSucceeded( ...@@ -208,8 +208,9 @@ void AffiliationBackend::OnFetchSucceeded(
} }
} }
// A subsequent fetch may be needed if any additional GetAffiliations() // A subsequent fetch may be needed if any additional
// requests came in while the current fetch was in flight. // GetAffiliationsAndBranding() requests came in while the current fetch was
// in flight.
for (const auto& facet_manager_pair : facet_managers_) { for (const auto& facet_manager_pair : facet_managers_) {
if (facet_manager_pair.second->DoesRequireFetch()) { if (facet_manager_pair.second->DoesRequireFetch()) {
throttler_->SignalNetworkRequestNeeded(); throttler_->SignalNetworkRequestNeeded();
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <stddef.h> #include <stddef.h>
#include <map> #include <map>
#include <memory>
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
...@@ -73,7 +74,7 @@ class AffiliationBackend : public FacetManagerHost, ...@@ -73,7 +74,7 @@ class AffiliationBackend : public FacetManagerHost,
// Implementations for methods of the same name in AffiliationService. They // Implementations for methods of the same name in AffiliationService. They
// are not documented here again. See affiliation_service.h for details: // are not documented here again. See affiliation_service.h for details:
void GetAffiliations( void GetAffiliationsAndBranding(
const FacetURI& facet_uri, const FacetURI& facet_uri,
StrategyOnCacheMiss cache_miss_strategy, StrategyOnCacheMiss cache_miss_strategy,
const AffiliationService::ResultCallback& callback, const AffiliationService::ResultCallback& callback,
...@@ -107,7 +108,7 @@ class AffiliationBackend : public FacetManagerHost, ...@@ -107,7 +108,7 @@ class AffiliationBackend : public FacetManagerHost,
void OnSendNotification(const FacetURI& facet_uri); void OnSendNotification(const FacetURI& facet_uri);
// FacetManagerHost: // FacetManagerHost:
bool ReadAffiliationsFromDatabase( bool ReadAffiliationsAndBrandingFromDatabase(
const FacetURI& facet_uri, const FacetURI& facet_uri,
AffiliatedFacetsWithUpdateTime* affiliations) override; AffiliatedFacetsWithUpdateTime* affiliations) override;
void SignalNeedNetworkRequest() override; void SignalNeedNetworkRequest() override;
......
...@@ -89,7 +89,7 @@ bool AffiliationDatabase::Init(const base::FilePath& path) { ...@@ -89,7 +89,7 @@ bool AffiliationDatabase::Init(const base::FilePath& path) {
return true; return true;
} }
bool AffiliationDatabase::GetAffiliationsForFacetURI( bool AffiliationDatabase::GetAffiliationsAndBrandingForFacetURI(
const FacetURI& facet_uri, const FacetURI& facet_uri,
AffiliatedFacetsWithUpdateTime* result) const { AffiliatedFacetsWithUpdateTime* result) const {
DCHECK(result); DCHECK(result);
...@@ -116,7 +116,7 @@ bool AffiliationDatabase::GetAffiliationsForFacetURI( ...@@ -116,7 +116,7 @@ bool AffiliationDatabase::GetAffiliationsForFacetURI(
return !result->facets.empty(); return !result->facets.empty();
} }
void AffiliationDatabase::GetAllAffiliations( void AffiliationDatabase::GetAllAffiliationsAndBranding(
std::vector<AffiliatedFacetsWithUpdateTime>* results) const { std::vector<AffiliatedFacetsWithUpdateTime>* results) const {
DCHECK(results); DCHECK(results);
results->clear(); results->clear();
...@@ -146,7 +146,7 @@ void AffiliationDatabase::GetAllAffiliations( ...@@ -146,7 +146,7 @@ void AffiliationDatabase::GetAllAffiliations(
} }
} }
void AffiliationDatabase::DeleteAffiliationsForFacetURI( void AffiliationDatabase::DeleteAffiliationsAndBrandingForFacetURI(
const FacetURI& facet_uri) { const FacetURI& facet_uri) {
sql::Transaction transaction(sql_connection_.get()); sql::Transaction transaction(sql_connection_.get());
if (!transaction.Begin()) if (!transaction.Begin())
...@@ -174,7 +174,7 @@ void AffiliationDatabase::DeleteAffiliationsForFacetURI( ...@@ -174,7 +174,7 @@ void AffiliationDatabase::DeleteAffiliationsForFacetURI(
transaction.Commit(); transaction.Commit();
} }
void AffiliationDatabase::DeleteAffiliationsOlderThan( void AffiliationDatabase::DeleteAffiliationsAndBrandingOlderThan(
const base::Time& cutoff_threshold) { const base::Time& cutoff_threshold) {
// Children will get deleted due to 'ON DELETE CASCADE'. // Children will get deleted due to 'ON DELETE CASCADE'.
sql::Statement statement_parent(sql_connection_->GetCachedStatement( sql::Statement statement_parent(sql_connection_->GetCachedStatement(
...@@ -185,7 +185,7 @@ void AffiliationDatabase::DeleteAffiliationsOlderThan( ...@@ -185,7 +185,7 @@ void AffiliationDatabase::DeleteAffiliationsOlderThan(
statement_parent.Run(); statement_parent.Run();
} }
void AffiliationDatabase::DeleteAllAffiliations() { void AffiliationDatabase::DeleteAllAffiliationsAndBranding() {
// Children will get deleted due to 'ON DELETE CASCADE'. // Children will get deleted due to 'ON DELETE CASCADE'.
sql::Statement statement_parent( sql::Statement statement_parent(
sql_connection_->GetUniqueStatement("DELETE FROM eq_classes")); sql_connection_->GetUniqueStatement("DELETE FROM eq_classes"));
...@@ -242,12 +242,12 @@ void AffiliationDatabase::StoreAndRemoveConflicting( ...@@ -242,12 +242,12 @@ void AffiliationDatabase::StoreAndRemoveConflicting(
for (const Facet& facet : affiliation.facets) { for (const Facet& facet : affiliation.facets) {
AffiliatedFacetsWithUpdateTime old_affiliation; AffiliatedFacetsWithUpdateTime old_affiliation;
if (GetAffiliationsForFacetURI(facet.uri, &old_affiliation)) { if (GetAffiliationsAndBrandingForFacetURI(facet.uri, &old_affiliation)) {
if (!AreEquivalenceClassesEqual(old_affiliation.facets, if (!AreEquivalenceClassesEqual(old_affiliation.facets,
affiliation.facets)) { affiliation.facets)) {
removed_affiliations->push_back(old_affiliation); removed_affiliations->push_back(old_affiliation);
} }
DeleteAffiliationsForFacetURI(facet.uri); DeleteAffiliationsAndBrandingForFacetURI(facet.uri);
} }
} }
......
...@@ -25,8 +25,9 @@ class Statement; ...@@ -25,8 +25,9 @@ class Statement;
namespace password_manager { namespace password_manager {
// Stores equivalence classes of facets, i.e., facets that are affiliated with // Stores equivalence classes of facets, i.e., facets that are affiliated with
// each other, in an SQLite database. See affiliation_utils.h for a more // each other, in an SQLite database. In addition, relevant branding information
// detailed definition of what this means. // is stored. See affiliation_utils.h for a more detailed definition of what
// this means.
// //
// Under the assumption that there is most likely not much the caller can do in // Under the assumption that there is most likely not much the caller can do in
// case of database errors, most methods silently ignore them. Nevertheless, the // case of database errors, most methods silently ignore them. Nevertheless, the
...@@ -42,33 +43,39 @@ class AffiliationDatabase { ...@@ -42,33 +43,39 @@ class AffiliationDatabase {
bool Init(const base::FilePath& path); bool Init(const base::FilePath& path);
// Looks up the equivalence class containing |facet_uri|, and returns true if // Looks up the equivalence class containing |facet_uri|, and returns true if
// such a class is found, in which case it is also stored into |result|. // such a class is found, in which case it is also stored into |result|
bool GetAffiliationsForFacetURI(const FacetURI& facet_uri, // together with branding information, if applicable.
AffiliatedFacetsWithUpdateTime* result) const; bool GetAffiliationsAndBrandingForFacetURI(
const FacetURI& facet_uri,
// Retrieves all stored equivalence classes. AffiliatedFacetsWithUpdateTime* result) const;
void GetAllAffiliations(
// Retrieves all stored equivalence classes and branding information.
void GetAllAffiliationsAndBranding(
std::vector<AffiliatedFacetsWithUpdateTime>* results) const; std::vector<AffiliatedFacetsWithUpdateTime>* results) const;
// Removes the stored equivalence class, if any, containing |facet_uri|. // Removes the stored equivalence class and branding information, if any,
void DeleteAffiliationsForFacetURI(const FacetURI& facet_uri); // containing |facet_uri|.
void DeleteAffiliationsAndBrandingForFacetURI(const FacetURI& facet_uri);
// Removes stored equivalence classes that were last updated before the // Removes stored equivalence classes and branding information that were last
// |cutoff_threshold|. // updated before the |cutoff_threshold|.
void DeleteAffiliationsOlderThan(const base::Time& cutoff_threshold); void DeleteAffiliationsAndBrandingOlderThan(
const base::Time& cutoff_threshold);
// Removes all records from all tables of the database. // Removes all records from all tables of the database.
void DeleteAllAffiliations(); void DeleteAllAffiliationsAndBranding();
// Stores the equivalence class defined by |affiliated_facets| to the DB and // Stores the equivalence class and branding information defined by
// returns true unless it has a non-empty subset with a preexisting class, in // |affiliated_facets| to the DB and returns true unless it has a non-empty
// which case no changes are made and the function returns false. // subset with a preexisting class, in which case no changes are made and the
// function returns false.
bool Store(const AffiliatedFacetsWithUpdateTime& affiliated_facets); bool Store(const AffiliatedFacetsWithUpdateTime& affiliated_facets);
// Stores the equivalence class defined by |affiliated_facets| to the DB, // Stores the equivalence class and branding information defined by
// database, and removes any other equivalence classes that are in conflict // |affiliated_facets| to the database, and removes any other equivalence
// with |affiliated_facets|, i.e. those that are neither equal nor disjoint to // classes that are in conflict with |affiliated_facets|, i.e. those that are
// it. Removed equivalence classes are stored into |removed_affiliations|. // neither equal nor disjoint to it. Removed equivalence classes are stored
// into |removed_affiliations|.
void StoreAndRemoveConflicting( void StoreAndRemoveConflicting(
const AffiliatedFacetsWithUpdateTime& affiliated_facets, const AffiliatedFacetsWithUpdateTime& affiliated_facets,
std::vector<AffiliatedFacetsWithUpdateTime>* removed_affiliations); std::vector<AffiliatedFacetsWithUpdateTime>* removed_affiliations);
......
...@@ -144,17 +144,17 @@ TEST_F(AffiliationDatabaseTest, Store) { ...@@ -144,17 +144,17 @@ TEST_F(AffiliationDatabaseTest, Store) {
} }
} }
TEST_F(AffiliationDatabaseTest, GetAllAffiliations) { TEST_F(AffiliationDatabaseTest, GetAllAffiliationsAndBranding) {
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
// Empty database should not return any equivalence classes. // Empty database should not return any equivalence classes.
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
EXPECT_EQ(0u, affiliations.size()); EXPECT_EQ(0u, affiliations.size());
ASSERT_NO_FATAL_FAILURE(StoreInitialTestData()); ASSERT_NO_FATAL_FAILURE(StoreInitialTestData());
// The test data should be returned in order. // The test data should be returned in order.
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(3u, affiliations.size()); ASSERT_EQ(3u, affiliations.size());
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass1(), ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass1(),
affiliations[0]); affiliations[0]);
...@@ -171,7 +171,8 @@ TEST_F(AffiliationDatabaseTest, GetAffiliationForFacet) { ...@@ -171,7 +171,8 @@ TEST_F(AffiliationDatabaseTest, GetAffiliationForFacet) {
// class. // class.
for (const auto& facet : TestEquivalenceClass1().facets) { for (const auto& facet : TestEquivalenceClass1().facets) {
AffiliatedFacetsWithUpdateTime affiliation; AffiliatedFacetsWithUpdateTime affiliation;
EXPECT_TRUE(db().GetAffiliationsForFacetURI(facet.uri, &affiliation)); EXPECT_TRUE(
db().GetAffiliationsAndBrandingForFacetURI(facet.uri, &affiliation));
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual( ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(
TestEquivalenceClass1(), affiliation); TestEquivalenceClass1(), affiliation);
} }
...@@ -180,7 +181,7 @@ TEST_F(AffiliationDatabaseTest, GetAffiliationForFacet) { ...@@ -180,7 +181,7 @@ TEST_F(AffiliationDatabaseTest, GetAffiliationForFacet) {
// that class. // that class.
{ {
AffiliatedFacetsWithUpdateTime affiliation; AffiliatedFacetsWithUpdateTime affiliation;
EXPECT_TRUE(db().GetAffiliationsForFacetURI( EXPECT_TRUE(db().GetAffiliationsAndBrandingForFacetURI(
FacetURI::FromCanonicalSpec(kTestAndroidFacetURI), &affiliation)); FacetURI::FromCanonicalSpec(kTestAndroidFacetURI), &affiliation));
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual( ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(
TestEquivalenceClass3(), affiliation); TestEquivalenceClass3(), affiliation);
...@@ -189,7 +190,7 @@ TEST_F(AffiliationDatabaseTest, GetAffiliationForFacet) { ...@@ -189,7 +190,7 @@ TEST_F(AffiliationDatabaseTest, GetAffiliationForFacet) {
// Verify that querying a facet not in the database yields no result. // Verify that querying a facet not in the database yields no result.
{ {
AffiliatedFacetsWithUpdateTime affiliation; AffiliatedFacetsWithUpdateTime affiliation;
EXPECT_FALSE(db().GetAffiliationsForFacetURI( EXPECT_FALSE(db().GetAffiliationsAndBrandingForFacetURI(
FacetURI::FromCanonicalSpec(kTestFacetURI6), &affiliation)); FacetURI::FromCanonicalSpec(kTestFacetURI6), &affiliation));
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual( ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(
AffiliatedFacetsWithUpdateTime(), affiliation); AffiliatedFacetsWithUpdateTime(), affiliation);
...@@ -210,7 +211,7 @@ TEST_F(AffiliationDatabaseTest, StoreAndRemoveConflicting) { ...@@ -210,7 +211,7 @@ TEST_F(AffiliationDatabaseTest, StoreAndRemoveConflicting) {
EXPECT_EQ(0u, removed.size()); EXPECT_EQ(0u, removed.size());
AffiliatedFacetsWithUpdateTime affiliation; AffiliatedFacetsWithUpdateTime affiliation;
EXPECT_TRUE(db().GetAffiliationsForFacetURI( EXPECT_TRUE(db().GetAffiliationsAndBrandingForFacetURI(
FacetURI::FromCanonicalSpec(kTestFacetURI1), &affiliation)); FacetURI::FromCanonicalSpec(kTestFacetURI1), &affiliation));
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(updated, affiliation); ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(updated, affiliation);
} }
...@@ -233,7 +234,7 @@ TEST_F(AffiliationDatabaseTest, StoreAndRemoveConflicting) { ...@@ -233,7 +234,7 @@ TEST_F(AffiliationDatabaseTest, StoreAndRemoveConflicting) {
TestEquivalenceClass2(), removed[1]); TestEquivalenceClass2(), removed[1]);
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(2u, affiliations.size()); ASSERT_EQ(2u, affiliations.size());
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual( ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(
TestEquivalenceClass3(), affiliations[0]); TestEquivalenceClass3(), affiliations[0]);
...@@ -242,36 +243,37 @@ TEST_F(AffiliationDatabaseTest, StoreAndRemoveConflicting) { ...@@ -242,36 +243,37 @@ TEST_F(AffiliationDatabaseTest, StoreAndRemoveConflicting) {
} }
} }
TEST_F(AffiliationDatabaseTest, DeleteAllAffiliations) { TEST_F(AffiliationDatabaseTest, DeleteAllAffiliationsAndBranding) {
db().DeleteAllAffiliations(); db().DeleteAllAffiliationsAndBranding();
ASSERT_NO_FATAL_FAILURE(StoreInitialTestData()); ASSERT_NO_FATAL_FAILURE(StoreInitialTestData());
db().DeleteAllAffiliations(); db().DeleteAllAffiliationsAndBranding();
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(0u, affiliations.size()); ASSERT_EQ(0u, affiliations.size());
} }
TEST_F(AffiliationDatabaseTest, DeleteAffiliationsOlderThan) { TEST_F(AffiliationDatabaseTest, DeleteAffiliationsAndBrandingOlderThan) {
db().DeleteAffiliationsOlderThan(base::Time::FromInternalValue(0)); db().DeleteAffiliationsAndBrandingOlderThan(base::Time::FromInternalValue(0));
ASSERT_NO_FATAL_FAILURE(StoreInitialTestData()); ASSERT_NO_FATAL_FAILURE(StoreInitialTestData());
db().DeleteAffiliationsOlderThan(base::Time::FromInternalValue(kTestTimeUs2)); db().DeleteAffiliationsAndBrandingOlderThan(
base::Time::FromInternalValue(kTestTimeUs2));
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(2u, affiliations.size()); ASSERT_EQ(2u, affiliations.size());
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass2(), ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass2(),
affiliations[0]); affiliations[0]);
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass3(), ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass3(),
affiliations[1]); affiliations[1]);
db().DeleteAffiliationsOlderThan(base::Time::Max()); db().DeleteAffiliationsAndBrandingOlderThan(base::Time::Max());
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(0u, affiliations.size()); ASSERT_EQ(0u, affiliations.size());
} }
...@@ -284,7 +286,7 @@ TEST_F(AffiliationDatabaseTest, DBRetainsDataAfterReopening) { ...@@ -284,7 +286,7 @@ TEST_F(AffiliationDatabaseTest, DBRetainsDataAfterReopening) {
// The test data should be returned in order. // The test data should be returned in order.
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(3u, affiliations.size()); ASSERT_EQ(3u, affiliations.size());
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass1(), ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass1(),
affiliations[0]); affiliations[0]);
...@@ -304,11 +306,11 @@ TEST_F(AffiliationDatabaseTest, CorruptDBIsRazedThenOpened) { ...@@ -304,11 +306,11 @@ TEST_F(AffiliationDatabaseTest, CorruptDBIsRazedThenOpened) {
ASSERT_NO_FATAL_FAILURE(OpenDatabase()); ASSERT_NO_FATAL_FAILURE(OpenDatabase());
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
EXPECT_EQ(0u, affiliations.size()); EXPECT_EQ(0u, affiliations.size());
ASSERT_NO_FATAL_FAILURE(StoreInitialTestData()); ASSERT_NO_FATAL_FAILURE(StoreInitialTestData());
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
EXPECT_EQ(3u, affiliations.size()); EXPECT_EQ(3u, affiliations.size());
} }
...@@ -321,7 +323,7 @@ TEST_F(AffiliationDatabaseTest, CorruptDBGetsPoisoned) { ...@@ -321,7 +323,7 @@ TEST_F(AffiliationDatabaseTest, CorruptDBGetsPoisoned) {
EXPECT_FALSE(db().Store(TestEquivalenceClass2())); EXPECT_FALSE(db().Store(TestEquivalenceClass2()));
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
EXPECT_EQ(0u, affiliations.size()); EXPECT_EQ(0u, affiliations.size());
} }
...@@ -354,7 +356,7 @@ TEST_F(AffiliationDatabaseTest, MigrateFromVersion1) { ...@@ -354,7 +356,7 @@ TEST_F(AffiliationDatabaseTest, MigrateFromVersion1) {
// Check that migration was successful and existing data was untouched. // Check that migration was successful and existing data was untouched.
EXPECT_EQ(2, db().GetDatabaseVersionForTesting()); EXPECT_EQ(2, db().GetDatabaseVersionForTesting());
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(3u, affiliations.size()); ASSERT_EQ(3u, affiliations.size());
// There was no branding information in version 1, thus we expect it to be // There was no branding information in version 1, thus we expect it to be
...@@ -392,7 +394,7 @@ TEST_F(AffiliationDatabaseTest, InitializeFromVersion2) { ...@@ -392,7 +394,7 @@ TEST_F(AffiliationDatabaseTest, InitializeFromVersion2) {
// Expect the migration to be a no-op that does not modify the existing data. // Expect the migration to be a no-op that does not modify the existing data.
OpenDatabase(); OpenDatabase();
std::vector<AffiliatedFacetsWithUpdateTime> affiliations; std::vector<AffiliatedFacetsWithUpdateTime> affiliations;
db().GetAllAffiliations(&affiliations); db().GetAllAffiliationsAndBranding(&affiliations);
ASSERT_EQ(3u, affiliations.size()); ASSERT_EQ(3u, affiliations.size());
ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass1(), ExpectEquivalenceClassesIncludingBrandingInfoAreEqual(TestEquivalenceClass1(),
affiliations[0]); affiliations[0]);
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "components/password_manager/core/browser/android_affiliation/affiliation_service.h" #include "components/password_manager/core/browser/android_affiliation/affiliation_service.h"
#include <memory>
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
...@@ -48,7 +50,7 @@ void AffiliationService::Initialize( ...@@ -48,7 +50,7 @@ void AffiliationService::Initialize(
base::Unretained(backend_), db_path)); base::Unretained(backend_), db_path));
} }
void AffiliationService::GetAffiliations( void AffiliationService::GetAffiliationsAndBranding(
const FacetURI& facet_uri, const FacetURI& facet_uri,
StrategyOnCacheMiss cache_miss_strategy, StrategyOnCacheMiss cache_miss_strategy,
const ResultCallback& result_callback) { const ResultCallback& result_callback) {
...@@ -56,7 +58,7 @@ void AffiliationService::GetAffiliations( ...@@ -56,7 +58,7 @@ void AffiliationService::GetAffiliations(
DCHECK(backend_); DCHECK(backend_);
backend_task_runner_->PostTask( backend_task_runner_->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&AffiliationBackend::GetAffiliations, base::Bind(&AffiliationBackend::GetAffiliationsAndBranding,
base::Unretained(backend_), facet_uri, cache_miss_strategy, base::Unretained(backend_), facet_uri, cache_miss_strategy,
result_callback, base::SequencedTaskRunnerHandle::Get())); result_callback, base::SequencedTaskRunnerHandle::Get()));
} }
......
...@@ -40,7 +40,8 @@ class AffiliationBackend; ...@@ -40,7 +40,8 @@ class AffiliationBackend;
// network request to the Affiliation API containing the URI of facet X // network request to the Affiliation API containing the URI of facet X
// is acceptable from the privacy and/or performance perspective. // is acceptable from the privacy and/or performance perspective.
// //
// This mode of operation is achieved by invoking GetAffiliations() with // This mode of operation is achieved by invoking
// GetAffiliationsAndBranding() with
// StrategyOnCacheMiss::FETCH_OVER_NETWORK. // StrategyOnCacheMiss::FETCH_OVER_NETWORK.
// //
// 2.) Proactive fetching: For the compound query that is concerned with // 2.) Proactive fetching: For the compound query that is concerned with
...@@ -69,7 +70,7 @@ class AffiliationBackend; ...@@ -69,7 +70,7 @@ class AffiliationBackend;
// ~ExampleAffiliatedCredentialFiller() { cancel_handle_.Run(); } // ~ExampleAffiliatedCredentialFiller() { cancel_handle_.Run(); }
// //
// void ShouldFillInto(const FacetURI& wi, FillDelegate* delegate) { // void ShouldFillInto(const FacetURI& wi, FillDelegate* delegate) {
// service_->GetAffiliations(wi, StrategyOnCacheMiss::FAIL, // service_->GetAffiliationsAndBranding(wi, StrategyOnCacheMiss::FAIL,
// base::Bind( // base::Bind(
// &ExampleAffiliatedCredentialFiller::OnAffiliationResult, // &ExampleAffiliatedCredentialFiller::OnAffiliationResult,
// AsWeakPtr(), // AsWeakPtr(),
...@@ -107,18 +108,19 @@ class AffiliationService : public KeyedService { ...@@ -107,18 +108,19 @@ class AffiliationService : public KeyedService {
void Initialize(net::URLRequestContextGetter* request_context_getter, void Initialize(net::URLRequestContextGetter* request_context_getter,
const base::FilePath& db_path); const base::FilePath& db_path);
// Looks up facets affiliated with the facet identified by |facet_uri|, and // Looks up facets affiliated with the facet identified by |facet_uri| and
// invokes |result_callback| with the results. It is guaranteed that the // branding information, and invokes |result_callback| with the results. It is
// results will contain one facet with URI equal to |facet_uri| when // guaranteed that the results will contain one facet with URI equal to
// |result_callback| is invoked with success set to true. // |facet_uri| when |result_callback| is invoked with success set to true.
// //
// If the local cache contains fresh affiliation information for |facet_uri|, // If the local cache contains fresh affiliation and branding information for
// the request will be served from cache. Otherwise, |cache_miss_policy| // |facet_uri|, the request will be served from cache. Otherwise,
// controls whether to issue an on-demand network request, or to fail the // |cache_miss_policy| controls whether to issue an on-demand network request,
// request without fetching. // or to fail the request without fetching.
virtual void GetAffiliations(const FacetURI& facet_uri, virtual void GetAffiliationsAndBranding(
StrategyOnCacheMiss cache_miss_strategy, const FacetURI& facet_uri,
const ResultCallback& result_callback); StrategyOnCacheMiss cache_miss_strategy,
const ResultCallback& result_callback);
// Prefetches affiliation information for the facet identified by |facet_uri|, // Prefetches affiliation information for the facet identified by |facet_uri|,
// and keeps the information fresh by periodic re-fetches (as needed) until // and keeps the information fresh by periodic re-fetches (as needed) until
......
...@@ -101,12 +101,13 @@ class AffiliationServiceTest : public testing::Test { ...@@ -101,12 +101,13 @@ class AffiliationServiceTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(AffiliationServiceTest); DISALLOW_COPY_AND_ASSIGN(AffiliationServiceTest);
}; };
TEST_F(AffiliationServiceTest, GetAffiliations) { TEST_F(AffiliationServiceTest, GetAffiliationsAndBranding) {
// The first request allows on-demand fetching, and should trigger a fetch. // The first request allows on-demand fetching, and should trigger a fetch.
// Then, it should succeed after the fetch is complete. // Then, it should succeed after the fetch is complete.
service()->GetAffiliations(FacetURI::FromCanonicalSpec(kTestFacetURIAlpha1), service()->GetAffiliationsAndBranding(
StrategyOnCacheMiss::FETCH_OVER_NETWORK, FacetURI::FromCanonicalSpec(kTestFacetURIAlpha1),
mock_consumer()->GetResultCallback()); StrategyOnCacheMiss::FETCH_OVER_NETWORK,
mock_consumer()->GetResultCallback());
background_task_runner()->RunUntilIdle(); background_task_runner()->RunUntilIdle();
ASSERT_TRUE(fake_affiliation_api()->HasPendingRequest()); ASSERT_TRUE(fake_affiliation_api()->HasPendingRequest());
...@@ -123,9 +124,9 @@ TEST_F(AffiliationServiceTest, GetAffiliations) { ...@@ -123,9 +124,9 @@ TEST_F(AffiliationServiceTest, GetAffiliations) {
testing::Mock::VerifyAndClearExpectations(mock_consumer()); testing::Mock::VerifyAndClearExpectations(mock_consumer());
// The second request should be (and can be) served from cache. // The second request should be (and can be) served from cache.
service()->GetAffiliations(FacetURI::FromCanonicalSpec(kTestFacetURIAlpha1), service()->GetAffiliationsAndBranding(
StrategyOnCacheMiss::FAIL, FacetURI::FromCanonicalSpec(kTestFacetURIAlpha1),
mock_consumer()->GetResultCallback()); StrategyOnCacheMiss::FAIL, mock_consumer()->GetResultCallback());
background_task_runner()->RunUntilIdle(); background_task_runner()->RunUntilIdle();
ASSERT_FALSE(fake_affiliation_api()->HasPendingRequest()); ASSERT_FALSE(fake_affiliation_api()->HasPendingRequest());
...@@ -136,9 +137,9 @@ TEST_F(AffiliationServiceTest, GetAffiliations) { ...@@ -136,9 +137,9 @@ TEST_F(AffiliationServiceTest, GetAffiliations) {
// The third request is also restricted to the cache, but cannot be served // The third request is also restricted to the cache, but cannot be served
// from cache, thus it should fail. // from cache, thus it should fail.
service()->GetAffiliations(FacetURI::FromCanonicalSpec(kTestFacetURIBeta1), service()->GetAffiliationsAndBranding(
StrategyOnCacheMiss::FAIL, FacetURI::FromCanonicalSpec(kTestFacetURIBeta1),
mock_consumer()->GetResultCallback()); StrategyOnCacheMiss::FAIL, mock_consumer()->GetResultCallback());
background_task_runner()->RunUntilIdle(); background_task_runner()->RunUntilIdle();
ASSERT_FALSE(fake_affiliation_api()->HasPendingRequest()); ASSERT_FALSE(fake_affiliation_api()->HasPendingRequest());
...@@ -149,9 +150,10 @@ TEST_F(AffiliationServiceTest, GetAffiliations) { ...@@ -149,9 +150,10 @@ TEST_F(AffiliationServiceTest, GetAffiliations) {
} }
TEST_F(AffiliationServiceTest, ShutdownWhileTasksArePosted) { TEST_F(AffiliationServiceTest, ShutdownWhileTasksArePosted) {
service()->GetAffiliations(FacetURI::FromCanonicalSpec(kTestFacetURIAlpha1), service()->GetAffiliationsAndBranding(
StrategyOnCacheMiss::FETCH_OVER_NETWORK, FacetURI::FromCanonicalSpec(kTestFacetURIAlpha1),
mock_consumer()->GetResultCallback()); StrategyOnCacheMiss::FETCH_OVER_NETWORK,
mock_consumer()->GetResultCallback());
EXPECT_TRUE(background_task_runner()->HasPendingTask()); EXPECT_TRUE(background_task_runner()->HasPendingTask());
DestroyService(); DestroyService();
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
// //
// On-demand fetching strategy // On-demand fetching strategy
// //
// A GetAffiliations() request concerning facet X will be served from the cache // A GetAffiliationsAndBranding() request concerning facet X will be served from
// as long as the cache contains fresh affiliation information for facet X, that // the cache as long as the cache contains fresh affiliation information for
// is, if there is an equivalence class in the cache that contains X and has // facet X, that is, if there is an equivalence class in the cache that contains
// been fetched less than |kCacheHardExpiryInHours| hours ago. // X and has been fetched less than |kCacheHardExpiryInHours| hours ago.
// //
// Otherwise, a network request is issued against the Affiliation API as soon as // Otherwise, a network request is issued against the Affiliation API as soon as
// possible, that is, immediately if there is no fetch in flight, or right after // possible, that is, immediately if there is no fetch in flight, or right after
...@@ -87,7 +87,7 @@ static_assert( ...@@ -87,7 +87,7 @@ static_assert(
FacetManager::kCacheHardExpiryInHours, FacetManager::kCacheHardExpiryInHours,
"Soft expiry period must be longer than half of the hard expiry period."); "Soft expiry period must be longer than half of the hard expiry period.");
// Encapsulates the details of a pending GetAffiliations() request. // Encapsulates the details of a pending GetAffiliationsAndBranding() request.
struct FacetManager::RequestInfo { struct FacetManager::RequestInfo {
AffiliationService::ResultCallback callback; AffiliationService::ResultCallback callback;
scoped_refptr<base::TaskRunner> callback_task_runner; scoped_refptr<base::TaskRunner> callback_task_runner;
...@@ -98,7 +98,8 @@ FacetManager::FacetManager(const FacetURI& facet_uri, ...@@ -98,7 +98,8 @@ FacetManager::FacetManager(const FacetURI& facet_uri,
base::Clock* clock) base::Clock* clock)
: facet_uri_(facet_uri), backend_(backend), clock_(clock) { : facet_uri_(facet_uri), backend_(backend), clock_(clock) {
AffiliatedFacetsWithUpdateTime affiliations; AffiliatedFacetsWithUpdateTime affiliations;
if (backend_->ReadAffiliationsFromDatabase(facet_uri_, &affiliations)) if (backend_->ReadAffiliationsAndBrandingFromDatabase(facet_uri_,
&affiliations))
last_update_time_ = affiliations.last_update_time; last_update_time_ = affiliations.last_update_time;
} }
...@@ -109,7 +110,7 @@ FacetManager::~FacetManager() { ...@@ -109,7 +110,7 @@ FacetManager::~FacetManager() {
ServeRequestWithFailure(request_info); ServeRequestWithFailure(request_info);
} }
void FacetManager::GetAffiliations( void FacetManager::GetAffiliationsAndBranding(
StrategyOnCacheMiss cache_miss_strategy, StrategyOnCacheMiss cache_miss_strategy,
const AffiliationService::ResultCallback& callback, const AffiliationService::ResultCallback& callback,
const scoped_refptr<base::TaskRunner>& callback_task_runner) { const scoped_refptr<base::TaskRunner>& callback_task_runner) {
...@@ -118,7 +119,8 @@ void FacetManager::GetAffiliations( ...@@ -118,7 +119,8 @@ void FacetManager::GetAffiliations(
request_info.callback_task_runner = callback_task_runner; request_info.callback_task_runner = callback_task_runner;
if (IsCachedDataFresh()) { if (IsCachedDataFresh()) {
AffiliatedFacetsWithUpdateTime affiliation; AffiliatedFacetsWithUpdateTime affiliation;
if (!backend_->ReadAffiliationsFromDatabase(facet_uri_, &affiliation)) { if (!backend_->ReadAffiliationsAndBrandingFromDatabase(facet_uri_,
&affiliation)) {
ServeRequestWithFailure(request_info); ServeRequestWithFailure(request_info);
return; return;
} }
......
...@@ -39,7 +39,7 @@ class FacetManager { ...@@ -39,7 +39,7 @@ class FacetManager {
// Facet-specific implementations for methods in AffiliationService of the // Facet-specific implementations for methods in AffiliationService of the
// same name. See documentation in affiliation_service.h for details: // same name. See documentation in affiliation_service.h for details:
void GetAffiliations( void GetAffiliationsAndBranding(
StrategyOnCacheMiss cache_miss_strategy, StrategyOnCacheMiss cache_miss_strategy,
const AffiliationService::ResultCallback& callback, const AffiliationService::ResultCallback& callback,
const scoped_refptr<base::TaskRunner>& callback_task_runner); const scoped_refptr<base::TaskRunner>& callback_task_runner);
...@@ -116,8 +116,8 @@ class FacetManager { ...@@ -116,8 +116,8 @@ class FacetManager {
// in the database should match this value; it is stored to reduce disk I/O. // in the database should match this value; it is stored to reduce disk I/O.
base::Time last_update_time_; base::Time last_update_time_;
// Contains information about the GetAffiliations() requests that are waiting // Contains information about the GetAffiliationsAndBranding() requests that
// for the result of looking up this facet. // are waiting for the result of looking up this facet.
std::vector<RequestInfo> pending_requests_; std::vector<RequestInfo> pending_requests_;
// Keeps track of |keep_fresh_until| thresholds corresponding to Prefetch() // Keeps track of |keep_fresh_until| thresholds corresponding to Prefetch()
......
...@@ -18,7 +18,7 @@ class FacetManagerHost { ...@@ -18,7 +18,7 @@ class FacetManagerHost {
// Reads the equivalence class containing |facet_uri| from the database and // Reads the equivalence class containing |facet_uri| from the database and
// returns true if found; returns false otherwise. // returns true if found; returns false otherwise.
virtual bool ReadAffiliationsFromDatabase( virtual bool ReadAffiliationsAndBrandingFromDatabase(
const FacetURI& facet_uri, const FacetURI& facet_uri,
AffiliatedFacetsWithUpdateTime* affiliations) = 0; AffiliatedFacetsWithUpdateTime* affiliations) = 0;
......
...@@ -98,7 +98,8 @@ class MockFacetManagerHost : public FacetManagerHost { ...@@ -98,7 +98,8 @@ class MockFacetManagerHost : public FacetManagerHost {
const FacetURI& expected_facet_uri() const { return expected_facet_uri_; } const FacetURI& expected_facet_uri() const { return expected_facet_uri_; }
// Sets up fake |database_content| as the canned response to be returned to // Sets up fake |database_content| as the canned response to be returned to
// the FacetManager every time it calls ReadAffiliationsFromDatabase(). // the FacetManager every time it calls
// ReadAffiliationsAndBrandingFromDatabase().
void set_fake_database_content( void set_fake_database_content(
const AffiliatedFacetsWithUpdateTime& database_content) { const AffiliatedFacetsWithUpdateTime& database_content) {
fake_database_content_ = database_content; fake_database_content_ = database_content;
...@@ -117,7 +118,7 @@ class MockFacetManagerHost : public FacetManagerHost { ...@@ -117,7 +118,7 @@ class MockFacetManagerHost : public FacetManagerHost {
private: private:
// FacetManagerHost: // FacetManagerHost:
bool ReadAffiliationsFromDatabase( bool ReadAffiliationsAndBrandingFromDatabase(
const FacetURI& facet_uri, const FacetURI& facet_uri,
AffiliatedFacetsWithUpdateTime* affiliations) override { AffiliatedFacetsWithUpdateTime* affiliations) override {
EXPECT_EQ(expected_facet_uri_, facet_uri); EXPECT_EQ(expected_facet_uri_, facet_uri);
...@@ -262,10 +263,10 @@ class FacetManagerTest : public testing::Test { ...@@ -262,10 +263,10 @@ class FacetManagerTest : public testing::Test {
// Returns the elapsed time since CreateFacetManager() was last called. // Returns the elapsed time since CreateFacetManager() was last called.
base::TimeDelta DeltaNow() { return Now() - facet_manager_creation_; } base::TimeDelta DeltaNow() { return Now() - facet_manager_creation_; }
void GetAffiliations(StrategyOnCacheMiss cache_miss_strategy) { void GetAffiliationsAndBranding(StrategyOnCacheMiss cache_miss_strategy) {
facet_manager()->GetAffiliations(cache_miss_strategy, facet_manager()->GetAffiliationsAndBranding(
mock_consumer()->GetResultCallback(), cache_miss_strategy, mock_consumer()->GetResultCallback(),
consumer_task_runner()); consumer_task_runner());
} }
void Prefetch(base::Time until) { facet_manager()->Prefetch(until); } void Prefetch(base::Time until) { facet_manager()->Prefetch(until); }
...@@ -376,7 +377,7 @@ class FacetManagerTest : public testing::Test { ...@@ -376,7 +377,7 @@ class FacetManagerTest : public testing::Test {
void ExpectRequestsServedFromCache() { void ExpectRequestsServedFromCache() {
EXPECT_TRUE(facet_manager()->IsCachedDataFresh()); EXPECT_TRUE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FAIL); GetAffiliationsAndBranding(StrategyOnCacheMiss::FAIL);
ExpectConsumerSuccessCallback(); ExpectConsumerSuccessCallback();
} }
...@@ -433,9 +434,10 @@ TEST_F(FacetManagerTest, NewInstanceCanBeDiscarded) { ...@@ -433,9 +434,10 @@ TEST_F(FacetManagerTest, NewInstanceCanBeDiscarded) {
EXPECT_FALSE(main_task_runner()->HasPendingTask()); EXPECT_FALSE(main_task_runner()->HasPendingTask());
} }
// Both cached-only and on-demand GetAffiliations() requests should be served // Both cached-only and on-demand GetAffiliationsAndBranding() requests should
// from cache if it contains fresh data. Nothing should happen on cache expiry. // be served from cache if it contains fresh data. Nothing should happen on
TEST_F(FacetManagerTest, GetAffiliationsServedFromCache) { // cache expiry.
TEST_F(FacetManagerTest, GetAffiliationsAndBrandingServedFromCache) {
fake_facet_manager_host()->set_fake_database_content( fake_facet_manager_host()->set_fake_database_content(
GetTestEquivalenceClassWithUpdateTime(Now())); GetTestEquivalenceClassWithUpdateTime(Now()));
AdvanceTime(GetCacheHardExpiryPeriod() - Epsilon()); AdvanceTime(GetCacheHardExpiryPeriod() - Epsilon());
...@@ -443,12 +445,12 @@ TEST_F(FacetManagerTest, GetAffiliationsServedFromCache) { ...@@ -443,12 +445,12 @@ TEST_F(FacetManagerTest, GetAffiliationsServedFromCache) {
CreateFacetManager(); CreateFacetManager();
EXPECT_TRUE(facet_manager()->IsCachedDataFresh()); EXPECT_TRUE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FAIL); GetAffiliationsAndBranding(StrategyOnCacheMiss::FAIL);
ExpectConsumerSuccessCallback(); ExpectConsumerSuccessCallback();
EXPECT_TRUE(facet_manager()->CanBeDiscarded()); EXPECT_TRUE(facet_manager()->CanBeDiscarded());
ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded());
GetAffiliations(StrategyOnCacheMiss::FETCH_OVER_NETWORK); GetAffiliationsAndBranding(StrategyOnCacheMiss::FETCH_OVER_NETWORK);
ExpectConsumerSuccessCallback(); ExpectConsumerSuccessCallback();
EXPECT_TRUE(facet_manager()->CanBeDiscarded()); EXPECT_TRUE(facet_manager()->CanBeDiscarded());
ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded());
...@@ -461,10 +463,11 @@ TEST_F(FacetManagerTest, GetAffiliationsServedFromCache) { ...@@ -461,10 +463,11 @@ TEST_F(FacetManagerTest, GetAffiliationsServedFromCache) {
EXPECT_FALSE(main_task_runner()->HasPendingTask()); EXPECT_FALSE(main_task_runner()->HasPendingTask());
} }
// On-demand GetAffiliations() requests should trigger a fetch if the cache has // On-demand GetAffiliationsAndBranding() requests should trigger a fetch if the
// already stale data, or no corresponding data whatsoever. Nothing should // cache has already stale data, or no corresponding data whatsoever. Nothing
// happen once the newly fetched data expires. // should happen once the newly fetched data expires.
TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) { TEST_F(FacetManagerTest,
OnDemandGetAffiliationsAndBrandingRequestTriggersFetch) {
for (const bool cache_initially_has_stale_data : kFalseTrue) { for (const bool cache_initially_has_stale_data : kFalseTrue) {
SCOPED_TRACE(cache_initially_has_stale_data); SCOPED_TRACE(cache_initially_has_stale_data);
...@@ -479,7 +482,7 @@ TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) { ...@@ -479,7 +482,7 @@ TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) {
CreateFacetManager(); CreateFacetManager();
EXPECT_FALSE(facet_manager()->IsCachedDataFresh()); EXPECT_FALSE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FETCH_OVER_NETWORK); GetAffiliationsAndBranding(StrategyOnCacheMiss::FETCH_OVER_NETWORK);
ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded());
EXPECT_FALSE(facet_manager()->CanBeDiscarded()); EXPECT_FALSE(facet_manager()->CanBeDiscarded());
ASSERT_NO_FATAL_FAILURE(CompleteFetch()); ASSERT_NO_FATAL_FAILURE(CompleteFetch());
...@@ -488,12 +491,12 @@ TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) { ...@@ -488,12 +491,12 @@ TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) {
AdvanceTime(GetCacheHardExpiryPeriod() - Epsilon()); AdvanceTime(GetCacheHardExpiryPeriod() - Epsilon());
EXPECT_TRUE(facet_manager()->IsCachedDataFresh()); EXPECT_TRUE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FAIL); GetAffiliationsAndBranding(StrategyOnCacheMiss::FAIL);
ExpectConsumerSuccessCallback(); ExpectConsumerSuccessCallback();
EXPECT_TRUE(facet_manager()->CanBeDiscarded()); EXPECT_TRUE(facet_manager()->CanBeDiscarded());
ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded());
GetAffiliations(StrategyOnCacheMiss::FETCH_OVER_NETWORK); GetAffiliationsAndBranding(StrategyOnCacheMiss::FETCH_OVER_NETWORK);
ExpectConsumerSuccessCallback(); ExpectConsumerSuccessCallback();
EXPECT_TRUE(facet_manager()->CanBeDiscarded()); EXPECT_TRUE(facet_manager()->CanBeDiscarded());
ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded());
...@@ -507,22 +510,24 @@ TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) { ...@@ -507,22 +510,24 @@ TEST_F(FacetManagerTest, OnDemandGetAffiliationsRequestTriggersFetch) {
} }
} }
TEST_F(FacetManagerTest, CachedOnlyGetAffiliationsFailsDueToStaleCache) { TEST_F(FacetManagerTest,
CachedOnlyGetAffiliationsAndBrandingFailsDueToStaleCache) {
CreateFacetManager(); CreateFacetManager();
EXPECT_FALSE(facet_manager()->IsCachedDataFresh()); EXPECT_FALSE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FAIL); GetAffiliationsAndBranding(StrategyOnCacheMiss::FAIL);
ExpectConsumerFailureCallback(); ExpectConsumerFailureCallback();
ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectNoFetchNeeded());
EXPECT_TRUE(facet_manager()->CanBeDiscarded()); EXPECT_TRUE(facet_manager()->CanBeDiscarded());
EXPECT_FALSE(main_task_runner()->HasPendingTask()); EXPECT_FALSE(main_task_runner()->HasPendingTask());
} }
TEST_F(FacetManagerTest, GetAffiliationsFailureCallbackInvokedOnDestruction) { TEST_F(FacetManagerTest,
GetAffiliationsAndBrandingFailureCallbackInvokedOnDestruction) {
CreateFacetManager(); CreateFacetManager();
EXPECT_FALSE(facet_manager()->IsCachedDataFresh()); EXPECT_FALSE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FETCH_OVER_NETWORK); GetAffiliationsAndBranding(StrategyOnCacheMiss::FETCH_OVER_NETWORK);
ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded());
EXPECT_FALSE(facet_manager()->CanBeDiscarded()); EXPECT_FALSE(facet_manager()->CanBeDiscarded());
...@@ -1452,7 +1457,7 @@ TEST_F(FacetManagerTest, StaleCachedDataBeCanDiscardedWhilePendingFetch) { ...@@ -1452,7 +1457,7 @@ TEST_F(FacetManagerTest, StaleCachedDataBeCanDiscardedWhilePendingFetch) {
CreateFacetManager(); CreateFacetManager();
ASSERT_FALSE(facet_manager()->IsCachedDataFresh()); ASSERT_FALSE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FETCH_OVER_NETWORK); GetAffiliationsAndBranding(StrategyOnCacheMiss::FETCH_OVER_NETWORK);
ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded());
EXPECT_FALSE(facet_manager()->CanBeDiscarded()); EXPECT_FALSE(facet_manager()->CanBeDiscarded());
EXPECT_TRUE(facet_manager()->CanCachedDataBeDiscarded()); EXPECT_TRUE(facet_manager()->CanCachedDataBeDiscarded());
...@@ -1464,7 +1469,7 @@ TEST_F(FacetManagerTest, CachedDataBeCanDiscardedAfterOnDemandGetAffiliatons) { ...@@ -1464,7 +1469,7 @@ TEST_F(FacetManagerTest, CachedDataBeCanDiscardedAfterOnDemandGetAffiliatons) {
CreateFacetManager(); CreateFacetManager();
ASSERT_FALSE(facet_manager()->IsCachedDataFresh()); ASSERT_FALSE(facet_manager()->IsCachedDataFresh());
GetAffiliations(StrategyOnCacheMiss::FETCH_OVER_NETWORK); GetAffiliationsAndBranding(StrategyOnCacheMiss::FETCH_OVER_NETWORK);
ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded()); ASSERT_NO_FATAL_FAILURE(ExpectFetchNeeded());
ASSERT_NO_FATAL_FAILURE(CompleteFetch()); ASSERT_NO_FATAL_FAILURE(CompleteFetch());
ExpectConsumerSuccessCallback(); ExpectConsumerSuccessCallback();
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
namespace password_manager { namespace password_manager {
// A mock consumer of AffiliationService::GetAffiliations(). // A mock consumer of AffiliationService::GetAffiliationsAndBranding().
class MockAffiliationConsumer { class MockAffiliationConsumer {
public: public:
MockAffiliationConsumer(); MockAffiliationConsumer();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment