Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java |
index b31781f5093e4d98bd7acdd4cddd13073566c844..5828ef4e7a5830bbf4fc0b7fcb19f9412fece11f 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java |
@@ -7,7 +7,11 @@ package org.chromium.chrome.browser.infobar; |
import android.content.Context; |
import android.content.pm.PackageInfo; |
import android.content.pm.PackageManager.NameNotFoundException; |
+import android.graphics.Bitmap; |
+import android.graphics.BitmapFactory; |
+import org.chromium.base.CommandLine; |
+import org.chromium.base.ThreadUtils; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.UrlConstants; |
import org.chromium.chrome.browser.omaha.VersionNumberGetter; |
@@ -22,20 +26,23 @@ import java.util.Calendar; |
import java.util.TimeZone; |
/** |
- * Generates an infobar to promote the data reduction proxy. The infobar contains a message and a |
- * button to enable the proxy. |
+ * Generates an infobar to promote the data reduction proxy to non-users of it. The infobar contains |
+ * a message and a button to enable the proxy. The infobar is displayed when it has not been shown |
+ * previously, the page is HTTP pages, and certain milestone restrictions are met. Once the proxy is |
+ * enabled from the infobar a confirmation toast message is shown. |
*/ |
-public class DataReductionPromoInfoBar { |
+public class DataReductionPromoInfoBar extends ConfirmInfoBar { |
private static final String M48_STABLE_RELEASE_DATE = "2016-01-26"; |
+ private static final String ENABLE_INFOBAR_SWITCH = "enable-data-reduction-promo-infobar"; |
private static final int NO_INSTALL_TIME = 0; |
+ private static Bitmap sIcon; |
private static String sTitle; |
private static String sText; |
private static String sPrimaryButtonText; |
private static String sSecondaryButtonText; |
- |
/** |
- * Launch the data reduction infobar Promo, if it needs to be displayed. |
+ * Launch the data reduction infobar promo, if it needs to be displayed. |
* |
* @param context An Android context. |
* @param webContents The WebContents of the tab on which the infobar should show. |
@@ -43,12 +50,15 @@ public class DataReductionPromoInfoBar { |
* @param isFragmentNavigation Whether the main frame navigation did not cause changes to the |
* document (for example scrolling to a named anchor PopState). |
* @param statusCode The HTTP status code of the navigation. |
+ * @return boolean Whether the promo was launched. |
*/ |
public static boolean maybeLaunchPromoInfoBar(Context context, |
- WebContents webContents, String url, boolean isFragmentNavigation, |
+ WebContents webContents, String url, boolean isErrorPage, boolean isFragmentNavigation, |
int statusCode) { |
- if (isFragmentNavigation) return false; |
+ ThreadUtils.assertOnUiThread(); |
if (webContents.isIncognito()) return false; |
+ if (isErrorPage) return false; |
+ if (isFragmentNavigation) return false; |
if (statusCode != HttpURLConnection.HTTP_OK) return false; |
if (!DataReductionPromoUtils.canShowPromos()) return false; |
@@ -84,15 +94,17 @@ public class DataReductionPromoInfoBar { |
} |
// Only show the promo if the current version is at least two milestones after the last |
- // promo was displayed. If the last promo was shown before M51 then |freOrSecondRunVersion| |
- // will be empty and it is safe to show the infobar promo. |
- if (!freOrSecondRunVersion.isEmpty() |
- && currentMilestone < VersionNumberGetter.getMilestoneFromVersionNumber( |
- freOrSecondRunVersion) + 2) { |
+ // promo was displayed or the command line switch is on. If the last promo was shown before |
+ // M51 then |freOrSecondRunVersion| will be empty and it is safe to show the infobar promo. |
+ if (!CommandLine.getInstance().hasSwitch(ENABLE_INFOBAR_SWITCH) |
+ && !freOrSecondRunVersion.isEmpty() |
+ && currentMilestone < VersionNumberGetter |
+ .getMilestoneFromVersionNumber(freOrSecondRunVersion) + 2) { |
return false; |
} |
DataReductionPromoInfoBar.launch(webContents, |
+ BitmapFactory.decodeResource(context.getResources(), R.mipmap.app_icon), |
context.getString(R.string.data_reduction_promo_infobar_title), |
context.getString(R.string.data_reduction_promo_infobar_text), |
context.getString(R.string.data_reduction_promo_infobar_button), |
@@ -124,11 +136,14 @@ public class DataReductionPromoInfoBar { |
* text. Clicking the link will open the specified settings page. |
* |
* @param webContents The {@link WebContents} in which to open the {@link InfoBar}. |
- * @param title The text to display in the {@link InfoBar}. |
+ * @param icon Bitmap to use for the {@link InfoBar} icon. |
+ * @param title The title to display in the {@link InfoBar}. |
+ * @param text The text to display in the {@link InfoBar}. |
* @param primaryButtonText The text to display on the primary button. |
* @param secondaryButtonText The text to display on the secondary button. |
*/ |
private static void launch(WebContents webContents, |
+ Bitmap icon, |
String title, |
String text, |
String primaryButtonText, |
@@ -137,7 +152,19 @@ public class DataReductionPromoInfoBar { |
sText = text; |
sPrimaryButtonText = primaryButtonText; |
sSecondaryButtonText = secondaryButtonText; |
- // TODO(megjablon): Show infobar. |
+ sIcon = icon; |
+ DataReductionPromoInfoBarDelegate.launch(webContents); |
DataReductionPromoUtils.saveInfoBarPromoDisplayed(); |
} |
+ |
+ DataReductionPromoInfoBar() { |
+ super(0, sIcon, sTitle, null, sPrimaryButtonText, sSecondaryButtonText); |
+ } |
+ |
+ @Override |
+ public void createContent(InfoBarLayout layout) { |
+ super.createContent(layout); |
+ InfoBarControlLayout control = layout.addControlLayout(); |
+ control.addDescription(sText); |
+ } |
} |