Commit 05dcc074 authored by Andrey Zaytsev's avatar Andrey Zaytsev Committed by Commit Bot

Safety check on Android: implemented initial UI

Screenshots:
Light mode: https://screenshot.googleplex.com/c5hr9M0ypqp.png
Dark mode: https://screenshot.googleplex.com/iv2wB2Dih0s.png

Bug: 1070620
Change-Id: Ie256680755395d0de1713af48bb8975f96f7a213
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2238066
Commit-Queue: Theresa  <twellington@chromium.org>
Reviewed-by: default avatarNatalie Chouinard <chouinard@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarMartin Šrámek <msramek@chromium.org>
Auto-Submit: Andrey Zaytsev <andzaytsev@google.com>
Cr-Commit-Position: refs/heads/master@{#779864}
parent 5fa6d4c7
......@@ -791,7 +791,6 @@ chrome_java_resources = [
"java/res/drawable/ic_volume_off_white_24dp.xml",
"java/res/drawable/ic_volume_on_white_24dp.xml",
"java/res/drawable/ic_vpn_key_blue.xml",
"java/res/drawable/ic_vpn_key_grey.xml",
"java/res/drawable/ic_warning_red.xml",
"java/res/drawable/ic_wb_sunny_round.xml",
"java/res/drawable/incognito_switch_track.xml",
......
......@@ -32,8 +32,11 @@ android_library("java") {
":java_resources",
"//base:base_java",
"//base:jni_java",
"//components/browser_ui/settings/android:java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_deps:androidx_fragment_fragment_java",
"//third_party/android_deps:androidx_preference_preference_java",
"//ui/android:ui_full_java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
srcjar_deps = [ ":safety_check_enums" ]
......@@ -57,7 +60,16 @@ android_library("junit") {
}
android_resources("java_resources") {
deps = [ "//chrome/browser/ui/android/strings:ui_strings_grd" ]
sources = [
"java/res/layout/safety_check_button.xml",
"java/res/values/dimens.xml",
"java/res/xml/safety_check_preferences.xml",
]
deps = [
"//chrome/browser/ui/android/strings:ui_strings_grd",
"//components/browser_ui/settings/android:java_resources",
"//components/browser_ui/styles/android:java_resources",
]
custom_package = "org.chromium.chrome.browser.safety_check"
}
......
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 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. -->
<!-- Button for starting Safety check. -->
<org.chromium.ui.widget.ButtonCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/safety_check_button"
style="@style/FilledButton.Flat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_margin="@dimen/safety_check_button_margin"
android:focusable="true"
android:text="@string/safety_check_button" />
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 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. -->
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="safety_check_button_margin">16dp</dimen>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 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. -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- Text describing Safety check. -->
<org.chromium.components.browser_ui.settings.TextMessagePreference
android:title="@string/safety_check_description" />
<!-- Safe Browsing -->
<org.chromium.components.browser_ui.settings.IconPreference
android:key="safe_browsing"
android:title="@string/safety_check_safe_browsing_title"
android:summary="@string/safety_check_unchecked"
android:icon="@drawable/ic_security_grey"
app:iconTint="@color/default_icon_color" />
<!-- Passwords -->
<org.chromium.components.browser_ui.settings.IconPreference
android:key="passwords"
android:title="@string/safety_check_passwords_title"
android:summary="@string/safety_check_unchecked"
android:icon="@drawable/ic_vpn_key_grey"
app:iconTint="@color/default_icon_color" />
<!-- Updates -->
<org.chromium.components.browser_ui.settings.IconPreference
android:key="updates"
android:title="@string/safety_check_updates_title"
android:summary="@string/safety_check_unchecked"
android:icon="@drawable/ic_update_grey"
app:iconTint="@color/default_icon_color" />
</PreferenceScreen>
......@@ -5,15 +5,39 @@
package org.chromium.chrome.browser.safety_check;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import androidx.preference.PreferenceFragmentCompat;
import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.ui.widget.ButtonCompat;
/**
* Fragment containing Safety check.
*/
public class SafetyCheckSettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
SettingsUtils.addPreferencesFromResource(this, R.xml.safety_check_preferences);
getActivity().setTitle(R.string.prefs_safety_check);
}
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout view =
(LinearLayout) super.onCreateView(inflater, container, savedInstanceState);
// Add a button to the bottom of the preferences view.
ButtonCompat checkButton =
(ButtonCompat) inflater.inflate(R.layout.safety_check_button, view, false);
checkButton.setOnClickListener((View v) -> onSafetyCheckButtonClicked());
view.addView(checkButton);
return view;
}
private void onSafetyCheckButtonClicked() {}
}
......@@ -838,6 +838,24 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_PREFS_SAFETY_CHECK" desc="Title of the Safety check element in settings, allowing the user to check multiple areas of browser safety. [CHAR-LIMIT=32]">
Safety check
</message>
<message name="IDS_SAFETY_CHECK_DESCRIPTION" desc="Introduces the safety check categories to the user. Followed by several items, such as 'Safe Browsing', 'Updates', 'Passwords'.">
Chrome can check if your settings are protecting you from:
</message>
<message name="IDS_SAFETY_CHECK_SAFE_BROWSING_TITLE" desc="Title for the Safe Browsing section.">
Safe Browsing
</message>
<message name="IDS_SAFETY_CHECK_UPDATES_TITLE" desc="Title for the updates section.">
Updates
</message>
<message name="IDS_SAFETY_CHECK_PASSWORDS_TITLE" desc="Title for the passwords section.">
Passwords
</message>
<message name="IDS_SAFETY_CHECK_BUTTON" desc="Text for the button to start Safety check.">
Check now
</message>
<message name="IDS_SAFETY_CHECK_UNCHECKED" desc="A given element has not been checked.">
Unchecked
</message>
<!-- Accessibility preferences -->
<message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR-LIMIT=32]">
......
09a8d1f29f8009206faafa00767edeb0f9947a37
\ No newline at end of file
09a8d1f29f8009206faafa00767edeb0f9947a37
\ No newline at end of file
09a8d1f29f8009206faafa00767edeb0f9947a37
\ No newline at end of file
09a8d1f29f8009206faafa00767edeb0f9947a37
\ No newline at end of file
09a8d1f29f8009206faafa00767edeb0f9947a37
\ No newline at end of file
......@@ -16,6 +16,7 @@ android_library("java") {
"widget/java/src/org/chromium/components/browser_ui/settings/ChromeImageViewPreference.java",
"widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java",
"widget/java/src/org/chromium/components/browser_ui/settings/ExpandablePreferenceGroup.java",
"widget/java/src/org/chromium/components/browser_ui/settings/IconPreference.java",
"widget/java/src/org/chromium/components/browser_ui/settings/LearnMorePreference.java",
"widget/java/src/org/chromium/components/browser_ui/settings/SpinnerPreference.java",
"widget/java/src/org/chromium/components/browser_ui/settings/TextMessagePreference.java",
......@@ -61,5 +62,6 @@ android_resources("java_resources") {
"java/res/values/dimens.xml",
"java/res/values/styles.xml",
]
custom_package = "org.chromium.components.browser_ui.settings"
}
// Copyright 2016 The Chromium Authors. All rights reserved.
// Copyright 2020 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.components.browser_ui.site_settings;
package org.chromium.components.browser_ui.settings;
import android.content.Context;
import android.util.AttributeSet;
......@@ -11,16 +11,14 @@ import android.widget.ImageView;
import androidx.core.view.ViewCompat;
import androidx.preference.PreferenceViewHolder;
import org.chromium.components.browser_ui.settings.ChromeBasePreference;
/**
* A custom preference for drawing Site Settings entries.
* A preference with a horizontally centered icon.
*/
public class SiteSettingsPreference extends ChromeBasePreference {
public class IconPreference extends ChromeBasePreference {
/**
* Constructor for inflating from XML.
*/
public SiteSettingsPreference(Context context, AttributeSet attrs) {
public IconPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
......@@ -28,6 +26,10 @@ public class SiteSettingsPreference extends ChromeBasePreference {
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
// Horizontally center the preference icon.
// TODO(crbug.com/1095981): move this logic to ChromeBasePreference and
// find a way to center it without a hard-coded padding.
int padding = getContext().getResources().getDimensionPixelSize(R.dimen.pref_icon_padding);
ImageView icon = (ImageView) holder.findViewById(android.R.id.icon);
ViewCompat.setPaddingRelative(
......
......@@ -65,7 +65,6 @@ android_library("java") {
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsFeatureList.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsHelpClient.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsPrefClient.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsPreference.java",
"java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsPreferenceFragment.java",
"java/src/org/chromium/components/browser_ui/site_settings/StorageInfo.java",
"java/src/org/chromium/components/browser_ui/site_settings/TriStateSiteSettingsPreference.java",
......
......@@ -7,94 +7,94 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- All sites -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="all_sites"
android:title="@string/all_sites"
android:icon="@drawable/settings_all_sites"
app:iconTint="@color/default_icon_color" />
<!-- Cookies -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:key="cookies"
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings" />
<!-- Location -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="device_location" />
<!-- Camera -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="camera" />
<!-- Microphone -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="microphone" />
<!-- Sensors -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="sensors" />
<!-- Notifications -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="notifications" />
<!-- JavaScript -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="javascript" />
<!-- Popups -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="popups" />
<!-- Ads -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="ads" />
<!-- Background sync -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="background_sync" />
<!-- Automatic Downloads -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="automatic_downloads" />
<!-- Protected content -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="protected_content" />
<!-- Sound -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="sound" />
<!-- Storage -->
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="use_storage"
android:title="@string/website_settings_storage"
android:icon="@drawable/settings_storage"
app:iconTint="@color/default_icon_color" />
<!-- NFC -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="nfc" />
<!-- USB -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="usb" />
<!-- Clipboard API -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="clipboard" />
<!-- Bluetooth Scanning -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="bluetooth_scanning" />
<!-- VR -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="virtual_reality" />
<!-- AR -->
<org.chromium.components.browser_ui.site_settings.SiteSettingsPreference
<org.chromium.components.browser_ui.settings.IconPreference
android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
android:key="augmented_reality" />
</PreferenceScreen>
......@@ -75,6 +75,9 @@ android_resources("java_resources") {
"java/res/drawable-xxxhdpi/top_round.9.png",
"java/res/drawable/ic_help_and_feedback.xml",
"java/res/drawable/ic_offline_pin_24dp_on_light_bg.xml",
"java/res/drawable/ic_security_grey.xml",
"java/res/drawable/ic_update_grey.xml",
"java/res/drawable/ic_vpn_key_grey.xml",
"java/res/drawable/permission_location.xml",
"java/res/values-night/colors.xml",
"java/res/values/colors.xml",
......
<?xml version="1.0" encoding="utf-8"?>
<!--Copyright 2020 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.-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@android:color/white"
android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12L21,5l-9,-4zM12,11.99h7c-0.53,4.12 -3.28,7.79 -7,8.94L12,12L5,12L5,6.3l7,-3.11v8.8z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<!--Copyright 2020 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.-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@android:color/white"
android:pathData="M21,10.12h-6.78l2.74,-2.82c-2.73,-2.7 -7.15,-2.8 -9.88,-0.1 -2.73,2.71 -2.73,7.08 0,9.79 2.73,2.71 7.15,2.71 9.88,0C18.32,15.65 19,14.08 19,12.1h2c0,1.98 -0.88,4.55 -2.64,6.29 -3.51,3.48 -9.21,3.48 -12.72,0 -3.5,-3.47 -3.53,-9.11 -0.02,-12.58 3.51,-3.47 9.14,-3.47 12.65,0L21,3v7.12zM12.5,8v4.25l3.5,2.08 -0.72,1.21L11,13V8h1.5z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<!--Copyright 2019 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.-->
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:targetApi="21" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0">
<path android:pathData="M7.5 6c2.796 0 5.145 1.912 5.811 4.5H22.5v3h-2V18H17v-4.5h-3.69C12.646 16.089 10.297 18 7.5 18c-3.314 0-6-2.686-6-6s2.686-6 6-6zm0 3.5C6.12 9.5 5 10.62 5 12s1.12 2.5 2.5 2.5S10 13.38 10 12 8.88 9.5 7.5 9.5z" android:strokeWidth="1" android:fillColor="#000000" android:fillType="evenOdd"/>
<path android:pathData="M7.5 6c2.796 0 5.145 1.912 5.811 4.5H22.5v3h-2V18H17v-4.5h-3.69C12.646 16.089 10.297 18 7.5 18c-3.314 0-6-2.686-6-6s2.686-6 6-6zm0 3.5C6.12 9.5 5 10.62 5 12s1.12 2.5 2.5 2.5S10 13.38 10 12 8.88 9.5 7.5 9.5z" android:strokeWidth="1" android:fillColor="@android:color/white" android:fillType="evenOdd"/>
</vector>
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