summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/android/java/res/layout/custom_tabs_toolbar.xml5
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java1
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java38
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java15
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java6
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java13
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java9
7 files changed, 69 insertions, 18 deletions
diff --git a/chrome/android/java/res/layout/custom_tabs_toolbar.xml b/chrome/android/java/res/layout/custom_tabs_toolbar.xml
index cfca2f8..98a6c46 100644
--- a/chrome/android/java/res/layout/custom_tabs_toolbar.xml
+++ b/chrome/android/java/res/layout/custom_tabs_toolbar.xml
@@ -5,10 +5,9 @@
<org.chromium.chrome.browser.toolbar.CustomTabToolbar xmlns:android="http://schemas.android.com/apk/res/android">
<org.chromium.chrome.browser.widget.TintedImageButton
- android:id="@+id/back_button"
+ android:id="@+id/close_button"
style="@style/ToolbarButton"
- android:layout_gravity="center_vertical"
- android:src="@drawable/btn_chevron_left" />
+ android:layout_gravity="center_vertical" />
<ImageButton android:id="@+id/security_button"
style="@style/LocationBarButton"
android:layout_width="@dimen/location_bar_icon_width"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index 80b95e5..7b62c75 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -117,6 +117,7 @@ public class CustomTabActivity extends ChromeActivity {
@Override
public void postInflationStartup() {
super.postInflationStartup();
+ getToolbarManager().setCloseButtonIcon(mIntentDataProvider.getCloseButtonIconResId());
getToolbarManager().setShowTitle(mIntentDataProvider.getTitleVisibilityState()
== CustomTabIntentDataProvider.CUSTOM_TAB_SHOW_PAGE_TITLE);
getToolbarManager().updatePrimaryColor(mIntentDataProvider.getToolbarColor());
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 2dd0ec1..60d454e 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
@@ -53,12 +53,29 @@ public class CustomTabIntentDataProvider {
/**
* Extra that changes the background color for the omnibox. colorRes is an int that specifies a
- * color
+ * color.
*/
public static final String EXTRA_CUSTOM_TABS_TOOLBAR_COLOR =
"android.support.CUSTOM_TABS:toolbar_color";
/**
+ * 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";
+
+ /**
+ * Uses 'X'-like cross icon for close button.
+ */
+ public static final int CUSTOM_TAB_CLOSE_BUTTON_CROSS = 0;
+
+ /**
+ * Uses '<'-like chevron arrow icon for close button.
+ */
+ public static final int CUSTOM_TAB_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.
*/
@@ -126,6 +143,7 @@ public class CustomTabIntentDataProvider {
private final long mSessionId;
private final Intent mKeepAliveServiceIntent;
private final int mTitleVisibilityState;
+ private final int mCloseButtonResId;
private int mToolbarColor;
private Bitmap mIcon;
private PendingIntent mActionButtonPendingIntent;
@@ -175,6 +193,17 @@ public class CustomTabIntentDataProvider {
mAnimationBundle = IntentUtils.safeGetBundleExtra(
intent, EXTRA_CUSTOM_TABS_EXIT_ANIMATION_BUNDLE);
+ int closeButtonStyle = IntentUtils.safeGetIntExtra(intent,
+ EXTRA_CUSTOM_TABS_CLOSE_BUTTON_STYLE, CUSTOM_TAB_CLOSE_BUTTON_CROSS);
+ switch(closeButtonStyle) {
+ case CustomTabIntentDataProvider.CUSTOM_TAB_CLOSE_BUTTON_ARROW:
+ mCloseButtonResId = R.drawable.btn_chevron_left;
+ break;
+ case CustomTabIntentDataProvider.CUSTOM_TAB_CLOSE_BUTTON_CROSS:
+ default:
+ mCloseButtonResId = R.drawable.btn_close;
+ }
+
mTitleVisibilityState = IntentUtils.safeGetIntExtra(
intent, EXTRA_CUSTOM_TABS_TITLE_VISIBILITY_STATE, CUSTOM_TAB_NO_TITLE);
}
@@ -219,6 +248,13 @@ public class CustomTabIntentDataProvider {
}
/**
+ * @return The resource id of the close button shown in the custom tab toolbar.
+ */
+ public int getCloseButtonIconResId() {
+ return mCloseButtonResId;
+ }
+
+ /**
* @return The title visibility state for the toolbar.
* Default is {@link CustomTabIntentDataProvider#CUSTOM_TAB_NO_TITLE}.
*/
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java
index 6809b16..a7674a5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java
@@ -63,7 +63,7 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar {
private ImageButton mCustomActionButton;
private int mSecurityIconType;
private boolean mUseDarkColors;
- private TintedImageButton mReturnButton;
+ private TintedImageButton mCloseButton;
private Animator mSecurityButtonShowAnimator;
private boolean mBackgroundColorSet;
@@ -88,7 +88,7 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar {
mSecurityButton = (ImageButton) findViewById(R.id.security_button);
mSecurityIconType = ConnectionSecurityLevel.NONE;
mCustomActionButton = (ImageButton) findViewById(R.id.action_button);
- mReturnButton = (TintedImageButton) findViewById(R.id.back_button);
+ mCloseButton = (TintedImageButton) findViewById(R.id.close_button);
mSecurityButtonShowAnimator = ObjectAnimator.ofFloat(mSecurityButton, ALPHA, 1);
mSecurityButtonShowAnimator
.setDuration(ToolbarPhone.URL_FOCUS_CHANGE_ANIMATION_DURATION_MS);
@@ -122,8 +122,13 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar {
}
@Override
- public void setCustomTabReturnClickHandler(OnClickListener listener) {
- mReturnButton.setOnClickListener(listener);
+ public void setCloseButtonImageResource(int iconRes) {
+ mCloseButton.setImageResource(iconRes);
+ }
+
+ @Override
+ public void setCustomTabCloseClickHandler(OnClickListener listener) {
+ mCloseButton.setOnClickListener(listener);
}
@Override
@@ -263,7 +268,7 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar {
ColorStateList colorStateList = resources.getColorStateList(mUseDarkColors
? R.color.dark_mode_tint : R.color.light_mode_tint);
mMenuButton.setTint(colorStateList);
- mReturnButton.setTint(colorStateList);
+ mCloseButton.setTint(colorStateList);
mUrlBar.setUseDarkTextColors(mUseDarkColors);
int titleTextColor = mUseDarkColors ? resources.getColor(R.color.url_emphasis_default_text)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java
index 699ce9c..be93642 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar.java
@@ -62,12 +62,6 @@ public interface Toolbar {
void setBookmarkClickHandler(OnClickListener listener);
/**
- * Sets the OnClickListener to notify when the back button is pressed in a custom tab.
- * @param listener The callback that will be notified when the back button is pressed.
- */
- void setCustomTabReturnClickHandler(OnClickListener listener);
-
- /**
* Calculates the {@link Rect} that represents the content area of the location bar. This
* rect will be relative to the toolbar.
* @param outRect The Rect that represents the content area of the location bar.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
index d8b9541..e9531ce 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
@@ -264,8 +264,12 @@ abstract class ToolbarLayout extends FrameLayout implements Toolbar {
@Override
public void setBookmarkClickHandler(OnClickListener listener) { }
- @Override
- public void setCustomTabReturnClickHandler(OnClickListener listener) { }
+
+ /**
+ * Sets the OnClickListener to notify when the close button is pressed in a custom tab.
+ * @param listener The callback that will be notified when the close button is pressed.
+ */
+ public void setCustomTabCloseClickHandler(OnClickListener listener) { }
/**
* Gives inheriting classes the chance to update the visibility of the
@@ -334,6 +338,11 @@ abstract class ToolbarLayout extends FrameLayout implements Toolbar {
*/
protected void onPrimaryColorChanged() { }
+ /**
+ * Sets the icon resource that the close button in the toolbar (if any) should show.
+ */
+ public void setCloseButtonImageResource(int iconRes) { }
+
@Override
public void addCustomActionButton(Bitmap buttonSource, OnClickListener listener) { }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
index 38654ce..88ab7b9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -506,7 +506,7 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
mToolbar.setOnTabSwitcherClickHandler(tabSwitcherClickHandler);
mToolbar.setOnNewTabClickHandler(newTabClickHandler);
mToolbar.setBookmarkClickHandler(bookmarkClickHandler);
- mToolbar.setCustomTabReturnClickHandler(customTabsBackClickHandler);
+ mToolbar.setCustomTabCloseClickHandler(customTabsBackClickHandler);
mToolbarModel.initializeWithNative();
@@ -797,6 +797,13 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
}
/**
+ * Sets the icon resource that the close button shows.
+ */
+ public void setCloseButtonIcon(int iconRes) {
+ mToolbar.setCloseButtonImageResource(iconRes);
+ }
+
+ /**
* Sets whether a title should be shown within the Toolbar.
* @param showTitle Whether a title should be shown.
*/