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 ...@@ -773,7 +773,9 @@ public class VrShell extends GvrLayout
removeVrRootView(); removeVrRootView();
} }
if (!mActivity.isActivityFinishingOrDestroyed()) {
mActivity.getFullscreenManager().exitPersistentFullscreenMode(); mActivity.getFullscreenManager().exitPersistentFullscreenMode();
}
reparentAllTabs(mActivity.getWindowAndroid()); reparentAllTabs(mActivity.getWindowAndroid());
if (mNativeVrShell != 0) { if (mNativeVrShell != 0) {
nativeDestroy(mNativeVrShell); nativeDestroy(mNativeVrShell);
......
...@@ -1288,6 +1288,9 @@ public class ChromeTabbedActivity ...@@ -1288,6 +1288,9 @@ public class ChromeTabbedActivity
public void processUrlViewIntent(String url, String referer, String headers, public void processUrlViewIntent(String url, String referer, String headers,
@TabOpenType int tabOpenType, String externalAppId, int tabIdToBringToFront, @TabOpenType int tabOpenType, String externalAppId, int tabIdToBringToFront,
boolean hasUserGesture, Intent intent) { boolean hasUserGesture, Intent intent) {
if (isActivityFinishingOrDestroyed()) {
return;
}
if (isFromChrome(intent, externalAppId)) { if (isFromChrome(intent, externalAppId)) {
RecordUserAction.record("MobileTabbedModeViewIntentFromChrome"); RecordUserAction.record("MobileTabbedModeViewIntentFromChrome");
} else { } else {
......
...@@ -9,6 +9,7 @@ import android.content.pm.PackageInfo; ...@@ -9,6 +9,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.Uri; import android.net.Uri;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.customtabs.CustomTabsService; import android.support.customtabs.CustomTabsService;
import android.support.customtabs.CustomTabsService.Relation; import android.support.customtabs.CustomTabsService.Relation;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -67,7 +68,7 @@ public class OriginVerifier { ...@@ -67,7 +68,7 @@ public class OriginVerifier {
private final String mSignatureFingerprint; private final String mSignatureFingerprint;
private final @Relation int mRelation; private final @Relation int mRelation;
private long mNativeOriginVerifier; private long mNativeOriginVerifier;
private OriginVerificationListener mListener; @Nullable private OriginVerificationListener mListener;
private Origin mOrigin; private Origin mOrigin;
/** /**
...@@ -274,6 +275,13 @@ public class OriginVerifier { ...@@ -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, private static boolean shouldOverrideVerification(String packageName, Origin origin,
int relation) { int relation) {
if (sVerificationOverrides.get() == null) return false; if (sVerificationOverrides.get() == null) return false;
......
...@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.customtabs.CustomTabsConnection; ...@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
import org.chromium.chrome.browser.customtabs.TabObserverRegistrar; import org.chromium.chrome.browser.customtabs.TabObserverRegistrar;
import org.chromium.chrome.browser.dependency_injection.ActivityScope; import org.chromium.chrome.browser.dependency_injection.ActivityScope;
import org.chromium.chrome.browser.init.ActivityLifecycleDispatcher; 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.lifecycle.NativeInitObserver;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
...@@ -40,7 +41,7 @@ import dagger.Lazy; ...@@ -40,7 +41,7 @@ import dagger.Lazy;
* {@link TrustedWebActivityModel} accordingly. * {@link TrustedWebActivityModel} accordingly.
*/ */
@ActivityScope @ActivityScope
public class TrustedWebActivityVerifier implements NativeInitObserver { public class TrustedWebActivityVerifier implements NativeInitObserver, Destroyable {
/** The Digital Asset Link relationship used for Trusted Web Activities. */ /** The Digital Asset Link relationship used for Trusted Web Activities. */
private final static int RELATIONSHIP = CustomTabsService.RELATION_HANDLE_ALL_URLS; private final static int RELATIONSHIP = CustomTabsService.RELATION_HANDLE_ALL_URLS;
...@@ -208,6 +209,12 @@ public class TrustedWebActivityVerifier implements NativeInitObserver { ...@@ -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. * Register that we have Chrome data relevant to the Client app.
* *
......
...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.browserservices.trustedwebactivityui.view; ...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.browserservices.trustedwebactivityui.view;
import static org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel.TOOLBAR_HIDDEN; 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.browserservices.trustedwebactivityui.TrustedWebActivityModel;
import org.chromium.chrome.browser.customtabs.CustomTabBrowserControlsVisibilityDelegate; import org.chromium.chrome.browser.customtabs.CustomTabBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.dependency_injection.ActivityScope; import org.chromium.chrome.browser.dependency_injection.ActivityScope;
...@@ -27,21 +28,27 @@ public class TrustedWebActivityToolbarView implements ...@@ -27,21 +28,27 @@ public class TrustedWebActivityToolbarView implements
private final Lazy<ChromeFullscreenManager> mFullscreenManager; private final Lazy<ChromeFullscreenManager> mFullscreenManager;
private final CustomTabBrowserControlsVisibilityDelegate mControlsVisibilityDelegate; private final CustomTabBrowserControlsVisibilityDelegate mControlsVisibilityDelegate;
private final TrustedWebActivityModel mModel; private final TrustedWebActivityModel mModel;
private final ChromeActivity mActivity;
private int mControlsHidingToken = FullscreenManager.INVALID_TOKEN; private int mControlsHidingToken = FullscreenManager.INVALID_TOKEN;
@Inject @Inject
public TrustedWebActivityToolbarView(Lazy<ChromeFullscreenManager> fullscreenManager, public TrustedWebActivityToolbarView(Lazy<ChromeFullscreenManager> fullscreenManager,
CustomTabBrowserControlsVisibilityDelegate controlsVisibilityDelegate, CustomTabBrowserControlsVisibilityDelegate controlsVisibilityDelegate,
TrustedWebActivityModel model) { TrustedWebActivityModel model, ChromeActivity activity) {
mFullscreenManager = fullscreenManager; mFullscreenManager = fullscreenManager;
mControlsVisibilityDelegate = controlsVisibilityDelegate; mControlsVisibilityDelegate = controlsVisibilityDelegate;
mModel = model; mModel = model;
mActivity = activity;
mModel.addObserver(this); mModel.addObserver(this);
} }
@Override @Override
public void onPropertyChanged(PropertyObservable<PropertyKey> observable, PropertyKey key) { 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; if (key != TOOLBAR_HIDDEN) return;
boolean hide = mModel.get(TOOLBAR_HIDDEN); 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