Skip to content

Commit

Permalink
Reland "[Page Zoom] Add new Settings UI for Page Zoom on Android"
Browse files Browse the repository at this point in the history
This is a reland of commit b55be72

Original change's description:
> [Page Zoom] Add new Settings UI for Page Zoom on Android
>
> This CL continues the work of adding the Page Zoom feature on Android.
>
> With this CL we create the UI for the Accessibility Settings page,
> which will be replacing the existing text scaling UI. The UI will
> be displayed as long as the ContentFeature is enabled. The UI has been
> connected to SharedPrefs, but does not connect outside that. In the
> next CL we will add logic to map this slider value to a percentage
> to display to the user, as well as apply it to the web contents
> through the mediator.
>
> With this CL we also componentize the page zoom feature so that
> it can be used in weblayer.
>
> Screenshot of UI:
> https://screenshot.googleplex.com/7fwsY2LmrLyyE2U.png
>
> AX-Relnotes: N/A
> Bug: 1232536
> Change-Id: I28fd44c25cc19314558708e189d79f5ca79efda1
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3658195
> Reviewed-by: Sky Malice <skym@chromium.org>
> Reviewed-by: Theresa Sullivan <twellington@chromium.org>
> Commit-Queue: Mark Schillaci <mschillaci@google.com>
> Reviewed-by: Clark DuVall <cduvall@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1008451}

Bug: 1232536
Change-Id: I7211a88dfdd15715056892ac39fff4ee90c709f5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3674799
Commit-Queue: Mark Schillaci <mschillaci@google.com>
Reviewed-by: Clark DuVall <cduvall@chromium.org>
Reviewed-by: Theresa Sullivan <twellington@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1009152}
  • Loading branch information
