Chromium Code Reviews| 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/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/native/aw_contents.h" | 8 #include "android_webview/native/aw_contents.h" |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
| 11 #include "base/supports_user_data.h" | |
| 11 #include "content/public/browser/navigation_controller.h" | 12 #include "content/public/browser/navigation_controller.h" |
| 12 #include "content/public/browser/navigation_entry.h" | 13 #include "content/public/browser/navigation_entry.h" |
| 13 #include "content/public/browser/render_view_host.h" | 14 #include "content/public/browser/render_view_host.h" |
| 14 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
| 15 #include "content/public/common/content_client.h" | 16 #include "content/public/common/content_client.h" |
| 16 #include "jni/AwSettings_jni.h" | 17 #include "jni/AwSettings_jni.h" |
| 17 #include "webkit/common/user_agent/user_agent.h" | 18 #include "webkit/common/user_agent/user_agent.h" |
| 18 #include "webkit/common/webpreferences.h" | 19 #include "webkit/common/webpreferences.h" |
| 19 #include "webkit/glue/webkit_glue.h" | 20 #include "webkit/glue/webkit_glue.h" |
| 20 | 21 |
| 22 #include "base/logging.h" | |
| 23 | |
| 21 using base::android::ConvertJavaStringToUTF16; | 24 using base::android::ConvertJavaStringToUTF16; |
| 22 using base::android::ConvertUTF8ToJavaString; | 25 using base::android::ConvertUTF8ToJavaString; |
| 23 using base::android::ScopedJavaLocalRef; | 26 using base::android::ScopedJavaLocalRef; |
| 24 | 27 |
| 25 namespace android_webview { | 28 namespace android_webview { |
| 26 | 29 |
| 30 const void* kAwSettingsUserDataKey = &kAwSettingsUserDataKey; | |
| 31 | |
| 32 class AwSettingsUserData : public base::SupportsUserData::Data { | |
| 33 public: | |
| 34 AwSettingsUserData(AwSettings* ptr) : settings_(ptr) {} | |
| 35 | |
| 36 static AwSettings* GetSettings(content::WebContents* web_contents) { | |
| 37 if (!web_contents) | |
| 38 return NULL; | |
| 39 AwSettingsUserData* data = reinterpret_cast<AwSettingsUserData*>( | |
| 40 web_contents->GetUserData(kAwSettingsUserDataKey)); | |
| 41 return data ? data->settings_ : NULL; | |
| 42 } | |
| 43 | |
| 44 private: | |
| 45 AwSettings* settings_; | |
| 46 }; | |
| 47 | |
| 27 AwSettings::AwSettings(JNIEnv* env, jobject obj, jint web_contents) | 48 AwSettings::AwSettings(JNIEnv* env, jobject obj, jint web_contents) |
| 28 : WebContentsObserver( | 49 : WebContentsObserver( |
| 29 reinterpret_cast<content::WebContents*>(web_contents)), | 50 reinterpret_cast<content::WebContents*>(web_contents)), |
| 30 aw_settings_(env, obj) { | 51 aw_settings_(env, obj) { |
| 52 reinterpret_cast<content::WebContents*>(web_contents)-> | |
| 53 SetUserData(kAwSettingsUserDataKey, new AwSettingsUserData(this)); | |
| 31 } | 54 } |
| 32 | 55 |
| 33 AwSettings::~AwSettings() { | 56 AwSettings::~AwSettings() { |
|
joth
2013/09/25 12:04:01
if (web_contents())
web_contents()->SetUserData(
benm (inactive)
2013/09/25 16:00:56
Done.
| |
| 34 JNIEnv* env = base::android::AttachCurrentThread(); | 57 JNIEnv* env = base::android::AttachCurrentThread(); |
| 35 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); | 58 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); |
| 36 jobject obj = scoped_obj.obj(); | 59 jobject obj = scoped_obj.obj(); |
| 37 if (!obj) return; | 60 if (!obj) return; |
| 38 Java_AwSettings_nativeAwSettingsGone(env, obj, | 61 Java_AwSettings_nativeAwSettingsGone(env, obj, |
| 39 reinterpret_cast<jint>(this)); | 62 reinterpret_cast<jint>(this)); |
| 40 } | 63 } |
| 41 | 64 |
| 42 void AwSettings::Destroy(JNIEnv* env, jobject obj) { | 65 void AwSettings::Destroy(JNIEnv* env, jobject obj) { |
| 43 delete this; | 66 delete this; |
| 44 } | 67 } |
| 45 | 68 |
| 69 AwSettings* AwSettings::FromWebContents(content::WebContents* web_contents) { | |
| 70 return AwSettingsUserData::GetSettings(web_contents); | |
| 71 } | |
| 72 | |
| 73 void AwSettings::PopulateWebPreferences(WebPreferences* web_prefs) { | |
| 74 | |
| 75 JNIEnv* env = base::android::AttachCurrentThread(); | |
| 76 CHECK(env); | |
| 77 | |
| 78 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt(); | |
| 79 if (!render_view_host_ext) return; | |
| 80 | |
| 81 ScopedJavaLocalRef<jobject> scoped_obj = aw_settings_.get(env); | |
| 82 jobject obj = scoped_obj.obj(); | |
| 83 if (!obj) return; | |
| 84 | |
| 85 web_prefs->text_autosizing_enabled = | |
| 86 Java_AwSettings_getTextAutosizingEnabledLocked(env, obj); | |
| 87 | |
| 88 int text_size_percent = Java_AwSettings_getTextSizePercentLocked(env, obj); | |
| 89 if (web_prefs->text_autosizing_enabled) { | |
| 90 web_prefs->font_scale_factor = text_size_percent / 100.0f; | |
| 91 web_prefs->force_enable_zoom = text_size_percent >= 130; | |
| 92 // Use the default zoom level value when Text Autosizer is turned on. | |
| 93 render_view_host_ext->SetTextZoomLevel(0); | |
| 94 } else { | |
| 95 web_prefs->force_enable_zoom = false; | |
| 96 render_view_host_ext->SetTextZoomLevel(content::ZoomFactorToZoomLevel( | |
| 97 text_size_percent / 100.0f)); | |
| 98 } | |
| 99 | |
| 100 web_prefs->standard_font_family_map[webkit_glue::kCommonScript] = | |
| 101 ConvertJavaStringToUTF16( | |
| 102 Java_AwSettings_getStandardFontFamilyLocked(env, obj)); | |
| 103 | |
| 104 web_prefs->fixed_font_family_map[webkit_glue::kCommonScript] = | |
| 105 ConvertJavaStringToUTF16( | |
| 106 Java_AwSettings_getFixedFontFamilyLocked(env, obj)); | |
| 107 | |
| 108 web_prefs->sans_serif_font_family_map[webkit_glue::kCommonScript] = | |
| 109 ConvertJavaStringToUTF16( | |
| 110 Java_AwSettings_getSansSerifFontFamilyLocked(env, obj)); | |
| 111 | |
| 112 web_prefs->serif_font_family_map[webkit_glue::kCommonScript] = | |
| 113 ConvertJavaStringToUTF16( | |
| 114 Java_AwSettings_getSerifFontFamilyLocked(env, obj)); | |
| 115 | |
| 116 web_prefs->cursive_font_family_map[webkit_glue::kCommonScript] = | |
| 117 ConvertJavaStringToUTF16( | |
| 118 Java_AwSettings_getCursiveFontFamilyLocked(env, obj)); | |
| 119 | |
| 120 web_prefs->fantasy_font_family_map[webkit_glue::kCommonScript] = | |
| 121 ConvertJavaStringToUTF16( | |
| 122 Java_AwSettings_getFantasyFontFamilyLocked(env, obj)); | |
| 123 | |
| 124 web_prefs->default_encoding = ConvertJavaStringToUTF8( | |
| 125 Java_AwSettings_getDefaultTextEncodingLocked(env, obj)); | |
| 126 | |
| 127 web_prefs->minimum_font_size = Java_AwSettings_getMinimumFontSizeLocked(env, o bj); | |
| 128 | |
| 129 web_prefs->minimum_logical_font_size = | |
| 130 Java_AwSettings_getMinimumLogicalFontSizeLocked(env, obj); | |
| 131 | |
| 132 web_prefs->default_font_size = Java_AwSettings_getDefaultFontSizeLocked(env, o bj); | |
| 133 | |
| 134 web_prefs->default_fixed_font_size = | |
| 135 Java_AwSettings_getDefaultFixedFontSizeLocked(env, obj); | |
| 136 // Blink's LoadsImagesAutomatically and ImagesEnabled must be | |
| 137 // set cris-cross to Android's. See | |
| 138 // https://code.google.com/p/chromium/issues/detail?id=224317#c26 | |
| 139 web_prefs->loads_images_automatically = | |
| 140 Java_AwSettings_getImagesEnabledLocked(env, obj); | |
| 141 web_prefs->images_enabled = | |
| 142 Java_AwSettings_getLoadsImagesAutomaticallyLocked(env, obj); | |
| 143 | |
| 144 web_prefs->javascript_enabled = | |
| 145 Java_AwSettings_getJavaScriptEnabledLocked(env, obj); | |
| 146 LOG(ERROR) << "Set javascript pref to " << web_prefs->javascript_enabled; | |
| 147 | |
| 148 web_prefs->allow_universal_access_from_file_urls = | |
| 149 Java_AwSettings_getAllowUniversalAccessFromFileURLsLocked(env, obj); | |
| 150 | |
| 151 web_prefs->allow_file_access_from_file_urls = | |
| 152 Java_AwSettings_getAllowFileAccessFromFileURLsLocked(env, obj); | |
| 153 | |
| 154 web_prefs->javascript_can_open_windows_automatically = | |
| 155 Java_AwSettings_getJavaScriptCanOpenWindowsAutomaticallyLocked(env, obj); | |
| 156 | |
| 157 web_prefs->supports_multiple_windows = | |
| 158 Java_AwSettings_getSupportMultipleWindowsLocked(env, obj); | |
| 159 | |
| 160 web_prefs->plugins_enabled = !Java_AwSettings_getPluginsDisabledLocked(env, ob j); | |
| 161 | |
| 162 web_prefs->application_cache_enabled = | |
| 163 Java_AwSettings_getAppCacheEnabledLocked(env, obj); | |
| 164 | |
| 165 web_prefs->local_storage_enabled = | |
| 166 Java_AwSettings_getDomStorageEnabledLocked(env, obj); | |
| 167 | |
| 168 web_prefs->databases_enabled = Java_AwSettings_getDatabaseEnabledLocked(env, o bj); | |
| 169 | |
| 170 web_prefs->wide_viewport_quirk = true; | |
| 171 web_prefs->double_tap_to_zoom_enabled = web_prefs->use_wide_viewport = | |
| 172 Java_AwSettings_getUseWideViewportLocked(env, obj); | |
| 173 | |
| 174 web_prefs->initialize_at_minimum_page_scale = | |
| 175 Java_AwSettings_getLoadWithOverviewModeLocked(env, obj); | |
| 176 | |
| 177 web_prefs->user_gesture_required_for_media_playback = | |
| 178 Java_AwSettings_getMediaPlaybackRequiresUserGestureLocked(env, obj); | |
| 179 | |
| 180 // Temporary setting, for K release only | |
| 181 // This is a fork from upstream chromium, and should go away once | |
| 182 // https://code.google.com/p/chromium/issues/detail?id=297216 | |
| 183 // is implemented | |
| 184 web_prefs->allow_running_insecure_content = true; | |
| 185 | |
| 186 ScopedJavaLocalRef<jstring> url = | |
| 187 Java_AwSettings_getDefaultVideoPosterURLLocked(env, obj); | |
| 188 web_prefs->default_video_poster_url = url.obj() ? | |
| 189 GURL(ConvertJavaStringToUTF8(url)) : GURL(); | |
| 190 | |
| 191 bool support_quirks = Java_AwSettings_getSupportLegacyQuirksLocked(env, obj); | |
| 192 web_prefs->support_deprecated_target_density_dpi = support_quirks; | |
| 193 web_prefs->use_legacy_background_size_shorthand_behavior = support_quirks; | |
| 194 web_prefs->viewport_meta_layout_size_quirk = support_quirks; | |
| 195 web_prefs->viewport_meta_zero_values_quirk = support_quirks; | |
| 196 web_prefs->ignore_main_frame_overflow_hidden_quirk = support_quirks; | |
| 197 | |
| 198 web_prefs->password_echo_enabled = | |
| 199 Java_AwSettings_getPasswordEchoEnabled(env, obj); | |
| 200 } | |
| 201 | |
| 46 AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() { | 202 AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() { |
| 47 if (!web_contents()) return NULL; | 203 if (!web_contents()) return NULL; |
| 48 AwContents* contents = AwContents::FromWebContents(web_contents()); | 204 AwContents* contents = AwContents::FromWebContents(web_contents()); |
| 49 if (!contents) return NULL; | 205 if (!contents) return NULL; |
| 50 return contents->render_view_host_ext(); | 206 return contents->render_view_host_ext(); |
| 51 } | 207 } |
| 52 | 208 |
| 53 void AwSettings::ResetScrollAndScaleState(JNIEnv* env, jobject obj) { | 209 void AwSettings::ResetScrollAndScaleState(JNIEnv* env, jobject obj) { |
| 54 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); | 210 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); |
| 55 if (!rvhe) return; | 211 if (!rvhe) return; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 87 } | 243 } |
| 88 | 244 |
| 89 const content::NavigationController& controller = | 245 const content::NavigationController& controller = |
| 90 web_contents()->GetController(); | 246 web_contents()->GetController(); |
| 91 for (int i = 0; i < controller.GetEntryCount(); ++i) | 247 for (int i = 0; i < controller.GetEntryCount(); ++i) |
| 92 controller.GetEntryAtIndex(i)->SetIsOverridingUserAgent(ua_overidden); | 248 controller.GetEntryAtIndex(i)->SetIsOverridingUserAgent(ua_overidden); |
| 93 } | 249 } |
| 94 | 250 |
| 95 void AwSettings::UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj) { | 251 void AwSettings::UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj) { |
| 96 if (!web_contents()) return; | 252 if (!web_contents()) return; |
| 97 AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt(); | |
| 98 if (!render_view_host_ext) return; | |
| 99 | 253 |
| 100 content::RenderViewHost* render_view_host = | 254 content::RenderViewHost* render_view_host = |
| 101 web_contents()->GetRenderViewHost(); | 255 web_contents()->GetRenderViewHost(); |
| 102 if (!render_view_host) return; | 256 if (!render_view_host) return; |
| 103 WebPreferences prefs = render_view_host->GetWebkitPreferences(); | 257 render_view_host->UpdateWebkitPreferences( |
| 258 render_view_host->GetWebkitPreferences()); | |
| 104 | 259 |
| 105 prefs.text_autosizing_enabled = | |
| 106 Java_AwSettings_getTextAutosizingEnabledLocked(env, obj); | |
| 107 | |
| 108 int text_size_percent = Java_AwSettings_getTextSizePercentLocked(env, obj); | |
| 109 if (prefs.text_autosizing_enabled) { | |
| 110 prefs.font_scale_factor = text_size_percent / 100.0f; | |
| 111 prefs.force_enable_zoom = text_size_percent >= 130; | |
| 112 // Use the default zoom factor value when Text Autosizer is turned on. | |
| 113 render_view_host_ext->SetTextZoomFactor(1); | |
| 114 } else { | |
| 115 prefs.force_enable_zoom = false; | |
| 116 render_view_host_ext->SetTextZoomFactor(text_size_percent / 100.0f); | |
| 117 } | |
| 118 | |
| 119 prefs.standard_font_family_map[webkit_glue::kCommonScript] = | |
| 120 ConvertJavaStringToUTF16( | |
| 121 Java_AwSettings_getStandardFontFamilyLocked(env, obj)); | |
| 122 | |
| 123 prefs.fixed_font_family_map[webkit_glue::kCommonScript] = | |
| 124 ConvertJavaStringToUTF16( | |
| 125 Java_AwSettings_getFixedFontFamilyLocked(env, obj)); | |
| 126 | |
| 127 prefs.sans_serif_font_family_map[webkit_glue::kCommonScript] = | |
| 128 ConvertJavaStringToUTF16( | |
| 129 Java_AwSettings_getSansSerifFontFamilyLocked(env, obj)); | |
| 130 | |
| 131 prefs.serif_font_family_map[webkit_glue::kCommonScript] = | |
| 132 ConvertJavaStringToUTF16( | |
| 133 Java_AwSettings_getSerifFontFamilyLocked(env, obj)); | |
| 134 | |
| 135 prefs.cursive_font_family_map[webkit_glue::kCommonScript] = | |
| 136 ConvertJavaStringToUTF16( | |
| 137 Java_AwSettings_getCursiveFontFamilyLocked(env, obj)); | |
| 138 | |
| 139 prefs.fantasy_font_family_map[webkit_glue::kCommonScript] = | |
| 140 ConvertJavaStringToUTF16( | |
| 141 Java_AwSettings_getFantasyFontFamilyLocked(env, obj)); | |
| 142 | |
| 143 prefs.default_encoding = ConvertJavaStringToUTF8( | |
| 144 Java_AwSettings_getDefaultTextEncodingLocked(env, obj)); | |
| 145 | |
| 146 prefs.minimum_font_size = Java_AwSettings_getMinimumFontSizeLocked(env, obj); | |
| 147 | |
| 148 prefs.minimum_logical_font_size = | |
| 149 Java_AwSettings_getMinimumLogicalFontSizeLocked(env, obj); | |
| 150 | |
| 151 prefs.default_font_size = Java_AwSettings_getDefaultFontSizeLocked(env, obj); | |
| 152 | |
| 153 prefs.default_fixed_font_size = | |
| 154 Java_AwSettings_getDefaultFixedFontSizeLocked(env, obj); | |
| 155 | |
| 156 // Blink's LoadsImagesAutomatically and ImagesEnabled must be | |
| 157 // set cris-cross to Android's. See | |
| 158 // https://code.google.com/p/chromium/issues/detail?id=224317#c26 | |
| 159 prefs.loads_images_automatically = | |
| 160 Java_AwSettings_getImagesEnabledLocked(env, obj); | |
| 161 prefs.images_enabled = | |
| 162 Java_AwSettings_getLoadsImagesAutomaticallyLocked(env, obj); | |
| 163 | |
| 164 prefs.javascript_enabled = | |
| 165 Java_AwSettings_getJavaScriptEnabledLocked(env, obj); | |
| 166 | |
| 167 prefs.allow_universal_access_from_file_urls = | |
| 168 Java_AwSettings_getAllowUniversalAccessFromFileURLsLocked(env, obj); | |
| 169 | |
| 170 prefs.allow_file_access_from_file_urls = | |
| 171 Java_AwSettings_getAllowFileAccessFromFileURLsLocked(env, obj); | |
| 172 | |
| 173 prefs.javascript_can_open_windows_automatically = | |
| 174 Java_AwSettings_getJavaScriptCanOpenWindowsAutomaticallyLocked(env, obj); | |
| 175 | |
| 176 prefs.supports_multiple_windows = | |
| 177 Java_AwSettings_getSupportMultipleWindowsLocked(env, obj); | |
| 178 | |
| 179 prefs.plugins_enabled = !Java_AwSettings_getPluginsDisabledLocked(env, obj); | |
| 180 | |
| 181 prefs.application_cache_enabled = | |
| 182 Java_AwSettings_getAppCacheEnabledLocked(env, obj); | |
| 183 | |
| 184 prefs.local_storage_enabled = | |
| 185 Java_AwSettings_getDomStorageEnabledLocked(env, obj); | |
| 186 | |
| 187 prefs.databases_enabled = Java_AwSettings_getDatabaseEnabledLocked(env, obj); | |
| 188 | |
| 189 prefs.wide_viewport_quirk = true; | |
| 190 prefs.double_tap_to_zoom_enabled = prefs.use_wide_viewport = | |
| 191 Java_AwSettings_getUseWideViewportLocked(env, obj); | |
| 192 | |
| 193 prefs.initialize_at_minimum_page_scale = | |
| 194 Java_AwSettings_getLoadWithOverviewModeLocked(env, obj); | |
| 195 | |
| 196 prefs.user_gesture_required_for_media_playback = | |
| 197 Java_AwSettings_getMediaPlaybackRequiresUserGestureLocked(env, obj); | |
| 198 | |
| 199 ScopedJavaLocalRef<jstring> url = | |
| 200 Java_AwSettings_getDefaultVideoPosterURLLocked(env, obj); | |
| 201 prefs.default_video_poster_url = url.obj() ? | |
| 202 GURL(ConvertJavaStringToUTF8(url)) : GURL(); | |
| 203 | |
| 204 bool support_quirks = Java_AwSettings_getSupportLegacyQuirksLocked(env, obj); | |
| 205 prefs.support_deprecated_target_density_dpi = support_quirks; | |
| 206 prefs.use_legacy_background_size_shorthand_behavior = support_quirks; | |
| 207 prefs.viewport_meta_layout_size_quirk = support_quirks; | |
| 208 prefs.viewport_meta_zero_values_quirk = support_quirks; | |
| 209 | |
| 210 prefs.password_echo_enabled = | |
| 211 Java_AwSettings_getPasswordEchoEnabled(env, obj); | |
| 212 | |
| 213 render_view_host->UpdateWebkitPreferences(prefs); | |
| 214 } | 260 } |
| 215 | 261 |
| 216 void AwSettings::UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj) { | 262 void AwSettings::UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj) { |
| 217 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); | 263 AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt(); |
| 218 if (!rvhe) return; | 264 if (!rvhe) return; |
| 219 | 265 |
| 220 float initial_page_scale_percent = | 266 float initial_page_scale_percent = |
| 221 Java_AwSettings_getInitialPageScalePercentLocked(env, obj); | 267 Java_AwSettings_getInitialPageScalePercentLocked(env, obj); |
| 222 if (initial_page_scale_percent == 0) { | 268 if (initial_page_scale_percent == 0) { |
| 223 rvhe->SetInitialPageScale(-1); | 269 rvhe->SetInitialPageScale(-1); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 265 static jstring GetDefaultUserAgent(JNIEnv* env, jclass clazz) { | 311 static jstring GetDefaultUserAgent(JNIEnv* env, jclass clazz) { |
| 266 return base::android::ConvertUTF8ToJavaString( | 312 return base::android::ConvertUTF8ToJavaString( |
| 267 env, content::GetUserAgent(GURL())).Release(); | 313 env, content::GetUserAgent(GURL())).Release(); |
| 268 } | 314 } |
| 269 | 315 |
| 270 bool RegisterAwSettings(JNIEnv* env) { | 316 bool RegisterAwSettings(JNIEnv* env) { |
| 271 return RegisterNativesImpl(env) >= 0; | 317 return RegisterNativesImpl(env) >= 0; |
| 272 } | 318 } |
| 273 | 319 |
| 274 } // namespace android_webview | 320 } // namespace android_webview |
| OLD | NEW |