Add setting UI to toggle Reader Mode for Accessibility
The user-facing name is "Simplified View".
Bug:
Change-Id: I50aff7a3e6d936c7f3277a8f378ab7b4ac28db7a
Reviewed-on: https://chromium-review.googlesource.com/691160
Commit-Queue: Wei-Yin Chen (陳威尹) <[email protected]>
Reviewed-by: Theresa <[email protected]>
Reviewed-by: Matthew Jones <[email protected]>
Cr-Commit-Position: refs/heads/master@{#505708}
diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/chrome/android/java/res/xml/accessibility_preferences.xml
index 0fe7e124..1c4d291d 100644
--- a/chrome/android/java/res/xml/accessibility_preferences.xml
+++ b/chrome/android/java/res/xml/accessibility_preferences.xml
@@ -16,4 +16,9 @@
android:summary="@string/force_enable_zoom_summary"
android:title="@string/force_enable_zoom_title" />
-</PreferenceScreen>
\ No newline at end of file
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="reader_for_accessibility"
+ android:summary="@string/reader_for_accessibility_summary"
+ android:title="@string/reader_for_accessibility_title" />
+
+</PreferenceScreen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
index 4257bad..2900cc2db 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
@@ -147,6 +147,7 @@
}
// Alphabetical:
+ public static final String ALLOW_READER_FOR_ACCESSIBILITY = "AllowReaderForAccessibility";
public static final String ANDROID_PAY_INTEGRATION_V1 = "AndroidPayIntegrationV1";
public static final String ANDROID_PAY_INTEGRATION_V2 = "AndroidPayIntegrationV2";
public static final String ANDROID_PAYMENT_APPS = "AndroidPaymentApps";
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java
index 5b4e138..cc08653 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java
@@ -15,6 +15,7 @@
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason;
import org.chromium.chrome.browser.dom_distiller.ReaderModeManager;
@@ -59,7 +60,11 @@
@Override
protected void createCompactLayoutContent(InfoBarCompactLayout layout) {
TextView prompt = new TextView(getContext());
- prompt.setText(R.string.reader_view_text);
+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.ALLOW_READER_FOR_ACCESSIBILITY)) {
+ prompt.setText(R.string.reader_view_text_alt);
+ } else {
+ prompt.setText(R.string.reader_view_text);
+ }
prompt.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getContext().getResources().getDimension(R.dimen.infobar_text_size));
prompt.setTextColor(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AccessibilityPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AccessibilityPreferences.java
index f6be37fb..388dc83 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AccessibilityPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AccessibilityPreferences.java
@@ -11,6 +11,7 @@
import android.widget.ListView;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.accessibility.FontSizePrefs;
import org.chromium.chrome.browser.accessibility.FontSizePrefs.FontSizePrefsObserver;
@@ -24,12 +25,14 @@
static final String PREF_TEXT_SCALE = "text_scale";
static final String PREF_FORCE_ENABLE_ZOOM = "force_enable_zoom";
+ static final String PREF_READER_FOR_ACCESSIBILITY = "reader_for_accessibility";
private NumberFormat mFormat;
private FontSizePrefs mFontSizePrefs;
private TextScalePreference mTextScalePref;
private SeekBarLinkedCheckBoxPreference mForceEnableZoomPref;
+ private ChromeBaseCheckBoxPreference mReaderForAccessibilityPref;
private FontSizePrefsObserver mFontSizePrefsObserver = new FontSizePrefsObserver() {
@Override
@@ -59,6 +62,12 @@
PREF_FORCE_ENABLE_ZOOM);
mForceEnableZoomPref.setOnPreferenceChangeListener(this);
mForceEnableZoomPref.setLinkedSeekBarPreference(mTextScalePref);
+
+ mReaderForAccessibilityPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_READER_FOR_ACCESSIBILITY);
+ if (!ChromeFeatureList.isEnabled(ChromeFeatureList.ALLOW_READER_FOR_ACCESSIBILITY)) {
+ this.getPreferenceScreen().removePreference(mReaderForAccessibilityPref);
+ }
}
@Override
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index bec085ed..e95e867 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -757,6 +757,12 @@
<message name="IDS_FORCE_ENABLE_ZOOM_SUMMARY" desc="Summary of preference that allows the user to zoom in on any webpage, even if the page tries to disable zooming.">
Override a website’s request to prevent zooming in
</message>
+ <message name="IDS_READER_FOR_ACCESSIBILITY_TITLE" desc="Title of preference that allows the user to use Simplified View on any articles, even if the page is mobile-friendly. Simplified View is the new user-facing name for Reader Mode, which extracts the content of an article and removes clutter from a web page and puts the result in a easier-to-read format.">
+ Simplified View
+ </message>
+ <message name="IDS_READER_FOR_ACCESSIBILITY_SUMMARY" desc="Summary of preference that allows the user to use Simplified View on any articles, even if the page is mobile-friendly.">
+ Enable Simplified View on all articles
+ </message>
<!-- Site settings -->
<message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
@@ -2650,9 +2656,12 @@
<message name="IDS_MENU_OPEN_IN_PRODUCT_DEFAULT" desc="Default title for menu item for opening link in browser. [CHAR-LIMIT=30]">
Open in browser
</message>
- <message name="IDS_READER_VIEW_TEXT" desc="Message shown on the reader mode button bar, to invite the user to tap to open a reader mode. Reader mode extracts content and removes clutter from a web page and puts the result in a panel making it easier to read.">
+ <message name="IDS_READER_VIEW_TEXT" desc='Message shown on the reader mode button bar, to invite the user to tap to open a reader mode. Reader mode extracts content and removes clutter from a web page and puts the result in a panel making it easier to read. This is used when "Reader Mode for Accessibility" is not available.'>
Make page mobile-friendly
</message>
+ <message name="IDS_READER_VIEW_TEXT_ALT" desc='Message shown on the reader mode button bar, to invite the user to tap to open a reader mode. Reader mode extracts content and removes clutter from a web page and puts the result in a panel making it easier to read. This is used when "Reader Mode for Accessibility" is available.'>
+ Simplify page
+ </message>
<message name="IDS_CONTENT_PROVIDER_SEARCH_DESCRIPTION" desc="Description for Chrome's entry in QSB's list of search suggestion providers [CHAR-LIMIT=32]">
Bookmarks and web history
</message>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 15b961e..00a6501b 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1223,8 +1223,8 @@
// UMA histogram. This histogram shows the number of startups with a given flag
// enabled. If you'd like to see user counts instead, make sure to switch to
// to "count users" view on the dashboard. When adding new entries, the enum
-// "LoginCustomFlags" must be updated in histograms.xml. See note in
-// histograms.xml and don't forget to run AboutFlagsHistogramTest unit test
+// "LoginCustomFlags" must be updated in histograms/enums.xml. See note in
+// enums.xml and don't forget to run AboutFlagsHistogramTest unit test
// to calculate and verify checksum.
//
// When adding a new choice, add it to the end of the list.
@@ -3541,6 +3541,13 @@
flag_descriptions::kOverflowIconsForMediaControlsDescription, kOsAll,
FEATURE_VALUE_TYPE(media::kOverflowIconsForMediaControls)},
+#if defined(OS_ANDROID)
+ {"allow-reader-for-accessibility",
+ flag_descriptions::kAllowReaderForAccessibilityName,
+ flag_descriptions::kAllowReaderForAccessibilityDescription, kOsAndroid,
+ FEATURE_VALUE_TYPE(chrome::android::kAllowReaderForAccessibility)},
+#endif // defined(OS_ANDROID)
+
// NOTE: Adding new command-line switches requires adding corresponding
// entries to enum "LoginCustomFlags" in histograms/enums.xml. See note in
// enums.xml and don't forget to run AboutFlagsHistogramTest unit test.
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
index a09e3c21..70d26ce 100644
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -50,6 +50,7 @@
&features::kVrShell,
&features::kWebPayments,
&features::kTabsInCbd,
+ &kAllowReaderForAccessibility,
&kAndroidPayIntegrationV1,
&kAndroidPayIntegrationV2,
&kAndroidPaymentApps,
@@ -139,6 +140,9 @@
} // namespace
// Alphabetical:
+const base::Feature kAllowReaderForAccessibility = {
+ "AllowReaderForAccessibility", base::FEATURE_DISABLED_BY_DEFAULT};
+
const base::Feature kAndroidPayIntegrationV1{"AndroidPayIntegrationV1",
base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/browser/android/chrome_feature_list.h b/chrome/browser/android/chrome_feature_list.h
index 7092cca..3fa7d378 100644
--- a/chrome/browser/android/chrome_feature_list.h
+++ b/chrome/browser/android/chrome_feature_list.h
@@ -13,6 +13,7 @@
namespace android {
// Alphabetical:
+extern const base::Feature kAllowReaderForAccessibility;
extern const base::Feature kAndroidPayIntegrationV1;
extern const base::Feature kAndroidPayIntegrationV2;
extern const base::Feature kAndroidPaymentApps;
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 4f596d2..9daf14fe 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1553,6 +1553,10 @@
const char kAccessibilityTabSwitcherDescription[] =
"Enable the accessibility tab switcher for Android.";
+const char kAllowReaderForAccessibilityName[] = "Reader Mode for Accessibility";
+const char kAllowReaderForAccessibilityDescription[] =
+ "Allows Reader Mode on any articles, even if the page is mobile-friendly.";
+
const char kAndroidAutofillAccessibilityName[] = "Autofill Accessibility";
const char kAndroidAutofillAccessibilityDescription[] =
"Enable accessibility for autofill popup.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 9b8271e..e1f1912a 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -957,6 +957,9 @@
extern const char kAccessibilityTabSwitcherName[];
extern const char kAccessibilityTabSwitcherDescription[];
+extern const char kAllowReaderForAccessibilityName[];
+extern const char kAllowReaderForAccessibilityDescription[];
+
extern const char kAndroidAutofillAccessibilityName[];
extern const char kAndroidAutofillAccessibilityDescription[];
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index d64cbe7..91959fb 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -23940,6 +23940,7 @@
<int value="200347243" label="WebVRExperimentalRendering:disabled"/>
<int value="201343576" label="enable-password-change-support:enabled"/>
<int value="203776499" label="enable-virtual-keyboard-overscroll"/>
+ <int value="219117936" label="AllowReaderForAccessibility:enabled"/>
<int value="223662457" label="BackgroundLoadingForDownloads:enabled"/>
<int value="237964589"
label="enable-manual-fallback-for-password-saving:disabled"/>
@@ -24277,6 +24278,7 @@
<int value="1219628795" label="PrintScaling:disabled"/>
<int value="1219826373" label="ServiceWorkerNavigationPreload:enabled"/>
<int value="1220171692" label="SpeculativeLaunchServiceWorker:enabled"/>
+ <int value="1220274247" label="AllowReaderForAccessibility:disabled"/>
<int value="1220464509" label="enable-first-run-ui-transitions"/>
<int value="1221559505" label="enable-spelling-feedback-field-trial"/>
<int value="1222017136" label="WebRtcUseEchoCanceller3:disabled"/>