OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/accessibility/font_size_prefs_android.h" | |
6 | |
7 #include "base/observer_list.h" | |
8 #include "base/prefs/pref_change_registrar.h" | |
9 #include "base/prefs/pref_service.h" | |
10 #include "chrome/browser/profiles/profile.h" | |
11 #include "chrome/browser/profiles/profile_android.h" | |
12 #include "chrome/common/pref_names.h" | |
13 #include "jni/FontSizePrefs_jni.h" | |
14 | |
15 FontSizePrefsAndroid::FontSizePrefsAndroid(JNIEnv* env, | |
16 jobject obj, | |
17 Profile* profile) | |
18 : pref_service_(profile->GetPrefs()) { | |
19 java_ref_.Reset(env, obj); | |
20 pref_change_registrar_.reset(new PrefChangeRegistrar); | |
21 pref_change_registrar_->Init(pref_service_); | |
22 pref_change_registrar_->Add( | |
23 prefs::kWebKitFontScaleFactor, | |
24 base::Bind(&FontSizePrefsAndroid::OnFontScaleFactorPrefsChanged, | |
25 base::Unretained(this))); | |
26 pref_change_registrar_->Add( | |
27 prefs::kWebKitForceEnableZoom, | |
28 base::Bind(&FontSizePrefsAndroid::OnForceEnableZoomPrefsChanged, | |
29 base::Unretained(this))); | |
30 } | |
31 | |
32 FontSizePrefsAndroid::~FontSizePrefsAndroid() {} | |
33 | |
34 void FontSizePrefsAndroid::Destroy(JNIEnv* env, jobject obj) { | |
35 delete this; | |
36 } | |
37 | |
38 void FontSizePrefsAndroid::SetFontScaleFactor(JNIEnv* env, | |
39 jobject obj, | |
40 jfloat font_size) { | |
41 pref_service_->SetDouble(prefs::kWebKitFontScaleFactor, | |
42 static_cast<double>(font_size)); | |
43 } | |
44 | |
45 float FontSizePrefsAndroid::GetFontScaleFactor(JNIEnv* env, jobject obj) { | |
46 return pref_service_->GetDouble(prefs::kWebKitFontScaleFactor); | |
47 } | |
48 | |
49 void FontSizePrefsAndroid::SetForceEnableZoom(JNIEnv* env, | |
50 jobject obj, | |
51 jboolean enabled) { | |
52 pref_service_->SetBoolean(prefs::kWebKitForceEnableZoom, enabled); | |
53 } | |
54 | |
55 bool FontSizePrefsAndroid::GetForceEnableZoom(JNIEnv* env, jobject obj) { | |
56 return pref_service_->GetBoolean(prefs::kWebKitForceEnableZoom); | |
57 } | |
58 | |
59 bool FontSizePrefsAndroid::Register(JNIEnv* env) { | |
60 return RegisterNativesImpl(env); | |
61 } | |
62 | |
63 jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { | |
64 FontSizePrefsAndroid* font_size_prefs_android = new FontSizePrefsAndroid( | |
65 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)); | |
66 return reinterpret_cast<intptr_t>(font_size_prefs_android); | |
67 } | |
68 | |
69 void FontSizePrefsAndroid::AddObserver(JNIEnv* env, | |
70 jobject obj, | |
71 jlong observerPtr) { | |
72 FontSizePrefsObserverAndroid* font_size_prefs_observer_android = | |
73 reinterpret_cast<FontSizePrefsObserverAndroid*>(observerPtr); | |
74 observers_.AddObserver(font_size_prefs_observer_android); | |
75 } | |
76 | |
77 void FontSizePrefsAndroid::RemoveObserver(JNIEnv* env, | |
78 jobject obj, | |
79 jlong observerPtr) { | |
80 FontSizePrefsObserverAndroid* font_size_prefs_observer_android = | |
81 reinterpret_cast<FontSizePrefsObserverAndroid*>(observerPtr); | |
82 observers_.RemoveObserver(font_size_prefs_observer_android); | |
83 } | |
84 | |
85 void FontSizePrefsAndroid::OnFontScaleFactorPrefsChanged() { | |
86 JNIEnv* env = base::android::AttachCurrentThread(); | |
87 FOR_EACH_OBSERVER(Observer, | |
robliao
2014/08/01 17:36:33
Consistency: use the 4 space linebreak that OnForc
sunangel
2014/08/04 16:37:56
Done...but this disagrees with git cl format. Not
| |
88 observers_, | |
89 OnChangeFontSize(GetFontScaleFactor(env, java_ref_.obj()))); | |
90 } | |
91 | |
92 void FontSizePrefsAndroid::OnForceEnableZoomPrefsChanged() { | |
93 JNIEnv* env = base::android::AttachCurrentThread(); | |
94 FOR_EACH_OBSERVER( | |
95 Observer, | |
96 observers_, | |
97 OnChangeForceEnableZoom(GetForceEnableZoom(env, java_ref_.obj()))); | |
98 } | |
99 | |
100 FontSizePrefsObserverAndroid::FontSizePrefsObserverAndroid(JNIEnv* env, | |
101 jobject obj) { | |
102 java_ref_.Reset(env, obj); | |
103 } | |
104 | |
105 FontSizePrefsObserverAndroid::~FontSizePrefsObserverAndroid() { | |
106 } | |
107 | |
108 bool FontSizePrefsObserverAndroid::Register(JNIEnv* env) { | |
109 return RegisterNativesImpl(env); | |
110 } | |
111 | |
112 void FontSizePrefsObserverAndroid::DestroyObserverAndroid(JNIEnv* env, | |
113 jobject obj) { | |
114 delete this; | |
115 } | |
116 | |
117 jlong InitObserverAndroid(JNIEnv* env, jobject obj) { | |
118 FontSizePrefsObserverAndroid* observer_wrapper = | |
119 new FontSizePrefsObserverAndroid(env, obj); | |
120 return reinterpret_cast<intptr_t>(observer_wrapper); | |
121 } | |
122 | |
123 void FontSizePrefsObserverAndroid::OnChangeFontSize(float font_size) { | |
124 JNIEnv* env = base::android::AttachCurrentThread(); | |
125 Java_FontSizePrefsObserverWrapper_onChangeFontSize( | |
126 env, java_ref_.obj(), font_size); | |
127 } | |
128 | |
129 void FontSizePrefsObserverAndroid::OnChangeForceEnableZoom(bool enabled) { | |
130 JNIEnv* env = base::android::AttachCurrentThread(); | |
131 Java_FontSizePrefsObserverWrapper_onChangeForceEnableZoom( | |
132 env, java_ref_.obj(), enabled); | |
133 } | |
OLD | NEW |