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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java

Issue 2367403005: Snackbar for promoting Data Saver to existing users (Closed)
Patch Set: rename "data saving" to "data savings" for consistency 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser; 5 package org.chromium.chrome.browser;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.annotation.TargetApi; 8 import android.annotation.TargetApi;
9 import android.app.Activity; 9 import android.app.Activity;
10 import android.app.SearchManager; 10 import android.app.SearchManager;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 import org.chromium.chrome.browser.gsa.GSAServiceClient; 80 import org.chromium.chrome.browser.gsa.GSAServiceClient;
81 import org.chromium.chrome.browser.gsa.GSAState; 81 import org.chromium.chrome.browser.gsa.GSAState;
82 import org.chromium.chrome.browser.help.HelpAndFeedback; 82 import org.chromium.chrome.browser.help.HelpAndFeedback;
83 import org.chromium.chrome.browser.infobar.InfoBarContainer; 83 import org.chromium.chrome.browser.infobar.InfoBarContainer;
84 import org.chromium.chrome.browser.init.AsyncInitializationActivity; 84 import org.chromium.chrome.browser.init.AsyncInitializationActivity;
85 import org.chromium.chrome.browser.metrics.LaunchMetrics; 85 import org.chromium.chrome.browser.metrics.LaunchMetrics;
86 import org.chromium.chrome.browser.metrics.StartupMetrics; 86 import org.chromium.chrome.browser.metrics.StartupMetrics;
87 import org.chromium.chrome.browser.metrics.UmaSessionStats; 87 import org.chromium.chrome.browser.metrics.UmaSessionStats;
88 import org.chromium.chrome.browser.metrics.UmaUtils; 88 import org.chromium.chrome.browser.metrics.UmaUtils;
89 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; 89 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
90 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
90 import org.chromium.chrome.browser.nfc.BeamController; 91 import org.chromium.chrome.browser.nfc.BeamController;
91 import org.chromium.chrome.browser.nfc.BeamProvider; 92 import org.chromium.chrome.browser.nfc.BeamProvider;
92 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; 93 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
93 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; 94 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
94 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; 95 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
95 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup; 96 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup;
96 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza tions; 97 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza tions;
97 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; 98 import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
98 import org.chromium.chrome.browser.preferences.PrefServiceBridge; 99 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
99 import org.chromium.chrome.browser.preferences.PreferencesLauncher; 100 import org.chromium.chrome.browser.preferences.PreferencesLauncher;
100 import org.chromium.chrome.browser.printing.PrintShareActivity; 101 import org.chromium.chrome.browser.printing.PrintShareActivity;
101 import org.chromium.chrome.browser.printing.TabPrinter; 102 import org.chromium.chrome.browser.printing.TabPrinter;
102 import org.chromium.chrome.browser.profiles.Profile; 103 import org.chromium.chrome.browser.profiles.Profile;
103 import org.chromium.chrome.browser.share.ShareHelper; 104 import org.chromium.chrome.browser.share.ShareHelper;
105 import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController ;
104 import org.chromium.chrome.browser.snackbar.DataUseSnackbarController; 106 import org.chromium.chrome.browser.snackbar.DataUseSnackbarController;
105 import org.chromium.chrome.browser.snackbar.SnackbarManager; 107 import org.chromium.chrome.browser.snackbar.SnackbarManager;
106 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable; 108 import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
107 import org.chromium.chrome.browser.sync.ProfileSyncService; 109 import org.chromium.chrome.browser.sync.ProfileSyncService;
108 import org.chromium.chrome.browser.sync.SyncController; 110 import org.chromium.chrome.browser.sync.SyncController;
109 import org.chromium.chrome.browser.tab.Tab; 111 import org.chromium.chrome.browser.tab.Tab;
110 import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager; 112 import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager;
111 import org.chromium.chrome.browser.tabmodel.EmptyTabModel; 113 import org.chromium.chrome.browser.tabmodel.EmptyTabModel;
112 import org.chromium.chrome.browser.tabmodel.TabCreatorManager; 114 import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
113 import org.chromium.chrome.browser.tabmodel.TabModel; 115 import org.chromium.chrome.browser.tabmodel.TabModel;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListene r; 217 private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListene r;
216 218
217 private ActivityWindowAndroid mWindowAndroid; 219 private ActivityWindowAndroid mWindowAndroid;
218 private ChromeFullscreenManager mFullscreenManager; 220 private ChromeFullscreenManager mFullscreenManager;
219 private CompositorViewHolder mCompositorViewHolder; 221 private CompositorViewHolder mCompositorViewHolder;
220 private InsetObserverView mInsetObserverView; 222 private InsetObserverView mInsetObserverView;
221 private ContextualSearchManager mContextualSearchManager; 223 private ContextualSearchManager mContextualSearchManager;
222 private ReaderModeManager mReaderModeManager; 224 private ReaderModeManager mReaderModeManager;
223 private SnackbarManager mSnackbarManager; 225 private SnackbarManager mSnackbarManager;
224 private DataUseSnackbarController mDataUseSnackbarController; 226 private DataUseSnackbarController mDataUseSnackbarController;
227 private DataReductionPromoSnackbarController mDataReductionPromoSnackbarCont roller;
225 private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate; 228 private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
226 private AppMenuHandler mAppMenuHandler; 229 private AppMenuHandler mAppMenuHandler;
227 private ToolbarManager mToolbarManager; 230 private ToolbarManager mToolbarManager;
228 231
229 // Time in ms that it took took us to inflate the initial layout 232 // Time in ms that it took took us to inflate the initial layout
230 private long mInflateInitialLayoutDurationMs; 233 private long mInflateInitialLayoutDurationMs;
231 234
232 private int mScreenWidthDp; 235 private int mScreenWidthDp;
233 private Runnable mRecordMultiWindowModeScreenWidthRunnable; 236 private Runnable mRecordMultiWindowModeScreenWidthRunnable;
234 237
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 public void didFirstVisuallyNonEmptyPaint(Tab tab) { 468 public void didFirstVisuallyNonEmptyPaint(Tab tab) {
466 if (DataUseTabUIManager.checkAndResetDataUseTrackingStarted(tab) 469 if (DataUseTabUIManager.checkAndResetDataUseTrackingStarted(tab)
467 && DataUseTabUIManager.shouldShowDataUseStartedUI()) { 470 && DataUseTabUIManager.shouldShowDataUseStartedUI()) {
468 mDataUseSnackbarController.showDataUseTrackingStartedBar(); 471 mDataUseSnackbarController.showDataUseTrackingStartedBar();
469 } else if (DataUseTabUIManager.shouldShowDataUseEndedUI() 472 } else if (DataUseTabUIManager.shouldShowDataUseEndedUI()
470 && DataUseTabUIManager.shouldShowDataUseEndedSnackbar( 473 && DataUseTabUIManager.shouldShowDataUseEndedSnackbar(
471 getApplicationContext()) 474 getApplicationContext())
472 && DataUseTabUIManager.checkAndResetDataUseTrackingEnded (tab)) { 475 && DataUseTabUIManager.checkAndResetDataUseTrackingEnded (tab)) {
473 mDataUseSnackbarController.showDataUseTrackingEndedBar(); 476 mDataUseSnackbarController.showDataUseTrackingEndedBar();
474 } 477 }
478
479 // Only alert about data savings once the first paint has happen ed. It doesn't make
480 // sense to show a snackbar about savings when nothing has been displayed yet.
481 if (DataReductionProxySettings.getInstance().isSnackbarPromoAllo wed(tab.getUrl())) {
482 if (mDataReductionPromoSnackbarController == null) {
483 mDataReductionPromoSnackbarController =
484 new DataReductionPromoSnackbarController(
485 getApplicationContext(), getSnackbarMana ger());
486 }
487 mDataReductionPromoSnackbarController.maybeShowDataReduction PromoSnackbar(
488 DataReductionProxySettings.getInstance()
489 .getTotalHttpContentLengthSaved());
490 }
475 } 491 }
476 492
477 @Override 493 @Override
478 public void onShown(Tab tab) { 494 public void onShown(Tab tab) {
479 setStatusBarColor(tab, tab.getThemeColor()); 495 setStatusBarColor(tab, tab.getThemeColor());
480 } 496 }
481 497
482 @Override 498 @Override
483 public void onHidden(Tab tab) { 499 public void onHidden(Tab tab) {
484 mDataUseSnackbarController.dismissDataUseBar(); 500 mDataUseSnackbarController.dismissDataUseBar();
(...skipping 1410 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", 1911 "Android.MultiWindowMode.IsTabletScreenWidthBelow600",
1896 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); 1912 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP);
1897 1913
1898 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { 1914 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) {
1899 RecordHistogram.recordLinearCountHistogram( 1915 RecordHistogram.recordLinearCountHistogram(
1900 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1, 1916 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1,
1901 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); 1917 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50);
1902 } 1918 }
1903 } 1919 }
1904 } 1920 }
OLDNEW
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698