- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
442 lines
18 KiB
Java
442 lines
18 KiB
Java
package androidx.browser.customtabs;
|
|
|
|
import android.app.PendingIntent;
|
|
import android.content.ComponentName;
|
|
import android.graphics.Bitmap;
|
|
import android.net.Uri;
|
|
import android.os.Binder;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.IBinder;
|
|
import android.os.Looper;
|
|
import android.os.RemoteException;
|
|
import android.support.customtabs.ICustomTabsCallback;
|
|
import android.support.customtabs.ICustomTabsService;
|
|
import android.support.customtabs.IEngagementSignalsCallback;
|
|
import android.widget.RemoteViews;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.RestrictTo;
|
|
import androidx.annotation.VisibleForTesting;
|
|
import androidx.browser.customtabs.CustomTabsSessionToken;
|
|
import java.util.List;
|
|
import java.util.concurrent.Executor;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class CustomTabsSession {
|
|
private static final String TAG = "CustomTabsSession";
|
|
static final String TARGET_ORIGIN_KEY = "target_origin";
|
|
private final ICustomTabsCallback mCallback;
|
|
private final ComponentName mComponentName;
|
|
|
|
@Nullable
|
|
private final PendingIntent mId;
|
|
private final Object mLock = new Object();
|
|
private final ICustomTabsService mService;
|
|
|
|
public static class MockSession extends ICustomTabsService.Stub {
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public Bundle extraCommand(String str, Bundle bundle) throws RemoteException {
|
|
return null;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean isEngagementSignalsApiAvailable(ICustomTabsCallback iCustomTabsCallback, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean mayLaunchUrl(ICustomTabsCallback iCustomTabsCallback, Uri uri, Bundle bundle, List<Bundle> list) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean newSession(ICustomTabsCallback iCustomTabsCallback) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean newSessionWithExtras(ICustomTabsCallback iCustomTabsCallback, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public int postMessage(ICustomTabsCallback iCustomTabsCallback, String str, Bundle bundle) throws RemoteException {
|
|
return 0;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean receiveFile(ICustomTabsCallback iCustomTabsCallback, Uri uri, int i, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean requestPostMessageChannel(ICustomTabsCallback iCustomTabsCallback, Uri uri) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean requestPostMessageChannelWithExtras(ICustomTabsCallback iCustomTabsCallback, Uri uri, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean setEngagementSignalsCallback(ICustomTabsCallback iCustomTabsCallback, IBinder iBinder, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean updateVisuals(ICustomTabsCallback iCustomTabsCallback, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean validateRelationship(ICustomTabsCallback iCustomTabsCallback, int i, Uri uri, Bundle bundle) throws RemoteException {
|
|
return false;
|
|
}
|
|
|
|
@Override // android.support.customtabs.ICustomTabsService
|
|
public boolean warmup(long j) throws RemoteException {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public ComponentName getComponentName() {
|
|
return this.mComponentName;
|
|
}
|
|
|
|
@Nullable
|
|
public PendingIntent getId() {
|
|
return this.mId;
|
|
}
|
|
|
|
@NonNull
|
|
@VisibleForTesting
|
|
public static CustomTabsSession createMockSessionForTesting(@NonNull ComponentName componentName) {
|
|
return new CustomTabsSession(new MockSession(), new CustomTabsSessionToken.MockCallback(), componentName, null);
|
|
}
|
|
|
|
public CustomTabsSession(ICustomTabsService iCustomTabsService, ICustomTabsCallback iCustomTabsCallback, ComponentName componentName, @Nullable PendingIntent pendingIntent) {
|
|
this.mService = iCustomTabsService;
|
|
this.mCallback = iCustomTabsCallback;
|
|
this.mComponentName = componentName;
|
|
this.mId = pendingIntent;
|
|
}
|
|
|
|
public boolean mayLaunchUrl(@Nullable Uri uri, @Nullable Bundle bundle, @Nullable List<Bundle> list) {
|
|
try {
|
|
return this.mService.mayLaunchUrl(this.mCallback, uri, createBundleWithId(bundle), list);
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean setActionButton(@NonNull Bitmap bitmap, @NonNull String str) {
|
|
Bundle bundle = new Bundle();
|
|
bundle.putParcelable(CustomTabsIntent.KEY_ICON, bitmap);
|
|
bundle.putString(CustomTabsIntent.KEY_DESCRIPTION, str);
|
|
Bundle bundle2 = new Bundle();
|
|
bundle2.putBundle(CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE, bundle);
|
|
addIdToBundle(bundle);
|
|
try {
|
|
return this.mService.updateVisuals(this.mCallback, bundle2);
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean setSecondaryToolbarViews(@Nullable RemoteViews remoteViews, @Nullable int[] iArr, @Nullable PendingIntent pendingIntent) {
|
|
Bundle bundle = new Bundle();
|
|
bundle.putParcelable(CustomTabsIntent.EXTRA_REMOTEVIEWS, remoteViews);
|
|
bundle.putIntArray(CustomTabsIntent.EXTRA_REMOTEVIEWS_VIEW_IDS, iArr);
|
|
bundle.putParcelable(CustomTabsIntent.EXTRA_REMOTEVIEWS_PENDINGINTENT, pendingIntent);
|
|
addIdToBundle(bundle);
|
|
try {
|
|
return this.mService.updateVisuals(this.mCallback, bundle);
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean setSecondaryToolbarSwipeUpGesture(@Nullable PendingIntent pendingIntent) {
|
|
Bundle bundle = new Bundle();
|
|
bundle.putParcelable(CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_SWIPE_UP_GESTURE, pendingIntent);
|
|
addIdToBundle(bundle);
|
|
try {
|
|
return this.mService.updateVisuals(this.mCallback, bundle);
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Deprecated
|
|
public boolean setToolbarItem(int i, @NonNull Bitmap bitmap, @NonNull String str) {
|
|
Bundle bundle = new Bundle();
|
|
bundle.putInt(CustomTabsIntent.KEY_ID, i);
|
|
bundle.putParcelable(CustomTabsIntent.KEY_ICON, bitmap);
|
|
bundle.putString(CustomTabsIntent.KEY_DESCRIPTION, str);
|
|
Bundle bundle2 = new Bundle();
|
|
bundle2.putBundle(CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE, bundle);
|
|
addIdToBundle(bundle2);
|
|
try {
|
|
return this.mService.updateVisuals(this.mCallback, bundle2);
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean requestPostMessageChannel(@NonNull Uri uri) {
|
|
return requestPostMessageChannel(uri, null, new Bundle());
|
|
}
|
|
|
|
public boolean requestPostMessageChannel(@NonNull Uri uri, @Nullable Uri uri2, @NonNull Bundle bundle) {
|
|
try {
|
|
Bundle createPostMessageExtraBundle = createPostMessageExtraBundle(uri2);
|
|
if (createPostMessageExtraBundle != null) {
|
|
bundle.putAll(createPostMessageExtraBundle);
|
|
return this.mService.requestPostMessageChannelWithExtras(this.mCallback, uri, bundle);
|
|
}
|
|
return this.mService.requestPostMessageChannel(this.mCallback, uri);
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public int postMessage(@NonNull String str, @Nullable Bundle bundle) {
|
|
int postMessage;
|
|
Bundle createBundleWithId = createBundleWithId(bundle);
|
|
synchronized (this.mLock) {
|
|
try {
|
|
try {
|
|
postMessage = this.mService.postMessage(this.mCallback, str, createBundleWithId);
|
|
} catch (RemoteException unused) {
|
|
return -2;
|
|
}
|
|
} catch (Throwable th) {
|
|
throw th;
|
|
}
|
|
}
|
|
return postMessage;
|
|
}
|
|
|
|
public boolean validateRelationship(int i, @NonNull Uri uri, @Nullable Bundle bundle) {
|
|
if (i >= 1 && i <= 2) {
|
|
try {
|
|
return this.mService.validateRelationship(this.mCallback, i, uri, createBundleWithId(bundle));
|
|
} catch (RemoteException unused) {
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public boolean receiveFile(@NonNull Uri uri, int i, @Nullable Bundle bundle) {
|
|
try {
|
|
return this.mService.receiveFile(this.mCallback, uri, i, createBundleWithId(bundle));
|
|
} catch (RemoteException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean isEngagementSignalsApiAvailable(@NonNull Bundle bundle) throws RemoteException {
|
|
try {
|
|
return this.mService.isEngagementSignalsApiAvailable(this.mCallback, createBundleWithId(bundle));
|
|
} catch (SecurityException e) {
|
|
throw new UnsupportedOperationException("This method isn't supported by the Custom Tabs implementation.", e);
|
|
}
|
|
}
|
|
|
|
public boolean setEngagementSignalsCallback(@NonNull EngagementSignalsCallback engagementSignalsCallback, @NonNull Bundle bundle) throws RemoteException {
|
|
try {
|
|
return this.mService.setEngagementSignalsCallback(this.mCallback, createEngagementSignalsCallbackWrapper(engagementSignalsCallback).asBinder(), createBundleWithId(bundle));
|
|
} catch (SecurityException e) {
|
|
throw new UnsupportedOperationException("This method isn't supported by the Custom Tabs implementation.", e);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.browser.customtabs.CustomTabsSession$1, reason: invalid class name */
|
|
public class AnonymousClass1 extends IEngagementSignalsCallback.Stub {
|
|
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
|
final /* synthetic */ EngagementSignalsCallback val$callback;
|
|
|
|
public AnonymousClass1(EngagementSignalsCallback engagementSignalsCallback) {
|
|
this.val$callback = engagementSignalsCallback;
|
|
}
|
|
|
|
@Override // android.support.customtabs.IEngagementSignalsCallback
|
|
public void onVerticalScrollEvent(final boolean z, final Bundle bundle) {
|
|
Handler handler = this.mHandler;
|
|
final EngagementSignalsCallback engagementSignalsCallback = this.val$callback;
|
|
handler.post(new Runnable() { // from class: androidx.browser.customtabs.CustomTabsSession$1$$ExternalSyntheticLambda0
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EngagementSignalsCallback.this.onVerticalScrollEvent(z, bundle);
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override // android.support.customtabs.IEngagementSignalsCallback
|
|
public void onGreatestScrollPercentageIncreased(final int i, final Bundle bundle) {
|
|
Handler handler = this.mHandler;
|
|
final EngagementSignalsCallback engagementSignalsCallback = this.val$callback;
|
|
handler.post(new Runnable() { // from class: androidx.browser.customtabs.CustomTabsSession$1$$ExternalSyntheticLambda2
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EngagementSignalsCallback.this.onGreatestScrollPercentageIncreased(i, bundle);
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override // android.support.customtabs.IEngagementSignalsCallback
|
|
public void onSessionEnded(final boolean z, final Bundle bundle) {
|
|
Handler handler = this.mHandler;
|
|
final EngagementSignalsCallback engagementSignalsCallback = this.val$callback;
|
|
handler.post(new Runnable() { // from class: androidx.browser.customtabs.CustomTabsSession$1$$ExternalSyntheticLambda1
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EngagementSignalsCallback.this.onSessionEnded(z, bundle);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
private IEngagementSignalsCallback.Stub createEngagementSignalsCallbackWrapper(@NonNull EngagementSignalsCallback engagementSignalsCallback) {
|
|
return new AnonymousClass1(engagementSignalsCallback);
|
|
}
|
|
|
|
public boolean setEngagementSignalsCallback(@NonNull Executor executor, @NonNull EngagementSignalsCallback engagementSignalsCallback, @NonNull Bundle bundle) throws RemoteException {
|
|
try {
|
|
return this.mService.setEngagementSignalsCallback(this.mCallback, createEngagementSignalsCallbackWrapper(engagementSignalsCallback, executor).asBinder(), createBundleWithId(bundle));
|
|
} catch (SecurityException e) {
|
|
throw new UnsupportedOperationException("This method isn't supported by the Custom Tabs implementation.", e);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.browser.customtabs.CustomTabsSession$2, reason: invalid class name */
|
|
public class AnonymousClass2 extends IEngagementSignalsCallback.Stub {
|
|
private final Executor mExecutor;
|
|
final /* synthetic */ EngagementSignalsCallback val$callback;
|
|
final /* synthetic */ Executor val$executor;
|
|
|
|
public AnonymousClass2(Executor executor, EngagementSignalsCallback engagementSignalsCallback) {
|
|
this.val$executor = executor;
|
|
this.val$callback = engagementSignalsCallback;
|
|
this.mExecutor = executor;
|
|
}
|
|
|
|
@Override // android.support.customtabs.IEngagementSignalsCallback
|
|
public void onVerticalScrollEvent(final boolean z, final Bundle bundle) {
|
|
long clearCallingIdentity = Binder.clearCallingIdentity();
|
|
try {
|
|
Executor executor = this.mExecutor;
|
|
final EngagementSignalsCallback engagementSignalsCallback = this.val$callback;
|
|
executor.execute(new Runnable() { // from class: androidx.browser.customtabs.CustomTabsSession$2$$ExternalSyntheticLambda1
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EngagementSignalsCallback.this.onVerticalScrollEvent(z, bundle);
|
|
}
|
|
});
|
|
} finally {
|
|
Binder.restoreCallingIdentity(clearCallingIdentity);
|
|
}
|
|
}
|
|
|
|
@Override // android.support.customtabs.IEngagementSignalsCallback
|
|
public void onGreatestScrollPercentageIncreased(final int i, final Bundle bundle) {
|
|
long clearCallingIdentity = Binder.clearCallingIdentity();
|
|
try {
|
|
Executor executor = this.mExecutor;
|
|
final EngagementSignalsCallback engagementSignalsCallback = this.val$callback;
|
|
executor.execute(new Runnable() { // from class: androidx.browser.customtabs.CustomTabsSession$2$$ExternalSyntheticLambda0
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EngagementSignalsCallback.this.onGreatestScrollPercentageIncreased(i, bundle);
|
|
}
|
|
});
|
|
} finally {
|
|
Binder.restoreCallingIdentity(clearCallingIdentity);
|
|
}
|
|
}
|
|
|
|
@Override // android.support.customtabs.IEngagementSignalsCallback
|
|
public void onSessionEnded(final boolean z, final Bundle bundle) {
|
|
long clearCallingIdentity = Binder.clearCallingIdentity();
|
|
try {
|
|
Executor executor = this.mExecutor;
|
|
final EngagementSignalsCallback engagementSignalsCallback = this.val$callback;
|
|
executor.execute(new Runnable() { // from class: androidx.browser.customtabs.CustomTabsSession$2$$ExternalSyntheticLambda2
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
EngagementSignalsCallback.this.onSessionEnded(z, bundle);
|
|
}
|
|
});
|
|
} finally {
|
|
Binder.restoreCallingIdentity(clearCallingIdentity);
|
|
}
|
|
}
|
|
}
|
|
|
|
private IEngagementSignalsCallback.Stub createEngagementSignalsCallbackWrapper(@NonNull EngagementSignalsCallback engagementSignalsCallback, @NonNull Executor executor) {
|
|
return new AnonymousClass2(executor, engagementSignalsCallback);
|
|
}
|
|
|
|
@Nullable
|
|
private Bundle createPostMessageExtraBundle(@Nullable Uri uri) {
|
|
Bundle bundle = new Bundle();
|
|
if (uri != null) {
|
|
bundle.putParcelable(TARGET_ORIGIN_KEY, uri);
|
|
}
|
|
if (this.mId != null) {
|
|
addIdToBundle(bundle);
|
|
}
|
|
if (bundle.isEmpty()) {
|
|
return null;
|
|
}
|
|
return bundle;
|
|
}
|
|
|
|
private Bundle createBundleWithId(@Nullable Bundle bundle) {
|
|
Bundle bundle2 = new Bundle();
|
|
if (bundle != null) {
|
|
bundle2.putAll(bundle);
|
|
}
|
|
addIdToBundle(bundle2);
|
|
return bundle2;
|
|
}
|
|
|
|
private void addIdToBundle(Bundle bundle) {
|
|
PendingIntent pendingIntent = this.mId;
|
|
if (pendingIntent != null) {
|
|
bundle.putParcelable(CustomTabsIntent.EXTRA_SESSION_ID, pendingIntent);
|
|
}
|
|
}
|
|
|
|
public IBinder getBinder() {
|
|
return this.mCallback.asBinder();
|
|
}
|
|
|
|
@RestrictTo({RestrictTo.Scope.LIBRARY})
|
|
public static class PendingSession {
|
|
|
|
@Nullable
|
|
private final CustomTabsCallback mCallback;
|
|
|
|
@Nullable
|
|
private final PendingIntent mId;
|
|
|
|
@Nullable
|
|
public CustomTabsCallback getCallback() {
|
|
return this.mCallback;
|
|
}
|
|
|
|
@Nullable
|
|
public PendingIntent getId() {
|
|
return this.mId;
|
|
}
|
|
|
|
public PendingSession(@Nullable CustomTabsCallback customTabsCallback, @Nullable PendingIntent pendingIntent) {
|
|
this.mCallback = customTabsCallback;
|
|
this.mId = pendingIntent;
|
|
}
|
|
}
|
|
}
|