1 // Copyright 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 "components/dom_distiller/core/distilled_page_prefs_android.h"
6 
7 #include "components/dom_distiller/core/distilled_page_prefs.h"
8 #include "components/dom_distiller/core/dom_distiller_service.h"
9 #include "components/dom_distiller/core/jni_headers/DistilledPagePrefs_jni.h"
10 
11 using base::android::JavaParamRef;
12 
13 namespace dom_distiller {
14 
15 namespace android {
16 
DistilledPagePrefsAndroid(JNIEnv * env,jobject obj,DistilledPagePrefs * distilled_page_prefs_ptr)17 DistilledPagePrefsAndroid::DistilledPagePrefsAndroid(
18     JNIEnv* env,
19     jobject obj,
20     DistilledPagePrefs* distilled_page_prefs_ptr)
21     : distilled_page_prefs_(distilled_page_prefs_ptr) {}
22 
~DistilledPagePrefsAndroid()23 DistilledPagePrefsAndroid::~DistilledPagePrefsAndroid() {}
24 
SetFontFamily(JNIEnv * env,const JavaParamRef<jobject> & obj,jint font_family)25 void DistilledPagePrefsAndroid::SetFontFamily(JNIEnv* env,
26                                               const JavaParamRef<jobject>& obj,
27                                               jint font_family) {
28   distilled_page_prefs_->SetFontFamily(
29       static_cast<mojom::FontFamily>(font_family));
30 }
31 
GetFontFamily(JNIEnv * env,const JavaParamRef<jobject> & obj)32 jint DistilledPagePrefsAndroid::GetFontFamily(
33     JNIEnv* env,
34     const JavaParamRef<jobject>& obj) {
35   return (int)distilled_page_prefs_->GetFontFamily();
36 }
37 
SetTheme(JNIEnv * env,const JavaParamRef<jobject> & obj,jint theme)38 void DistilledPagePrefsAndroid::SetTheme(JNIEnv* env,
39                                          const JavaParamRef<jobject>& obj,
40                                          jint theme) {
41   distilled_page_prefs_->SetTheme(static_cast<mojom::Theme>(theme));
42 }
43 
GetTheme(JNIEnv * env,const JavaParamRef<jobject> & obj)44 jint DistilledPagePrefsAndroid::GetTheme(JNIEnv* env,
45                                          const JavaParamRef<jobject>& obj) {
46   return (int)distilled_page_prefs_->GetTheme();
47 }
48 
SetFontScaling(JNIEnv * env,const JavaParamRef<jobject> & obj,jfloat scaling)49 void DistilledPagePrefsAndroid::SetFontScaling(JNIEnv* env,
50                                                const JavaParamRef<jobject>& obj,
51                                                jfloat scaling) {
52   distilled_page_prefs_->SetFontScaling(static_cast<float>(scaling));
53 }
54 
GetFontScaling(JNIEnv * env,const JavaParamRef<jobject> & obj)55 jfloat DistilledPagePrefsAndroid::GetFontScaling(
56     JNIEnv* env,
57     const JavaParamRef<jobject>& obj) {
58   return distilled_page_prefs_->GetFontScaling();
59 }
60 
JNI_DistilledPagePrefs_Init(JNIEnv * env,const JavaParamRef<jobject> & obj,jlong distilled_page_prefs_ptr)61 jlong JNI_DistilledPagePrefs_Init(JNIEnv* env,
62                                   const JavaParamRef<jobject>& obj,
63                                   jlong distilled_page_prefs_ptr) {
64   DistilledPagePrefs* distilled_page_prefs =
65       reinterpret_cast<DistilledPagePrefs*>(distilled_page_prefs_ptr);
66   DistilledPagePrefsAndroid* distilled_page_prefs_android =
67       new DistilledPagePrefsAndroid(env, obj, distilled_page_prefs);
68   return reinterpret_cast<intptr_t>(distilled_page_prefs_android);
69 }
70 
AddObserver(JNIEnv * env,const JavaParamRef<jobject> & obj,jlong observer_ptr)71 void DistilledPagePrefsAndroid::AddObserver(JNIEnv* env,
72                                             const JavaParamRef<jobject>& obj,
73                                             jlong observer_ptr) {
74   DistilledPagePrefsObserverAndroid* distilled_page_prefs_observer_wrapper =
75       reinterpret_cast<DistilledPagePrefsObserverAndroid*>(observer_ptr);
76   distilled_page_prefs_->AddObserver(distilled_page_prefs_observer_wrapper);
77 }
78 
RemoveObserver(JNIEnv * env,const JavaParamRef<jobject> & obj,jlong observer_ptr)79 void DistilledPagePrefsAndroid::RemoveObserver(JNIEnv* env,
80                                                const JavaParamRef<jobject>& obj,
81                                                jlong observer_ptr) {
82   DistilledPagePrefsObserverAndroid* distilled_page_prefs_observer_wrapper =
83       reinterpret_cast<DistilledPagePrefsObserverAndroid*>(observer_ptr);
84   distilled_page_prefs_->RemoveObserver(distilled_page_prefs_observer_wrapper);
85 }
86 
DistilledPagePrefsObserverAndroid(JNIEnv * env,jobject obj)87 DistilledPagePrefsObserverAndroid::DistilledPagePrefsObserverAndroid(
88     JNIEnv* env,
89     jobject obj) {
90   java_ref_.Reset(env, obj);
91 }
92 
~DistilledPagePrefsObserverAndroid()93 DistilledPagePrefsObserverAndroid::~DistilledPagePrefsObserverAndroid() {}
94 
DestroyObserverAndroid(JNIEnv * env)95 void DistilledPagePrefsObserverAndroid::DestroyObserverAndroid(JNIEnv* env) {
96   delete this;
97 }
98 
OnChangeFontFamily(mojom::FontFamily new_font_family)99 void DistilledPagePrefsObserverAndroid::OnChangeFontFamily(
100     mojom::FontFamily new_font_family) {
101   JNIEnv* env = base::android::AttachCurrentThread();
102   Java_DistilledPagePrefsObserverWrapper_onChangeFontFamily(
103       env, java_ref_, (int)new_font_family);
104 }
105 
OnChangeTheme(mojom::Theme new_theme)106 void DistilledPagePrefsObserverAndroid::OnChangeTheme(mojom::Theme new_theme) {
107   JNIEnv* env = base::android::AttachCurrentThread();
108   Java_DistilledPagePrefsObserverWrapper_onChangeTheme(env, java_ref_,
109                                                        (int)new_theme);
110 }
111 
OnChangeFontScaling(float scaling)112 void DistilledPagePrefsObserverAndroid::OnChangeFontScaling(float scaling) {
113   JNIEnv* env = base::android::AttachCurrentThread();
114   Java_DistilledPagePrefsObserverWrapper_onChangeFontScaling(env, java_ref_,
115                                                              scaling);
116 }
117 
JNI_DistilledPagePrefs_InitObserverAndroid(JNIEnv * env,const JavaParamRef<jobject> & obj)118 jlong JNI_DistilledPagePrefs_InitObserverAndroid(
119     JNIEnv* env,
120     const JavaParamRef<jobject>& obj) {
121   DistilledPagePrefsObserverAndroid* observer_android =
122       new DistilledPagePrefsObserverAndroid(env, obj);
123   return reinterpret_cast<intptr_t>(observer_android);
124 }
125 
126 }  // namespace android
127 
128 }  // namespace dom_distiller
129