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