package androidx.browser.trusted; import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.browser.customtabs.CustomTabColorSchemeParams; import androidx.browser.customtabs.CustomTabsIntent; import androidx.browser.customtabs.CustomTabsSession; import androidx.browser.trusted.TrustedWebActivityDisplayMode; import androidx.browser.trusted.sharing.ShareData; import androidx.browser.trusted.sharing.ShareTarget; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; public class TrustedWebActivityIntentBuilder { @SuppressLint({"ActionValue"}) public static final String EXTRA_ADDITIONAL_TRUSTED_ORIGINS = "android.support.customtabs.extra.ADDITIONAL_TRUSTED_ORIGINS"; public static final String EXTRA_DISPLAY_MODE = "androidx.browser.trusted.extra.DISPLAY_MODE"; public static final String EXTRA_SCREEN_ORIENTATION = "androidx.browser.trusted.extra.SCREEN_ORIENTATION"; public static final String EXTRA_SHARE_DATA = "androidx.browser.trusted.extra.SHARE_DATA"; public static final String EXTRA_SHARE_TARGET = "androidx.browser.trusted.extra.SHARE_TARGET"; @SuppressLint({"ActionValue"}) public static final String EXTRA_SPLASH_SCREEN_PARAMS = "androidx.browser.trusted.EXTRA_SPLASH_SCREEN_PARAMS"; @Nullable private List mAdditionalTrustedOrigins; @NonNull private TrustedWebActivityDisplayMode mDisplayMode = new TrustedWebActivityDisplayMode.DefaultMode(); @NonNull private final CustomTabsIntent.Builder mIntentBuilder = new CustomTabsIntent.Builder(); private int mScreenOrientation = 0; @Nullable private ShareData mShareData; @Nullable private ShareTarget mShareTarget; @Nullable private Bundle mSplashScreenParams; @NonNull private final Uri mUri; public TrustedWebActivityIntentBuilder(@NonNull Uri uri) { this.mUri = uri; } @NonNull public TrustedWebActivityIntent build(@NonNull CustomTabsSession customTabsSession) { Objects.requireNonNull(customTabsSession, "CustomTabsSession is required for launching a TWA"); this.mIntentBuilder.setSession(customTabsSession); Intent intent = this.mIntentBuilder.build().intent; intent.setData(this.mUri); intent.putExtra("android.support.customtabs.extra.LAUNCH_AS_TRUSTED_WEB_ACTIVITY", true); if (this.mAdditionalTrustedOrigins != null) { intent.putExtra("android.support.customtabs.extra.ADDITIONAL_TRUSTED_ORIGINS", new ArrayList(this.mAdditionalTrustedOrigins)); } Bundle bundle = this.mSplashScreenParams; if (bundle != null) { intent.putExtra("androidx.browser.trusted.EXTRA_SPLASH_SCREEN_PARAMS", bundle); } List emptyList = Collections.emptyList(); ShareTarget shareTarget = this.mShareTarget; if (!(shareTarget == null || this.mShareData == null)) { intent.putExtra("androidx.browser.trusted.extra.SHARE_TARGET", shareTarget.toBundle()); intent.putExtra("androidx.browser.trusted.extra.SHARE_DATA", this.mShareData.toBundle()); List list = this.mShareData.uris; if (list != null) { emptyList = list; } } intent.putExtra("androidx.browser.trusted.extra.DISPLAY_MODE", this.mDisplayMode.toBundle()); intent.putExtra("androidx.browser.trusted.extra.SCREEN_ORIENTATION", this.mScreenOrientation); return new TrustedWebActivityIntent(intent, emptyList); } @NonNull public CustomTabsIntent buildCustomTabsIntent() { return this.mIntentBuilder.build(); } @NonNull public TrustedWebActivityDisplayMode getDisplayMode() { return this.mDisplayMode; } @NonNull public Uri getUri() { return this.mUri; } @NonNull public TrustedWebActivityIntentBuilder setAdditionalTrustedOrigins(@NonNull List list) { this.mAdditionalTrustedOrigins = list; return this; } @NonNull public TrustedWebActivityIntentBuilder setColorScheme(int i) { this.mIntentBuilder.setColorScheme(i); return this; } @NonNull public TrustedWebActivityIntentBuilder setColorSchemeParams(int i, @NonNull CustomTabColorSchemeParams customTabColorSchemeParams) { this.mIntentBuilder.setColorSchemeParams(i, customTabColorSchemeParams); return this; } @NonNull public TrustedWebActivityIntentBuilder setDefaultColorSchemeParams(@NonNull CustomTabColorSchemeParams customTabColorSchemeParams) { this.mIntentBuilder.setDefaultColorSchemeParams(customTabColorSchemeParams); return this; } @NonNull public TrustedWebActivityIntentBuilder setDisplayMode(@NonNull TrustedWebActivityDisplayMode trustedWebActivityDisplayMode) { this.mDisplayMode = trustedWebActivityDisplayMode; return this; } @NonNull public TrustedWebActivityIntentBuilder setNavigationBarColor(@ColorInt int i) { this.mIntentBuilder.setNavigationBarColor(i); return this; } @NonNull public TrustedWebActivityIntentBuilder setNavigationBarDividerColor(@ColorInt int i) { this.mIntentBuilder.setNavigationBarDividerColor(i); return this; } @NonNull public TrustedWebActivityIntentBuilder setScreenOrientation(int i) { this.mScreenOrientation = i; return this; } @NonNull public TrustedWebActivityIntentBuilder setShareParams(@NonNull ShareTarget shareTarget, @NonNull ShareData shareData) { this.mShareTarget = shareTarget; this.mShareData = shareData; return this; } @NonNull public TrustedWebActivityIntentBuilder setSplashScreenParams(@NonNull Bundle bundle) { this.mSplashScreenParams = bundle; return this; } @NonNull public TrustedWebActivityIntentBuilder setToolbarColor(@ColorInt int i) { this.mIntentBuilder.setToolbarColor(i); return this; } }