Chromium Code Reviews| Index: chrome/browser/android/tab_android.cc |
| diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc |
| index baa0a000cb2aeef6856c7b08386b17534184d8da..076434444697a51418c59383d2d279837aa3cf43 100644 |
| --- a/chrome/browser/android/tab_android.cc |
| +++ b/chrome/browser/android/tab_android.cc |
| @@ -208,20 +208,23 @@ void TabAndroid::SwapTabContents(content::WebContents* old_contents, |
| bool did_start_load, |
| bool did_finish_load) { |
| JNIEnv* env = base::android::AttachCurrentThread(); |
| + ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); |
| + if (obj.is_null()) |
| + return; |
| // We need to notify the native InfobarContainer so infobars can be swapped. |
| InfoBarContainerAndroid* infobar_container = |
| reinterpret_cast<InfoBarContainerAndroid*>( |
| Java_Tab_getNativeInfoBarContainer( |
| env, |
| - weak_java_tab_.get(env).obj())); |
| + obj.obj())); |
| InfoBarService* new_infobar_service = |
| new_contents ? InfoBarService::FromWebContents(new_contents) : NULL; |
| infobar_container->ChangeInfoBarManager(new_infobar_service); |
| Java_Tab_swapWebContents( |
| env, |
| - weak_java_tab_.get(env).obj(), |
| + obj.obj(), |
| reinterpret_cast<intptr_t>(new_contents), |
| did_start_load, |
| did_finish_load); |
| @@ -231,6 +234,10 @@ void TabAndroid::Observe(int type, |
| const content::NotificationSource& source, |
| const content::NotificationDetails& details) { |
| JNIEnv* env = base::android::AttachCurrentThread(); |
| + ScopedJavaLocalRef<jobject> obj = weak_java_tab_.get(env); |
|
Yaron
2014/07/02 17:36:16
I'm wondering about this one. Even if we don't hav
Abhishek
2014/07/02 19:44:56
I think if java tab is gone, then there is no mean
Yaron
2014/07/02 20:25:39
Agreed. I was referring to NOTIFICATION_WEB_CONTEN
Abhishek
2014/07/03 05:10:42
Done.
|
| + if (obj.is_null()) |
| + return; |
| + |
| switch (type) { |
| case chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED: { |
| TabSpecificContentSettings* settings = |
| @@ -253,10 +260,10 @@ void TabAndroid::Observe(int type, |
| break; |
| } |
| case chrome::NOTIFICATION_FAVICON_UPDATED: |
| - Java_Tab_onFaviconUpdated(env, weak_java_tab_.get(env).obj()); |
| + Java_Tab_onFaviconUpdated(env, obj.obj()); |
| break; |
| case content::NOTIFICATION_NAV_ENTRY_CHANGED: |
| - Java_Tab_onNavEntryChanged(env, weak_java_tab_.get(env).obj()); |
| + Java_Tab_onNavEntryChanged(env, obj.obj()); |
| break; |
| default: |
| NOTREACHED() << "Unexpected notification " << type; |