Commit 29b5a69f authored by vabr's avatar vabr Committed by Commit bot

[Password Manager] Fix IsEnabledSmartLockBranding

Currently, IsEnabledSmartLockBranding returns true if Finch agrees and the user syncs (anything). It should only return true if Finch agrees and the user syncs passwords without a custom passphrase.

BUG=400674,486739

Review URL: https://codereview.chromium.org/1134343002

Cr-Commit-Position: refs/heads/master@{#329649}
parent 30282d70
......@@ -307,16 +307,9 @@ ChromePasswordManagerClient::GetPasswordStore() const {
password_manager::PasswordSyncState
ChromePasswordManagerClient::GetPasswordSyncState() const {
ProfileSyncService* sync_service =
const ProfileSyncService* sync_service =
ProfileSyncServiceFactory::GetForProfile(profile_);
if (sync_service && sync_service->HasSyncSetupCompleted() &&
sync_service->SyncActive() &&
sync_service->GetActiveDataTypes().Has(syncer::PASSWORDS)) {
return sync_service->IsUsingSecondaryPassphrase()
? password_manager::SYNCING_WITH_CUSTOM_PASSPHRASE
: password_manager::SYNCING_NORMAL_ENCRYPTION;
}
return password_manager::NOT_SYNCING_PASSWORDS;
return password_manager_util::GetPasswordSyncState(sync_service);
}
void ChromePasswordManagerClient::OnLogRouterAvailabilityChanged(
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/password_manager/password_manager_util.h"
#include "chrome/browser/sync/profile_sync_service.h"
namespace password_manager_util {
password_manager::PasswordSyncState GetPasswordSyncState(
const ProfileSyncService* sync_service) {
if (sync_service && sync_service->HasSyncSetupCompleted() &&
sync_service->SyncActive() &&
sync_service->GetActiveDataTypes().Has(syncer::PASSWORDS)) {
return sync_service->IsUsingSecondaryPassphrase()
? password_manager::SYNCING_WITH_CUSTOM_PASSPHRASE
: password_manager::SYNCING_NORMAL_ENCRYPTION;
}
return password_manager::NOT_SYNCING_PASSWORDS;
}
} // namespace password_manager_util
......@@ -7,8 +7,11 @@
#include "base/basictypes.h"
#include "base/callback.h"
#include "components/password_manager/core/browser/password_manager_client.h"
#include "ui/gfx/native_widget_types.h"
class ProfileSyncService;
namespace password_manager_util {
enum OsPasswordStatus {
......@@ -34,6 +37,11 @@ bool AuthenticateUser(gfx::NativeWindow window);
// is invoked on UI thread with result.
void GetOsPasswordStatus(const base::Callback<void(OsPasswordStatus)>& reply);
// Reports whether and how passwords are currently synced. In particular, for a
// null |sync_service| returns NOT_SYNCING_PASSWORDS.
password_manager::PasswordSyncState GetPasswordSyncState(
const ProfileSyncService* sync_service);
} // namespace password_manager_util
#endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_MANAGER_UTIL_H_
......@@ -5,8 +5,9 @@
#include "chrome/browser/ui/passwords/password_bubble_experiment.h"
#include "base/metrics/field_trial.h"
#include "chrome/browser/password_manager/password_manager_util.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "components/signin/core/browser/signin_manager.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
namespace password_bubble_experiment {
namespace {
......@@ -23,10 +24,11 @@ void RecordBubbleClosed(
}
bool IsEnabledSmartLockBranding(Profile* profile) {
SigninManagerBase* signin = SigninManagerFactory::GetForProfile(profile);
return (signin && signin->IsAuthenticated() &&
base::FieldTrialList::FindFullName(kBrandingExperimentName) ==
kSmartLockBrandingGroupName);
const ProfileSyncService* sync_service =
ProfileSyncServiceFactory::GetForProfile(profile);
return password_manager_util::GetPasswordSyncState(sync_service) &&
base::FieldTrialList::FindFullName(kBrandingExperimentName) ==
kSmartLockBrandingGroupName;
}
......
......@@ -1966,6 +1966,7 @@
'chrome_browser_password_manager_sources': [
'browser/password_manager/chrome_password_manager_client.cc',
'browser/password_manager/chrome_password_manager_client.h',
'browser/password_manager/password_manager_util.cc',
'browser/password_manager/password_manager_util.h',
'browser/password_manager/password_manager_util_android.cc',
'browser/password_manager/password_manager_util_linux.cc',
......
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