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) { | |
nyquist
2014/08/06 23:39:26
could you have this after add/remove observer?
sunangel
2014/08/07 18:50:53
Done.
| |
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) { | |
nyquist
2014/08/06 23:39:26
nit: hackercase in C++, not camelCase
throughout t
sunangel
2014/08/07 18:50:53
Done.
| |
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( | |
88 Observer, | |
89 observers_, | |
90 OnChangeFontSize(GetFontScaleFactor(env, java_ref_.obj()))); | |
91 } | |
92 | |
93 void FontSizePrefsAndroid::OnForceEnableZoomPrefsChanged() { | |
94 JNIEnv* env = base::android::AttachCurrentThread(); | |
95 FOR_EACH_OBSERVER( | |
96 Observer, | |
97 observers_, | |
98 OnChangeForceEnableZoom(GetForceEnableZoom(env, java_ref_.obj()))); | |
99 } | |
100 | |
101 FontSizePrefsObserverAndroid::FontSizePrefsObserverAndroid(JNIEnv* env, | |
102 jobject obj) { | |
103 java_ref_.Reset(env, obj); | |
104 } | |
105 | |
106 FontSizePrefsObserverAndroid::~FontSizePrefsObserverAndroid() { | |
107 } | |
108 | |
109 bool FontSizePrefsObserverAndroid::Register(JNIEnv* env) { | |
110 return RegisterNativesImpl(env); | |
111 } | |
112 | |
113 void FontSizePrefsObserverAndroid::DestroyObserverAndroid(JNIEnv* env, | |
114 jobject obj) { | |
115 delete this; | |
116 } | |
117 | |
118 jlong InitObserverAndroid(JNIEnv* env, jobject obj) { | |
119 FontSizePrefsObserverAndroid* observer_wrapper = | |
120 new FontSizePrefsObserverAndroid(env, obj); | |
121 return reinterpret_cast<intptr_t>(observer_wrapper); | |
122 } | |
123 | |
124 void FontSizePrefsObserverAndroid::OnChangeFontSize(float font_size) { | |
125 JNIEnv* env = base::android::AttachCurrentThread(); | |
126 Java_FontSizePrefsObserverWrapper_onChangeFontSize( | |
127 env, java_ref_.obj(), font_size); | |
128 } | |
129 | |
130 void FontSizePrefsObserverAndroid::OnChangeForceEnableZoom(bool enabled) { | |
131 JNIEnv* env = base::android::AttachCurrentThread(); | |
132 Java_FontSizePrefsObserverWrapper_onChangeForceEnableZoom( | |
133 env, java_ref_.obj(), enabled); | |
134 } | |
OLD | NEW |