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

Side by Side Diff: chrome/browser/android/tab_state.cc

Issue 1288183004: jni_generator: Make all object-returning natives return ScopedJavaLocalRef. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add some newlines for readability Created 5 years, 4 months 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/android/tab_state.h" 5 #include "chrome/browser/android/tab_state.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 #include <limits> 8 #include <limits>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 WebContents::CreateParams params(profile); 435 WebContents::CreateParams params(profile);
436 params.initially_hidden = initially_hidden; 436 params.initially_hidden = initially_hidden;
437 scoped_ptr<WebContents> web_contents(WebContents::Create(params)); 437 scoped_ptr<WebContents> web_contents(WebContents::Create(params));
438 web_contents->GetController().Restore( 438 web_contents->GetController().Restore(
439 current_entry_index, 439 current_entry_index,
440 NavigationController::RESTORE_CURRENT_SESSION, 440 NavigationController::RESTORE_CURRENT_SESSION,
441 &scoped_entries); 441 &scoped_entries);
442 return web_contents.release(); 442 return web_contents.release();
443 } 443 }
444 444
445 jobject WebContentsState::RestoreContentsFromByteBuffer( 445 ScopedJavaLocalRef<jobject> WebContentsState::RestoreContentsFromByteBuffer(
446 JNIEnv* env, 446 JNIEnv* env,
447 jclass clazz, 447 jclass clazz,
448 jobject state, 448 jobject state,
449 jint saved_state_version, 449 jint saved_state_version,
450 jboolean initially_hidden) { 450 jboolean initially_hidden) {
451 void* data = env->GetDirectBufferAddress(state); 451 void* data = env->GetDirectBufferAddress(state);
452 int size = env->GetDirectBufferCapacity(state); 452 int size = env->GetDirectBufferCapacity(state);
453 453
454 WebContents* web_contents = WebContentsState::RestoreContentsFromByteBuffer( 454 WebContents* web_contents = WebContentsState::RestoreContentsFromByteBuffer(
455 data, 455 data,
456 size, 456 size,
457 saved_state_version, 457 saved_state_version,
458 initially_hidden); 458 initially_hidden);
459 459
460 return web_contents ? web_contents->GetJavaWebContents().Release() : nullptr; 460 if (web_contents)
461 return web_contents->GetJavaWebContents();
462 else
463 return ScopedJavaLocalRef<jobject>();
461 } 464 }
462 465
463 ScopedJavaLocalRef<jobject> 466 ScopedJavaLocalRef<jobject>
464 WebContentsState::CreateSingleNavigationStateAsByteBuffer( 467 WebContentsState::CreateSingleNavigationStateAsByteBuffer(
465 JNIEnv* env, 468 JNIEnv* env,
466 jstring url, 469 jstring url,
467 jstring referrer_url, 470 jstring referrer_url,
468 jint referrer_policy, 471 jint referrer_policy,
469 jboolean is_off_the_record) { 472 jboolean is_off_the_record) {
470 content::Referrer referrer; 473 content::Referrer referrer;
(...skipping 20 matching lines...) Expand all
491 0); 494 0);
492 } 495 }
493 496
494 // Static JNI methods. 497 // Static JNI methods.
495 498
496 static void FreeWebContentsStateBuffer(JNIEnv* env, jclass clazz, jobject obj) { 499 static void FreeWebContentsStateBuffer(JNIEnv* env, jclass clazz, jobject obj) {
497 void* data = env->GetDirectBufferAddress(obj); 500 void* data = env->GetDirectBufferAddress(obj);
498 free(data); 501 free(data);
499 } 502 }
500 503
501 static jobject RestoreContentsFromByteBuffer(JNIEnv* env, 504 static ScopedJavaLocalRef<jobject> RestoreContentsFromByteBuffer(
502 jclass clazz, 505 JNIEnv* env,
503 jobject state, 506 jclass clazz,
504 jint saved_state_version, 507 jobject state,
505 jboolean initially_hidden) { 508 jint saved_state_version,
509 jboolean initially_hidden) {
506 return WebContentsState::RestoreContentsFromByteBuffer(env, 510 return WebContentsState::RestoreContentsFromByteBuffer(env,
507 clazz, 511 clazz,
508 state, 512 state,
509 saved_state_version, 513 saved_state_version,
510 initially_hidden); 514 initially_hidden);
511 } 515 }
512 516
513 static jobject GetContentsStateAsByteBuffer( 517 static ScopedJavaLocalRef<jobject> GetContentsStateAsByteBuffer(JNIEnv* env,
514 JNIEnv* env, jclass clazz, jobject jtab) { 518 jclass clazz,
519 jobject jtab) {
515 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, jtab); 520 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, jtab);
516 return WebContentsState::GetContentsStateAsByteBuffer( 521 return WebContentsState::GetContentsStateAsByteBuffer(env, tab_android);
517 env, tab_android).Release();
518 } 522 }
519 523
520 static jobject CreateSingleNavigationStateAsByteBuffer( 524 static ScopedJavaLocalRef<jobject> CreateSingleNavigationStateAsByteBuffer(
521 JNIEnv* env, 525 JNIEnv* env,
522 jclass clazz, 526 jclass clazz,
523 jstring url, 527 jstring url,
524 jstring referrer_url, 528 jstring referrer_url,
525 jint referrer_policy, 529 jint referrer_policy,
526 jboolean is_off_the_record) { 530 jboolean is_off_the_record) {
527 return WebContentsState::CreateSingleNavigationStateAsByteBuffer( 531 return WebContentsState::CreateSingleNavigationStateAsByteBuffer(
528 env, url, referrer_url, referrer_policy, is_off_the_record).Release(); 532 env, url, referrer_url, referrer_policy, is_off_the_record);
529 } 533 }
530 534
531 static jstring GetDisplayTitleFromByteBuffer(JNIEnv* env, 535 static ScopedJavaLocalRef<jstring> GetDisplayTitleFromByteBuffer(
532 jclass clazz, 536 JNIEnv* env,
533 jobject state, 537 jclass clazz,
534 jint saved_state_version) { 538 jobject state,
539 jint saved_state_version) {
535 void* data = env->GetDirectBufferAddress(state); 540 void* data = env->GetDirectBufferAddress(state);
536 int size = env->GetDirectBufferCapacity(state); 541 int size = env->GetDirectBufferCapacity(state);
537 542
538 ScopedJavaLocalRef<jstring> result = 543 ScopedJavaLocalRef<jstring> result =
539 WebContentsState::GetDisplayTitleFromByteBuffer( 544 WebContentsState::GetDisplayTitleFromByteBuffer(
540 env, data, size, saved_state_version); 545 env, data, size, saved_state_version);
541 return result.Release(); 546 return result;
542 } 547 }
543 548
544 static jstring GetVirtualUrlFromByteBuffer(JNIEnv* env, 549 static ScopedJavaLocalRef<jstring> GetVirtualUrlFromByteBuffer(
545 jclass clazz, 550 JNIEnv* env,
546 jobject state, 551 jclass clazz,
547 jint saved_state_version) { 552 jobject state,
553 jint saved_state_version) {
548 void* data = env->GetDirectBufferAddress(state); 554 void* data = env->GetDirectBufferAddress(state);
549 int size = env->GetDirectBufferCapacity(state); 555 int size = env->GetDirectBufferCapacity(state);
550 ScopedJavaLocalRef<jstring> result = 556 ScopedJavaLocalRef<jstring> result =
551 WebContentsState::GetVirtualUrlFromByteBuffer( 557 WebContentsState::GetVirtualUrlFromByteBuffer(
552 env, data, size, saved_state_version); 558 env, data, size, saved_state_version);
553 return result.Release(); 559 return result;
554 } 560 }
555 561
556 // Creates a historical tab entry from the serialized tab contents contained 562 // Creates a historical tab entry from the serialized tab contents contained
557 // within |state|. 563 // within |state|.
558 static void CreateHistoricalTab(JNIEnv* env, 564 static void CreateHistoricalTab(JNIEnv* env,
559 jclass clazz, 565 jclass clazz,
560 jobject state, 566 jobject state,
561 jint saved_state_version) { 567 jint saved_state_version) {
562 scoped_ptr<WebContents> web_contents( 568 scoped_ptr<WebContents> web_contents(WebContents::FromJavaWebContents(
563 WebContents::FromJavaWebContents( 569 WebContentsState::RestoreContentsFromByteBuffer(env, clazz, state,
564 WebContentsState::RestoreContentsFromByteBuffer(env, 570 saved_state_version, true)
565 clazz, 571 .obj()));
566 state,
567 saved_state_version,
568 true)));
569 if (web_contents.get()) 572 if (web_contents.get())
570 TabAndroid::CreateHistoricalTabFromContents(web_contents.get()); 573 TabAndroid::CreateHistoricalTabFromContents(web_contents.get());
571 } 574 }
572 575
573 bool RegisterTabState(JNIEnv* env) { 576 bool RegisterTabState(JNIEnv* env) {
574 return RegisterNativesImpl(env); 577 return RegisterNativesImpl(env);
575 } 578 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698