Commit 00d26dc3 authored by Andrey Zaytsev's avatar Andrey Zaytsev Committed by Commit Bot

Safety check on Android: added support for the Security settings and various small fixes

Bug: 1070620
Change-Id: I03bb8b01f07d815036b536e1b4fec6bfbc7bf1f5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2317880
Commit-Queue: Theresa  <twellington@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Auto-Submit: Andrey Zaytsev <andzaytsev@google.com>
Cr-Commit-Position: refs/heads/master@{#791836}
parent 22a95fed
......@@ -37,7 +37,9 @@ android_library("java") {
":java_resources",
"//base:base_java",
"//base:jni_java",
"//chrome/browser/flags:java",
"//chrome/browser/preferences:java",
"//chrome/browser/safe_browsing/android:java",
"//chrome/browser/settings:java",
"//components/browser_ui/settings/android:java",
"//content/public/android:content_java",
......
......@@ -17,9 +17,11 @@ import androidx.preference.Preference;
import org.chromium.base.BuildConfig;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.password_check.BulkLeakCheckServiceState;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment;
import org.chromium.chrome.browser.safety_check.SafetyCheckBridge.SafetyCheckCommonObserver;
import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.PasswordsState;
import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.SafeBrowsingState;
......@@ -106,13 +108,21 @@ class SafetyCheckMediator implements SafetyCheckCommonObserver {
// Set the listener for clicking the Safe Browsing element.
mModel.set(SafetyCheckProperties.SAFE_BROWSING_CLICK_LISTENER,
(Preference.OnPreferenceClickListener) (p) -> {
// Open the Sync and Services settings.
// TODO(crbug.com/1070620): replace the hardcoded class name with an import and
// ".class.getName()" once SyncAndServicesSettings is moved out of
// //chrome/android.
String safeBrowsingSettingsClassName;
if (ChromeFeatureList.isEnabled(
ChromeFeatureList.SAFE_BROWSING_SECURITY_SECTION_UI)) {
// Open the Security settings since the flag for them is enabled.
safeBrowsingSettingsClassName = SecuritySettingsFragment.class.getName();
} else {
// Open the Sync and Services settings.
// TODO(crbug.com/1070620): replace the hardcoded class name with an import
// and ".class.getName()" once SyncAndServicesSettings is moved out of
// //chrome/android.
safeBrowsingSettingsClassName =
"org.chromium.chrome.browser.sync.settings.SyncAndServicesSettings";
}
p.getContext().startActivity(settingsLauncher.createSettingsActivityIntent(
p.getContext(),
"org.chromium.chrome.browser.sync.settings.SyncAndServicesSettings"));
p.getContext(), safeBrowsingSettingsClassName));
return true;
});
// Set the listener for clicking the passwords element.
......
......@@ -181,6 +181,14 @@ class SafetyCheckViewBinder {
}
}
private static void displayTimestampText(
PropertyModel model, SafetyCheckSettingsFragment fragment) {
long lastRunTime = model.get(SafetyCheckProperties.LAST_RUN_TIMESTAMP);
long currentTime = System.currentTimeMillis();
fragment.getTimestampTextView().setText(
getLastRunTimestampText(fragment.getContext(), lastRunTime, currentTime));
}
private static void clearTimestampText(SafetyCheckSettingsFragment fragment) {
fragment.getTimestampTextView().setText("");
}
......@@ -201,6 +209,7 @@ class SafetyCheckViewBinder {
preference.showProgressBar();
preference.setEnabled(false);
} else {
displayTimestampText(model, fragment);
preference.showStatusIcon(getStatusIconForPasswords(state));
preference.setEnabled(true);
}
......@@ -218,7 +227,8 @@ class SafetyCheckViewBinder {
preference.showProgressBar();
preference.setEnabled(false);
} else {
preference.showStatusIcon(getStatusIconForPasswords(state));
displayTimestampText(model, fragment);
preference.showStatusIcon(getStatusIconForSafeBrowsing(state));
preference.setEnabled(true);
}
} else if (SafetyCheckProperties.UPDATES_STATE == propertyKey) {
......@@ -235,7 +245,8 @@ class SafetyCheckViewBinder {
preference.showProgressBar();
preference.setEnabled(false);
} else {
preference.showStatusIcon(getStatusIconForPasswords(state));
displayTimestampText(model, fragment);
preference.showStatusIcon(getStatusIconForUpdates(state));
preference.setEnabled(true);
}
} else if (SafetyCheckProperties.PASSWORDS_CLICK_LISTENER == propertyKey) {
......@@ -254,10 +265,7 @@ class SafetyCheckViewBinder {
fragment.getCheckButton().setOnClickListener((View.OnClickListener) model.get(
SafetyCheckProperties.SAFETY_CHECK_BUTTON_CLICK_LISTENER));
} else if (SafetyCheckProperties.LAST_RUN_TIMESTAMP == propertyKey) {
long lastRunTime = model.get(SafetyCheckProperties.LAST_RUN_TIMESTAMP);
long currentTime = System.currentTimeMillis();
fragment.getTimestampTextView().setText(
getLastRunTimestampText(fragment.getContext(), lastRunTime, currentTime));
displayTimestampText(model, fragment);
} else {
assert false : "Unhandled property detected in SafetyCheckViewBinder!";
}
......
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