Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(983)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java

Issue 2484053002: [Download Home] Custom tab backgrounds (Closed)
Patch Set: Rebasing Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
index fef422069b9df9bcce0666f7c21f2b2e644a2e08..e00f5123dba32b2456c6f9e6a1df342be9d5d167 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -28,9 +28,7 @@ import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.IntentHandler;
-import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.chrome.browser.widget.TintedDrawable;
@@ -60,6 +58,10 @@ public class CustomTabIntentDataProvider {
public static final String EXTRA_IS_MEDIA_VIEWER =
"org.chromium.chrome.browser.customtabs.IS_MEDIA_VIEWER";
+ /** Extra that defines the initial background color (RGB color stored as an integer). */
+ public static final String EXTRA_INITIAL_BACKGROUND_COLOR =
+ "org.chromium.chrome.browser.customtabs.EXTRA_INITIAL_BACKGROUND_COLOR";
+
//TODO(yusufo): Move this to CustomTabsIntent.
/** Signals custom tabs to favor sending initial urls to external handler apps if possible. */
public static final String EXTRA_SEND_TO_EXTERNAL_DEFAULT_HANDLER =
@@ -75,9 +77,11 @@ public class CustomTabIntentDataProvider {
ANIMATION_BUNDLE_PREFIX + "animExitRes";
private final CustomTabsSessionToken mSession;
+ private final boolean mIsTrustedIntent;
private final Intent mKeepAliveServiceIntent;
private final int mTitleVisibilityState;
private final boolean mIsMediaViewer;
+ private final int mInitialBackgroundColor;
private int mToolbarColor;
private int mBottomBarColor;
@@ -104,11 +108,13 @@ public class CustomTabIntentDataProvider {
public CustomTabIntentDataProvider(Intent intent, Context context) {
if (intent == null) assert false;
mSession = CustomTabsSessionToken.getSessionTokenFromIntent(intent);
- parseHerbExtras(intent, context);
+ mIsTrustedIntent = IntentHandler.isIntentChromeOrFirstParty(intent, context);
retrieveCustomButtons(intent, context);
retrieveToolbarColor(intent, context);
retrieveBottomBarColor(intent);
+ mInitialBackgroundColor = retrieveInitialBackgroundColor(intent);
+
mEnableUrlBarHiding = IntentUtils.safeGetBooleanExtra(
intent, CustomTabsIntent.EXTRA_ENABLE_URLBAR_HIDING, true);
mKeepAliveServiceIntent = IntentUtils.safeGetParcelableExtra(intent, EXTRA_KEEP_ALIVE);
@@ -140,6 +146,8 @@ public class CustomTabIntentDataProvider {
}
}
+ mIsOpenedByChrome =
+ IntentUtils.safeGetBooleanExtra(intent, EXTRA_IS_OPENED_BY_CHROME, false);
mAnimationBundle = IntentUtils.safeGetBundleExtra(
intent, CustomTabsIntent.EXTRA_EXIT_ANIMATION_BUNDLE);
mTitleVisibilityState = IntentUtils.safeGetIntExtra(intent,
@@ -152,7 +160,7 @@ public class CustomTabIntentDataProvider {
CustomTabsIntent.EXTRA_REMOTEVIEWS_VIEW_IDS);
mRemoteViewsPendingIntent = IntentUtils.safeGetParcelableExtra(intent,
CustomTabsIntent.EXTRA_REMOTEVIEWS_PENDINGINTENT);
- mIsMediaViewer = IntentHandler.isIntentChromeOrFirstParty(intent, context)
+ mIsMediaViewer = mIsTrustedIntent
&& IntentUtils.safeGetBooleanExtra(intent, EXTRA_IS_MEDIA_VIEWER, false);
}
@@ -181,7 +189,7 @@ public class CustomTabIntentDataProvider {
R.color.default_primary_color);
int color = IntentUtils.safeGetIntExtra(intent, CustomTabsIntent.EXTRA_TOOLBAR_COLOR,
defaultColor);
- mToolbarColor = removeTransparencyFromColor(color, defaultColor);
+ mToolbarColor = removeTransparencyFromColor(color);
}
/**
@@ -191,17 +199,25 @@ public class CustomTabIntentDataProvider {
int defaultColor = mToolbarColor;
int color = IntentUtils.safeGetIntExtra(intent,
CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_COLOR, defaultColor);
- mBottomBarColor = removeTransparencyFromColor(color, defaultColor);
+ mBottomBarColor = removeTransparencyFromColor(color);
+ }
+
+ /**
+ * Returns the color to initialize the background of the Custom Tab with.
+ * If no valid color is set, Color.TRANSPARENT is returned.
+ */
+ private int retrieveInitialBackgroundColor(Intent intent) {
+ int defaultColor = Color.TRANSPARENT;
+ int color = IntentUtils.safeGetIntExtra(
+ intent, EXTRA_INITIAL_BACKGROUND_COLOR, defaultColor);
+ return color == Color.TRANSPARENT ? color : removeTransparencyFromColor(color);
}
/**
- * Removes the alpha channel of the given color and returns the processed value. If the result
- * is blank, returns the fallback value.
+ * Removes the alpha channel of the given color and returns the processed value.
*/
- private int removeTransparencyFromColor(int color, int fallbackColor) {
- color |= 0xFF000000;
- if (color == Color.TRANSPARENT) color = fallbackColor;
- return color;
+ private int removeTransparencyFromColor(int color) {
+ return color | 0xFF000000;
}
/**
@@ -433,6 +449,13 @@ public class CustomTabIntentDataProvider {
}
/**
+ * Checks whether or not the Intent is from Chrome or other trusted first party.
+ */
+ boolean isTrustedIntent() {
+ return mIsTrustedIntent;
+ }
+
+ /**
* @return See {@link #EXTRA_IS_MEDIA_VIEWER}.
*/
boolean isMediaViewer() {
@@ -440,19 +463,10 @@ public class CustomTabIntentDataProvider {
}
/**
- * Parses out extras specifically added for Herb.
- *
- * @param intent Intent fired to open the CustomTabActivity.
- * @param context Context for the package.
+ * See {@link #EXTRA_INITIAL_BACKGROUND_COLOR}.
+ * @return The color if it was specified in the Intent, Color.TRANSPARENT otherwise.
*/
- private void parseHerbExtras(Intent intent, Context context) {
- String herbFlavor = FeatureUtilities.getHerbFlavor();
- if (TextUtils.isEmpty(herbFlavor)
- || TextUtils.equals(ChromeSwitches.HERB_FLAVOR_DISABLED, herbFlavor)) {
- return;
- }
-
- mIsOpenedByChrome = IntentUtils.safeGetBooleanExtra(
- intent, EXTRA_IS_OPENED_BY_CHROME, false);
+ int getInitialBackgroundColor() {
+ return mInitialBackgroundColor;
}
}

Powered by Google App Engine
This is Rietveld 408576698