discord-jadx/app/src/main/java/androidx/browser/customtabs/CustomTabsIntent.java

392 lines
18 KiB
Java

package androidx.browser.customtabs;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.util.SparseArray;
import android.widget.RemoteViews;
import androidx.annotation.AnimRes;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.browser.customtabs.CustomTabColorSchemeParams;
import androidx.browser.customtabs.CustomTabsSession;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.app.BundleCompat;
import androidx.core.content.ContextCompat;
import c.d.b.a.a;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
public final class CustomTabsIntent {
public static final int COLOR_SCHEME_DARK = 2;
public static final int COLOR_SCHEME_LIGHT = 1;
private static final int COLOR_SCHEME_MAX = 2;
public static final int COLOR_SCHEME_SYSTEM = 0;
public static final String EXTRA_ACTION_BUTTON_BUNDLE = "android.support.customtabs.extra.ACTION_BUTTON_BUNDLE";
public static final String EXTRA_CLOSE_BUTTON_ICON = "android.support.customtabs.extra.CLOSE_BUTTON_ICON";
public static final String EXTRA_COLOR_SCHEME = "androidx.browser.customtabs.extra.COLOR_SCHEME";
public static final String EXTRA_COLOR_SCHEME_PARAMS = "androidx.browser.customtabs.extra.COLOR_SCHEME_PARAMS";
@Deprecated
public static final String EXTRA_DEFAULT_SHARE_MENU_ITEM = "android.support.customtabs.extra.SHARE_MENU_ITEM";
public static final String EXTRA_ENABLE_INSTANT_APPS = "android.support.customtabs.extra.EXTRA_ENABLE_INSTANT_APPS";
public static final String EXTRA_ENABLE_URLBAR_HIDING = "android.support.customtabs.extra.ENABLE_URLBAR_HIDING";
public static final String EXTRA_EXIT_ANIMATION_BUNDLE = "android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE";
public static final String EXTRA_MENU_ITEMS = "android.support.customtabs.extra.MENU_ITEMS";
public static final String EXTRA_NAVIGATION_BAR_COLOR = "androidx.browser.customtabs.extra.NAVIGATION_BAR_COLOR";
public static final String EXTRA_NAVIGATION_BAR_DIVIDER_COLOR = "androidx.browser.customtabs.extra.NAVIGATION_BAR_DIVIDER_COLOR";
public static final String EXTRA_REMOTEVIEWS = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS";
public static final String EXTRA_REMOTEVIEWS_CLICKED_ID = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_CLICKED_ID";
public static final String EXTRA_REMOTEVIEWS_PENDINGINTENT = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_PENDINGINTENT";
public static final String EXTRA_REMOTEVIEWS_VIEW_IDS = "android.support.customtabs.extra.EXTRA_REMOTEVIEWS_VIEW_IDS";
public static final String EXTRA_SECONDARY_TOOLBAR_COLOR = "android.support.customtabs.extra.SECONDARY_TOOLBAR_COLOR";
public static final String EXTRA_SESSION = "android.support.customtabs.extra.SESSION";
@RestrictTo({RestrictTo.Scope.LIBRARY})
public static final String EXTRA_SESSION_ID = "android.support.customtabs.extra.SESSION_ID";
public static final String EXTRA_SHARE_STATE = "androidx.browser.customtabs.extra.SHARE_STATE";
public static final String EXTRA_TINT_ACTION_BUTTON = "android.support.customtabs.extra.TINT_ACTION_BUTTON";
public static final String EXTRA_TITLE_VISIBILITY_STATE = "android.support.customtabs.extra.TITLE_VISIBILITY";
public static final String EXTRA_TOOLBAR_COLOR = "android.support.customtabs.extra.TOOLBAR_COLOR";
public static final String EXTRA_TOOLBAR_ITEMS = "android.support.customtabs.extra.TOOLBAR_ITEMS";
private static final String EXTRA_USER_OPT_OUT_FROM_CUSTOM_TABS = "android.support.customtabs.extra.user_opt_out";
public static final String KEY_DESCRIPTION = "android.support.customtabs.customaction.DESCRIPTION";
public static final String KEY_ICON = "android.support.customtabs.customaction.ICON";
public static final String KEY_ID = "android.support.customtabs.customaction.ID";
public static final String KEY_MENU_ITEM_TITLE = "android.support.customtabs.customaction.MENU_ITEM_TITLE";
public static final String KEY_PENDING_INTENT = "android.support.customtabs.customaction.PENDING_INTENT";
private static final int MAX_TOOLBAR_ITEMS = 5;
public static final int NO_TITLE = 0;
public static final int SHARE_STATE_DEFAULT = 0;
private static final int SHARE_STATE_MAX = 2;
public static final int SHARE_STATE_OFF = 2;
public static final int SHARE_STATE_ON = 1;
public static final int SHOW_PAGE_TITLE = 1;
public static final int TOOLBAR_ACTION_BUTTON_ID = 0;
@NonNull
public final Intent intent;
@Nullable
public final Bundle startAnimationBundle;
public static final class Builder {
@Nullable
private ArrayList<Bundle> mActionButtons;
@Nullable
private SparseArray<Bundle> mColorSchemeParamBundles;
private final CustomTabColorSchemeParams.Builder mDefaultColorSchemeBuilder = new CustomTabColorSchemeParams.Builder();
@Nullable
private Bundle mDefaultColorSchemeBundle;
private boolean mInstantAppsEnabled = true;
private final Intent mIntent = new Intent("android.intent.action.VIEW");
@Nullable
private ArrayList<Bundle> mMenuItems;
private int mShareState = 0;
@Nullable
private Bundle mStartAnimationBundle;
public Builder() {
}
public Builder(@Nullable CustomTabsSession customTabsSession) {
if (customTabsSession != null) {
setSession(customTabsSession);
}
}
private void setSessionParameters(@Nullable IBinder iBinder, @Nullable PendingIntent pendingIntent) {
Bundle bundle = new Bundle();
BundleCompat.putBinder(bundle, "android.support.customtabs.extra.SESSION", iBinder);
if (pendingIntent != null) {
bundle.putParcelable("android.support.customtabs.extra.SESSION_ID", pendingIntent);
}
this.mIntent.putExtras(bundle);
}
@NonNull
@Deprecated
public Builder addDefaultShareMenuItem() {
setShareState(1);
return this;
}
@NonNull
public Builder addMenuItem(@NonNull String str, @NonNull PendingIntent pendingIntent) {
if (this.mMenuItems == null) {
this.mMenuItems = new ArrayList<>();
}
Bundle bundle = new Bundle();
bundle.putString("android.support.customtabs.customaction.MENU_ITEM_TITLE", str);
bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent);
this.mMenuItems.add(bundle);
return this;
}
@NonNull
@Deprecated
public Builder addToolbarItem(int i, @NonNull Bitmap bitmap, @NonNull String str, @NonNull PendingIntent pendingIntent) throws IllegalStateException {
if (this.mActionButtons == null) {
this.mActionButtons = new ArrayList<>();
}
if (this.mActionButtons.size() < 5) {
Bundle bundle = new Bundle();
bundle.putInt("android.support.customtabs.customaction.ID", i);
bundle.putParcelable("android.support.customtabs.customaction.ICON", bitmap);
bundle.putString("android.support.customtabs.customaction.DESCRIPTION", str);
bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent);
this.mActionButtons.add(bundle);
return this;
}
throw new IllegalStateException("Exceeded maximum toolbar item count of 5");
}
@NonNull
public CustomTabsIntent build() {
if (!this.mIntent.hasExtra("android.support.customtabs.extra.SESSION")) {
setSessionParameters(null, null);
}
ArrayList<Bundle> arrayList = this.mMenuItems;
if (arrayList != null) {
this.mIntent.putParcelableArrayListExtra("android.support.customtabs.extra.MENU_ITEMS", arrayList);
}
ArrayList<Bundle> arrayList2 = this.mActionButtons;
if (arrayList2 != null) {
this.mIntent.putParcelableArrayListExtra("android.support.customtabs.extra.TOOLBAR_ITEMS", arrayList2);
}
this.mIntent.putExtra("android.support.customtabs.extra.EXTRA_ENABLE_INSTANT_APPS", this.mInstantAppsEnabled);
this.mIntent.putExtras(this.mDefaultColorSchemeBuilder.build().toBundle());
Bundle bundle = this.mDefaultColorSchemeBundle;
if (bundle != null) {
this.mIntent.putExtras(bundle);
}
if (this.mColorSchemeParamBundles != null) {
Bundle bundle2 = new Bundle();
bundle2.putSparseParcelableArray("androidx.browser.customtabs.extra.COLOR_SCHEME_PARAMS", this.mColorSchemeParamBundles);
this.mIntent.putExtras(bundle2);
}
this.mIntent.putExtra("androidx.browser.customtabs.extra.SHARE_STATE", this.mShareState);
return new CustomTabsIntent(this.mIntent, this.mStartAnimationBundle);
}
@NonNull
@Deprecated
public Builder enableUrlBarHiding() {
this.mIntent.putExtra("android.support.customtabs.extra.ENABLE_URLBAR_HIDING", true);
return this;
}
@NonNull
public Builder setActionButton(@NonNull Bitmap bitmap, @NonNull String str, @NonNull PendingIntent pendingIntent) {
return setActionButton(bitmap, str, pendingIntent, false);
}
@NonNull
public Builder setActionButton(@NonNull Bitmap bitmap, @NonNull String str, @NonNull PendingIntent pendingIntent, boolean z2) {
Bundle bundle = new Bundle();
bundle.putInt("android.support.customtabs.customaction.ID", 0);
bundle.putParcelable("android.support.customtabs.customaction.ICON", bitmap);
bundle.putString("android.support.customtabs.customaction.DESCRIPTION", str);
bundle.putParcelable("android.support.customtabs.customaction.PENDING_INTENT", pendingIntent);
this.mIntent.putExtra("android.support.customtabs.extra.ACTION_BUTTON_BUNDLE", bundle);
this.mIntent.putExtra("android.support.customtabs.extra.TINT_ACTION_BUTTON", z2);
return this;
}
@NonNull
public Builder setCloseButtonIcon(@NonNull Bitmap bitmap) {
this.mIntent.putExtra("android.support.customtabs.extra.CLOSE_BUTTON_ICON", bitmap);
return this;
}
@NonNull
public Builder setColorScheme(int i) {
if (i < 0 || i > 2) {
throw new IllegalArgumentException("Invalid value for the colorScheme argument");
}
this.mIntent.putExtra("androidx.browser.customtabs.extra.COLOR_SCHEME", i);
return this;
}
@NonNull
public Builder setColorSchemeParams(int i, @NonNull CustomTabColorSchemeParams customTabColorSchemeParams) {
if (i < 0 || i > 2 || i == 0) {
throw new IllegalArgumentException(a.k("Invalid colorScheme: ", i));
}
if (this.mColorSchemeParamBundles == null) {
this.mColorSchemeParamBundles = new SparseArray<>();
}
this.mColorSchemeParamBundles.put(i, customTabColorSchemeParams.toBundle());
return this;
}
@NonNull
public Builder setDefaultColorSchemeParams(@NonNull CustomTabColorSchemeParams customTabColorSchemeParams) {
this.mDefaultColorSchemeBundle = customTabColorSchemeParams.toBundle();
return this;
}
@NonNull
@Deprecated
public Builder setDefaultShareMenuItemEnabled(boolean z2) {
if (z2) {
setShareState(1);
} else {
setShareState(2);
}
return this;
}
@NonNull
public Builder setExitAnimations(@NonNull Context context, @AnimRes int i, @AnimRes int i2) {
this.mIntent.putExtra("android.support.customtabs.extra.EXIT_ANIMATION_BUNDLE", ActivityOptionsCompat.makeCustomAnimation(context, i, i2).toBundle());
return this;
}
@NonNull
public Builder setInstantAppsEnabled(boolean z2) {
this.mInstantAppsEnabled = z2;
return this;
}
@NonNull
@Deprecated
public Builder setNavigationBarColor(@ColorInt int i) {
this.mDefaultColorSchemeBuilder.setNavigationBarColor(i);
return this;
}
@NonNull
@Deprecated
public Builder setNavigationBarDividerColor(@ColorInt int i) {
this.mDefaultColorSchemeBuilder.setNavigationBarDividerColor(i);
return this;
}
@NonNull
@RestrictTo({RestrictTo.Scope.LIBRARY})
public Builder setPendingSession(@NonNull CustomTabsSession.PendingSession pendingSession) {
setSessionParameters(null, pendingSession.getId());
return this;
}
@NonNull
@Deprecated
public Builder setSecondaryToolbarColor(@ColorInt int i) {
this.mDefaultColorSchemeBuilder.setSecondaryToolbarColor(i);
return this;
}
@NonNull
public Builder setSecondaryToolbarViews(@NonNull RemoteViews remoteViews, @Nullable int[] iArr, @Nullable PendingIntent pendingIntent) {
this.mIntent.putExtra("android.support.customtabs.extra.EXTRA_REMOTEVIEWS", remoteViews);
this.mIntent.putExtra("android.support.customtabs.extra.EXTRA_REMOTEVIEWS_VIEW_IDS", iArr);
this.mIntent.putExtra("android.support.customtabs.extra.EXTRA_REMOTEVIEWS_PENDINGINTENT", pendingIntent);
return this;
}
@NonNull
public Builder setSession(@NonNull CustomTabsSession customTabsSession) {
this.mIntent.setPackage(customTabsSession.getComponentName().getPackageName());
setSessionParameters(customTabsSession.getBinder(), customTabsSession.getId());
return this;
}
@NonNull
public Builder setShareState(int i) {
if (i < 0 || i > 2) {
throw new IllegalArgumentException("Invalid value for the shareState argument");
}
this.mShareState = i;
if (i == 1) {
this.mIntent.putExtra("android.support.customtabs.extra.SHARE_MENU_ITEM", true);
} else if (i == 2) {
this.mIntent.putExtra("android.support.customtabs.extra.SHARE_MENU_ITEM", false);
} else {
this.mIntent.removeExtra("android.support.customtabs.extra.SHARE_MENU_ITEM");
}
return this;
}
@NonNull
public Builder setShowTitle(boolean z2) {
this.mIntent.putExtra("android.support.customtabs.extra.TITLE_VISIBILITY", z2 ? 1 : 0);
return this;
}
@NonNull
public Builder setStartAnimations(@NonNull Context context, @AnimRes int i, @AnimRes int i2) {
this.mStartAnimationBundle = ActivityOptionsCompat.makeCustomAnimation(context, i, i2).toBundle();
return this;
}
@NonNull
@Deprecated
public Builder setToolbarColor(@ColorInt int i) {
this.mDefaultColorSchemeBuilder.setToolbarColor(i);
return this;
}
@NonNull
public Builder setUrlBarHidingEnabled(boolean z2) {
this.mIntent.putExtra("android.support.customtabs.extra.ENABLE_URLBAR_HIDING", z2);
return this;
}
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public @interface ColorScheme {
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public @interface ShareState {
}
public CustomTabsIntent(@NonNull Intent intent, @Nullable Bundle bundle) {
this.intent = intent;
this.startAnimationBundle = bundle;
}
@NonNull
public static CustomTabColorSchemeParams getColorSchemeParams(@NonNull Intent intent, int i) {
Bundle bundle;
if (i < 0 || i > 2 || i == 0) {
throw new IllegalArgumentException(a.k("Invalid colorScheme: ", i));
}
Bundle extras = intent.getExtras();
if (extras == null) {
return CustomTabColorSchemeParams.fromBundle(null);
}
CustomTabColorSchemeParams fromBundle = CustomTabColorSchemeParams.fromBundle(extras);
SparseArray sparseParcelableArray = extras.getSparseParcelableArray("androidx.browser.customtabs.extra.COLOR_SCHEME_PARAMS");
return (sparseParcelableArray == null || (bundle = (Bundle) sparseParcelableArray.get(i)) == null) ? fromBundle : CustomTabColorSchemeParams.fromBundle(bundle).withDefaults(fromBundle);
}
public static int getMaxToolbarItems() {
return 5;
}
@NonNull
public static Intent setAlwaysUseBrowserUI(@Nullable Intent intent) {
if (intent == null) {
intent = new Intent("android.intent.action.VIEW");
}
intent.addFlags(268435456);
intent.putExtra("android.support.customtabs.extra.user_opt_out", true);
return intent;
}
public static boolean shouldAlwaysUseBrowserUI(@NonNull Intent intent) {
return intent.getBooleanExtra("android.support.customtabs.extra.user_opt_out", false) && (intent.getFlags() & 268435456) != 0;
}
public void launchUrl(@NonNull Context context, @NonNull Uri uri) {
this.intent.setData(uri);
ContextCompat.startActivity(context, this.intent, this.startAnimationBundle);
}
}