mschillaci authored and Chromium LUCI CQ committed May 31, 2022
1 parent 1e28e59 commit 0cf2c06
Show file tree
Hide file tree
Showing 36 changed files with 471 additions and 154 deletions.
5 changes: 2 additions & 3 deletions chrome/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,6 @@ android_library("chrome_java") {
"//chrome/browser/omaha/android:java",
"//chrome/browser/optimization_guide/android:java",
"//chrome/browser/page_annotations/android:java",
"//chrome/browser/page_zoom:java",
"//chrome/browser/paint_preview/android:java",
"//chrome/browser/partnerbookmarks:delegate_java",
"//chrome/browser/partnercustomizations:delegate_java",
Expand Down Expand Up @@ -1025,8 +1024,6 @@ junit_binary("chrome_junit_tests") {
"//chrome/browser/omaha/android:java",
"//chrome/browser/optimization_guide/android:java",
"//chrome/browser/page_annotations/test/android:junit",
"//chrome/browser/page_zoom:java",
"//chrome/browser/page_zoom/internal:junit",
"//chrome/browser/partnerbookmarks:junit",
"//chrome/browser/partnercustomizations:java",
"//chrome/browser/password_edit_dialog/android:junit",
Expand Down Expand Up @@ -1101,6 +1098,8 @@ junit_binary("chrome_junit_tests") {
"//components/background_task_scheduler:background_task_scheduler_java",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
"//components/bookmarks/common/android:bookmarks_java",
"//components/browser_ui/accessibility/android:java",
"//components/browser_ui/accessibility/android:junit",
"//components/browser_ui/bottomsheet/android:java",
"//components/browser_ui/display_cutout/android:java",
"//components/browser_ui/media/android:java",
Expand Down
1 change: 1 addition & 0 deletions chrome/android/DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ include_rules = [
"-chrome/browser/xsurface",

"+components/autofill_assistant/android/public",
"+components/browser_ui/accessibility/android",
"+components/browser_ui/banners/android",
"+components/browser_ui/bottomsheet/android",
"+components/browser_ui/contacts_picker/android",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate;
import org.chromium.components.browser_ui.accessibility.PageZoomUtils;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.content_public.browser.BrowserContextHandle;

Expand Down Expand Up @@ -73,4 +74,9 @@ public void addExtraPreferences(PreferenceFragmentCompat fragment) {
fragment.addPreferencesFromResource(R.xml.image_descriptions_settings_preference);
}
}

@Override
public boolean showPageZoomSettingsUI() {
return PageZoomUtils.shouldShowSettingsUI();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.night_mode.WebContentsDarkModeController;
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
import org.chromium.chrome.browser.page_zoom.PageZoomCoordinator;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkMeta;
import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkType;
Expand All @@ -80,6 +79,7 @@
import org.chromium.chrome.features.start_surface.StartSurfaceState;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkType;
import org.chromium.components.browser_ui.accessibility.PageZoomCoordinator;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.embedder_support.util.UrlUtilities;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;

import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
Expand Down Expand Up @@ -86,7 +87,6 @@
import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate;
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceInteractionSource;
import org.chromium.chrome.browser.page_zoom.PageZoomCoordinator;
import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.profiles.Profile;
Expand Down Expand Up @@ -127,6 +127,7 @@
import org.chromium.chrome.browser.ui.system.StatusBarColorController.StatusBarColorProvider;
import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.chrome.features.start_surface.StartSurface;
import org.chromium.components.browser_ui.accessibility.PageZoomCoordinator;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController.SheetState;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory;
Expand Down Expand Up @@ -459,7 +460,10 @@ public RootUiCoordinator(@NonNull AppCompatActivity activity,
mActivityLifecycleDispatcher, mActivityTabProvider, mTopUiThemeColorProvider);
mEphemeralTabCoordinatorSupplier = ephemeralTabCoordinatorSupplier;

mPageZoomCoordinator = new PageZoomCoordinator(mActivity);
mPageZoomCoordinator = new PageZoomCoordinator(() -> {
ViewStub viewStub = (ViewStub) mActivity.findViewById(R.id.page_zoom_container);
return viewStub.inflate();
});
}

// TODO(pnoland, crbug.com/865801): remove this in favor of wiring it directly.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@
import org.chromium.chrome.browser.layouts.LayoutType;
import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
import org.chromium.chrome.browser.page_zoom.PageZoomCoordinator;
import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkMeta;
import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkType;
import org.chromium.chrome.browser.power_bookmarks.ShoppingSpecifics;
Expand All @@ -81,6 +80,7 @@
import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.browser_ui.accessibility.PageZoomCoordinator;
import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridgeJni;
import org.chromium.components.content_settings.ContentSettingValues;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.page_zoom.PageZoomCoordinator;
import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkMeta;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
Expand All @@ -67,6 +66,7 @@
import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.browser_ui.accessibility.PageZoomCoordinator;
import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridgeJni;
import org.chromium.components.signin.identitymanager.IdentityManager;
Expand Down
17 changes: 0 additions & 17 deletions chrome/browser/page_zoom/BUILD.gn

This file was deleted.

4 changes: 0 additions & 4 deletions chrome/browser/page_zoom/DEPS

This file was deleted.

5 changes: 0 additions & 5 deletions chrome/browser/page_zoom/DIR_METADATA

This file was deleted.

2 changes: 0 additions & 2 deletions chrome/browser/page_zoom/OWNERS

This file was deleted.

60 changes: 0 additions & 60 deletions chrome/browser/page_zoom/internal/BUILD.gn

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -571,15 +571,6 @@ public final class ChromePreferenceKeys {
public static final KeyPrefix OPTIMIZATION_GUIDE_PUSH_NOTIFICATION_CACHE =
new KeyPrefix("Chrome.OptimizationGuide.PushNotificationCache.*");

/**
* Page Zoom feature preferences. Tracks if a user wants the menu item always visible, and
* what their default level of zoom should be.
*/
public static final String PAGE_ZOOM_ALWAYS_SHOW_MENU_ITEM =
"Chrome.PageZoom.AlwaysShowMenuItem";
public static final String PAGE_ZOOM_DEFAULT_ZOOM_SETTING =
"Chrome.PageZoom.DefaultZoomSetting";

/** The shared preference for the 'save card to device' checkbox status. */
public static final String PAYMENTS_CHECK_SAVE_CARD_TO_DEVICE = "check_save_card_to_device";

Expand Down Expand Up @@ -1057,8 +1048,6 @@ static List<String> getKeysInUse() {
OPEN_NEW_TAB_PAGE_COUNT,
OPEN_RECENT_TABS_COUNT,
OPTIMIZATION_GUIDE_PUSH_NOTIFICATION_CACHE.pattern(),
PAGE_ZOOM_ALWAYS_SHOW_MENU_ITEM,
PAGE_ZOOM_DEFAULT_ZOOM_SETTING,
PERSISTENT_OFFLINE_CONTENT_AVAILABILITY_STATUS,
PRICE_TRACKING_ANNOTATIONS_ENABLED_METRICS_TIMESTAMP,
PRICE_TRACKING_CHROME_MANAGED_NOTIFICATIONS_TIMESTAMPS,
Expand Down
11 changes: 0 additions & 11 deletions chrome/browser/ui/android/strings/android_chrome_strings.grd
Original file line number Diff line number Diff line change
Expand Up @@ -5419,17 +5419,6 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
Image descriptions will resume when you connect to Wi-Fi
</message>

<!-- Page Zoom -->
<message name="IDS_PAGE_ZOOM_TITLE" desc="Title of the preference that allows the user to update the accessibility page zoom feature that applies to the web contents." translateable="false">
Zoom
</message>
<message name="IDS_PAGE_ZOOM_DECREASE_ZOOM_BUTTON_TEXT" desc="Accessibility label for button to allow user to decrease page zoom" translateable="false">
Decrease zoom
</message>
<message name="IDS_PAGE_ZOOM_INCREASE_ZOOM_BUTTON_TEXT" desc="Accessibility label for button to allow user to increase page zoom" translateable="false">
Increase zoom
</message>

<!-- Assistant voice search consent ui. -->
<message name="IDS_AVS_CONSENT_UI_TITLE" desc="Title for a dialog asking the user's permission to use Assistant for voice search.">
Get a better voice experience on the web
Expand Down
1 change: 1 addition & 0 deletions components/browser_ui/accessibility/DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ include_rules = [
"+components/user_prefs",
"+content/public/android/java",
"+content/public/browser",
"+ui/android",
]
44 changes: 39 additions & 5 deletions components/browser_ui/accessibility/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ android_library("java") {
"java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java",
"java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java",
"java/src/org/chromium/components/browser_ui/accessibility/FontSizePrefs.java",
"java/src/org/chromium/components/browser_ui/accessibility/PageZoomCoordinator.java",
"java/src/org/chromium/components/browser_ui/accessibility/PageZoomMediator.java",
"java/src/org/chromium/components/browser_ui/accessibility/PageZoomPreference.java",
"java/src/org/chromium/components/browser_ui/accessibility/PageZoomProperties.java",
"java/src/org/chromium/components/browser_ui/accessibility/PageZoomUtils.java",
"java/src/org/chromium/components/browser_ui/accessibility/PageZoomViewBinder.java",
"java/src/org/chromium/components/browser_ui/accessibility/TextScalePreference.java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
Expand All @@ -45,20 +51,48 @@ android_library("java") {
"//content/public/android:content_full_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/androidx:androidx_preference_preference_java",
"//ui/android:ui_no_recycler_view_java",
]
resources_package = "org.chromium.components.browser_ui.accessibility"
}

android_resources("java_resources") {
deps = [
"//components/browser_ui/strings/android:browser_ui_strings_grd",
"//components/browser_ui/styles/android:java_resources",
"//third_party/androidx:androidx_preference_preference_java",
]
sources = [
"java/res/drawable/ic_zoom.xml",
"java/res/drawable/page_zoom_background.xml",
"java/res/drawable/page_zoom_seekbar_progress.xml",
"java/res/drawable/page_zoom_seekbar_thumb.xml",
"java/res/drawable/page_zoom_seekbar_track.xml",
"java/res/layout/custom_preference.xml",
"java/res/layout/page_zoom_preference.xml",
"java/res/layout/page_zoom_view.xml",
"java/res/layout/preference_text_scale.xml",
"java/res/values/styles.xml",
"java/res/xml/accessibility_preferences.xml",
]

deps = [
"//components/browser_ui/strings/android:browser_ui_strings_grd",
"//components/browser_ui/styles/android:java_resources",
"//third_party/androidx:androidx_preference_preference_java",
]
}

java_library("junit") {
bypass_platform_checks = true
testonly = true
sources = [ "java/src/org/chromium/components/browser_ui/accessibility/PageZoomMediatorUnitTest.java" ]

deps = [
":java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
"//content/public/android:content_full_java",
"//third_party/android_deps:robolectric_all_java",
"//third_party/androidx:androidx_test_runner_java",
"//third_party/junit",
"//third_party/mockito:mockito_java",
"//ui/android:ui_no_recycler_view_java",
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="@macro/default_icon_color">
android:tint="@macro/default_icon_color_inverse">
<path
android:fillColor="@android:color/white"
android:pathData="M19.6 21 13.3 14.7Q12.55 15.3 11.575 15.65Q10.6 16 9.5 16Q6.775 16 4.888 14.113Q3 12.225 3 9.5Q3 6.775 4.888 4.887Q6.775 3 9.5 3Q12.225 3 14.113 4.887Q16 6.775 16 9.5Q16 10.6 15.65 11.575Q15.3 12.55 14.7 13.3L21 19.6ZM9.5 14Q11.375 14 12.688 12.688Q14 11.375 14 9.5Q14 7.625 12.688 6.312Q11.375 5 9.5 5Q7.625 5 6.312 6.312Q5 7.625 5 9.5Q5 11.375 6.312 12.688Q7.625 14 9.5 14Z" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2022 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. -->

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
<clip>
<shape android:shape="rectangle">
<solid android:color="@macro/default_icon_color_accent1"/>
<corners android:bottomLeftRadius="18dp"
android:topLeftRadius="18dp" />
<size
android:width="36dp"
android:height="36dp"/>
</shape>
</clip>
</item>

</layer-list>
Loading

0 comments on commit 0cf2c06

Please sign in to comment.