Index: chrome/browser/android/tab_state.cc |
diff --git a/chrome/browser/android/tab_state.cc b/chrome/browser/android/tab_state.cc |
index f7266437c365ebfcb3f7ebb13de798b9370ca0a1..11c090fd85436c50f9e14dedd6dd05857a6eb33f 100644 |
--- a/chrome/browser/android/tab_state.cc |
+++ b/chrome/browser/android/tab_state.cc |
@@ -442,7 +442,7 @@ WebContents* WebContentsState::RestoreContentsFromByteBuffer( |
return web_contents.release(); |
} |
-jobject WebContentsState::RestoreContentsFromByteBuffer( |
+ScopedJavaLocalRef<jobject> WebContentsState::RestoreContentsFromByteBuffer( |
JNIEnv* env, |
jclass clazz, |
jobject state, |
@@ -457,7 +457,10 @@ jobject WebContentsState::RestoreContentsFromByteBuffer( |
saved_state_version, |
initially_hidden); |
- return web_contents ? web_contents->GetJavaWebContents().Release() : nullptr; |
+ if (web_contents) |
+ return web_contents->GetJavaWebContents(); |
+ else |
+ return ScopedJavaLocalRef<jobject>(); |
} |
ScopedJavaLocalRef<jobject> |
@@ -498,11 +501,12 @@ static void FreeWebContentsStateBuffer(JNIEnv* env, jclass clazz, jobject obj) { |
free(data); |
} |
-static jobject RestoreContentsFromByteBuffer(JNIEnv* env, |
- jclass clazz, |
- jobject state, |
- jint saved_state_version, |
- jboolean initially_hidden) { |
+static ScopedJavaLocalRef<jobject> RestoreContentsFromByteBuffer( |
+ JNIEnv* env, |
+ jclass clazz, |
+ jobject state, |
+ jint saved_state_version, |
+ jboolean initially_hidden) { |
return WebContentsState::RestoreContentsFromByteBuffer(env, |
clazz, |
state, |
@@ -510,14 +514,14 @@ static jobject RestoreContentsFromByteBuffer(JNIEnv* env, |
initially_hidden); |
} |
-static jobject GetContentsStateAsByteBuffer( |
- JNIEnv* env, jclass clazz, jobject jtab) { |
+static ScopedJavaLocalRef<jobject> GetContentsStateAsByteBuffer(JNIEnv* env, |
+ jclass clazz, |
+ jobject jtab) { |
TabAndroid* tab_android = TabAndroid::GetNativeTab(env, jtab); |
- return WebContentsState::GetContentsStateAsByteBuffer( |
- env, tab_android).Release(); |
+ return WebContentsState::GetContentsStateAsByteBuffer(env, tab_android); |
} |
-static jobject CreateSingleNavigationStateAsByteBuffer( |
+static ScopedJavaLocalRef<jobject> CreateSingleNavigationStateAsByteBuffer( |
JNIEnv* env, |
jclass clazz, |
jstring url, |
@@ -525,32 +529,34 @@ static jobject CreateSingleNavigationStateAsByteBuffer( |
jint referrer_policy, |
jboolean is_off_the_record) { |
return WebContentsState::CreateSingleNavigationStateAsByteBuffer( |
- env, url, referrer_url, referrer_policy, is_off_the_record).Release(); |
+ env, url, referrer_url, referrer_policy, is_off_the_record); |
} |
-static jstring GetDisplayTitleFromByteBuffer(JNIEnv* env, |
- jclass clazz, |
- jobject state, |
- jint saved_state_version) { |
+static ScopedJavaLocalRef<jstring> GetDisplayTitleFromByteBuffer( |
+ JNIEnv* env, |
+ jclass clazz, |
+ jobject state, |
+ jint saved_state_version) { |
void* data = env->GetDirectBufferAddress(state); |
int size = env->GetDirectBufferCapacity(state); |
ScopedJavaLocalRef<jstring> result = |
WebContentsState::GetDisplayTitleFromByteBuffer( |
env, data, size, saved_state_version); |
- return result.Release(); |
+ return result; |
} |
-static jstring GetVirtualUrlFromByteBuffer(JNIEnv* env, |
- jclass clazz, |
- jobject state, |
- jint saved_state_version) { |
+static ScopedJavaLocalRef<jstring> GetVirtualUrlFromByteBuffer( |
+ JNIEnv* env, |
+ jclass clazz, |
+ jobject state, |
+ jint saved_state_version) { |
void* data = env->GetDirectBufferAddress(state); |
int size = env->GetDirectBufferCapacity(state); |
ScopedJavaLocalRef<jstring> result = |
WebContentsState::GetVirtualUrlFromByteBuffer( |
env, data, size, saved_state_version); |
- return result.Release(); |
+ return result; |
} |
// Creates a historical tab entry from the serialized tab contents contained |
@@ -559,13 +565,10 @@ static void CreateHistoricalTab(JNIEnv* env, |
jclass clazz, |
jobject state, |
jint saved_state_version) { |
- scoped_ptr<WebContents> web_contents( |
- WebContents::FromJavaWebContents( |
- WebContentsState::RestoreContentsFromByteBuffer(env, |
- clazz, |
- state, |
- saved_state_version, |
- true))); |
+ scoped_ptr<WebContents> web_contents(WebContents::FromJavaWebContents( |
+ WebContentsState::RestoreContentsFromByteBuffer(env, clazz, state, |
+ saved_state_version, true) |
+ .obj())); |
if (web_contents.get()) |
TabAndroid::CreateHistoricalTabFromContents(web_contents.get()); |
} |