Commit 5b7368db authored by Robbie Gibson's avatar Robbie Gibson Committed by Commit Bot

[iOS] Use TextZoomProvider to determine whether text zoom is allowed

This allows the text zoom provider (and any other implementations of it)
to decide using its own rules whether text zoom is allowed.

Bug: 1061119
Change-Id: I76de0206d8b42da169d19475a6e263ac68a632e4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2437434
Commit-Queue: Robbie Gibson <rkgibson@google.com>
Reviewed-by: default avatarRohit Rao <rohitrao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811986}
parent 0dc1103f
......@@ -12,6 +12,8 @@ source_set("providers") {
"chromium_logo_controller.mm",
"chromium_spotlight_provider.h",
"chromium_spotlight_provider.mm",
"chromium_text_zoom_provider.h",
"chromium_text_zoom_provider.mm",
"chromium_voice_search_provider.h",
"chromium_voice_search_provider.mm",
]
......@@ -19,6 +21,7 @@ source_set("providers") {
"//base",
"//ios/chrome/browser/providers/images",
"//ios/chrome/browser/providers/signin",
"//ios/chrome/browser/web:feature_flags",
"//ios/public/provider/chrome/browser",
"//ios/public/provider/chrome/browser/discover_feed",
"//ios/public/provider/chrome/browser/distribution",
......@@ -27,6 +30,7 @@ source_set("providers") {
"//ios/public/provider/chrome/browser/ui",
"//ios/public/provider/chrome/browser/user_feedback",
"//ios/public/provider/chrome/browser/voice",
"//ui/base",
]
configs += [ "//build/config/compiler:enable_arc" ]
}
......
......@@ -30,6 +30,7 @@ class ChromiumBrowserProvider : public ios::ChromeBrowserProvider {
FullscreenProvider* GetFullscreenProvider() const override;
OverridesProvider* GetOverridesProvider() const override;
DiscoverFeedProvider* GetDiscoverFeedProvider() const override;
TextZoomProvider* GetTextZoomProvider() const override;
private:
std::unique_ptr<AppDistributionProvider> app_distribution_provider_;
......@@ -43,6 +44,7 @@ class ChromiumBrowserProvider : public ios::ChromeBrowserProvider {
std::unique_ptr<FullscreenProvider> fullscreen_provider_;
std::unique_ptr<OverridesProvider> overrides_provider_;
std::unique_ptr<DiscoverFeedProvider> discover_feed_provider_;
std::unique_ptr<TextZoomProvider> text_zoom_provider_;
};
#endif // IOS_CHROME_BROWSER_PROVIDERS_CHROMIUM_BROWSER_PROVIDER_H_
......@@ -8,6 +8,7 @@
#import "ios/chrome/browser/providers/chromium_logo_controller.h"
#import "ios/chrome/browser/providers/chromium_spotlight_provider.h"
#import "ios/chrome/browser/providers/chromium_text_zoom_provider.h"
#import "ios/chrome/browser/providers/chromium_voice_search_provider.h"
#import "ios/chrome/browser/providers/images/chromium_branded_image_provider.h"
#include "ios/chrome/browser/providers/signin/chromium_signin_resources_provider.h"
......@@ -34,7 +35,8 @@ ChromiumBrowserProvider::ChromiumBrowserProvider()
spotlight_provider_(std::make_unique<ChromiumSpotlightProvider>()),
fullscreen_provider_(std::make_unique<FullscreenProvider>()),
overrides_provider_(std::make_unique<OverridesProvider>()),
discover_feed_provider_(std::make_unique<DiscoverFeedProvider>()) {}
discover_feed_provider_(std::make_unique<DiscoverFeedProvider>()),
text_zoom_provider_(std::make_unique<ChromiumTextZoomProvider>()) {}
ChromiumBrowserProvider::~ChromiumBrowserProvider() {}
......@@ -102,3 +104,7 @@ OverridesProvider* ChromiumBrowserProvider::GetOverridesProvider() const {
DiscoverFeedProvider* ChromiumBrowserProvider::GetDiscoverFeedProvider() const {
return discover_feed_provider_.get();
}
TextZoomProvider* ChromiumBrowserProvider::GetTextZoomProvider() const {
return text_zoom_provider_.get();
}
// 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.
#ifndef IOS_CHROME_BROWSER_PROVIDERS_CHROMIUM_TEXT_ZOOM_PROVIDER_H_
#define IOS_CHROME_BROWSER_PROVIDERS_CHROMIUM_TEXT_ZOOM_PROVIDER_H_
#import "ios/public/provider/chrome/browser/text_zoom_provider.h"
class ChromiumTextZoomProvider : public TextZoomProvider {
public:
ChromiumTextZoomProvider();
~ChromiumTextZoomProvider() override;
private:
// Text Zoom Provider
void SetPageFontSize(web::WebState* web_state, int size) override;
bool IsTextZoomEnabled() override;
};
#endif // IOS_CHROME_BROWSER_PROVIDERS_CHROMIUM_TEXT_ZOOM_PROVIDER_H_
// 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.
#import "ios/chrome/browser/providers/chromium_text_zoom_provider.h"
#include "ios/chrome/browser/web/features.h"
#include "ui/base/device_form_factor.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
ChromiumTextZoomProvider::ChromiumTextZoomProvider() = default;
ChromiumTextZoomProvider::~ChromiumTextZoomProvider() = default;
void ChromiumTextZoomProvider::SetPageFontSize(web::WebState* web_state,
int size) {
TextZoomProvider::SetPageFontSizeJavascript(web_state, size);
}
bool ChromiumTextZoomProvider::IsTextZoomEnabled() {
return ui::GetDeviceFormFactor() != ui::DEVICE_FORM_FACTOR_TABLET &&
base::FeatureList::IsEnabled(web::kWebPageTextAccessibility);
}
......@@ -18,6 +18,9 @@ class TextZoomProvider {
// of 100 corresponds to a zoom of 100%.
virtual void SetPageFontSize(web::WebState* web_state, int size);
// Returns whether text zoom is enabled currently.
virtual bool IsTextZoomEnabled();
protected:
// Uses injected javascript to change to zoom the page font size to the given
// |size| as a percentage (size = 100 -> 100% zoom).
......
......@@ -30,3 +30,7 @@ void TextZoomProvider::SetPageFontSizeJavascript(web::WebState* web_state,
frame->CallJavaScriptFunction("accessibility.adjustFontSize", parameters);
}
}
bool TextZoomProvider::IsTextZoomEnabled() {
return false;
}
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