Commit feda313f authored by Ioana Pandele's avatar Ioana Pandele Committed by Commit Bot

Add a provider for the Passwords UI in Settings

This CL introduces ManagePasswordsUIProvider, a class which aims to allow
for alternative UI surfaces to be shown if available.

Bug: 903249
Change-Id: I8c03f2f539772044bd5ba0fa944fd5e441d43c76
Reviewed-on: https://chromium-review.googlesource.com/c/1326488Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Ioana Pandele <ioanap@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606837}
parent b4fffd63
......@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.omaha.RequestGenerator;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmark;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksProviderIterator;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.password_manager.ManagePasswordsUIProvider;
import org.chromium.chrome.browser.policy.PolicyAuditor;
import org.chromium.chrome.browser.preferences.LocationSettings;
import org.chromium.chrome.browser.rlz.RevenueStats;
......@@ -184,6 +185,14 @@ public abstract class AppHooks {
return new LocaleManager();
}
/**
* @return An instance of {@link ManagePasswordsUIProvider} that can be used to show one of
* the two possible UI surfaces for managing passwords.
*/
public ManagePasswordsUIProvider createManagePasswordsUIProvider() {
return new ManagePasswordsUIProvider();
}
/**
* Returns an instance of LocationSettings to be installed as a singleton.
*/
......
// Copyright 2018 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.
package org.chromium.chrome.browser.password_manager;
import android.app.Activity;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
import org.chromium.chrome.browser.preferences.password.SavePasswordsPreferences;
/**
* Launches an activity presenting the Settings > Passwords UI.
*/
public class ManagePasswordsUIProvider {
/**
* Mehod called from the main settings to show the UI to manage passwords.
*
* @param activity the activity from which to launch the settings page.
*/
public void showManagePasswordsUI(Activity activity) {
// Launch preference activity with SavePasswordsPreferences fragment.
PreferencesLauncher.launchSettingsPage(activity, SavePasswordsPreferences.class);
}
}
......@@ -15,6 +15,7 @@ import android.provider.Settings;
import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.contextual_suggestions.ContextualSuggestionsEnabledStateUtils;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
......@@ -112,6 +113,8 @@ public class MainPreferences extends PreferenceFragment
setManagedPreferenceDelegateForPreference(PREF_SAVED_PASSWORDS);
setManagedPreferenceDelegateForPreference(PREF_DATA_REDUCTION);
updatePasswordsPreference();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// If we are on Android O+ the Notifications preference should lead to the Android
// Settings notifications page, not to Chrome's notifications settings page.
......@@ -247,6 +250,14 @@ public class MainPreferences extends PreferenceFragment
searchEnginePreference.setSummary(defaultSearchEngineName);
}
private void updatePasswordsPreference() {
Preference passwordsPreference = findPreference(PREF_SAVED_PASSWORDS);
passwordsPreference.setOnPreferenceClickListener(preference -> {
AppHooks.get().createManagePasswordsUIProvider().showManagePasswordsUI(getActivity());
return true;
});
}
private void setOnOffSummary(Preference pref, boolean isOn) {
pref.setSummary(getResources().getString(isOn ? R.string.text_on : R.string.text_off));
}
......
......@@ -1137,6 +1137,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java",
"java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java",
"java/src/org/chromium/chrome/browser/password_manager/AutoSigninFirstRunDialog.java",
"java/src/org/chromium/chrome/browser/password_manager/ManagePasswordsUIProvider.java",
"java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogBridge.java",
"java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogCoordinator.java",
"java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogMediator.java",
......
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