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

Side by Side Diff: android_webview/native/aw_contents.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 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 8
9 #include "android_webview/browser/aw_browser_context.h" 9 #include "android_webview/browser/aw_browser_context.h"
10 #include "android_webview/browser/aw_browser_main_parts.h" 10 #include "android_webview/browser/aw_browser_main_parts.h"
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 206
207 AwAutofillClient* autofill_manager_delegate = 207 AwAutofillClient* autofill_manager_delegate =
208 AwAutofillClient::FromWebContents(web_contents_.get()); 208 AwAutofillClient::FromWebContents(web_contents_.get());
209 if (autofill_manager_delegate) 209 if (autofill_manager_delegate)
210 InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData()); 210 InitAutofillIfNecessary(autofill_manager_delegate->GetSaveFormData());
211 content::SynchronousCompositor::SetClientForWebContents( 211 content::SynchronousCompositor::SetClientForWebContents(
212 web_contents_.get(), &browser_view_renderer_); 212 web_contents_.get(), &browser_view_renderer_);
213 AwContentsLifecycleNotifier::OnWebViewCreated(); 213 AwContentsLifecycleNotifier::OnWebViewCreated();
214 } 214 }
215 215
216 void AwContents::SetJavaPeers(JNIEnv* env, 216 void AwContents::SetJavaPeers(
217 jobject obj, 217 JNIEnv* env,
218 jobject aw_contents, 218 const JavaParamRef<jobject>& obj,
219 jobject web_contents_delegate, 219 const JavaParamRef<jobject>& aw_contents,
220 jobject contents_client_bridge, 220 const JavaParamRef<jobject>& web_contents_delegate,
221 jobject io_thread_client, 221 const JavaParamRef<jobject>& contents_client_bridge,
222 jobject intercept_navigation_delegate) { 222 const JavaParamRef<jobject>& io_thread_client,
223 const JavaParamRef<jobject>& intercept_navigation_delegate) {
223 DCHECK_CURRENTLY_ON(BrowserThread::UI); 224 DCHECK_CURRENTLY_ON(BrowserThread::UI);
224 // The |aw_content| param is technically spurious as it duplicates |obj| but 225 // The |aw_content| param is technically spurious as it duplicates |obj| but
225 // is passed over anyway to make the binding more explicit. 226 // is passed over anyway to make the binding more explicit.
226 java_ref_ = JavaObjectWeakGlobalRef(env, aw_contents); 227 java_ref_ = JavaObjectWeakGlobalRef(env, aw_contents);
227 228
228 web_contents_delegate_.reset( 229 web_contents_delegate_.reset(
229 new AwWebContentsDelegate(env, web_contents_delegate)); 230 new AwWebContentsDelegate(env, web_contents_delegate));
230 web_contents_->SetDelegate(web_contents_delegate_.get()); 231 web_contents_->SetDelegate(web_contents_delegate_.get());
231 232
232 contents_client_bridge_.reset( 233 contents_client_bridge_.reset(
233 new AwContentsClientBridge(env, contents_client_bridge)); 234 new AwContentsClientBridge(env, contents_client_bridge));
234 AwContentsClientBridgeBase::Associate(web_contents_.get(), 235 AwContentsClientBridgeBase::Associate(web_contents_.get(),
235 contents_client_bridge_.get()); 236 contents_client_bridge_.get());
236 237
237 AwContentsIoThreadClientImpl::Associate( 238 AwContentsIoThreadClientImpl::Associate(web_contents_.get(),
238 web_contents_.get(), ScopedJavaLocalRef<jobject>(env, io_thread_client)); 239 io_thread_client);
239 240
240 InterceptNavigationDelegate::Associate( 241 InterceptNavigationDelegate::Associate(
241 web_contents_.get(), 242 web_contents_.get(),
242 make_scoped_ptr(new InterceptNavigationDelegate( 243 make_scoped_ptr(new InterceptNavigationDelegate(
243 env, intercept_navigation_delegate))); 244 env, intercept_navigation_delegate)));
244 245
245 // Finally, having setup the associations, release any deferred requests 246 // Finally, having setup the associations, release any deferred requests
246 web_contents_->ForEachFrame(base::Bind(&OnIoThreadClientReady)); 247 web_contents_->ForEachFrame(base::Bind(&OnIoThreadClientReady));
247 } 248 }
248 249
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 // without ever using another WebView. 297 // without ever using another WebView.
297 if (instance_count == 0) { 298 if (instance_count == 0) {
298 // TODO(timvolodine): consider moving NotifyMemoryPressure to 299 // TODO(timvolodine): consider moving NotifyMemoryPressure to
299 // AwContentsLifecycleNotifier (crbug.com/522988). 300 // AwContentsLifecycleNotifier (crbug.com/522988).
300 base::MemoryPressureListener::NotifyMemoryPressure( 301 base::MemoryPressureListener::NotifyMemoryPressure(
301 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); 302 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
302 } 303 }
303 AwContentsLifecycleNotifier::OnWebViewDestroyed(); 304 AwContentsLifecycleNotifier::OnWebViewDestroyed();
304 } 305 }
305 306
306 base::android::ScopedJavaLocalRef<jobject> 307 base::android::ScopedJavaLocalRef<jobject> AwContents::GetWebContents(
307 AwContents::GetWebContents(JNIEnv* env, jobject obj) { 308 JNIEnv* env,
309 const JavaParamRef<jobject>& obj) {
308 DCHECK_CURRENTLY_ON(BrowserThread::UI); 310 DCHECK_CURRENTLY_ON(BrowserThread::UI);
309 DCHECK(web_contents_); 311 DCHECK(web_contents_);
310 if (!web_contents_) 312 if (!web_contents_)
311 return base::android::ScopedJavaLocalRef<jobject>(); 313 return base::android::ScopedJavaLocalRef<jobject>();
312 314
313 return web_contents_->GetJavaWebContents(); 315 return web_contents_->GetJavaWebContents();
314 } 316 }
315 317
316 void AwContents::Destroy(JNIEnv* env, jobject obj) { 318 void AwContents::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
317 java_ref_.reset(); 319 java_ref_.reset();
318 delete this; 320 delete this;
319 } 321 }
320 322
321 static jlong Init(JNIEnv* env, 323 static jlong Init(JNIEnv* env,
322 const JavaParamRef<jclass>&, 324 const JavaParamRef<jclass>&,
323 const JavaParamRef<jobject>& browser_context) { 325 const JavaParamRef<jobject>& browser_context) {
324 // TODO(joth): Use |browser_context| to get the native BrowserContext, rather 326 // TODO(joth): Use |browser_context| to get the native BrowserContext, rather
325 // than hard-code the default instance lookup here. 327 // than hard-code the default instance lookup here.
326 scoped_ptr<WebContents> web_contents(content::WebContents::Create( 328 scoped_ptr<WebContents> web_contents(content::WebContents::Create(
(...skipping 23 matching lines...) Expand all
350 352
351 static jlong GetAwDrawGLFunction(JNIEnv* env, const JavaParamRef<jclass>&) { 353 static jlong GetAwDrawGLFunction(JNIEnv* env, const JavaParamRef<jclass>&) {
352 return reinterpret_cast<intptr_t>(&DrawGLFunction); 354 return reinterpret_cast<intptr_t>(&DrawGLFunction);
353 } 355 }
354 356
355 // static 357 // static
356 jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) { 358 jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) {
357 return base::subtle::NoBarrier_Load(&g_instance_count); 359 return base::subtle::NoBarrier_Load(&g_instance_count);
358 } 360 }
359 361
360 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, jobject obj) { 362 jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env,
363 const JavaParamRef<jobject>& obj) {
361 DCHECK_CURRENTLY_ON(BrowserThread::UI); 364 DCHECK_CURRENTLY_ON(BrowserThread::UI);
362 return reinterpret_cast<intptr_t>( 365 return reinterpret_cast<intptr_t>(
363 browser_view_renderer_.GetAwDrawGLViewContext()); 366 browser_view_renderer_.GetAwDrawGLViewContext());
364 } 367 }
365 368
366 namespace { 369 namespace {
367 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, 370 void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message,
368 bool has_images) { 371 bool has_images) {
369 Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), 372 Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(),
370 has_images, 373 has_images,
371 message.obj()); 374 message.obj());
372 } 375 }
373 } // namespace 376 } // namespace
374 377
375 void AwContents::DocumentHasImages(JNIEnv* env, jobject obj, jobject message) { 378 void AwContents::DocumentHasImages(JNIEnv* env,
379 const JavaParamRef<jobject>& obj,
380 const JavaParamRef<jobject>& message) {
376 DCHECK_CURRENTLY_ON(BrowserThread::UI); 381 DCHECK_CURRENTLY_ON(BrowserThread::UI);
377 ScopedJavaGlobalRef<jobject> j_message; 382 ScopedJavaGlobalRef<jobject> j_message;
378 j_message.Reset(env, message); 383 j_message.Reset(env, message);
379 render_view_host_ext_->DocumentHasImages( 384 render_view_host_ext_->DocumentHasImages(
380 base::Bind(&DocumentHasImagesCallback, j_message)); 385 base::Bind(&DocumentHasImagesCallback, j_message));
381 } 386 }
382 387
383 namespace { 388 namespace {
384 void GenerateMHTMLCallback(ScopedJavaGlobalRef<jobject>* callback, 389 void GenerateMHTMLCallback(ScopedJavaGlobalRef<jobject>* callback,
385 const base::FilePath& path, int64 size) { 390 const base::FilePath& path, int64 size) {
386 JNIEnv* env = AttachCurrentThread(); 391 JNIEnv* env = AttachCurrentThread();
387 // Android files are UTF8, so the path conversion below is safe. 392 // Android files are UTF8, so the path conversion below is safe.
388 Java_AwContents_generateMHTMLCallback( 393 Java_AwContents_generateMHTMLCallback(
389 env, 394 env,
390 ConvertUTF8ToJavaString(env, path.AsUTF8Unsafe()).obj(), 395 ConvertUTF8ToJavaString(env, path.AsUTF8Unsafe()).obj(),
391 size, callback->obj()); 396 size, callback->obj());
392 } 397 }
393 } // namespace 398 } // namespace
394 399
395 void AwContents::GenerateMHTML(JNIEnv* env, jobject obj, 400 void AwContents::GenerateMHTML(JNIEnv* env,
396 jstring jpath, jobject callback) { 401 const JavaParamRef<jobject>& obj,
402 const JavaParamRef<jstring>& jpath,
403 const JavaParamRef<jobject>& callback) {
397 DCHECK_CURRENTLY_ON(BrowserThread::UI); 404 DCHECK_CURRENTLY_ON(BrowserThread::UI);
398 ScopedJavaGlobalRef<jobject>* j_callback = new ScopedJavaGlobalRef<jobject>(); 405 ScopedJavaGlobalRef<jobject>* j_callback = new ScopedJavaGlobalRef<jobject>();
399 j_callback->Reset(env, callback); 406 j_callback->Reset(env, callback);
400 base::FilePath target_path(ConvertJavaStringToUTF8(env, jpath)); 407 base::FilePath target_path(ConvertJavaStringToUTF8(env, jpath));
401 web_contents_->GenerateMHTML( 408 web_contents_->GenerateMHTML(
402 target_path, 409 target_path,
403 base::Bind(&GenerateMHTMLCallback, base::Owned(j_callback), target_path)); 410 base::Bind(&GenerateMHTMLCallback, base::Owned(j_callback), target_path));
404 } 411 }
405 412
406 void AwContents::CreatePdfExporter(JNIEnv* env, 413 void AwContents::CreatePdfExporter(JNIEnv* env,
407 jobject obj, 414 const JavaParamRef<jobject>& obj,
408 jobject pdfExporter) { 415 const JavaParamRef<jobject>& pdfExporter) {
409 pdf_exporter_.reset( 416 pdf_exporter_.reset(
410 new AwPdfExporter(env, 417 new AwPdfExporter(env,
411 pdfExporter, 418 pdfExporter,
412 web_contents_.get())); 419 web_contents_.get()));
413 } 420 }
414 421
415 bool AwContents::OnReceivedHttpAuthRequest(const JavaRef<jobject>& handler, 422 bool AwContents::OnReceivedHttpAuthRequest(const JavaRef<jobject>& handler,
416 const std::string& host, 423 const std::string& host,
417 const std::string& realm) { 424 const std::string& realm) {
418 DCHECK_CURRENTLY_ON(BrowserThread::UI); 425 DCHECK_CURRENTLY_ON(BrowserThread::UI);
419 JNIEnv* env = AttachCurrentThread(); 426 JNIEnv* env = AttachCurrentThread();
420 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 427 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
421 if (obj.is_null()) 428 if (obj.is_null())
422 return false; 429 return false;
423 430
424 ScopedJavaLocalRef<jstring> jhost = ConvertUTF8ToJavaString(env, host); 431 ScopedJavaLocalRef<jstring> jhost = ConvertUTF8ToJavaString(env, host);
425 ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm); 432 ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm);
426 devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( 433 devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback(
427 "onReceivedHttpAuthRequest"); 434 "onReceivedHttpAuthRequest");
428 Java_AwContents_onReceivedHttpAuthRequest(env, obj.obj(), handler.obj(), 435 Java_AwContents_onReceivedHttpAuthRequest(env, obj.obj(), handler.obj(),
429 jhost.obj(), jrealm.obj()); 436 jhost.obj(), jrealm.obj());
430 return true; 437 return true;
431 } 438 }
432 439
433 void AwContents::SetOffscreenPreRaster(bool enabled) { 440 void AwContents::SetOffscreenPreRaster(bool enabled) {
434 DCHECK_CURRENTLY_ON(BrowserThread::UI); 441 DCHECK_CURRENTLY_ON(BrowserThread::UI);
435 browser_view_renderer_.SetOffscreenPreRaster(enabled); 442 browser_view_renderer_.SetOffscreenPreRaster(enabled);
436 } 443 }
437 444
438 void AwContents::AddVisitedLinks(JNIEnv* env, 445 void AwContents::AddVisitedLinks(
439 jobject obj, 446 JNIEnv* env,
440 jobjectArray jvisited_links) { 447 const JavaParamRef<jobject>& obj,
448 const JavaParamRef<jobjectArray>& jvisited_links) {
441 DCHECK_CURRENTLY_ON(BrowserThread::UI); 449 DCHECK_CURRENTLY_ON(BrowserThread::UI);
442 std::vector<base::string16> visited_link_strings; 450 std::vector<base::string16> visited_link_strings;
443 base::android::AppendJavaStringArrayToStringVector( 451 base::android::AppendJavaStringArrayToStringVector(
444 env, jvisited_links, &visited_link_strings); 452 env, jvisited_links, &visited_link_strings);
445 453
446 std::vector<GURL> visited_link_gurls; 454 std::vector<GURL> visited_link_gurls;
447 std::vector<base::string16>::const_iterator itr; 455 std::vector<base::string16>::const_iterator itr;
448 for (itr = visited_link_strings.begin(); itr != visited_link_strings.end(); 456 for (itr = visited_link_strings.begin(); itr != visited_link_strings.end();
449 ++itr) { 457 ++itr) {
450 visited_link_gurls.push_back(GURL(*itr)); 458 visited_link_gurls.push_back(GURL(*itr));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 504
497 GURL origin = requesting_frame.GetOrigin(); 505 GURL origin = requesting_frame.GetOrigin();
498 bool show_prompt = pending_geolocation_prompts_.empty(); 506 bool show_prompt = pending_geolocation_prompts_.empty();
499 pending_geolocation_prompts_.push_back(OriginCallback(origin, callback)); 507 pending_geolocation_prompts_.push_back(OriginCallback(origin, callback));
500 if (show_prompt) { 508 if (show_prompt) {
501 ShowGeolocationPromptHelper(java_ref_, origin); 509 ShowGeolocationPromptHelper(java_ref_, origin);
502 } 510 }
503 } 511 }
504 512
505 // Invoked from Java 513 // Invoked from Java
506 void AwContents::InvokeGeolocationCallback(JNIEnv* env, 514 void AwContents::InvokeGeolocationCallback(
507 jobject obj, 515 JNIEnv* env,
508 jboolean value, 516 const JavaParamRef<jobject>& obj,
509 jstring origin) { 517 jboolean value,
518 const JavaParamRef<jstring>& origin) {
510 DCHECK_CURRENTLY_ON(BrowserThread::UI); 519 DCHECK_CURRENTLY_ON(BrowserThread::UI);
511 if (pending_geolocation_prompts_.empty()) 520 if (pending_geolocation_prompts_.empty())
512 return; 521 return;
513 522
514 GURL callback_origin(base::android::ConvertJavaStringToUTF16(env, origin)); 523 GURL callback_origin(base::android::ConvertJavaStringToUTF16(env, origin));
515 if (callback_origin.GetOrigin() == 524 if (callback_origin.GetOrigin() ==
516 pending_geolocation_prompts_.front().first) { 525 pending_geolocation_prompts_.front().first) {
517 pending_geolocation_prompts_.front().second.Run(value); 526 pending_geolocation_prompts_.front().second.Run(value);
518 pending_geolocation_prompts_.pop_front(); 527 pending_geolocation_prompts_.pop_front();
519 if (!pending_geolocation_prompts_.empty()) { 528 if (!pending_geolocation_prompts_.empty()) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 JNIEnv* env = AttachCurrentThread(); 583 JNIEnv* env = AttachCurrentThread();
575 ScopedJavaLocalRef<jobject> j_request = request->GetJavaObject(); 584 ScopedJavaLocalRef<jobject> j_request = request->GetJavaObject();
576 ScopedJavaLocalRef<jobject> j_ref = java_ref_.get(env); 585 ScopedJavaLocalRef<jobject> j_ref = java_ref_.get(env);
577 if (j_request.is_null() || j_ref.is_null()) 586 if (j_request.is_null() || j_ref.is_null())
578 return; 587 return;
579 588
580 Java_AwContents_onPermissionRequestCanceled( 589 Java_AwContents_onPermissionRequestCanceled(
581 env, j_ref.obj(), j_request.obj()); 590 env, j_ref.obj(), j_request.obj());
582 } 591 }
583 592
584 void AwContents::PreauthorizePermission( 593 void AwContents::PreauthorizePermission(JNIEnv* env,
585 JNIEnv* env, 594 const JavaParamRef<jobject>& obj,
586 jobject obj, 595 const JavaParamRef<jstring>& origin,
587 jstring origin, 596 jlong resources) {
588 jlong resources) {
589 permission_request_handler_->PreauthorizePermission( 597 permission_request_handler_->PreauthorizePermission(
590 GURL(base::android::ConvertJavaStringToUTF8(env, origin)), resources); 598 GURL(base::android::ConvertJavaStringToUTF8(env, origin)), resources);
591 } 599 }
592 600
593 void AwContents::RequestProtectedMediaIdentifierPermission( 601 void AwContents::RequestProtectedMediaIdentifierPermission(
594 const GURL& origin, 602 const GURL& origin,
595 const base::Callback<void(bool)>& callback) { 603 const base::Callback<void(bool)>& callback) {
596 permission_request_handler_->SendRequest( 604 permission_request_handler_->SendRequest(
597 scoped_ptr<AwPermissionRequestDelegate>(new SimplePermissionRequest( 605 scoped_ptr<AwPermissionRequestDelegate>(new SimplePermissionRequest(
598 origin, AwPermissionRequest::ProtectedMediaId, callback))); 606 origin, AwPermissionRequest::ProtectedMediaId, callback)));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 permission_request_handler_->SendRequest( 649 permission_request_handler_->SendRequest(
642 scoped_ptr<AwPermissionRequestDelegate>(new SimplePermissionRequest( 650 scoped_ptr<AwPermissionRequestDelegate>(new SimplePermissionRequest(
643 origin, AwPermissionRequest::MIDISysex, callback))); 651 origin, AwPermissionRequest::MIDISysex, callback)));
644 } 652 }
645 653
646 void AwContents::CancelMIDISysexPermissionRequests(const GURL& origin) { 654 void AwContents::CancelMIDISysexPermissionRequests(const GURL& origin) {
647 permission_request_handler_->CancelRequest( 655 permission_request_handler_->CancelRequest(
648 origin, AwPermissionRequest::AwPermissionRequest::MIDISysex); 656 origin, AwPermissionRequest::AwPermissionRequest::MIDISysex);
649 } 657 }
650 658
651 void AwContents::FindAllAsync(JNIEnv* env, jobject obj, jstring search_string) { 659 void AwContents::FindAllAsync(JNIEnv* env,
660 const JavaParamRef<jobject>& obj,
661 const JavaParamRef<jstring>& search_string) {
652 DCHECK_CURRENTLY_ON(BrowserThread::UI); 662 DCHECK_CURRENTLY_ON(BrowserThread::UI);
653 GetFindHelper()->FindAllAsync(ConvertJavaStringToUTF16(env, search_string)); 663 GetFindHelper()->FindAllAsync(ConvertJavaStringToUTF16(env, search_string));
654 } 664 }
655 665
656 void AwContents::FindNext(JNIEnv* env, jobject obj, jboolean forward) { 666 void AwContents::FindNext(JNIEnv* env,
667 const JavaParamRef<jobject>& obj,
668 jboolean forward) {
657 DCHECK_CURRENTLY_ON(BrowserThread::UI); 669 DCHECK_CURRENTLY_ON(BrowserThread::UI);
658 GetFindHelper()->FindNext(forward); 670 GetFindHelper()->FindNext(forward);
659 } 671 }
660 672
661 void AwContents::ClearMatches(JNIEnv* env, jobject obj) { 673 void AwContents::ClearMatches(JNIEnv* env, const JavaParamRef<jobject>& obj) {
662 DCHECK_CURRENTLY_ON(BrowserThread::UI); 674 DCHECK_CURRENTLY_ON(BrowserThread::UI);
663 GetFindHelper()->ClearMatches(); 675 GetFindHelper()->ClearMatches();
664 } 676 }
665 677
666 void AwContents::ClearCache( 678 void AwContents::ClearCache(JNIEnv* env,
667 JNIEnv* env, 679 const JavaParamRef<jobject>& obj,
668 jobject obj, 680 jboolean include_disk_files) {
669 jboolean include_disk_files) {
670 DCHECK_CURRENTLY_ON(BrowserThread::UI); 681 DCHECK_CURRENTLY_ON(BrowserThread::UI);
671 render_view_host_ext_->ClearCache(); 682 render_view_host_ext_->ClearCache();
672 683
673 if (include_disk_files) { 684 if (include_disk_files) {
674 RemoveHttpDiskCache(web_contents_->GetBrowserContext(), 685 RemoveHttpDiskCache(web_contents_->GetBrowserContext(),
675 web_contents_->GetRoutingID()); 686 web_contents_->GetRoutingID());
676 } 687 }
677 } 688 }
678 689
679 FindHelper* AwContents::GetFindHelper() { 690 FindHelper* AwContents::GetFindHelper() {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 768 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
758 if (!obj.is_null()) { 769 if (!obj.is_null()) {
759 devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( 770 devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback(
760 "onNewPicture"); 771 "onNewPicture");
761 Java_AwContents_onNewPicture(env, obj.obj()); 772 Java_AwContents_onNewPicture(env, obj.obj());
762 } 773 }
763 } 774 }
764 775
765 base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetCertificate( 776 base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetCertificate(
766 JNIEnv* env, 777 JNIEnv* env,
767 jobject obj) { 778 const JavaParamRef<jobject>& obj) {
768 DCHECK_CURRENTLY_ON(BrowserThread::UI); 779 DCHECK_CURRENTLY_ON(BrowserThread::UI);
769 content::NavigationEntry* entry = 780 content::NavigationEntry* entry =
770 web_contents_->GetController().GetLastCommittedEntry(); 781 web_contents_->GetController().GetLastCommittedEntry();
771 if (!entry) 782 if (!entry)
772 return ScopedJavaLocalRef<jbyteArray>(); 783 return ScopedJavaLocalRef<jbyteArray>();
773 // Get the certificate 784 // Get the certificate
774 int cert_id = entry->GetSSL().cert_id; 785 int cert_id = entry->GetSSL().cert_id;
775 scoped_refptr<net::X509Certificate> cert; 786 scoped_refptr<net::X509Certificate> cert;
776 bool ok = content::CertStore::GetInstance()->RetrieveCert(cert_id, &cert); 787 bool ok = content::CertStore::GetInstance()->RetrieveCert(cert_id, &cert);
777 if (!ok) 788 if (!ok)
778 return ScopedJavaLocalRef<jbyteArray>(); 789 return ScopedJavaLocalRef<jbyteArray>();
779 790
780 // Convert the certificate and return it 791 // Convert the certificate and return it
781 std::string der_string; 792 std::string der_string;
782 net::X509Certificate::GetDEREncoded(cert->os_cert_handle(), &der_string); 793 net::X509Certificate::GetDEREncoded(cert->os_cert_handle(), &der_string);
783 return base::android::ToJavaByteArray(env, 794 return base::android::ToJavaByteArray(env,
784 reinterpret_cast<const uint8*>(der_string.data()), der_string.length()); 795 reinterpret_cast<const uint8*>(der_string.data()), der_string.length());
785 } 796 }
786 797
787 void AwContents::RequestNewHitTestDataAt(JNIEnv* env, 798 void AwContents::RequestNewHitTestDataAt(JNIEnv* env,
788 jobject obj, 799 const JavaParamRef<jobject>& obj,
789 jfloat x, 800 jfloat x,
790 jfloat y, 801 jfloat y,
791 jfloat touch_major) { 802 jfloat touch_major) {
792 DCHECK_CURRENTLY_ON(BrowserThread::UI); 803 DCHECK_CURRENTLY_ON(BrowserThread::UI);
793 gfx::PointF touch_center(x, y); 804 gfx::PointF touch_center(x, y);
794 gfx::SizeF touch_area(touch_major, touch_major); 805 gfx::SizeF touch_area(touch_major, touch_major);
795 render_view_host_ext_->RequestNewHitTestDataAt(touch_center, touch_area); 806 render_view_host_ext_->RequestNewHitTestDataAt(touch_center, touch_area);
796 } 807 }
797 808
798 void AwContents::UpdateLastHitTestData(JNIEnv* env, jobject obj) { 809 void AwContents::UpdateLastHitTestData(JNIEnv* env,
810 const JavaParamRef<jobject>& obj) {
799 DCHECK_CURRENTLY_ON(BrowserThread::UI); 811 DCHECK_CURRENTLY_ON(BrowserThread::UI);
800 if (!render_view_host_ext_->HasNewHitTestData()) return; 812 if (!render_view_host_ext_->HasNewHitTestData()) return;
801 813
802 const AwHitTestData& data = render_view_host_ext_->GetLastHitTestData(); 814 const AwHitTestData& data = render_view_host_ext_->GetLastHitTestData();
803 render_view_host_ext_->MarkHitTestDataRead(); 815 render_view_host_ext_->MarkHitTestDataRead();
804 816
805 // Make sure to null the Java object if data is empty/invalid. 817 // Make sure to null the Java object if data is empty/invalid.
806 ScopedJavaLocalRef<jstring> extra_data_for_type; 818 ScopedJavaLocalRef<jstring> extra_data_for_type;
807 if (data.extra_data_for_type.length()) 819 if (data.extra_data_for_type.length())
808 extra_data_for_type = ConvertUTF8ToJavaString( 820 extra_data_for_type = ConvertUTF8ToJavaString(
(...skipping 13 matching lines...) Expand all
822 834
823 Java_AwContents_updateHitTestData(env, 835 Java_AwContents_updateHitTestData(env,
824 obj, 836 obj,
825 data.type, 837 data.type,
826 extra_data_for_type.obj(), 838 extra_data_for_type.obj(),
827 href.obj(), 839 href.obj(),
828 anchor_text.obj(), 840 anchor_text.obj(),
829 img_src.obj()); 841 img_src.obj());
830 } 842 }
831 843
832 void AwContents::OnSizeChanged(JNIEnv* env, jobject obj, 844 void AwContents::OnSizeChanged(JNIEnv* env,
833 int w, int h, int ow, int oh) { 845 const JavaParamRef<jobject>& obj,
846 int w,
847 int h,
848 int ow,
849 int oh) {
834 DCHECK_CURRENTLY_ON(BrowserThread::UI); 850 DCHECK_CURRENTLY_ON(BrowserThread::UI);
835 browser_view_renderer_.OnSizeChanged(w, h); 851 browser_view_renderer_.OnSizeChanged(w, h);
836 } 852 }
837 853
838 void AwContents::SetViewVisibility(JNIEnv* env, jobject obj, bool visible) { 854 void AwContents::SetViewVisibility(JNIEnv* env,
855 const JavaParamRef<jobject>& obj,
856 bool visible) {
839 DCHECK_CURRENTLY_ON(BrowserThread::UI); 857 DCHECK_CURRENTLY_ON(BrowserThread::UI);
840 browser_view_renderer_.SetViewVisibility(visible); 858 browser_view_renderer_.SetViewVisibility(visible);
841 } 859 }
842 860
843 void AwContents::SetWindowVisibility(JNIEnv* env, jobject obj, bool visible) { 861 void AwContents::SetWindowVisibility(JNIEnv* env,
862 const JavaParamRef<jobject>& obj,
863 bool visible) {
844 DCHECK_CURRENTLY_ON(BrowserThread::UI); 864 DCHECK_CURRENTLY_ON(BrowserThread::UI);
845 browser_view_renderer_.SetWindowVisibility(visible); 865 browser_view_renderer_.SetWindowVisibility(visible);
846 } 866 }
847 867
848 void AwContents::SetIsPaused(JNIEnv* env, jobject obj, bool paused) { 868 void AwContents::SetIsPaused(JNIEnv* env,
869 const JavaParamRef<jobject>& obj,
870 bool paused) {
849 DCHECK_CURRENTLY_ON(BrowserThread::UI); 871 DCHECK_CURRENTLY_ON(BrowserThread::UI);
850 browser_view_renderer_.SetIsPaused(paused); 872 browser_view_renderer_.SetIsPaused(paused);
851 ContentViewCore* cvc = 873 ContentViewCore* cvc =
852 ContentViewCore::FromWebContents(web_contents_.get()); 874 ContentViewCore::FromWebContents(web_contents_.get());
853 if (cvc) { 875 if (cvc) {
854 cvc->PauseOrResumeGeolocation(paused); 876 cvc->PauseOrResumeGeolocation(paused);
855 } 877 }
856 } 878 }
857 879
858 void AwContents::OnAttachedToWindow(JNIEnv* env, jobject obj, int w, int h) { 880 void AwContents::OnAttachedToWindow(JNIEnv* env,
881 const JavaParamRef<jobject>& obj,
882 int w,
883 int h) {
859 DCHECK_CURRENTLY_ON(BrowserThread::UI); 884 DCHECK_CURRENTLY_ON(BrowserThread::UI);
860 browser_view_renderer_.OnAttachedToWindow(w, h); 885 browser_view_renderer_.OnAttachedToWindow(w, h);
861 } 886 }
862 887
863 void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) { 888 void AwContents::OnDetachedFromWindow(JNIEnv* env,
889 const JavaParamRef<jobject>& obj) {
864 DCHECK_CURRENTLY_ON(BrowserThread::UI); 890 DCHECK_CURRENTLY_ON(BrowserThread::UI);
865 browser_view_renderer_.OnDetachedFromWindow(); 891 browser_view_renderer_.OnDetachedFromWindow();
866 } 892 }
867 893
868 bool AwContents::IsVisible(JNIEnv* env, jobject obj) { 894 bool AwContents::IsVisible(JNIEnv* env, const JavaParamRef<jobject>& obj) {
869 return browser_view_renderer_.IsClientVisible(); 895 return browser_view_renderer_.IsClientVisible();
870 } 896 }
871 897
872 void AwContents::DetachFunctorFromView() { 898 void AwContents::DetachFunctorFromView() {
873 JNIEnv* env = AttachCurrentThread(); 899 JNIEnv* env = AttachCurrentThread();
874 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 900 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
875 if (!obj.is_null()) 901 if (!obj.is_null())
876 Java_AwContents_detachFunctorFromView(env, obj.obj()); 902 Java_AwContents_detachFunctorFromView(env, obj.obj());
877 } 903 }
878 904
879 base::android::ScopedJavaLocalRef<jbyteArray> 905 base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetOpaqueState(
880 AwContents::GetOpaqueState(JNIEnv* env, jobject obj) { 906 JNIEnv* env,
907 const JavaParamRef<jobject>& obj) {
881 DCHECK_CURRENTLY_ON(BrowserThread::UI); 908 DCHECK_CURRENTLY_ON(BrowserThread::UI);
882 // Required optimization in WebViewClassic to not save any state if 909 // Required optimization in WebViewClassic to not save any state if
883 // there has been no navigations. 910 // there has been no navigations.
884 if (!web_contents_->GetController().GetEntryCount()) 911 if (!web_contents_->GetController().GetEntryCount())
885 return ScopedJavaLocalRef<jbyteArray>(); 912 return ScopedJavaLocalRef<jbyteArray>();
886 913
887 base::Pickle pickle; 914 base::Pickle pickle;
888 if (!WriteToPickle(*web_contents_, &pickle)) { 915 if (!WriteToPickle(*web_contents_, &pickle)) {
889 return ScopedJavaLocalRef<jbyteArray>(); 916 return ScopedJavaLocalRef<jbyteArray>();
890 } else { 917 } else {
891 return base::android::ToJavaByteArray(env, 918 return base::android::ToJavaByteArray(env,
892 reinterpret_cast<const uint8*>(pickle.data()), pickle.size()); 919 reinterpret_cast<const uint8*>(pickle.data()), pickle.size());
893 } 920 }
894 } 921 }
895 922
896 jboolean AwContents::RestoreFromOpaqueState( 923 jboolean AwContents::RestoreFromOpaqueState(
897 JNIEnv* env, jobject obj, jbyteArray state) { 924 JNIEnv* env,
925 const JavaParamRef<jobject>& obj,
926 const JavaParamRef<jbyteArray>& state) {
898 DCHECK_CURRENTLY_ON(BrowserThread::UI); 927 DCHECK_CURRENTLY_ON(BrowserThread::UI);
899 // TODO(boliu): This copy can be optimized out if this is a performance 928 // TODO(boliu): This copy can be optimized out if this is a performance
900 // problem. 929 // problem.
901 std::vector<uint8> state_vector; 930 std::vector<uint8> state_vector;
902 base::android::JavaByteArrayToByteVector(env, state, &state_vector); 931 base::android::JavaByteArrayToByteVector(env, state, &state_vector);
903 932
904 base::Pickle pickle(reinterpret_cast<const char*>(state_vector.data()), 933 base::Pickle pickle(reinterpret_cast<const char*>(state_vector.data()),
905 state_vector.size()); 934 state_vector.size());
906 base::PickleIterator iterator(pickle); 935 base::PickleIterator iterator(pickle);
907 936
908 return RestoreFromPickle(&iterator, web_contents_.get()); 937 return RestoreFromPickle(&iterator, web_contents_.get());
909 } 938 }
910 939
911 bool AwContents::OnDraw(JNIEnv* env, 940 bool AwContents::OnDraw(JNIEnv* env,
912 jobject obj, 941 const JavaParamRef<jobject>& obj,
913 jobject canvas, 942 const JavaParamRef<jobject>& canvas,
914 jboolean is_hardware_accelerated, 943 jboolean is_hardware_accelerated,
915 jint scroll_x, 944 jint scroll_x,
916 jint scroll_y, 945 jint scroll_y,
917 jint visible_left, 946 jint visible_left,
918 jint visible_top, 947 jint visible_top,
919 jint visible_right, 948 jint visible_right,
920 jint visible_bottom) { 949 jint visible_bottom) {
921 DCHECK_CURRENTLY_ON(BrowserThread::UI); 950 DCHECK_CURRENTLY_ON(BrowserThread::UI);
922 gfx::Vector2d scroll(scroll_x, scroll_y); 951 gfx::Vector2d scroll(scroll_x, scroll_y);
923 browser_view_renderer_.PrepareToDraw( 952 browser_view_renderer_.PrepareToDraw(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 << "popup window is still pending."; 988 << "popup window is still pending.";
960 base::MessageLoop::current()->DeleteSoon(FROM_HERE, pending.release()); 989 base::MessageLoop::current()->DeleteSoon(FROM_HERE, pending.release());
961 return; 990 return;
962 } 991 }
963 pending_contents_.reset(new AwContents(pending.Pass())); 992 pending_contents_.reset(new AwContents(pending.Pass()));
964 // Set dip_scale for pending contents, which is necessary for the later 993 // Set dip_scale for pending contents, which is necessary for the later
965 // SynchronousCompositor and InputHandler setup. 994 // SynchronousCompositor and InputHandler setup.
966 pending_contents_->SetDipScaleInternal(browser_view_renderer_.dip_scale()); 995 pending_contents_->SetDipScaleInternal(browser_view_renderer_.dip_scale());
967 } 996 }
968 997
969 void AwContents::FocusFirstNode(JNIEnv* env, jobject obj) { 998 void AwContents::FocusFirstNode(JNIEnv* env, const JavaParamRef<jobject>& obj) {
970 DCHECK_CURRENTLY_ON(BrowserThread::UI); 999 DCHECK_CURRENTLY_ON(BrowserThread::UI);
971 web_contents_->FocusThroughTabTraversal(false); 1000 web_contents_->FocusThroughTabTraversal(false);
972 } 1001 }
973 1002
974 void AwContents::SetBackgroundColor(JNIEnv* env, jobject obj, jint color) { 1003 void AwContents::SetBackgroundColor(JNIEnv* env,
1004 const JavaParamRef<jobject>& obj,
1005 jint color) {
975 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1006 DCHECK_CURRENTLY_ON(BrowserThread::UI);
976 render_view_host_ext_->SetBackgroundColor(color); 1007 render_view_host_ext_->SetBackgroundColor(color);
977 } 1008 }
978 1009
979 void AwContents::OnComputeScroll(JNIEnv* env, 1010 void AwContents::OnComputeScroll(JNIEnv* env,
980 jobject obj, 1011 const JavaParamRef<jobject>& obj,
981 jlong animation_time_millis) { 1012 jlong animation_time_millis) {
982 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1013 DCHECK_CURRENTLY_ON(BrowserThread::UI);
983 browser_view_renderer_.OnComputeScroll( 1014 browser_view_renderer_.OnComputeScroll(
984 base::TimeTicks() + 1015 base::TimeTicks() +
985 base::TimeDelta::FromMilliseconds(animation_time_millis)); 1016 base::TimeDelta::FromMilliseconds(animation_time_millis));
986 } 1017 }
987 1018
988 jlong AwContents::ReleasePopupAwContents(JNIEnv* env, jobject obj) { 1019 jlong AwContents::ReleasePopupAwContents(JNIEnv* env,
1020 const JavaParamRef<jobject>& obj) {
989 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1021 DCHECK_CURRENTLY_ON(BrowserThread::UI);
990 return reinterpret_cast<intptr_t>(pending_contents_.release()); 1022 return reinterpret_cast<intptr_t>(pending_contents_.release());
991 } 1023 }
992 1024
993 gfx::Point AwContents::GetLocationOnScreen() { 1025 gfx::Point AwContents::GetLocationOnScreen() {
994 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1026 DCHECK_CURRENTLY_ON(BrowserThread::UI);
995 JNIEnv* env = AttachCurrentThread(); 1027 JNIEnv* env = AttachCurrentThread();
996 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 1028 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
997 if (obj.is_null()) 1029 if (obj.is_null())
998 return gfx::Point(); 1030 return gfx::Point();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1072 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1041 JNIEnv* env = AttachCurrentThread(); 1073 JNIEnv* env = AttachCurrentThread();
1042 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 1074 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
1043 if (obj.is_null()) 1075 if (obj.is_null())
1044 return; 1076 return;
1045 Java_AwContents_didOverscroll(env, obj.obj(), overscroll_delta.x(), 1077 Java_AwContents_didOverscroll(env, obj.obj(), overscroll_delta.x(),
1046 overscroll_delta.y(), overscroll_velocity.x(), 1078 overscroll_delta.y(), overscroll_velocity.x(),
1047 overscroll_velocity.y()); 1079 overscroll_velocity.y());
1048 } 1080 }
1049 1081
1050 void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) { 1082 void AwContents::SetDipScale(JNIEnv* env,
1083 const JavaParamRef<jobject>& obj,
1084 jfloat dip_scale) {
1051 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1085 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1052 SetDipScaleInternal(dip_scale); 1086 SetDipScaleInternal(dip_scale);
1053 } 1087 }
1054 1088
1055 void AwContents::SetDipScaleInternal(float dip_scale) { 1089 void AwContents::SetDipScaleInternal(float dip_scale) {
1056 browser_view_renderer_.SetDipScale(dip_scale); 1090 browser_view_renderer_.SetDipScale(dip_scale);
1057 } 1091 }
1058 1092
1059 void AwContents::ScrollTo(JNIEnv* env, jobject obj, jint x, jint y) { 1093 void AwContents::ScrollTo(JNIEnv* env,
1094 const JavaParamRef<jobject>& obj,
1095 jint x,
1096 jint y) {
1060 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1097 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1061 browser_view_renderer_.ScrollTo(gfx::Vector2d(x, y)); 1098 browser_view_renderer_.ScrollTo(gfx::Vector2d(x, y));
1062 } 1099 }
1063 1100
1064 void AwContents::SmoothScroll(JNIEnv* env, 1101 void AwContents::SmoothScroll(JNIEnv* env,
1065 jobject obj, 1102 const JavaParamRef<jobject>& obj,
1066 jint target_x, 1103 jint target_x,
1067 jint target_y, 1104 jint target_y,
1068 jlong duration_ms) { 1105 jlong duration_ms) {
1069 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1106 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1070 1107
1071 float scale = browser_view_renderer_.dip_scale() * 1108 float scale = browser_view_renderer_.dip_scale() *
1072 browser_view_renderer_.page_scale_factor(); 1109 browser_view_renderer_.page_scale_factor();
1073 render_view_host_ext_->SmoothScroll(target_x / scale, target_y / scale, 1110 render_view_host_ext_->SmoothScroll(target_x / scale, target_y / scale,
1074 duration_ms); 1111 duration_ms);
1075 } 1112 }
(...skipping 13 matching lines...) Expand all
1089 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1126 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1090 JNIEnv* env = AttachCurrentThread(); 1127 JNIEnv* env = AttachCurrentThread();
1091 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); 1128 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
1092 if (obj.is_null()) 1129 if (obj.is_null())
1093 return; 1130 return;
1094 Java_AwContents_onWebLayoutContentsSizeChanged( 1131 Java_AwContents_onWebLayoutContentsSizeChanged(
1095 env, obj.obj(), contents_size.width(), contents_size.height()); 1132 env, obj.obj(), contents_size.width(), contents_size.height());
1096 } 1133 }
1097 1134
1098 jlong AwContents::CapturePicture(JNIEnv* env, 1135 jlong AwContents::CapturePicture(JNIEnv* env,
1099 jobject obj, 1136 const JavaParamRef<jobject>& obj,
1100 int width, 1137 int width,
1101 int height) { 1138 int height) {
1102 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1139 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1103 return reinterpret_cast<intptr_t>( 1140 return reinterpret_cast<intptr_t>(
1104 new AwPicture(browser_view_renderer_.CapturePicture(width, height))); 1141 new AwPicture(browser_view_renderer_.CapturePicture(width, height)));
1105 } 1142 }
1106 1143
1107 void AwContents::EnableOnNewPicture(JNIEnv* env, 1144 void AwContents::EnableOnNewPicture(JNIEnv* env,
1108 jobject obj, 1145 const JavaParamRef<jobject>& obj,
1109 jboolean enabled) { 1146 jboolean enabled) {
1110 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1147 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1111 browser_view_renderer_.EnableOnNewPicture(enabled); 1148 browser_view_renderer_.EnableOnNewPicture(enabled);
1112 } 1149 }
1113 1150
1114 namespace { 1151 namespace {
1115 void InvokeVisualStateCallback(const JavaObjectWeakGlobalRef& java_ref, 1152 void InvokeVisualStateCallback(const JavaObjectWeakGlobalRef& java_ref,
1116 jlong request_id, 1153 jlong request_id,
1117 ScopedJavaGlobalRef<jobject>* callback, 1154 ScopedJavaGlobalRef<jobject>* callback,
1118 bool result) { 1155 bool result) {
1119 JNIEnv* env = AttachCurrentThread(); 1156 JNIEnv* env = AttachCurrentThread();
1120 ScopedJavaLocalRef<jobject> obj = java_ref.get(env); 1157 ScopedJavaLocalRef<jobject> obj = java_ref.get(env);
1121 if (obj.is_null()) 1158 if (obj.is_null())
1122 return; 1159 return;
1123 Java_AwContents_invokeVisualStateCallback( 1160 Java_AwContents_invokeVisualStateCallback(
1124 env, obj.obj(), callback->obj(), request_id); 1161 env, obj.obj(), callback->obj(), request_id);
1125 } 1162 }
1126 } // namespace 1163 } // namespace
1127 1164
1128 void AwContents::InsertVisualStateCallback( 1165 void AwContents::InsertVisualStateCallback(
1129 JNIEnv* env, jobject obj, jlong request_id, jobject callback) { 1166 JNIEnv* env,
1167 const JavaParamRef<jobject>& obj,
1168 jlong request_id,
1169 const JavaParamRef<jobject>& callback) {
1130 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1170 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1131 ScopedJavaGlobalRef<jobject>* j_callback = new ScopedJavaGlobalRef<jobject>(); 1171 ScopedJavaGlobalRef<jobject>* j_callback = new ScopedJavaGlobalRef<jobject>();
1132 j_callback->Reset(env, callback); 1172 j_callback->Reset(env, callback);
1133 web_contents_->GetMainFrame()->InsertVisualStateCallback( 1173 web_contents_->GetMainFrame()->InsertVisualStateCallback(
1134 base::Bind(&InvokeVisualStateCallback, java_ref_, request_id, 1174 base::Bind(&InvokeVisualStateCallback, java_ref_, request_id,
1135 base::Owned(j_callback))); 1175 base::Owned(j_callback)));
1136 } 1176 }
1137 1177
1138 void AwContents::ClearView(JNIEnv* env, jobject obj) { 1178 void AwContents::ClearView(JNIEnv* env, const JavaParamRef<jobject>& obj) {
1139 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1179 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1140 browser_view_renderer_.ClearView(); 1180 browser_view_renderer_.ClearView();
1141 } 1181 }
1142 1182
1143 void AwContents::SetExtraHeadersForUrl(JNIEnv* env, jobject obj, 1183 void AwContents::SetExtraHeadersForUrl(
1144 jstring url, jstring jextra_headers) { 1184 JNIEnv* env,
1185 const JavaParamRef<jobject>& obj,
1186 const JavaParamRef<jstring>& url,
1187 const JavaParamRef<jstring>& jextra_headers) {
1145 std::string extra_headers; 1188 std::string extra_headers;
1146 if (jextra_headers) 1189 if (jextra_headers)
1147 extra_headers = ConvertJavaStringToUTF8(env, jextra_headers); 1190 extra_headers = ConvertJavaStringToUTF8(env, jextra_headers);
1148 AwResourceContext* resource_context = static_cast<AwResourceContext*>( 1191 AwResourceContext* resource_context = static_cast<AwResourceContext*>(
1149 AwBrowserContext::FromWebContents(web_contents_.get())-> 1192 AwBrowserContext::FromWebContents(web_contents_.get())->
1150 GetResourceContext()); 1193 GetResourceContext());
1151 resource_context->SetExtraHeaders(GURL(ConvertJavaStringToUTF8(env, url)), 1194 resource_context->SetExtraHeaders(GURL(ConvertJavaStringToUTF8(env, url)),
1152 extra_headers); 1195 extra_headers);
1153 } 1196 }
1154 1197
1155 void AwContents::SetJsOnlineProperty(JNIEnv* env, 1198 void AwContents::SetJsOnlineProperty(JNIEnv* env,
1156 jobject obj, 1199 const JavaParamRef<jobject>& obj,
1157 jboolean network_up) { 1200 jboolean network_up) {
1158 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1201 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1159 render_view_host_ext_->SetJsOnlineProperty(network_up); 1202 render_view_host_ext_->SetJsOnlineProperty(network_up);
1160 } 1203 }
1161 1204
1162 void AwContents::TrimMemory(JNIEnv* env, 1205 void AwContents::TrimMemory(JNIEnv* env,
1163 jobject obj, 1206 const JavaParamRef<jobject>& obj,
1164 jint level, 1207 jint level,
1165 jboolean visible) { 1208 jboolean visible) {
1166 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1209 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1167 browser_view_renderer_.TrimMemory(level, visible); 1210 browser_view_renderer_.TrimMemory(level, visible);
1168 } 1211 }
1169 1212
1170 // TODO(sgurun) add support for posting a frame whose name is known (only 1213 // TODO(sgurun) add support for posting a frame whose name is known (only
1171 // main frame is supported at this time, see crbug.com/389721) 1214 // main frame is supported at this time, see crbug.com/389721)
1172 void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj, 1215 void AwContents::PostMessageToFrame(JNIEnv* env,
1173 jstring frame_name, jstring message, jstring target_origin, 1216 const JavaParamRef<jobject>& obj,
1174 jintArray sent_ports) { 1217 const JavaParamRef<jstring>& frame_name,
1175 1218 const JavaParamRef<jstring>& message,
1219 const JavaParamRef<jstring>& target_origin,
1220 const JavaParamRef<jintArray>& sent_ports) {
1176 // Use an empty source origin for android webview. 1221 // Use an empty source origin for android webview.
1177 base::string16 source_origin; 1222 base::string16 source_origin;
1178 base::string16 j_target_origin(ConvertJavaStringToUTF16(env, target_origin)); 1223 base::string16 j_target_origin(ConvertJavaStringToUTF16(env, target_origin));
1179 base::string16 j_message(ConvertJavaStringToUTF16(env, message)); 1224 base::string16 j_message(ConvertJavaStringToUTF16(env, message));
1180 std::vector<int> j_ports; 1225 std::vector<int> j_ports;
1181 1226
1182 if (sent_ports != nullptr) { 1227 if (sent_ports != nullptr) {
1183 base::android::JavaIntArrayToIntVector(env, sent_ports, &j_ports); 1228 base::android::JavaIntArrayToIntVector(env, sent_ports, &j_ports);
1184 BrowserThread::PostTask( 1229 BrowserThread::PostTask(
1185 BrowserThread::IO, 1230 BrowserThread::IO,
(...skipping 18 matching lines...) Expand all
1204 if (message_port_message_filter_.get() == nullptr) { 1249 if (message_port_message_filter_.get() == nullptr) {
1205 message_port_message_filter_ = 1250 message_port_message_filter_ =
1206 new AwMessagePortMessageFilter( 1251 new AwMessagePortMessageFilter(
1207 web_contents_->GetMainFrame()->GetRoutingID()); 1252 web_contents_->GetMainFrame()->GetRoutingID());
1208 web_contents_->GetRenderProcessHost()->AddFilter( 1253 web_contents_->GetRenderProcessHost()->AddFilter(
1209 message_port_message_filter_.get()); 1254 message_port_message_filter_.get());
1210 } 1255 }
1211 return message_port_message_filter_; 1256 return message_port_message_filter_;
1212 } 1257 }
1213 1258
1214 void AwContents::CreateMessageChannel(JNIEnv* env, jobject obj, 1259 void AwContents::CreateMessageChannel(JNIEnv* env,
1215 jobjectArray ports) { 1260 const JavaParamRef<jobject>& obj,
1216 1261 const JavaParamRef<jobjectArray>& ports) {
1217 AwMessagePortServiceImpl::GetInstance()->CreateMessageChannel(env, ports, 1262 AwMessagePortServiceImpl::GetInstance()->CreateMessageChannel(env, ports,
1218 GetMessagePortMessageFilter()); 1263 GetMessagePortMessageFilter());
1219 } 1264 }
1220 1265
1221 void AwContents::GrantFileSchemeAccesstoChildProcess(JNIEnv* env, jobject obj) { 1266 void AwContents::GrantFileSchemeAccesstoChildProcess(
1267 JNIEnv* env,
1268 const JavaParamRef<jobject>& obj) {
1222 content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme( 1269 content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme(
1223 web_contents_->GetRenderProcessHost()->GetID(), url::kFileScheme); 1270 web_contents_->GetRenderProcessHost()->GetID(), url::kFileScheme);
1224 } 1271 }
1225 1272
1226 void AwContents::ResumeLoadingCreatedPopupWebContents(JNIEnv* env, 1273 void AwContents::ResumeLoadingCreatedPopupWebContents(
1227 jobject obj) { 1274 JNIEnv* env,
1275 const JavaParamRef<jobject>& obj) {
1228 web_contents_->ResumeLoadingCreatedWebContents(); 1276 web_contents_->ResumeLoadingCreatedWebContents();
1229 } 1277 }
1230 1278
1231 void SetShouldDownloadFavicons(JNIEnv* env, 1279 void SetShouldDownloadFavicons(JNIEnv* env,
1232 const JavaParamRef<jclass>& jclazz) { 1280 const JavaParamRef<jclass>& jclazz) {
1233 g_should_download_favicons = true; 1281 g_should_download_favicons = true;
1234 } 1282 }
1235 1283
1236 } // namespace android_webview 1284 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/aw_contents.h ('k') | android_webview/native/aw_contents_client_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698