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

Unified Diff: components/password_manager/core/browser/affiliated_match_helper.cc

Issue 1066543004: Update affiliated web credentials when Android credentials are updated. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix the correct MessageLoopProxy occurrence this time. Created 5 years, 8 months 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: components/password_manager/core/browser/affiliated_match_helper.cc
diff --git a/components/password_manager/core/browser/affiliated_match_helper.cc b/components/password_manager/core/browser/affiliated_match_helper.cc
index b89d44ed5821bb4de198a71db91ad5a3d85b5190..8777f9ecb92608ce125810fdc6a67e691a40d800 100644
--- a/components/password_manager/core/browser/affiliated_match_helper.cc
+++ b/components/password_manager/core/browser/affiliated_match_helper.cc
@@ -58,19 +58,47 @@ void AffiliatedMatchHelper::Initialize() {
void AffiliatedMatchHelper::GetAffiliatedAndroidRealms(
const autofill::PasswordForm& observed_form,
const AffiliatedRealmsCallback& result_callback) {
- FacetURI facet_uri(
- FacetURI::FromPotentiallyInvalidSpec(observed_form.signon_realm));
- if (observed_form.scheme == autofill::PasswordForm::SCHEME_HTML &&
- observed_form.ssl_valid && facet_uri.IsValidWebFacetURI()) {
+ if (IsValidWebCredential(observed_form)) {
+ FacetURI facet_uri(
+ FacetURI::FromPotentiallyInvalidSpec(observed_form.signon_realm));
affiliation_service_->GetAffiliations(
facet_uri, AffiliationService::StrategyOnCacheMiss::FAIL,
- base::Bind(&AffiliatedMatchHelper::OnGetAffiliationsResults,
+ base::Bind(&AffiliatedMatchHelper::CompleteGetAffiliatedAndroidRealms,
weak_ptr_factory_.GetWeakPtr(), facet_uri, result_callback));
} else {
result_callback.Run(std::vector<std::string>());
}
}
+void AffiliatedMatchHelper::GetAffiliatedWebRealms(
+ const autofill::PasswordForm& android_form,
+ const AffiliatedRealmsCallback& result_callback) {
+ if (IsValidAndroidCredential(android_form)) {
+ affiliation_service_->GetAffiliations(
+ FacetURI::FromPotentiallyInvalidSpec(android_form.signon_realm),
+ AffiliationService::StrategyOnCacheMiss::FETCH_OVER_NETWORK,
+ base::Bind(&AffiliatedMatchHelper::CompleteGetAffiliatedWebRealms,
+ weak_ptr_factory_.GetWeakPtr(), result_callback));
+ } else {
+ result_callback.Run(std::vector<std::string>());
+ }
+}
+
+// static
+bool AffiliatedMatchHelper::IsValidAndroidCredential(
+ const autofill::PasswordForm& form) {
+ return form.scheme == autofill::PasswordForm::SCHEME_HTML &&
+ IsValidAndroidFacetURI(form.signon_realm);
+}
+
+// static
+bool AffiliatedMatchHelper::IsValidWebCredential(
+ const autofill::PasswordForm& form) {
+ FacetURI facet_uri(FacetURI::FromPotentiallyInvalidSpec(form.signon_realm));
+ return form.scheme == autofill::PasswordForm::SCHEME_HTML && form.ssl_valid &&
+ facet_uri.IsValidWebFacetURI();
+}
+
// static
ScopedVector<autofill::PasswordForm>
AffiliatedMatchHelper::TransformAffiliatedAndroidCredentials(
@@ -97,7 +125,7 @@ void AffiliatedMatchHelper::DoDeferredInitialization() {
password_store_->GetAutofillableLogins(this);
}
-void AffiliatedMatchHelper::OnGetAffiliationsResults(
+void AffiliatedMatchHelper::CompleteGetAffiliatedAndroidRealms(
const FacetURI& original_facet_uri,
const AffiliatedRealmsCallback& result_callback,
const AffiliatedFacets& results,
@@ -114,6 +142,21 @@ void AffiliatedMatchHelper::OnGetAffiliationsResults(
result_callback.Run(affiliated_realms);
}
+void AffiliatedMatchHelper::CompleteGetAffiliatedWebRealms(
+ const AffiliatedRealmsCallback& result_callback,
+ const AffiliatedFacets& results,
+ bool success) {
+ std::vector<std::string> affiliated_realms;
+ if (success) {
+ for (const FacetURI& affiliated_facet : results) {
+ if (affiliated_facet.IsValidWebFacetURI())
+ // Facet URIs have no trailing slash, whereas realms do.
+ affiliated_realms.push_back(affiliated_facet.canonical_spec() + "/");
+ }
+ }
+ result_callback.Run(affiliated_realms);
+}
+
void AffiliatedMatchHelper::OnLoginsChanged(
const PasswordStoreChangeList& changes) {
for (const PasswordStoreChange& change : changes) {

Powered by Google App Engine
This is Rietveld 408576698