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

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

Issue 1234643002: customtabs: Convert to the new AIDL interface, temporarily imported. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added VisibleForTesting to util only used for testing Created 5 years, 5 months 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 60d454eb3e180a275d3a14e9fa727a78db372db2..03a1efc11e4a31b51a66ca46bba06b7b489d5d17 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
@@ -13,6 +13,8 @@ import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
+import android.os.IBinder;
+import android.support.customtabs.CustomTabsIntent;
import android.text.TextUtils;
import android.util.Pair;
@@ -29,118 +31,51 @@ import java.util.List;
* {@link CustomTabActivity}.
*/
public class CustomTabIntentDataProvider {
- private static final String TAG = "CustomTabIntentDataProvider";
-
- /**
- * The category name that the service intent has to have for custom tabs. This
- * category can also be used to generically resolve to the service component for custom tabs.
- */
- public static final String CATEGORY_CUSTOM_TABS = "android.intent.category.CUSTOM_TABS";
-
- /**
- * Extra used to match the session. This has to be included in the intent to open in
- * a custom tab. Can be -1 if there is no session id taken. Its value is a long returned
- * by {@link ICustomTabsConnectionService#newSession}.
- */
- public static final String EXTRA_CUSTOM_TABS_SESSION_ID =
- "android.support.CUSTOM_TABS:session_id";
+ private static final String TAG = "CustomTabIntentData";
/**
* Extra used to keep the caller alive. Its value is an Intent.
*/
- public static final String EXTRA_CUSTOM_TABS_KEEP_ALIVE =
- "android.support.CUSTOM_TABS:keep_alive";
-
- /**
- * Extra that changes the background color for the omnibox. colorRes is an int that specifies a
- * color.
- */
- public static final String EXTRA_CUSTOM_TABS_TOOLBAR_COLOR =
- "android.support.CUSTOM_TABS:toolbar_color";
+ public static final String EXTRA_KEEP_ALIVE = "android.support.customtabs.extra.KEEP_ALIVE";
/**
* Extra int that specifies the style of the back button on the toolbar. Default is showing a
* cross icon.
*/
- public static final String EXTRA_CUSTOM_TABS_CLOSE_BUTTON_STYLE =
- "android.support.CUSTOM_TABS:close_button_style";
+ public static final String EXTRA_CLOSE_BUTTON_STYLE =
+ "android.support.customtabs.extra.CLOSE_BUTTON_STYLE";
/**
* Uses 'X'-like cross icon for close button.
*/
- public static final int CUSTOM_TAB_CLOSE_BUTTON_CROSS = 0;
+ public static final int CLOSE_BUTTON_CROSS = 0;
/**
* Uses '<'-like chevron arrow icon for close button.
*/
- public static final int CUSTOM_TAB_CLOSE_BUTTON_ARROW = 1;
+ public static final int CLOSE_BUTTON_ARROW = 1;
/**
* Extra int that specifies state for showing the page title. Default is showing only the domain
* and no information about the title.
*/
- public static final String EXTRA_CUSTOM_TABS_TITLE_VISIBILITY_STATE =
- "android.support.CUSTOM_TABS:title_visibility";
+ public static final String EXTRA_TITLE_VISIBILITY_STATE =
+ "android.support.customtabs.extra.TITLE_VISIBILITY";
/**
* Don't show any title. Shows only the domain.
*/
- public static final int CUSTOM_TAB_NO_TITLE = 0;
+ public static final int NO_TITLE = 0;
/**
* Shows the page title and the domain.
*/
- public static final int CUSTOM_TAB_SHOW_PAGE_TITLE = 1;
-
- /**
- * Bundle used for the action button parameters.
- */
- public static final String EXTRA_CUSTOM_TABS_ACTION_BUTTON_BUNDLE =
- "android.support.CUSTOM_TABS:action_button_bundle";
-
- /**
- * Key that specifies the Bitmap to be used as the image source for the action button.
- */
- public static final String KEY_CUSTOM_TABS_ICON = "android.support.CUSTOM_TABS:icon";
-
- /**
- * Key that specifies the PendingIntent to launch when the action button or menu item was
- * clicked. Chrome will be calling {@link PendingIntent#send()} on clicks after adding the url
- * as data. The client app can call {@link Intent#getDataString()} to get the url.
- */
- public static final String KEY_CUSTOM_TABS_PENDING_INTENT =
- "android.support.CUSTOM_TABS:pending_intent";
-
- /**
- * Use an {@code ArrayList<Bundle>} for specifying menu related params. There should be a
- * separate Bundle for each custom menu item.
- */
- public static final String EXTRA_CUSTOM_TABS_MENU_ITEMS =
- "android.support.CUSTOM_TABS:menu_items";
-
- /**
- * Key for the title of a menu item.
- */
- public static final String KEY_CUSTOM_TABS_MENU_TITLE =
- "android.support.CUSTOM_TABS:menu_title";
-
- /**
- * Bundle constructed out of ActivityOptions that Chrome will be running when it finishes
- * {@link CustomTabActivity}. A similar ActivityOptions for starting Chrome should be
- * constructed and given to the startActivity() call that launches Chrome.
- */
- public static final String EXTRA_CUSTOM_TABS_EXIT_ANIMATION_BUNDLE =
- "android.support.CUSTOM_TABS:exit_animation_bundle";
-
- /**
- * An invalid session ID, used when none is provided in the intent.
- */
- public static final long INVALID_SESSION_ID = -1;
+ public static final int SHOW_PAGE_TITLE = 1;
private static final String BUNDLE_PACKAGE_NAME = "android:packageName";
private static final String BUNDLE_ENTER_ANIMATION_RESOURCE = "android:animEnterRes";
private static final String BUNDLE_EXIT_ANIMATION_RESOURCE = "android:animExitRes";
- private final long mSessionId;
+ private final IBinder mSession;
private final Intent mKeepAliveServiceIntent;
private final int mTitleVisibilityState;
private final int mCloseButtonResId;
@@ -158,61 +93,59 @@ public class CustomTabIntentDataProvider {
public CustomTabIntentDataProvider(Intent intent, Context context) {
if (intent == null) assert false;
- mSessionId = IntentUtils.safeGetLongExtra(
- intent, EXTRA_CUSTOM_TABS_SESSION_ID, INVALID_SESSION_ID);
+ mSession = IntentUtils.safeGetBinderExtra(intent, CustomTabsIntent.EXTRA_SESSION);
retrieveToolbarColor(intent, context);
+ mKeepAliveServiceIntent = IntentUtils.safeGetParcelableExtra(intent, EXTRA_KEEP_ALIVE);
- mKeepAliveServiceIntent = IntentUtils.safeGetParcelableExtra(
- intent, EXTRA_CUSTOM_TABS_KEEP_ALIVE);
-
- Bundle actionButtonBundle = IntentUtils.safeGetBundleExtra(
- intent, EXTRA_CUSTOM_TABS_ACTION_BUTTON_BUNDLE);
+ Bundle actionButtonBundle =
+ IntentUtils.safeGetBundleExtra(intent, CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE);
if (actionButtonBundle != null) {
- mIcon = IntentUtils.safeGetParcelable(actionButtonBundle, KEY_CUSTOM_TABS_ICON);
- if (!checkBitmapSizeWithinBounds(context, mIcon)) {
+ mIcon = IntentUtils.safeGetParcelable(actionButtonBundle, CustomTabsIntent.KEY_ICON);
+ if (mIcon != null && !checkBitmapSizeWithinBounds(context, mIcon)) {
mIcon.recycle();
mIcon = null;
- } else {
+ } else if (mIcon != null) {
mActionButtonPendingIntent = IntentUtils.safeGetParcelable(
- actionButtonBundle, KEY_CUSTOM_TABS_PENDING_INTENT);
+ actionButtonBundle, CustomTabsIntent.KEY_PENDING_INTENT);
}
}
- List<Bundle> menuItems = IntentUtils.getParcelableArrayListExtra(
- intent, EXTRA_CUSTOM_TABS_MENU_ITEMS);
+ List<Bundle> menuItems =
+ IntentUtils.getParcelableArrayListExtra(intent, CustomTabsIntent.EXTRA_MENU_ITEMS);
if (menuItems != null) {
for (Bundle bundle : menuItems) {
- String title = IntentUtils.safeGetString(bundle, KEY_CUSTOM_TABS_MENU_TITLE);
- PendingIntent pendingIntent = IntentUtils.safeGetParcelable(
- bundle, KEY_CUSTOM_TABS_PENDING_INTENT);
+ String title =
+ IntentUtils.safeGetString(bundle, CustomTabsIntent.KEY_MENU_ITEM_TITLE);
+ PendingIntent pendingIntent =
+ IntentUtils.safeGetParcelable(bundle, CustomTabsIntent.KEY_PENDING_INTENT);
if (TextUtils.isEmpty(title) || pendingIntent == null) continue;
mMenuEntries.add(new Pair<String, PendingIntent>(title, pendingIntent));
}
}
mAnimationBundle = IntentUtils.safeGetBundleExtra(
- intent, EXTRA_CUSTOM_TABS_EXIT_ANIMATION_BUNDLE);
+ intent, CustomTabsIntent.EXTRA_EXIT_ANIMATION_BUNDLE);
- int closeButtonStyle = IntentUtils.safeGetIntExtra(intent,
- EXTRA_CUSTOM_TABS_CLOSE_BUTTON_STYLE, CUSTOM_TAB_CLOSE_BUTTON_CROSS);
+ int closeButtonStyle =
+ IntentUtils.safeGetIntExtra(intent, EXTRA_CLOSE_BUTTON_STYLE, CLOSE_BUTTON_CROSS);
switch(closeButtonStyle) {
- case CustomTabIntentDataProvider.CUSTOM_TAB_CLOSE_BUTTON_ARROW:
+ case CustomTabIntentDataProvider.CLOSE_BUTTON_ARROW:
mCloseButtonResId = R.drawable.btn_chevron_left;
break;
- case CustomTabIntentDataProvider.CUSTOM_TAB_CLOSE_BUTTON_CROSS:
+ case CustomTabIntentDataProvider.CLOSE_BUTTON_CROSS:
default:
mCloseButtonResId = R.drawable.btn_close;
}
- mTitleVisibilityState = IntentUtils.safeGetIntExtra(
- intent, EXTRA_CUSTOM_TABS_TITLE_VISIBILITY_STATE, CUSTOM_TAB_NO_TITLE);
+ mTitleVisibilityState =
+ IntentUtils.safeGetIntExtra(intent, EXTRA_TITLE_VISIBILITY_STATE, NO_TITLE);
}
/**
* Processes the color passed from the client app and updates {@link #mToolbarColor}.
*/
private void retrieveToolbarColor(Intent intent, Context context) {
- int color = IntentUtils.safeGetIntExtra(intent, EXTRA_CUSTOM_TABS_TOOLBAR_COLOR,
+ int color = IntentUtils.safeGetIntExtra(intent, CustomTabsIntent.EXTRA_TOOLBAR_COLOR,
context.getResources().getColor(R.color.default_primary_color));
int defaultColor = context.getResources().getColor(R.color.default_primary_color);
@@ -225,11 +158,10 @@ public class CustomTabIntentDataProvider {
}
/**
- * @return The session ID specified in the intent. Will be
- * INVALID_SESSION_ID if it is not set in the intent.
+ * @return The session specified in the intent, or null.
*/
- public long getSessionId() {
- return mSessionId;
+ public IBinder getSession() {
+ return mSession;
}
/**

Powered by Google App Engine
This is Rietveld 408576698