Commit da9180f5 authored by Yuki Awano's avatar Yuki Awano Committed by Commit Bot

Wire Chrome page zoom to Android display size

      level. Confirm that scale of Android app is changed as page zoom
      level is changed in Chrome settings. Note that Android side
      accepts scales from 85% to 150%.

Bug: 810473
Test: Open any Android app. Open Chrome settings and change page zoom
Change-Id: I5af0684f005cfe241c0ad3a7f529ab428f7580c5
Reviewed-on: https://chromium-review.googlesource.com/980073
Commit-Queue: Yuki Awano <yawano@chromium.org>
Reviewed-by: default avatarHidehiko Abe <hidehiko@chromium.org>
Reviewed-by: default avatarYury Khmel <khmel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546758}
parent ad82273c
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "chrome/browser/chromeos/system/timezone_resolver_manager.h" #include "chrome/browser/chromeos/system/timezone_resolver_manager.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/profiles/profiles_state.h"
#include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
#include "chrome/common/chrome_features.h" #include "chrome/common/chrome_features.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "chromeos/chromeos_switches.h" #include "chromeos/chromeos_switches.h"
...@@ -42,6 +43,7 @@ ...@@ -42,6 +43,7 @@
#include "components/proxy_config/pref_proxy_config_tracker_impl.h" #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
#include "components/proxy_config/proxy_config_dictionary.h" #include "components/proxy_config/proxy_config_dictionary.h"
#include "components/proxy_config/proxy_config_pref_names.h" #include "components/proxy_config/proxy_config_pref_names.h"
#include "content/public/common/page_zoom.h"
#include "net/proxy_resolution/proxy_config.h" #include "net/proxy_resolution/proxy_config.h"
using ::chromeos::CrosSettings; using ::chromeos::CrosSettings;
...@@ -127,9 +129,7 @@ class ArcSettingsServiceImpl ...@@ -127,9 +129,7 @@ class ArcSettingsServiceImpl
void DefaultNetworkChanged(const chromeos::NetworkState* network) override; void DefaultNetworkChanged(const chromeos::NetworkState* network) override;
private: private:
PrefService* GetPrefs() const { PrefService* GetPrefs() const { return profile_->GetPrefs(); }
return Profile::FromBrowserContext(context_)->GetPrefs();
}
// Returns whether kProxy pref proxy config is applied. // Returns whether kProxy pref proxy config is applied.
bool IsPrefProxyConfigApplied() const; bool IsPrefProxyConfigApplied() const;
...@@ -161,6 +161,7 @@ class ArcSettingsServiceImpl ...@@ -161,6 +161,7 @@ class ArcSettingsServiceImpl
void SyncBackupEnabled() const; void SyncBackupEnabled() const;
void SyncFocusHighlightEnabled() const; void SyncFocusHighlightEnabled() const;
void SyncFontSize() const; void SyncFontSize() const;
void SyncPageZoom() const;
void SyncLocale() const; void SyncLocale() const;
void SyncLocationServiceEnabled() const; void SyncLocationServiceEnabled() const;
void SyncProxySettings() const; void SyncProxySettings() const;
...@@ -198,7 +199,7 @@ class ArcSettingsServiceImpl ...@@ -198,7 +199,7 @@ class ArcSettingsServiceImpl
// ConnectionObserver<mojom::AppInstance>: // ConnectionObserver<mojom::AppInstance>:
void OnConnectionReady() override; void OnConnectionReady() override;
content::BrowserContext* const context_; Profile* const profile_;
ArcBridgeService* const arc_bridge_service_; // Owned by ArcServiceManager. ArcBridgeService* const arc_bridge_service_; // Owned by ArcServiceManager.
// Manages pref observation registration. // Manages pref observation registration.
...@@ -207,6 +208,11 @@ class ArcSettingsServiceImpl ...@@ -207,6 +208,11 @@ class ArcSettingsServiceImpl
std::unique_ptr<chromeos::CrosSettings::ObserverSubscription> std::unique_ptr<chromeos::CrosSettings::ObserverSubscription>
reporting_consent_subscription_; reporting_consent_subscription_;
// Subscription for preference change of default zoom level. Subscription
// automatically unregisters a callback when it's destructed.
std::unique_ptr<ChromeZoomLevelPrefs::DefaultZoomLevelSubscription>
default_zoom_level_subscription_;
base::WeakPtrFactory<ArcSettingsServiceImpl> weak_factory_; base::WeakPtrFactory<ArcSettingsServiceImpl> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(ArcSettingsServiceImpl); DISALLOW_COPY_AND_ASSIGN(ArcSettingsServiceImpl);
...@@ -215,9 +221,11 @@ class ArcSettingsServiceImpl ...@@ -215,9 +221,11 @@ class ArcSettingsServiceImpl
ArcSettingsServiceImpl::ArcSettingsServiceImpl( ArcSettingsServiceImpl::ArcSettingsServiceImpl(
content::BrowserContext* context, content::BrowserContext* context,
ArcBridgeService* arc_bridge_service) ArcBridgeService* arc_bridge_service)
: context_(context), : profile_(Profile::FromBrowserContext(context)),
arc_bridge_service_(arc_bridge_service), arc_bridge_service_(arc_bridge_service),
weak_factory_(this) { weak_factory_(this) {
DCHECK(profile_);
StartObservingSettingsChanges(); StartObservingSettingsChanges();
SyncBootTimeSettings(); SyncBootTimeSettings();
DCHECK(ArcSessionManager::Get()); DCHECK(ArcSessionManager::Get());
...@@ -338,6 +346,14 @@ void ArcSettingsServiceImpl::StartObservingSettingsChanges() { ...@@ -338,6 +346,14 @@ void ArcSettingsServiceImpl::StartObservingSettingsChanges() {
base::Bind(&ArcSettingsServiceImpl::SyncReportingConsent, base::Bind(&ArcSettingsServiceImpl::SyncReportingConsent,
base::Unretained(this))); base::Unretained(this)));
// It's safe to use base::Unretained. This is unregistered when
// default_zoom_level_subscription_ is destructed which is stored as
// unique_ptr in member of this class.
default_zoom_level_subscription_ =
profile_->GetZoomLevelPrefs()->RegisterDefaultZoomLevelCallback(
base::BindRepeating(&ArcSettingsServiceImpl::SyncPageZoom,
base::Unretained(this)));
TimezoneSettings::GetInstance()->AddObserver(this); TimezoneSettings::GetInstance()->AddObserver(this);
chromeos::NetworkHandler::Get()->network_state_handler()->AddObserver( chromeos::NetworkHandler::Get()->network_state_handler()->AddObserver(
...@@ -365,6 +381,7 @@ void ArcSettingsServiceImpl::SyncBootTimeSettings() const { ...@@ -365,6 +381,7 @@ void ArcSettingsServiceImpl::SyncBootTimeSettings() const {
SyncAccessibilityVirtualKeyboardEnabled(); SyncAccessibilityVirtualKeyboardEnabled();
SyncFocusHighlightEnabled(); SyncFocusHighlightEnabled();
SyncFontSize(); SyncFontSize();
SyncPageZoom();
SyncProxySettings(); SyncProxySettings();
SyncReportingConsent(); SyncReportingConsent();
SyncSelectToSpeakEnabled(); SyncSelectToSpeakEnabled();
...@@ -465,6 +482,15 @@ void ArcSettingsServiceImpl::SyncFontSize() const { ...@@ -465,6 +482,15 @@ void ArcSettingsServiceImpl::SyncFontSize() const {
extras); extras);
} }
void ArcSettingsServiceImpl::SyncPageZoom() const {
double zoom_level = profile_->GetZoomLevelPrefs()->GetDefaultZoomLevelPref();
double zoom_factor = content::ZoomLevelToZoomFactor(zoom_level);
base::DictionaryValue extras;
extras.SetDouble("zoomFactor", zoom_factor);
SendSettingsBroadcast("org.chromium.arc.intent_helper.SET_PAGE_ZOOM", extras);
}
void ArcSettingsServiceImpl::SyncLocale() const { void ArcSettingsServiceImpl::SyncLocale() const {
const PrefService::Preference* pref = const PrefService::Preference* pref =
registrar_.prefs()->FindPreference(::prefs::kApplicationLocale); registrar_.prefs()->FindPreference(::prefs::kApplicationLocale);
......
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