OLD | NEW |
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/aw_content_browser_client.h" | 7 #include "android_webview/browser/aw_content_browser_client.h" |
8 #include "android_webview/browser/renderer_host/aw_render_view_host_ext.h" | 8 #include "android_webview/browser/renderer_host/aw_render_view_host_ext.h" |
9 #include "android_webview/common/aw_content_client.h" | 9 #include "android_webview/common/aw_content_client.h" |
10 #include "android_webview/native/aw_contents.h" | 10 #include "android_webview/native/aw_contents.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 new AwSettingsUserData(this)); | 83 new AwSettingsUserData(this)); |
84 } | 84 } |
85 | 85 |
86 AwSettings::~AwSettings() { | 86 AwSettings::~AwSettings() { |
87 if (web_contents()) { | 87 if (web_contents()) { |
88 web_contents()->SetUserData(kAwSettingsUserDataKey, NULL); | 88 web_contents()->SetUserData(kAwSettingsUserDataKey, NULL); |
89 } | 89 } |
90 | 90 |
91 JNIEnv* env = base::android::AttachCurrentThread(); | 91 JNIEnv* env = base::android::AttachCurrentThread(); |
92 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); | 92 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); |
93 jobject obj = scoped_obj.obj(); | 93 if (scoped_obj.is_null()) |
94 if (!obj) return; | 94 return; |
95 Java_AwSettings_nativeAwSettingsGone(env, obj, | 95 Java_AwSettings_nativeAwSettingsGone(env, scoped_obj, |
96 reinterpret_cast<intptr_t>(this)); | 96 reinterpret_cast<intptr_t>(this)); |
97 } | 97 } |
98 | 98 |
99 void AwSettings::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 99 void AwSettings::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
100 delete this; | 100 delete this; |
101 } | 101 } |
102 | 102 |
103 AwSettings* AwSettings::FromWebContents(content::WebContents* web_contents) { | 103 AwSettings* AwSettings::FromWebContents(content::WebContents* web_contents) { |
104 return AwSettingsUserData::GetSettings(web_contents); | 104 return AwSettingsUserData::GetSettings(web_contents); |
105 } | 105 } |
106 | 106 |
107 AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() { | 107 AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() { |
108 if (!web_contents()) return NULL; | 108 if (!web_contents()) return NULL; |
109 AwContents* contents = AwContents::FromWebContents(web_contents()); | 109 AwContents* contents = AwContents::FromWebContents(web_contents()); |
110 if (!contents) return NULL; | 110 if (!contents) return NULL; |
111 return contents->render_view_host_ext(); | 111 return contents->render_view_host_ext(); |
112 } | 112 } |
113 | 113 |
114 void AwSettings::ResetScrollAndScaleState(JNIEnv* env, | 114 void AwSettings::ResetScrollAndScaleState(JNIEnv* env, |
115 const JavaParamRef<jobject>& obj) { | 115 const JavaParamRef<jobject>& obj) { |
116 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); | 116 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); |
117 if (!rvhe) return; | 117 if (!rvhe) return; |
118 rvhe->ResetScrollAndScaleState(); | 118 rvhe->ResetScrollAndScaleState(); |
119 } | 119 } |
120 | 120 |
121 void AwSettings::UpdateEverything() { | 121 void AwSettings::UpdateEverything() { |
122 JNIEnv* env = base::android::AttachCurrentThread(); | 122 JNIEnv* env = base::android::AttachCurrentThread(); |
123 CHECK(env); | 123 CHECK(env); |
124 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); | 124 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); |
125 jobject obj = scoped_obj.obj(); | 125 if (scoped_obj.is_null()) |
126 if (!obj) return; | 126 return; |
127 // Grab the lock and call UpdateEverythingLocked. | 127 // Grab the lock and call UpdateEverythingLocked. |
128 Java_AwSettings_updateEverything(env, obj); | 128 Java_AwSettings_updateEverything(env, scoped_obj); |
129 } | 129 } |
130 | 130 |
131 void AwSettings::UpdateEverythingLocked(JNIEnv* env, | 131 void AwSettings::UpdateEverythingLocked(JNIEnv* env, |
132 const JavaParamRef<jobject>& obj) { | 132 const JavaParamRef<jobject>& obj) { |
133 UpdateInitialPageScaleLocked(env, obj); | 133 UpdateInitialPageScaleLocked(env, obj); |
134 UpdateWebkitPreferencesLocked(env, obj); | 134 UpdateWebkitPreferencesLocked(env, obj); |
135 UpdateUserAgentLocked(env, obj); | 135 UpdateUserAgentLocked(env, obj); |
136 ResetScrollAndScaleState(env, obj); | 136 ResetScrollAndScaleState(env, obj); |
137 UpdateFormDataPreferencesLocked(env, obj); | 137 UpdateFormDataPreferencesLocked(env, obj); |
138 UpdateRendererPreferencesLocked(env, obj); | 138 UpdateRendererPreferencesLocked(env, obj); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 } | 253 } |
254 | 254 |
255 void AwSettings::WebContentsDestroyed() { | 255 void AwSettings::WebContentsDestroyed() { |
256 delete this; | 256 delete this; |
257 } | 257 } |
258 | 258 |
259 void AwSettings::PopulateWebPreferences(WebPreferences* web_prefs) { | 259 void AwSettings::PopulateWebPreferences(WebPreferences* web_prefs) { |
260 JNIEnv* env = base::android::AttachCurrentThread(); | 260 JNIEnv* env = base::android::AttachCurrentThread(); |
261 CHECK(env); | 261 CHECK(env); |
262 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); | 262 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); |
263 jobject obj = scoped_obj.obj(); | 263 if (scoped_obj.is_null()) |
264 if (!obj) return; | 264 return; |
265 // Grab the lock and call PopulateWebPreferencesLocked. | 265 // Grab the lock and call PopulateWebPreferencesLocked. |
266 Java_AwSettings_populateWebPreferences( | 266 Java_AwSettings_populateWebPreferences(env, scoped_obj, |
267 env, obj, reinterpret_cast<jlong>(web_prefs)); | 267 reinterpret_cast<jlong>(web_prefs)); |
268 } | 268 } |
269 | 269 |
270 void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env, | 270 void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env, |
271 const JavaParamRef<jobject>& obj, | 271 const JavaParamRef<jobject>& obj, |
272 jlong web_prefs_ptr) { | 272 jlong web_prefs_ptr) { |
273 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt(); | 273 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt(); |
274 if (!render_view_host_ext) return; | 274 if (!render_view_host_ext) return; |
275 | 275 |
276 WebPreferences* web_prefs = reinterpret_cast<WebPreferences*>(web_prefs_ptr); | 276 WebPreferences* web_prefs = reinterpret_cast<WebPreferences*>(web_prefs_ptr); |
277 PopulateFixedWebPreferences(web_prefs); | 277 PopulateFixedWebPreferences(web_prefs); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 JNIEnv* env, | 458 JNIEnv* env, |
459 const JavaParamRef<jclass>& clazz) { | 459 const JavaParamRef<jclass>& clazz) { |
460 return base::android::ConvertUTF8ToJavaString(env, GetUserAgent()); | 460 return base::android::ConvertUTF8ToJavaString(env, GetUserAgent()); |
461 } | 461 } |
462 | 462 |
463 bool RegisterAwSettings(JNIEnv* env) { | 463 bool RegisterAwSettings(JNIEnv* env) { |
464 return RegisterNativesImpl(env); | 464 return RegisterNativesImpl(env); |
465 } | 465 } |
466 | 466 |
467 } // namespace android_webview | 467 } // namespace android_webview |
OLD | NEW |