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