Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(277)

Unified Diff: chrome/browser/chromeos/arc/arc_settings_service.cc

Issue 1843563003: Move arc_intent_helper_bridge.h from c/b/chromeos/ to components/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address a comment Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/arc/arc_settings_service.h ('k') | chrome/browser/chromeos/arc/settings_bridge.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/arc/arc_settings_service.cc
diff --git a/chrome/browser/chromeos/arc/settings_bridge.cc b/chrome/browser/chromeos/arc/arc_settings_service.cc
similarity index 51%
rename from chrome/browser/chromeos/arc/settings_bridge.cc
rename to chrome/browser/chromeos/arc/arc_settings_service.cc
index 839d57854c1c853f512b16b3f815c563280dd7a0..c2d8a76e5ac2a0b415f5609626c4bf1bacf02c81 100644
--- a/chrome/browser/chromeos/arc/settings_bridge.cc
+++ b/chrome/browser/chromeos/arc/arc_settings_service.cc
@@ -2,14 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/chromeos/arc/settings_bridge.h"
+#include "chrome/browser/chromeos/arc/arc_settings_service.h"
-#include <algorithm>
+#include <string>
+#include "base/gtest_prod_util.h"
+#include "base/json/json_writer.h"
#include "base/strings/stringprintf.h"
+#include "base/values.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/pref_names.h"
#include "chromeos/settings/cros_settings_names.h"
+#include "chromeos/settings/timezone_settings.h"
+#include "components/arc/intent_helper/font_size_util.h"
+#include "components/prefs/pref_change_registrar.h"
#include "components/prefs/pref_service.h"
using ::chromeos::CrosSettings;
@@ -17,45 +24,69 @@ using ::chromeos::system::TimezoneSettings;
namespace arc {
-namespace fontsizes {
-
-double ConvertFontSizeChromeToAndroid(int default_size,
- int default_fixed_size,
- int minimum_size) {
- // kWebKitDefaultFixedFontSize is automatically set to be 3 pixels smaller
- // than kWebKitDefaultFontSize when Chrome's settings page's main font
- // dropdown control is adjusted. If the user specifically sets a higher
- // fixed font size we will want to take into account the adjustment.
- default_fixed_size += 3;
- int max_chrome_size =
- std::max(std::max(default_fixed_size, default_size), minimum_size);
-
- double android_scale = kAndroidFontScaleSmall;
- if (max_chrome_size >= kChromeFontSizeVeryLarge) {
- android_scale = kAndroidFontScaleHuge;
- } else if (max_chrome_size >= kChromeFontSizeLarge) {
- android_scale = kAndroidFontScaleLarge;
- } else if (max_chrome_size >= kChromeFontSizeNormal) {
- android_scale = kAndroidFontScaleNormal;
- }
+// Listens to changes for select Chrome settings (prefs) that Android cares
+// about and sends the new values to Android to keep the state in sync.
+class ArcSettingsServiceImpl
+ : public chromeos::system::TimezoneSettings::Observer {
+ public:
+ explicit ArcSettingsServiceImpl(ArcBridgeService* arc_bridge_service);
+ ~ArcSettingsServiceImpl() override;
- return android_scale;
-}
+ // Called when a Chrome pref we have registered an observer for has changed.
+ // Obtains the new pref value and sends it to Android.
+ void OnPrefChanged(const std::string& pref_name) const;
+
+ // TimezoneSettings::Observer
+ void TimezoneChanged(const icu::TimeZone& timezone) override;
+
+ private:
+ // Registers to observe changes for Chrome settings we care about.
+ void StartObservingSettingsChanges();
+
+ // Stops listening for Chrome settings changes.
+ void StopObservingSettingsChanges();
+
+ // Retrives Chrome's state for the settings and send it to Android.
+ void SyncAllPrefs() const;
+ void SyncFontSize() const;
+ void SyncLocale() const;
+ void SyncReportingConsent() const;
+ void SyncSpokenFeedbackEnabled() const;
+ void SyncTimeZone() const;
+ void SyncUse24HourClock() const;
-} // namespace fontsizes
+ // Registers to listen to a particular perf.
+ void AddPrefToObserve(const std::string& pref_name);
-SettingsBridge::SettingsBridge(SettingsBridge::Delegate* delegate)
- : delegate_(delegate) {
- DCHECK(delegate_);
+ // Returns the integer value of the pref. pref_name must exist.
+ int GetIntegerPref(const std::string& pref_name) const;
+
+ // Sends a broadcast to the delegate.
+ void SendSettingsBroadcast(const std::string& action,
+ const base::DictionaryValue& extras) const;
+
+ // Manages pref observation registration.
+ PrefChangeRegistrar registrar_;
+
+ scoped_ptr<chromeos::CrosSettings::ObserverSubscription>
+ reporting_consent_subscription_;
+ ArcBridgeService* const arc_bridge_service_;
+
+ DISALLOW_COPY_AND_ASSIGN(ArcSettingsServiceImpl);
+};
+
+ArcSettingsServiceImpl::ArcSettingsServiceImpl(
+ ArcBridgeService* arc_bridge_service)
+ : arc_bridge_service_(arc_bridge_service) {
StartObservingSettingsChanges();
SyncAllPrefs();
}
-SettingsBridge::~SettingsBridge() {
+ArcSettingsServiceImpl::~ArcSettingsServiceImpl() {
StopObservingSettingsChanges();
}
-void SettingsBridge::StartObservingSettingsChanges() {
+void ArcSettingsServiceImpl::StartObservingSettingsChanges() {
Profile* profile = ProfileManager::GetActiveUserProfile();
registrar_.Init(profile->GetPrefs());
@@ -67,13 +98,13 @@ void SettingsBridge::StartObservingSettingsChanges() {
reporting_consent_subscription_ = CrosSettings::Get()->AddSettingsObserver(
chromeos::kStatsReportingPref,
- base::Bind(&SettingsBridge::SyncReportingConsent,
+ base::Bind(&ArcSettingsServiceImpl::SyncReportingConsent,
base::Unretained(this)));
TimezoneSettings::GetInstance()->AddObserver(this);
}
-void SettingsBridge::SyncAllPrefs() const {
+void ArcSettingsServiceImpl::SyncAllPrefs() const {
SyncFontSize();
SyncLocale();
SyncReportingConsent();
@@ -82,19 +113,19 @@ void SettingsBridge::SyncAllPrefs() const {
SyncUse24HourClock();
}
-void SettingsBridge::StopObservingSettingsChanges() {
+void ArcSettingsServiceImpl::StopObservingSettingsChanges() {
registrar_.RemoveAll();
reporting_consent_subscription_.reset();
TimezoneSettings::GetInstance()->RemoveObserver(this);
}
-void SettingsBridge::AddPrefToObserve(const std::string& pref_name) {
- registrar_.Add(pref_name, base::Bind(&SettingsBridge::OnPrefChanged,
+void ArcSettingsServiceImpl::AddPrefToObserve(const std::string& pref_name) {
+ registrar_.Add(pref_name, base::Bind(&ArcSettingsServiceImpl::OnPrefChanged,
base::Unretained(this)));
}
-void SettingsBridge::OnPrefChanged(const std::string& pref_name) const {
+void ArcSettingsServiceImpl::OnPrefChanged(const std::string& pref_name) const {
if (pref_name == prefs::kAccessibilitySpokenFeedbackEnabled) {
SyncSpokenFeedbackEnabled();
} else if (pref_name == prefs::kWebKitDefaultFixedFontSize ||
@@ -108,11 +139,11 @@ void SettingsBridge::OnPrefChanged(const std::string& pref_name) const {
}
}
-void SettingsBridge::TimezoneChanged(const icu::TimeZone& timezone) {
+void ArcSettingsServiceImpl::TimezoneChanged(const icu::TimeZone& timezone) {
SyncTimeZone();
}
-int SettingsBridge::GetIntegerPref(const std::string& pref_name) const {
+int ArcSettingsServiceImpl::GetIntegerPref(const std::string& pref_name) const {
const PrefService::Preference* pref =
registrar_.prefs()->FindPreference(pref_name);
DCHECK(pref);
@@ -122,12 +153,12 @@ int SettingsBridge::GetIntegerPref(const std::string& pref_name) const {
return val;
}
-void SettingsBridge::SyncFontSize() const {
+void ArcSettingsServiceImpl::SyncFontSize() const {
int default_size = GetIntegerPref(prefs::kWebKitDefaultFontSize);
int default_fixed_size = GetIntegerPref(prefs::kWebKitDefaultFixedFontSize);
int minimum_size = GetIntegerPref(prefs::kWebKitMinimumFontSize);
- double android_scale = fontsizes::ConvertFontSizeChromeToAndroid(
+ double android_scale = ConvertFontSizeChromeToAndroid(
default_size, default_fixed_size, minimum_size);
base::DictionaryValue extras;
@@ -136,7 +167,7 @@ void SettingsBridge::SyncFontSize() const {
extras);
}
-void SettingsBridge::SyncSpokenFeedbackEnabled() const {
+void ArcSettingsServiceImpl::SyncSpokenFeedbackEnabled() const {
const PrefService::Preference* pref = registrar_.prefs()->FindPreference(
prefs::kAccessibilitySpokenFeedbackEnabled);
DCHECK(pref);
@@ -149,7 +180,7 @@ void SettingsBridge::SyncSpokenFeedbackEnabled() const {
"org.chromium.arc.intent_helper.SET_SPOKEN_FEEDBACK_ENABLED", extras);
}
-void SettingsBridge::SyncLocale() const {
+void ArcSettingsServiceImpl::SyncLocale() const {
const PrefService::Preference* pref =
registrar_.prefs()->FindPreference(prefs::kApplicationLocale);
DCHECK(pref);
@@ -161,7 +192,7 @@ void SettingsBridge::SyncLocale() const {
SendSettingsBroadcast("org.chromium.arc.intent_helper.SET_LOCALE", extras);
}
-void SettingsBridge::SyncReportingConsent() const {
+void ArcSettingsServiceImpl::SyncReportingConsent() const {
bool consent = false;
CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, &consent);
base::DictionaryValue extras;
@@ -170,7 +201,7 @@ void SettingsBridge::SyncReportingConsent() const {
extras);
}
-void SettingsBridge::SyncTimeZone() const {
+void ArcSettingsServiceImpl::SyncTimeZone() const {
TimezoneSettings* timezone_settings = TimezoneSettings::GetInstance();
base::string16 timezoneID = timezone_settings->GetCurrentTimezoneID();
base::DictionaryValue extras;
@@ -178,7 +209,7 @@ void SettingsBridge::SyncTimeZone() const {
SendSettingsBroadcast("org.chromium.arc.intent_helper.SET_TIME_ZONE", extras);
}
-void SettingsBridge::SyncUse24HourClock() const {
+void ArcSettingsServiceImpl::SyncUse24HourClock() const {
const PrefService::Preference* pref =
registrar_.prefs()->FindPreference(prefs::kUse24HourClock);
DCHECK(pref);
@@ -191,10 +222,40 @@ void SettingsBridge::SyncUse24HourClock() const {
extras);
}
-void SettingsBridge::SendSettingsBroadcast(
+void ArcSettingsServiceImpl::SendSettingsBroadcast(
const std::string& action,
const base::DictionaryValue& extras) const {
- delegate_->OnBroadcastNeeded(action, extras);
+ if (!arc_bridge_service_->intent_helper_instance()) {
+ LOG(ERROR) << "IntentHelper instance is not ready.";
+ return;
+ }
+
+ std::string extras_json;
+ bool write_success = base::JSONWriter::Write(extras, &extras_json);
+ DCHECK(write_success);
+
+ if (arc_bridge_service_->intent_helper_version() >= 1) {
+ arc_bridge_service_->intent_helper_instance()->SendBroadcast(
+ action, "org.chromium.arc.intent_helper",
+ "org.chromium.arc.intent_helper.SettingsReceiver", extras_json);
+ }
+}
+
+ArcSettingsService::ArcSettingsService(ArcBridgeService* bridge_service)
+ : ArcService(bridge_service) {
+ arc_bridge_service()->AddObserver(this);
+}
+
+ArcSettingsService::~ArcSettingsService() {
+ arc_bridge_service()->RemoveObserver(this);
+}
+
+void ArcSettingsService::OnIntentHelperInstanceReady() {
+ impl_.reset(new ArcSettingsServiceImpl(arc_bridge_service()));
+}
+
+void ArcSettingsService::OnIntentHelperInstanceClosed() {
+ impl_.reset();
}
} // namespace arc
« no previous file with comments | « chrome/browser/chromeos/arc/arc_settings_service.h ('k') | chrome/browser/chromeos/arc/settings_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698