summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdonnelly <jdonnelly@chromium.org>2016-01-15 08:27:57 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-15 16:29:30 +0000
commit066021ea9e12b9a87e9497a1423a0de52c0a4061 (patch)
tree8f4264666a3509af9c8b579d3c04ab1900fba608
parent37de0ee353975fd2533b0e4c05a31587ea4b5473 (diff)
downloadchromium_src-066021ea9e12b9a87e9497a1423a0de52c0a4061.zip
chromium_src-066021ea9e12b9a87e9497a1423a0de52c0a4061.tar.gz
chromium_src-066021ea9e12b9a87e9497a1423a0de52c0a4061.tar.bz2
Add sync settings to IsCreditCardUploadEnabled.
The check for whether Autofill sync is available matches that in autofill::WalletIntegrationAvailable and should have been in the original implementation of this method. Upload should only be available for clients with sync and for users who include Autofill in their chosen sync types. The second check covers a privacy requirement that we not offer upload to users who have set a passphrase. BUG=535784 Review URL: https://codereview.chromium.org/1578953005 Cr-Commit-Position: refs/heads/master@{#369763}
-rw-r--r--android_webview/native/aw_autofill_client.cc4
-rw-r--r--android_webview/native/aw_autofill_client.h5
-rw-r--r--chrome/browser/ui/autofill/chrome_autofill_client.cc8
-rw-r--r--chrome/browser/ui/autofill/chrome_autofill_client.h1
-rw-r--r--components/autofill/core/browser/autofill_client.h7
-rw-r--r--components/autofill/core/browser/autofill_experiments.cc18
-rw-r--r--components/autofill/core/browser/autofill_experiments.h5
-rw-r--r--components/autofill/core/browser/autofill_manager.cc3
-rw-r--r--components/autofill/core/browser/test_autofill_client.cc4
-rw-r--r--components/autofill/core/browser/test_autofill_client.h1
-rw-r--r--ios/chrome/browser/ui/autofill/autofill_client_ios.h5
-rw-r--r--ios/chrome/browser/ui/autofill/autofill_client_ios.mm6
12 files changed, 65 insertions, 2 deletions
diff --git a/android_webview/native/aw_autofill_client.cc b/android_webview/native/aw_autofill_client.cc
index 6d84526..b72eb14 100644
--- a/android_webview/native/aw_autofill_client.cc
+++ b/android_webview/native/aw_autofill_client.cc
@@ -68,6 +68,10 @@ PrefService* AwAutofillClient::GetPrefs() {
AwContentBrowserClient::GetAwBrowserContext());
}
+sync_driver::SyncService* AwAutofillClient::GetSyncService() {
+ return nullptr;
+}
+
IdentityProvider* AwAutofillClient::GetIdentityProvider() {
return nullptr;
}
diff --git a/android_webview/native/aw_autofill_client.h b/android_webview/native/aw_autofill_client.h
index 52cd4b1..78cfa96 100644
--- a/android_webview/native/aw_autofill_client.h
+++ b/android_webview/native/aw_autofill_client.h
@@ -35,6 +35,10 @@ namespace gfx {
class RectF;
}
+namespace sync_driver {
+class SyncService;
+}
+
class PersonalDataManager;
class PrefService;
@@ -59,6 +63,7 @@ class AwAutofillClient : public autofill::AutofillClient,
autofill::PersonalDataManager* GetPersonalDataManager() override;
scoped_refptr<autofill::AutofillWebDataService> GetDatabase() override;
PrefService* GetPrefs() override;
+ sync_driver::SyncService* GetSyncService() override;
IdentityProvider* GetIdentityProvider() override;
rappor::RapporService* GetRapporService() override;
void HideRequestAutocompleteDialog() override;
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc
index 52d9f1b..437886c 100644
--- a/chrome/browser/ui/autofill/chrome_autofill_client.cc
+++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -19,6 +19,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/browser/ui/autofill/autofill_dialog_controller.h"
#include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h"
#include "chrome/browser/ui/autofill/create_card_unmask_prompt_view.h"
@@ -38,6 +39,7 @@
#include "components/autofill/core/browser/ui/card_unmask_prompt_view.h"
#include "components/autofill/core/common/autofill_pref_names.h"
#include "components/autofill/core/common/autofill_switches.h"
+#include "components/browser_sync/browser/profile_sync_service.h"
#include "components/password_manager/content/browser/content_password_manager_driver.h"
#include "components/signin/core/browser/profile_identity_provider.h"
#include "components/user_prefs/user_prefs.h"
@@ -133,6 +135,12 @@ PrefService* ChromeAutofillClient::GetPrefs() {
->GetPrefs();
}
+sync_driver::SyncService* ChromeAutofillClient::GetSyncService() {
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents()->GetBrowserContext());
+ return ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile);
+}
+
IdentityProvider* ChromeAutofillClient::GetIdentityProvider() {
if (!identity_provider_) {
Profile* profile =
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browser/ui/autofill/chrome_autofill_client.h
index 1a79726..f328952 100644
--- a/chrome/browser/ui/autofill/chrome_autofill_client.h
+++ b/chrome/browser/ui/autofill/chrome_autofill_client.h
@@ -48,6 +48,7 @@ class ChromeAutofillClient
PersonalDataManager* GetPersonalDataManager() override;
scoped_refptr<AutofillWebDataService> GetDatabase() override;
PrefService* GetPrefs() override;
+ sync_driver::SyncService* GetSyncService() override;
IdentityProvider* GetIdentityProvider() override;
rappor::RapporService* GetRapporService() override;
void HideRequestAutocompleteDialog() override;
diff --git a/components/autofill/core/browser/autofill_client.h b/components/autofill/core/browser/autofill_client.h
index baf9a90..9d651ba 100644
--- a/components/autofill/core/browser/autofill_client.h
+++ b/components/autofill/core/browser/autofill_client.h
@@ -30,6 +30,10 @@ namespace rappor {
class RapporService;
}
+namespace sync_driver {
+class SyncService;
+}
+
class GURL;
class PrefService;
@@ -100,6 +104,9 @@ class AutofillClient {
// Gets the preferences associated with the client.
virtual PrefService* GetPrefs() = 0;
+ // Gets the sync service associated with the client.
+ virtual sync_driver::SyncService* GetSyncService() = 0;
+
// Gets the IdentityProvider associated with the client (for OAuth2).
virtual IdentityProvider* GetIdentityProvider() = 0;
diff --git a/components/autofill/core/browser/autofill_experiments.cc b/components/autofill/core/browser/autofill_experiments.cc
index 7b4f563..9f36ca6 100644
--- a/components/autofill/core/browser/autofill_experiments.cc
+++ b/components/autofill/core/browser/autofill_experiments.cc
@@ -11,6 +11,7 @@
#include "build/build_config.h"
#include "components/autofill/core/common/autofill_pref_names.h"
#include "components/autofill/core/common/autofill_switches.h"
+#include "components/sync_driver/sync_service.h"
#include "google_apis/gaia/gaia_auth_util.h"
namespace autofill {
@@ -51,12 +52,27 @@ bool OfferStoreUnmaskedCards() {
}
bool IsCreditCardUploadEnabled(const PrefService* pref_service,
+ const sync_driver::SyncService* sync_service,
const std::string& user_email) {
// Query the field trial first to ensure UMA always reports the correct group.
std::string group_name =
base::FieldTrialList::FindFullName("OfferUploadCreditCards");
- // Check user settings.
+ // Check Autofill sync setting.
+ if (!(sync_service && sync_service->CanSyncStart() &&
+ sync_service->GetPreferredDataTypes().Has(syncer::AUTOFILL_PROFILE))) {
+ return false;
+ }
+
+ // Users who have enabled a passphrase have chosen to not make their sync
+ // information accessible to Google. Since upload makes credit card data
+ // available to other Google systems, disable it for passphrase users.
+ if (sync_service->HasSyncSetupCompleted() &&
+ sync_service->IsUsingSecondaryPassphrase()) {
+ return false;
+ }
+
+ // Check Payments integration setting.
if (!pref_service->GetBoolean(prefs::kAutofillWalletSyncExperimentEnabled) ||
!pref_service->GetBoolean(prefs::kAutofillWalletImportEnabled)) {
return false;
diff --git a/components/autofill/core/browser/autofill_experiments.h b/components/autofill/core/browser/autofill_experiments.h
index 3a152cc..8b45df0 100644
--- a/components/autofill/core/browser/autofill_experiments.h
+++ b/components/autofill/core/browser/autofill_experiments.h
@@ -7,6 +7,10 @@
#include <string>
+namespace sync_driver {
+class SyncService;
+}
+
class PrefService;
namespace autofill {
@@ -30,6 +34,7 @@ bool OfferStoreUnmaskedCards();
// requires the appropriate flags and user settings to be true and the user to
// be a member of a supported domain.
bool IsCreditCardUploadEnabled(const PrefService* pref_service,
+ const sync_driver::SyncService* sync_service,
const std::string& user_email);
} // namespace autofill
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
index b991521..484e412 100644
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -920,7 +920,8 @@ bool AutofillManager::IsAutofillEnabled() const {
bool AutofillManager::IsCreditCardUploadEnabled() {
return ::autofill::IsCreditCardUploadEnabled(
- client_->GetPrefs(), GetIdentityProvider()->GetActiveUsername());
+ client_->GetPrefs(), client_->GetSyncService(),
+ GetIdentityProvider()->GetActiveUsername());
}
bool AutofillManager::ShouldUploadForm(const FormStructure& form) {
diff --git a/components/autofill/core/browser/test_autofill_client.cc b/components/autofill/core/browser/test_autofill_client.cc
index ec87028..8103f9d 100644
--- a/components/autofill/core/browser/test_autofill_client.cc
+++ b/components/autofill/core/browser/test_autofill_client.cc
@@ -30,6 +30,10 @@ PrefService* TestAutofillClient::GetPrefs() {
return prefs_.get();
}
+sync_driver::SyncService* TestAutofillClient::GetSyncService() {
+ return nullptr;
+}
+
IdentityProvider* TestAutofillClient::GetIdentityProvider() {
return identity_provider_.get();
}
diff --git a/components/autofill/core/browser/test_autofill_client.h b/components/autofill/core/browser/test_autofill_client.h
index 8c742f6..62a7039 100644
--- a/components/autofill/core/browser/test_autofill_client.h
+++ b/components/autofill/core/browser/test_autofill_client.h
@@ -29,6 +29,7 @@ class TestAutofillClient : public AutofillClient {
PersonalDataManager* GetPersonalDataManager() override;
scoped_refptr<AutofillWebDataService> GetDatabase() override;
PrefService* GetPrefs() override;
+ sync_driver::SyncService* GetSyncService() override;
IdentityProvider* GetIdentityProvider() override;
rappor::RapporService* GetRapporService() override;
void HideRequestAutocompleteDialog() override;
diff --git a/ios/chrome/browser/ui/autofill/autofill_client_ios.h b/ios/chrome/browser/ui/autofill/autofill_client_ios.h
index af734f4..e3e87ba 100644
--- a/ios/chrome/browser/ui/autofill/autofill_client_ios.h
+++ b/ios/chrome/browser/ui/autofill/autofill_client_ios.h
@@ -28,6 +28,10 @@ namespace password_manager {
class PasswordGenerationManager;
}
+namespace sync_driver {
+class SyncService;
+}
+
namespace autofill {
class PersonalDataManager;
@@ -48,6 +52,7 @@ class AutofillClientIOS : public AutofillClient {
// AutofillClient implementation.
PersonalDataManager* GetPersonalDataManager() override;
PrefService* GetPrefs() override;
+ sync_driver::SyncService* GetSyncService() override;
IdentityProvider* GetIdentityProvider() override;
rappor::RapporService* GetRapporService() override;
void HideRequestAutocompleteDialog() override;
diff --git a/ios/chrome/browser/ui/autofill/autofill_client_ios.mm b/ios/chrome/browser/ui/autofill/autofill_client_ios.mm
index b75c20b..f54fb29 100644
--- a/ios/chrome/browser/ui/autofill/autofill_client_ios.mm
+++ b/ios/chrome/browser/ui/autofill/autofill_client_ios.mm
@@ -52,6 +52,12 @@ PrefService* AutofillClientIOS::GetPrefs() {
return browser_state_->GetPrefs();
}
+// TODO(jdonnelly): Implement this when adding credit card upload.
+sync_driver::SyncService* AutofillClientIOS::GetSyncService() {
+ NOTIMPLEMENTED();
+ return nullptr;
+}
+
IdentityProvider* AutofillClientIOS::GetIdentityProvider() {
return identity_provider_.get();
}