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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java

Issue 2814843006: IPH - Added triggers for Download page (Closed)
Patch Set: initial Created 3 years, 8 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/toolbar/ToolbarManager.java
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 71b17ddef8f2a2e72d7bb75dc069781fa06dd969..765277e2faefd6028294c5fdda571d6ac2e81163 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
@@ -18,6 +18,7 @@ import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnClickListener;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.FrameLayout;
+import android.widget.PopupWindow.OnDismissListener;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback;
@@ -43,6 +44,8 @@ import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.OverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver;
+import org.chromium.chrome.browser.download.DownloadUtils;
+import org.chromium.chrome.browser.feature_engagement_tracker.FeatureEngagementTrackerFactory;
import org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.fullscreen.FullscreenManager;
import org.chromium.chrome.browser.ntp.IncognitoNewTabPage;
@@ -70,10 +73,14 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.toolbar.ActionModeController.ActionBarDelegate;
import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager;
import org.chromium.chrome.browser.widget.findinpage.FindToolbarObserver;
+import org.chromium.chrome.browser.widget.textbubble.ViewAnchoredTextBubble;
+import org.chromium.components.feature_engagement_tracker.FeatureConstants;
+import org.chromium.components.feature_engagement_tracker.FeatureEngagementTracker;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.NavigationController;
import org.chromium.content_public.browser.NavigationEntry;
import org.chromium.content_public.browser.WebContents;
+import org.chromium.net.NetError;
import org.chromium.ui.UiUtils;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.PageTransition;
@@ -469,6 +476,8 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
mToolbar.onNavigatedToDifferentPage();
}
+ displayFeatureEngagementTextBubbleIfNecessary(tab, errorCode);
+
// If the load failed due to a different navigation, there is no need to reset the
// location bar animations.
if (errorCode != 0 && isInMainFrame && !hasPendingNonNtpNavigation(tab)) {
@@ -480,6 +489,37 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
if (mToolbar.getProgressBar() != null) mToolbar.getProgressBar().finish(false);
}
}
+
+ private void displayFeatureEngagementTextBubbleIfNecessary(Tab tab, int errorCode) {
David Trainor- moved to gerrit 2017/04/13 03:58:24 Should we dismiss the bubble if the page navigates
+ final FeatureEngagementTracker tracker =
+ FeatureEngagementTrackerFactory.getFeatureEngagementTrackerForProfile(
+ tab.getProfile());
+
+ if (errorCode == NetError.ERR_INTERNET_DISCONNECTED) {
+ tracker.notifyEvent(FeatureConstants.USER_HAS_SEEN_DINO_EVENT);
+ return;
+ }
+
+ boolean shouldTrigger = false;
+ if (errorCode == 0 && DownloadUtils.isAllowedToDownloadPage(tab)) {
+ shouldTrigger =
+ tracker.shouldTriggerHelpUI(FeatureConstants.DOWNLOAD_PAGE_FEATURE);
+ }
+
+ if (!shouldTrigger) return;
+
+ ViewAnchoredTextBubble textBubble =
+ new ViewAnchoredTextBubble(mToolbar.getContext(), getMenuAnchor(),
+ R.string.iph_download_page_for_offline_usage_text);
+ textBubble.setDismissOnTouchInteraction(true);
+ textBubble.setOnDismissListener(new OnDismissListener() {
+ @Override
+ public void onDismiss() {
+ tracker.dismissed();
+ }
+ });
+ textBubble.show();
+ }
};
mBookmarksObserver = new BookmarkBridge.BookmarkModelObserver() {

Powered by Google App Engine
This is Rietveld 408576698