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

Side by Side Diff: android_webview/native/aw_settings.cc

Issue 1492703004: Pass method parameters as JavaParamRef in android_webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: forgot to test compile unit tests before uploading, whoops Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/native/aw_settings.h" 5 #include "android_webview/native/aw_settings.h"
6 6
7 #include "android_webview/browser/renderer_host/aw_render_view_host_ext.h" 7 #include "android_webview/browser/renderer_host/aw_render_view_host_ext.h"
8 #include "android_webview/common/aw_content_client.h" 8 #include "android_webview/common/aw_content_client.h"
9 #include "android_webview/native/aw_contents.h" 9 #include "android_webview/native/aw_contents.h"
10 #include "base/android/jni_android.h" 10 #include "base/android/jni_android.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 } 86 }
87 87
88 JNIEnv* env = base::android::AttachCurrentThread(); 88 JNIEnv* env = base::android::AttachCurrentThread();
89 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); 89 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env);
90 jobject obj = scoped_obj.obj(); 90 jobject obj = scoped_obj.obj();
91 if (!obj) return; 91 if (!obj) return;
92 Java_AwSettings_nativeAwSettingsGone(env, obj, 92 Java_AwSettings_nativeAwSettingsGone(env, obj,
93 reinterpret_cast<intptr_t>(this)); 93 reinterpret_cast<intptr_t>(this));
94 } 94 }
95 95
96 void AwSettings::Destroy(JNIEnv* env, jobject obj) { 96 void AwSettings::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
97 delete this; 97 delete this;
98 } 98 }
99 99
100 AwSettings* AwSettings::FromWebContents(content::WebContents* web_contents) { 100 AwSettings* AwSettings::FromWebContents(content::WebContents* web_contents) {
101 return AwSettingsUserData::GetSettings(web_contents); 101 return AwSettingsUserData::GetSettings(web_contents);
102 } 102 }
103 103
104 AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() { 104 AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() {
105 if (!web_contents()) return NULL; 105 if (!web_contents()) return NULL;
106 AwContents* contents = AwContents::FromWebContents(web_contents()); 106 AwContents* contents = AwContents::FromWebContents(web_contents());
107 if (!contents) return NULL; 107 if (!contents) return NULL;
108 return contents->render_view_host_ext(); 108 return contents->render_view_host_ext();
109 } 109 }
110 110
111 void AwSettings::ResetScrollAndScaleState(JNIEnv* env, jobject obj) { 111 void AwSettings::ResetScrollAndScaleState(JNIEnv* env,
112 const JavaParamRef<jobject>& obj) {
112 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); 113 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt();
113 if (!rvhe) return; 114 if (!rvhe) return;
114 rvhe->ResetScrollAndScaleState(); 115 rvhe->ResetScrollAndScaleState();
115 } 116 }
116 117
117 void AwSettings::UpdateEverything() { 118 void AwSettings::UpdateEverything() {
118 JNIEnv* env = base::android::AttachCurrentThread(); 119 JNIEnv* env = base::android::AttachCurrentThread();
119 CHECK(env); 120 CHECK(env);
120 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); 121 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env);
121 jobject obj = scoped_obj.obj(); 122 jobject obj = scoped_obj.obj();
122 if (!obj) return; 123 if (!obj) return;
123 // Grab the lock and call UpdateEverythingLocked. 124 // Grab the lock and call UpdateEverythingLocked.
124 Java_AwSettings_updateEverything(env, obj); 125 Java_AwSettings_updateEverything(env, obj);
125 } 126 }
126 127
127 void AwSettings::UpdateEverythingLocked(JNIEnv* env, jobject obj) { 128 void AwSettings::UpdateEverythingLocked(JNIEnv* env,
129 const JavaParamRef<jobject>& obj) {
128 UpdateInitialPageScaleLocked(env, obj); 130 UpdateInitialPageScaleLocked(env, obj);
129 UpdateWebkitPreferencesLocked(env, obj); 131 UpdateWebkitPreferencesLocked(env, obj);
130 UpdateUserAgentLocked(env, obj); 132 UpdateUserAgentLocked(env, obj);
131 ResetScrollAndScaleState(env, obj); 133 ResetScrollAndScaleState(env, obj);
132 UpdateFormDataPreferencesLocked(env, obj); 134 UpdateFormDataPreferencesLocked(env, obj);
133 UpdateRendererPreferencesLocked(env, obj); 135 UpdateRendererPreferencesLocked(env, obj);
134 UpdateOffscreenPreRasterLocked(env, obj); 136 UpdateOffscreenPreRasterLocked(env, obj);
135 } 137 }
136 138
137 void AwSettings::UpdateUserAgentLocked(JNIEnv* env, jobject obj) { 139 void AwSettings::UpdateUserAgentLocked(JNIEnv* env,
140 const JavaParamRef<jobject>& obj) {
138 if (!web_contents()) return; 141 if (!web_contents()) return;
139 142
140 ScopedJavaLocalRef<jstring> str = 143 ScopedJavaLocalRef<jstring> str =
141 Java_AwSettings_getUserAgentLocked(env, obj); 144 Java_AwSettings_getUserAgentLocked(env, obj);
142 bool ua_overidden = str.obj() != NULL; 145 bool ua_overidden = str.obj() != NULL;
143 146
144 if (ua_overidden) { 147 if (ua_overidden) {
145 std::string override = base::android::ConvertJavaStringToUTF8(str); 148 std::string override = base::android::ConvertJavaStringToUTF8(str);
146 web_contents()->SetUserAgentOverride(override); 149 web_contents()->SetUserAgentOverride(override);
147 } 150 }
148 151
149 const content::NavigationController& controller = 152 const content::NavigationController& controller =
150 web_contents()->GetController(); 153 web_contents()->GetController();
151 for (int i = 0; i < controller.GetEntryCount(); ++i) 154 for (int i = 0; i < controller.GetEntryCount(); ++i)
152 controller.GetEntryAtIndex(i)->SetIsOverridingUserAgent(ua_overidden); 155 controller.GetEntryAtIndex(i)->SetIsOverridingUserAgent(ua_overidden);
153 } 156 }
154 157
155 void AwSettings::UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj) { 158 void AwSettings::UpdateWebkitPreferencesLocked(
159 JNIEnv* env,
160 const JavaParamRef<jobject>& obj) {
156 if (!web_contents()) return; 161 if (!web_contents()) return;
157 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt(); 162 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt();
158 if (!render_view_host_ext) return; 163 if (!render_view_host_ext) return;
159 164
160 content::RenderViewHost* render_view_host = 165 content::RenderViewHost* render_view_host =
161 web_contents()->GetRenderViewHost(); 166 web_contents()->GetRenderViewHost();
162 if (!render_view_host) return; 167 if (!render_view_host) return;
163 render_view_host->OnWebkitPreferencesChanged(); 168 render_view_host->OnWebkitPreferencesChanged();
164 } 169 }
165 170
166 void AwSettings::UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj) { 171 void AwSettings::UpdateInitialPageScaleLocked(
172 JNIEnv* env,
173 const JavaParamRef<jobject>& obj) {
167 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); 174 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt();
168 if (!rvhe) return; 175 if (!rvhe) return;
169 176
170 float initial_page_scale_percent = 177 float initial_page_scale_percent =
171 Java_AwSettings_getInitialPageScalePercentLocked(env, obj); 178 Java_AwSettings_getInitialPageScalePercentLocked(env, obj);
172 if (initial_page_scale_percent == 0) { 179 if (initial_page_scale_percent == 0) {
173 rvhe->SetInitialPageScale(-1); 180 rvhe->SetInitialPageScale(-1);
174 } else { 181 } else {
175 float dip_scale = static_cast<float>( 182 float dip_scale = static_cast<float>(
176 Java_AwSettings_getDIPScaleLocked(env, obj)); 183 Java_AwSettings_getDIPScaleLocked(env, obj));
177 rvhe->SetInitialPageScale(initial_page_scale_percent / dip_scale / 100.0f); 184 rvhe->SetInitialPageScale(initial_page_scale_percent / dip_scale / 100.0f);
178 } 185 }
179 } 186 }
180 187
181 void AwSettings::UpdateFormDataPreferencesLocked(JNIEnv* env, jobject obj) { 188 void AwSettings::UpdateFormDataPreferencesLocked(
189 JNIEnv* env,
190 const JavaParamRef<jobject>& obj) {
182 if (!web_contents()) return; 191 if (!web_contents()) return;
183 AwContents* contents = AwContents::FromWebContents(web_contents()); 192 AwContents* contents = AwContents::FromWebContents(web_contents());
184 if (!contents) return; 193 if (!contents) return;
185 194
186 contents->SetSaveFormData(Java_AwSettings_getSaveFormDataLocked(env, obj)); 195 contents->SetSaveFormData(Java_AwSettings_getSaveFormDataLocked(env, obj));
187 } 196 }
188 197
189 void AwSettings::UpdateRendererPreferencesLocked(JNIEnv* env, jobject obj) { 198 void AwSettings::UpdateRendererPreferencesLocked(
199 JNIEnv* env,
200 const JavaParamRef<jobject>& obj) {
190 if (!web_contents()) return; 201 if (!web_contents()) return;
191 202
192 bool update_prefs = false; 203 bool update_prefs = false;
193 RendererPreferences* prefs = web_contents()->GetMutableRendererPrefs(); 204 RendererPreferences* prefs = web_contents()->GetMutableRendererPrefs();
194 205
195 if (!renderer_prefs_initialized_) { 206 if (!renderer_prefs_initialized_) {
196 PopulateFixedRendererPreferences(prefs); 207 PopulateFixedRendererPreferences(prefs);
197 renderer_prefs_initialized_ = true; 208 renderer_prefs_initialized_ = true;
198 update_prefs = true; 209 update_prefs = true;
199 } 210 }
200 211
201 bool video_overlay = 212 bool video_overlay =
202 Java_AwSettings_getVideoOverlayForEmbeddedVideoEnabledLocked(env, obj); 213 Java_AwSettings_getVideoOverlayForEmbeddedVideoEnabledLocked(env, obj);
203 bool force_video_overlay = 214 bool force_video_overlay =
204 Java_AwSettings_getForceVideoOverlayForTests(env, obj); 215 Java_AwSettings_getForceVideoOverlayForTests(env, obj);
205 if (video_overlay != 216 if (video_overlay !=
206 prefs->use_video_overlay_for_embedded_encrypted_video || 217 prefs->use_video_overlay_for_embedded_encrypted_video ||
207 force_video_overlay != prefs->use_view_overlay_for_all_video) { 218 force_video_overlay != prefs->use_view_overlay_for_all_video) {
208 prefs->use_video_overlay_for_embedded_encrypted_video = video_overlay; 219 prefs->use_video_overlay_for_embedded_encrypted_video = video_overlay;
209 prefs->use_view_overlay_for_all_video = force_video_overlay; 220 prefs->use_view_overlay_for_all_video = force_video_overlay;
210 update_prefs = true; 221 update_prefs = true;
211 } 222 }
212 223
213 content::RenderViewHost* host = web_contents()->GetRenderViewHost(); 224 content::RenderViewHost* host = web_contents()->GetRenderViewHost();
214 if (update_prefs && host) 225 if (update_prefs && host)
215 host->SyncRendererPrefs(); 226 host->SyncRendererPrefs();
216 } 227 }
217 228
218 void AwSettings::UpdateOffscreenPreRasterLocked(JNIEnv* env, jobject obj) { 229 void AwSettings::UpdateOffscreenPreRasterLocked(
230 JNIEnv* env,
231 const JavaParamRef<jobject>& obj) {
219 AwContents* contents = AwContents::FromWebContents(web_contents()); 232 AwContents* contents = AwContents::FromWebContents(web_contents());
220 if (contents) { 233 if (contents) {
221 contents->SetOffscreenPreRaster( 234 contents->SetOffscreenPreRaster(
222 Java_AwSettings_getOffscreenPreRasterLocked(env, obj)); 235 Java_AwSettings_getOffscreenPreRasterLocked(env, obj));
223 } 236 }
224 } 237 }
225 238
226 void AwSettings::RenderViewCreated(content::RenderViewHost* render_view_host) { 239 void AwSettings::RenderViewCreated(content::RenderViewHost* render_view_host) {
227 // A single WebContents can normally have 0 to many RenderViewHost instances 240 // A single WebContents can normally have 0 to many RenderViewHost instances
228 // associated with it. 241 // associated with it.
(...skipping 17 matching lines...) Expand all
246 JNIEnv* env = base::android::AttachCurrentThread(); 259 JNIEnv* env = base::android::AttachCurrentThread();
247 CHECK(env); 260 CHECK(env);
248 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); 261 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env);
249 jobject obj = scoped_obj.obj(); 262 jobject obj = scoped_obj.obj();
250 if (!obj) return; 263 if (!obj) return;
251 // Grab the lock and call PopulateWebPreferencesLocked. 264 // Grab the lock and call PopulateWebPreferencesLocked.
252 Java_AwSettings_populateWebPreferences( 265 Java_AwSettings_populateWebPreferences(
253 env, obj, reinterpret_cast<jlong>(web_prefs)); 266 env, obj, reinterpret_cast<jlong>(web_prefs));
254 } 267 }
255 268
256 void AwSettings::PopulateWebPreferencesLocked( 269 void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env,
257 JNIEnv* env, jobject obj, jlong web_prefs_ptr) { 270 const JavaParamRef<jobject>& obj,
271 jlong web_prefs_ptr) {
258 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt(); 272 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt();
259 if (!render_view_host_ext) return; 273 if (!render_view_host_ext) return;
260 274
261 WebPreferences* web_prefs = reinterpret_cast<WebPreferences*>(web_prefs_ptr); 275 WebPreferences* web_prefs = reinterpret_cast<WebPreferences*>(web_prefs_ptr);
262 PopulateFixedWebPreferences(web_prefs); 276 PopulateFixedWebPreferences(web_prefs);
263 277
264 web_prefs->text_autosizing_enabled = 278 web_prefs->text_autosizing_enabled =
265 Java_AwSettings_getTextAutosizingEnabledLocked(env, obj); 279 Java_AwSettings_getTextAutosizingEnabledLocked(env, obj);
266 280
267 int text_size_percent = Java_AwSettings_getTextSizePercentLocked(env, obj); 281 int text_size_percent = Java_AwSettings_getTextSizePercentLocked(env, obj);
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 JNIEnv* env, 449 JNIEnv* env,
436 const JavaParamRef<jclass>& clazz) { 450 const JavaParamRef<jclass>& clazz) {
437 return base::android::ConvertUTF8ToJavaString(env, GetUserAgent()); 451 return base::android::ConvertUTF8ToJavaString(env, GetUserAgent());
438 } 452 }
439 453
440 bool RegisterAwSettings(JNIEnv* env) { 454 bool RegisterAwSettings(JNIEnv* env) {
441 return RegisterNativesImpl(env); 455 return RegisterNativesImpl(env);
442 } 456 }
443 457
444 } // namespace android_webview 458 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/aw_settings.h ('k') | android_webview/native/permission/aw_permission_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698