Restore adaptive-button-in-top-toolbar-customization: reader mode reactivated (#1057)

This commit is contained in:
Carmelo Messina
2025-04-22 17:47:47 +02:00
parent 1c225eb432
commit 0b284bfe43
@@ -7,16 +7,54 @@ Voice button and legacy share/voice functionality is not restored.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../chrome/browser/settings/MainSettings.java | 9 +--------
.../segmentation_platform_config.cc | 1 +
.../adaptive/AdaptiveToolbarButtonController.java | 2 +-
.../toolbar/adaptive/AdaptiveToolbarPrefs.java | 2 +-
.../adaptive/AdaptiveToolbarStatePredictor.java | 4 ++++
.../RadioButtonGroupAdaptiveToolbarPreference.java | 11 ++---------
...e-adaptive-button-in-top-toolbar-customization.inc | 1 +
7 files changed, 11 insertions(+), 19 deletions(-)
.../ReaderModeToolbarButtonController.java | 6 +++---
.../ContextualPageActionController.java | 4 ++++
.../chrome/browser/settings/MainSettings.java | 9 +-------
.../segmentation_platform_config.cc | 1 +
...tton_group_adaptive_toolbar_preference.xml | 9 ++++++++
.../AdaptiveToolbarButtonController.java | 2 +-
.../adaptive/AdaptiveToolbarFeatures.java | 2 +-
.../adaptive/AdaptiveToolbarPrefs.java | 2 +-
.../AdaptiveToolbarStatePredictor.java | 6 +++++-
.../adaptive/AdaptiveToolbarStats.java | 2 ++
...oButtonGroupAdaptiveToolbarPreference.java | 21 +++++++++++--------
...ve-button-in-top-toolbar-customization.inc | 1 +
12 files changed, 41 insertions(+), 24 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-adaptive-button-in-top-toolbar-customization.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java
@@ -39,12 +39,12 @@ public class ReaderModeToolbarButtonController extends BaseButtonDataProvider {
modalDialogManager,
buttonDrawable,
context.getString(R.string.reader_view_text_alt),
- /* actionChipLabelResId= */ R.string.reader_mode_action_chip_label_simplify_page,
+ /* actionChipLabelResId= */ Resources.ID_NULL,
/* supportsTinting= */ true,
/* iphCommandBuilder= */ null,
AdaptiveToolbarButtonVariant.READER_MODE,
- /* tooltipTextResId= */ Resources.ID_NULL,
- /* showHoverHighlight= */ false);
+ /* tooltipTextResId= */ R.string.reader_mode_action_chip_label_simplify_page,
+ /* showHoverHighlight= */ true);
}
@Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java b/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java
@@ -188,6 +188,10 @@ public class ContextualPageActionController {
&& mTabSupplier.get().getId() == tab.getId();
if (!isSameTab) return;
+ if (signalAccumulator.hasReaderMode()
+ && result == AdaptiveToolbarButtonVariant.UNKNOWN) {
+ result = AdaptiveToolbarButtonVariant.READER_MODE;
+ }
showDynamicAction(result);
});
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
@@ -47,6 +85,25 @@ diff --git a/chrome/browser/segmentation_platform/segmentation_platform_config.c
if (!base::FeatureList::IsEnabled(
chrome::android::kAdaptiveButtonInTopToolbarCustomizationV2)) {
return nullptr;
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml b/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml
--- a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml
@@ -90,6 +90,15 @@ found in the LICENSE file.
app:iconSrc="@drawable/summarize_auto"
app:primaryText="@string/adaptive_toolbar_button_preference_page_summary" />
+ <org.chromium.components.browser_ui.widget.RadioButtonWithDescription
+ android:id="@+id/adaptive_option_reader_mode"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="@dimen/min_touch_target_size"
+ android:paddingTop="10dp"
+ app:iconSrc="@drawable/ic_mobile_friendly"
+ app:primaryText="@string/reader_mode_action_chip_label_simplify_page" />
+
</org.chromium.components.browser_ui.widget.RadioButtonWithDescriptionLayout>
</LinearLayout>
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
@@ -59,6 +116,20 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
}
/** Returns the {@link ButtonDataProvider} used in a single-variant mode. */
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
@@ -72,9 +72,9 @@ public class AdaptiveToolbarFeatures {
case AdaptiveToolbarButtonVariant.SHARE:
case AdaptiveToolbarButtonVariant.VOICE:
case AdaptiveToolbarButtonVariant.AUTO:
+ case AdaptiveToolbarButtonVariant.READER_MODE:
return false;
case AdaptiveToolbarButtonVariant.PRICE_TRACKING:
- case AdaptiveToolbarButtonVariant.READER_MODE:
case AdaptiveToolbarButtonVariant.PRICE_INSIGHTS:
case AdaptiveToolbarButtonVariant.DISCOUNTS:
return true;
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarPrefs.java
@@ -74,6 +145,20 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java
@@ -228,12 +228,12 @@ public class AdaptiveToolbarStatePredictor {
case AdaptiveToolbarButtonVariant.ADD_TO_BOOKMARKS:
case AdaptiveToolbarButtonVariant.READ_ALOUD:
case AdaptiveToolbarButtonVariant.PAGE_SUMMARY:
+ case AdaptiveToolbarButtonVariant.READER_MODE:
return true;
case AdaptiveToolbarButtonVariant.UNKNOWN:
case AdaptiveToolbarButtonVariant.NONE:
case AdaptiveToolbarButtonVariant.AUTO:
case AdaptiveToolbarButtonVariant.PRICE_TRACKING:
- case AdaptiveToolbarButtonVariant.READER_MODE:
case AdaptiveToolbarButtonVariant.PRICE_INSIGHTS:
return false;
default:
@@ -261,6 +261,10 @@ public class AdaptiveToolbarStatePredictor {
* @param callback A callback for results.
*/
@@ -85,10 +170,30 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
if (sSegmentationResultsForTesting != null) {
callback.onResult(sSegmentationResultsForTesting);
return;
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java
@@ -117,6 +117,8 @@ public class AdaptiveToolbarStats {
return AdaptiveToolbarRadioButtonState.READ_ALOUD;
case AdaptiveToolbarButtonVariant.PAGE_SUMMARY:
return AdaptiveToolbarRadioButtonState.PAGE_SUMMARY;
+ case AdaptiveToolbarButtonVariant.READER_MODE:
+ return AdaptiveToolbarRadioButtonState.UNKNOWN;
case AdaptiveToolbarButtonVariant.AUTO:
switch (uiState.autoButtonCaption) {
case AdaptiveToolbarButtonVariant.NEW_TAB:
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java
@@ -57,6 +57,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
@@ -36,6 +36,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
private @NonNull RadioButtonWithDescription mAddToBookmarksButton;
private @NonNull RadioButtonWithDescription mReadAloudButton;
private @NonNull RadioButtonWithDescription mPageSummaryButton;
+ private @NonNull RadioButtonWithDescription mReaderMode;
private @AdaptiveToolbarButtonVariant int mSelected;
private @Nullable AdaptiveToolbarStatePredictor mStatePredictor;
private boolean mCanUseVoiceSearch = true;
@@ -57,6 +58,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
mAutoButton =
(RadioButtonWithDescription)
holder.findViewById(R.id.adaptive_option_based_on_usage);
@@ -96,7 +201,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mNewTabButton =
(RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_new_tab);
mShareButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_share);
@@ -64,6 +65,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
@@ -64,6 +66,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
(RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_voice_search);
mTranslateButton =
(RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_translate);
@@ -104,7 +209,16 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
mAddToBookmarksButton =
(RadioButtonWithDescription)
holder.findViewById(R.id.adaptive_option_add_to_bookmarks);
@@ -101,15 +103,6 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
@@ -71,6 +74,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
(RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_read_aloud);
mPageSummaryButton =
(RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_page_summary);
+ mReaderMode =
+ (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_reader_mode);
initializeRadioButtonSelection();
RecordUserAction.record("Mobile.AdaptiveToolbarButton.SettingsPage.Opened");
}
@@ -101,15 +106,6 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
R.string
.adaptive_toolbar_button_preference_based_on_your_usage_description,
getButtonString(uiState.autoButtonCaption)));
@@ -120,6 +234,34 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
updateVoiceButtonVisibility();
updateReadAloudButtonVisibility();
updatePageSummaryButtonVisibility();
@@ -136,6 +132,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
mSelected = AdaptiveToolbarButtonVariant.READ_ALOUD;
} else if (mPageSummaryButton.isChecked()) {
mSelected = AdaptiveToolbarButtonVariant.PAGE_SUMMARY;
+ } else if (mReaderMode.isChecked()) {
+ mSelected = AdaptiveToolbarButtonVariant.READER_MODE;
} else {
assert false : "No matching setting found.";
}
@@ -176,6 +174,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
return mReadAloudButton;
case AdaptiveToolbarButtonVariant.PAGE_SUMMARY:
return mPageSummaryButton;
+ case AdaptiveToolbarButtonVariant.READER_MODE:
+ return mReaderMode;
}
return null;
}
@@ -204,6 +204,9 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends Preference
case AdaptiveToolbarButtonVariant.PAGE_SUMMARY:
stringRes = R.string.adaptive_toolbar_button_preference_page_summary;
break;
+ case AdaptiveToolbarButtonVariant.READER_MODE:
+ stringRes = R.string.adaptive_toolbar_button_preference_page_summary;
+ break;
default:
assert false : "Unknown variant " + variant;
}
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-adaptive-button-in-top-toolbar-customization.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-adaptive-button-in-top-toolbar-customization.inc
new file mode 100644
--- /dev/null