Skip to content

Commit

Permalink
[Page Zoom] Add new Settings UI for Page Zoom on Android
Browse files Browse the repository at this point in the history
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}
  • Loading branch information
mschillaci authored and Chromium LUCI CQ committed May 27, 2022
1 parent 3052945 commit b55be72
Show file tree
Hide file tree
Showing 36 changed files with 470 additions and 154 deletions.
4 changes: 1 addition & 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,7 @@ 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/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 = [ "android/java/src/org/chromium/chrome/browser/page_zoom/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 b55be72

Please sign in to comment.