Commit 995aa163 authored by Pavel Shmakov's avatar Pavel Shmakov Committed by Commit Bot
parent fb09edd8
......@@ -773,7 +773,9 @@ public class VrShell extends GvrLayout
removeVrRootView();
}
mActivity.getFullscreenManager().exitPersistentFullscreenMode();
if (!mActivity.isActivityFinishingOrDestroyed()) {
mActivity.getFullscreenManager().exitPersistentFullscreenMode();
}
reparentAllTabs(mActivity.getWindowAndroid());
if (mNativeVrShell != 0) {
nativeDestroy(mNativeVrShell);
......
......@@ -1288,6 +1288,9 @@ public class ChromeTabbedActivity
public void processUrlViewIntent(String url, String referer, String headers,
@TabOpenType int tabOpenType, String externalAppId, int tabIdToBringToFront,
boolean hasUserGesture, Intent intent) {
if (isActivityFinishingOrDestroyed()) {
return;
}
if (isFromChrome(intent, externalAppId)) {
RecordUserAction.record("MobileTabbedModeViewIntentFromChrome");
} else {
......
......@@ -9,6 +9,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.customtabs.CustomTabsService;
import android.support.customtabs.CustomTabsService.Relation;
import android.text.TextUtils;
......@@ -67,7 +68,7 @@ public class OriginVerifier {
private final String mSignatureFingerprint;
private final @Relation int mRelation;
private long mNativeOriginVerifier;
private OriginVerificationListener mListener;
@Nullable private OriginVerificationListener mListener;
private Origin mOrigin;
/**
......@@ -274,6 +275,13 @@ public class OriginVerifier {
}
}
/**
* Removes the verification listener, but finishes the ongoing verification process, if any.
*/
public void removeListener() {
mListener = null;
}
private static boolean shouldOverrideVerification(String packageName, Origin origin,
int relation) {
if (sVerificationOverrides.get() == null) return false;
......
......@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
import org.chromium.chrome.browser.customtabs.TabObserverRegistrar;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.init.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.lifecycle.Destroyable;
import org.chromium.chrome.browser.lifecycle.NativeInitObserver;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab;
......@@ -40,7 +41,7 @@ import dagger.Lazy;
* {@link TrustedWebActivityModel} accordingly.
*/
@ActivityScope
public class TrustedWebActivityVerifier implements NativeInitObserver {
public class TrustedWebActivityVerifier implements NativeInitObserver, Destroyable {
/** The Digital Asset Link relationship used for Trusted Web Activities. */
private final static int RELATIONSHIP = CustomTabsService.RELATION_HANDLE_ALL_URLS;
......@@ -208,6 +209,12 @@ public class TrustedWebActivityVerifier implements NativeInitObserver {
}
}
@Override
public void destroy() {
// Verification may finish after activity is destroyed.
mOriginVerifier.removeListener();
}
/**
* Register that we have Chrome data relevant to the Client app.
*
......
......@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.browserservices.trustedwebactivityui.view;
import static org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel.TOOLBAR_HIDDEN;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel;
import org.chromium.chrome.browser.customtabs.CustomTabBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
......@@ -27,21 +28,27 @@ public class TrustedWebActivityToolbarView implements
private final Lazy<ChromeFullscreenManager> mFullscreenManager;
private final CustomTabBrowserControlsVisibilityDelegate mControlsVisibilityDelegate;
private final TrustedWebActivityModel mModel;
private final ChromeActivity mActivity;
private int mControlsHidingToken = FullscreenManager.INVALID_TOKEN;
@Inject
public TrustedWebActivityToolbarView(Lazy<ChromeFullscreenManager> fullscreenManager,
CustomTabBrowserControlsVisibilityDelegate controlsVisibilityDelegate,
TrustedWebActivityModel model) {
TrustedWebActivityModel model, ChromeActivity activity) {
mFullscreenManager = fullscreenManager;
mControlsVisibilityDelegate = controlsVisibilityDelegate;
mModel = model;
mActivity = activity;
mModel.addObserver(this);
}
@Override
public void onPropertyChanged(PropertyObservable<PropertyKey> observable, PropertyKey key) {
if (mActivity.isActivityFinishingOrDestroyed()) {
assert false : "Tried to change toolbar visibility when activity is destroyed";
return;
}
if (key != TOOLBAR_HIDDEN) return;
boolean hide = mModel.get(TOOLBAR_HIDDEN);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment