| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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_contents.h" | 5 #include "android_webview/native/aw_contents.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "android_webview/browser/aw_browser_context.h" | 10 #include "android_webview/browser/aw_browser_context.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( | 173 AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID( |
| 174 int render_process_id, int render_frame_id) { | 174 int render_process_id, int render_frame_id) { |
| 175 AwContents* aw_contents = AwContents::FromWebContents( | 175 AwContents* aw_contents = AwContents::FromWebContents( |
| 176 content::WebContents::FromRenderFrameHost( | 176 content::WebContents::FromRenderFrameHost( |
| 177 content::RenderFrameHost::FromID(render_process_id, | 177 content::RenderFrameHost::FromID(render_process_id, |
| 178 render_frame_id))); | 178 render_frame_id))); |
| 179 return aw_contents; | 179 return aw_contents; |
| 180 } | 180 } |
| 181 | 181 |
| 182 AwContents::AwContents(scoped_ptr<WebContents> web_contents) | 182 AwContents::AwContents(scoped_ptr<WebContents> web_contents) |
| 183 : shared_renderer_state_( | 183 : shared_renderer_state_(nullptr), |
| 184 this, BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), | |
| 185 browser_view_renderer_( | 184 browser_view_renderer_( |
| 186 this, BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), | 185 this, |
| 186 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), |
| 187 base::CommandLine::ForCurrentProcess()->HasSwitch( | 187 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 188 switches::kDisablePageVisibility)), | 188 switches::kDisablePageVisibility)), |
| 189 web_contents_(std::move(web_contents)), | 189 web_contents_(std::move(web_contents)), |
| 190 renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()) { | 190 renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()) { |
| 191 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1); | 191 base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1); |
| 192 browser_view_renderer_.SetSharedRendererState(&shared_renderer_state_); | |
| 193 icon_helper_.reset(new IconHelper(web_contents_.get())); | 192 icon_helper_.reset(new IconHelper(web_contents_.get())); |
| 194 icon_helper_->SetListener(this); | 193 icon_helper_->SetListener(this); |
| 195 web_contents_->SetUserData(android_webview::kAwContentsUserDataKey, | 194 web_contents_->SetUserData(android_webview::kAwContentsUserDataKey, |
| 196 new AwContentsUserData(this)); | 195 new AwContentsUserData(this)); |
| 197 browser_view_renderer_.RegisterWithWebContents(web_contents_.get()); | 196 browser_view_renderer_.RegisterWithWebContents(web_contents_.get()); |
| 198 render_view_host_ext_.reset( | 197 render_view_host_ext_.reset( |
| 199 new AwRenderViewHostExt(this, web_contents_.get())); | 198 new AwRenderViewHostExt(this, web_contents_.get())); |
| 200 | 199 |
| 201 permission_request_handler_.reset( | 200 permission_request_handler_.reset( |
| 202 new PermissionRequestHandler(this, web_contents_.get())); | 201 new PermissionRequestHandler(this, web_contents_.get())); |
| 203 | 202 |
| 204 AwAutofillClient* autofill_manager_delegate = | 203 AwAutofillClient* autofill_manager_delegate = |
| 205 AwAutofillClient::FromWebContents(web_contents_.get()); | 204 AwAutofillClient::FromWebContents(web_contents_.get()); |
| 206 if (autofill_manager_delegate) | 205 if (autofill_manager_delegate) |
| 207 InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData()); | 206 InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData()); |
| 208 content::SynchronousCompositor::SetClientForWebContents( | 207 content::SynchronousCompositor::SetClientForWebContents( |
| 209 web_contents_.get(), &browser_view_renderer_); | 208 web_contents_.get(), &browser_view_renderer_); |
| 210 AwContentsLifecycleNotifier::OnWebViewCreated(); | 209 AwContentsLifecycleNotifier::OnWebViewCreated(); |
| 211 } | 210 } |
| 212 | 211 |
| 212 void AwContents::CreateSharedRendererState() { |
| 213 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 214 DCHECK(!shared_renderer_state_); |
| 215 shared_renderer_state_ = new SharedRendererState( |
| 216 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)); |
| 217 shared_renderer_state_->SetClient(this); |
| 218 browser_view_renderer_.SetSharedRendererState(shared_renderer_state_); |
| 219 } |
| 220 |
| 221 jlong AwContents::CreateSharedRendererState(JNIEnv* env, |
| 222 const JavaParamRef<jobject>& obj) { |
| 223 CreateSharedRendererState(); |
| 224 return reinterpret_cast<intptr_t>(shared_renderer_state_); |
| 225 } |
| 226 |
| 213 void AwContents::SetJavaPeers( | 227 void AwContents::SetJavaPeers( |
| 214 JNIEnv* env, | 228 JNIEnv* env, |
| 215 const JavaParamRef<jobject>& obj, | 229 const JavaParamRef<jobject>& obj, |
| 216 const JavaParamRef<jobject>& aw_contents, | 230 const JavaParamRef<jobject>& aw_contents, |
| 217 const JavaParamRef<jobject>& web_contents_delegate, | 231 const JavaParamRef<jobject>& web_contents_delegate, |
| 218 const JavaParamRef<jobject>& contents_client_bridge, | 232 const JavaParamRef<jobject>& contents_client_bridge, |
| 219 const JavaParamRef<jobject>& io_thread_client, | 233 const JavaParamRef<jobject>& io_thread_client, |
| 220 const JavaParamRef<jobject>& intercept_navigation_delegate) { | 234 const JavaParamRef<jobject>& intercept_navigation_delegate) { |
| 221 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 235 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 222 // The |aw_content| param is technically spurious as it duplicates |obj| but | 236 // The |aw_content| param is technically spurious as it duplicates |obj| but |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 } | 371 } |
| 358 | 372 |
| 359 // static | 373 // static |
| 360 jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) { | 374 jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) { |
| 361 return base::subtle::NoBarrier_Load(&g_instance_count); | 375 return base::subtle::NoBarrier_Load(&g_instance_count); |
| 362 } | 376 } |
| 363 | 377 |
| 364 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, | 378 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, |
| 365 const JavaParamRef<jobject>& obj) { | 379 const JavaParamRef<jobject>& obj) { |
| 366 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 380 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 367 return reinterpret_cast<intptr_t>(&shared_renderer_state_); | 381 return reinterpret_cast<intptr_t>(shared_renderer_state_); |
| 368 } | 382 } |
| 369 | 383 |
| 370 namespace { | 384 namespace { |
| 371 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, | 385 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, |
| 372 bool has_images) { | 386 bool has_images) { |
| 373 Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), | 387 Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), |
| 374 has_images, | 388 has_images, |
| 375 message.obj()); | 389 message.obj()); |
| 376 } | 390 } |
| 377 } // namespace | 391 } // namespace |
| (...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 const JavaParamRef<jobject>& obj, | 902 const JavaParamRef<jobject>& obj, |
| 889 int w, | 903 int w, |
| 890 int h) { | 904 int h) { |
| 891 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 905 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 892 browser_view_renderer_.OnAttachedToWindow(w, h); | 906 browser_view_renderer_.OnAttachedToWindow(w, h); |
| 893 } | 907 } |
| 894 | 908 |
| 895 void AwContents::OnDetachedFromWindow(JNIEnv* env, | 909 void AwContents::OnDetachedFromWindow(JNIEnv* env, |
| 896 const JavaParamRef<jobject>& obj) { | 910 const JavaParamRef<jobject>& obj) { |
| 897 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 911 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 898 shared_renderer_state_.DeleteHardwareRendererOnUI(); | 912 shared_renderer_state_->DeleteHardwareRendererOnUI(); |
| 899 browser_view_renderer_.OnDetachedFromWindow(); | 913 browser_view_renderer_.OnDetachedFromWindow(); |
| 900 } | 914 } |
| 901 | 915 |
| 902 bool AwContents::IsVisible(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 916 bool AwContents::IsVisible(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 903 return browser_view_renderer_.IsClientVisible(); | 917 return browser_view_renderer_.IsClientVisible(); |
| 904 } | 918 } |
| 905 | 919 |
| 906 void AwContents::DetachFunctorFromView() { | 920 void AwContents::DetachFunctorFromView() { |
| 907 JNIEnv* env = AttachCurrentThread(); | 921 JNIEnv* env = AttachCurrentThread(); |
| 908 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 922 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1227 // it does not indicate memory pressure, but merely that the app is | 1241 // it does not indicate memory pressure, but merely that the app is |
| 1228 // backgrounded. | 1242 // backgrounded. |
| 1229 if (level < TRIM_MEMORY_RUNNING_LOW || level == TRIM_MEMORY_UI_HIDDEN) | 1243 if (level < TRIM_MEMORY_RUNNING_LOW || level == TRIM_MEMORY_UI_HIDDEN) |
| 1230 return; | 1244 return; |
| 1231 | 1245 |
| 1232 // Do not release resources on view we expect to get DrawGL soon. | 1246 // Do not release resources on view we expect to get DrawGL soon. |
| 1233 if (level < TRIM_MEMORY_BACKGROUND && visible) | 1247 if (level < TRIM_MEMORY_BACKGROUND && visible) |
| 1234 return; | 1248 return; |
| 1235 | 1249 |
| 1236 if (level >= TRIM_MEMORY_MODERATE) | 1250 if (level >= TRIM_MEMORY_MODERATE) |
| 1237 shared_renderer_state_.DeleteHardwareRendererOnUI(); | 1251 shared_renderer_state_->DeleteHardwareRendererOnUI(); |
| 1238 | 1252 |
| 1239 browser_view_renderer_.TrimMemory(); | 1253 browser_view_renderer_.TrimMemory(); |
| 1240 } | 1254 } |
| 1241 | 1255 |
| 1242 // TODO(sgurun) add support for posting a frame whose name is known (only | 1256 // TODO(sgurun) add support for posting a frame whose name is known (only |
| 1243 // main frame is supported at this time, see crbug.com/389721) | 1257 // main frame is supported at this time, see crbug.com/389721) |
| 1244 void AwContents::PostMessageToFrame(JNIEnv* env, | 1258 void AwContents::PostMessageToFrame(JNIEnv* env, |
| 1245 const JavaParamRef<jobject>& obj, | 1259 const JavaParamRef<jobject>& obj, |
| 1246 const JavaParamRef<jstring>& frame_name, | 1260 const JavaParamRef<jstring>& frame_name, |
| 1247 const JavaParamRef<jstring>& message, | 1261 const JavaParamRef<jstring>& message, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1304 const JavaParamRef<jobject>& obj) { | 1318 const JavaParamRef<jobject>& obj) { |
| 1305 web_contents_->ResumeLoadingCreatedWebContents(); | 1319 web_contents_->ResumeLoadingCreatedWebContents(); |
| 1306 } | 1320 } |
| 1307 | 1321 |
| 1308 void SetShouldDownloadFavicons(JNIEnv* env, | 1322 void SetShouldDownloadFavicons(JNIEnv* env, |
| 1309 const JavaParamRef<jclass>& jclazz) { | 1323 const JavaParamRef<jclass>& jclazz) { |
| 1310 g_should_download_favicons = true; | 1324 g_should_download_favicons = true; |
| 1311 } | 1325 } |
| 1312 | 1326 |
| 1313 } // namespace android_webview | 1327 } // namespace android_webview |
| OLD | NEW |