Chromium Code Reviews| OLD | NEW |
|---|---|
| 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.ActivityManager; | 10 import android.app.ActivityManager; |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 import android.util.Pair; | 24 import android.util.Pair; |
| 25 import android.view.KeyEvent; | 25 import android.view.KeyEvent; |
| 26 import android.view.KeyboardShortcutGroup; | 26 import android.view.KeyboardShortcutGroup; |
| 27 import android.view.Menu; | 27 import android.view.Menu; |
| 28 import android.view.View; | 28 import android.view.View; |
| 29 import android.view.View.OnClickListener; | 29 import android.view.View.OnClickListener; |
| 30 import android.view.ViewGroup; | 30 import android.view.ViewGroup; |
| 31 import android.view.Window; | 31 import android.view.Window; |
| 32 import android.view.WindowManager; | 32 import android.view.WindowManager; |
| 33 import android.widget.FrameLayout; | 33 import android.widget.FrameLayout; |
| 34 import android.widget.PopupWindow.OnDismissListener; | |
| 34 | 35 |
| 35 import org.chromium.base.ActivityState; | 36 import org.chromium.base.ActivityState; |
| 36 import org.chromium.base.ApiCompatibilityUtils; | 37 import org.chromium.base.ApiCompatibilityUtils; |
| 37 import org.chromium.base.ApplicationStatus; | 38 import org.chromium.base.ApplicationStatus; |
| 39 import org.chromium.base.Callback; | |
| 38 import org.chromium.base.CommandLine; | 40 import org.chromium.base.CommandLine; |
| 39 import org.chromium.base.ContextUtils; | 41 import org.chromium.base.ContextUtils; |
| 40 import org.chromium.base.Log; | 42 import org.chromium.base.Log; |
| 41 import org.chromium.base.MemoryPressureListener; | 43 import org.chromium.base.MemoryPressureListener; |
| 42 import org.chromium.base.TraceEvent; | 44 import org.chromium.base.TraceEvent; |
| 43 import org.chromium.base.VisibleForTesting; | 45 import org.chromium.base.VisibleForTesting; |
| 44 import org.chromium.base.library_loader.LibraryLoader; | 46 import org.chromium.base.library_loader.LibraryLoader; |
| 45 import org.chromium.base.metrics.RecordHistogram; | 47 import org.chromium.base.metrics.RecordHistogram; |
| 46 import org.chromium.base.metrics.RecordUserAction; | 48 import org.chromium.base.metrics.RecordUserAction; |
| 47 import org.chromium.chrome.R; | 49 import org.chromium.chrome.R; |
| 48 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; | 50 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; |
| 49 import org.chromium.chrome.browser.IntentHandler.TabOpenType; | 51 import org.chromium.chrome.browser.IntentHandler.TabOpenType; |
| 50 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; | 52 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; |
| 51 import org.chromium.chrome.browser.bookmarks.BookmarkUtils; | 53 import org.chromium.chrome.browser.bookmarks.BookmarkUtils; |
| 52 import org.chromium.chrome.browser.compositor.CompositorViewHolder; | 54 import org.chromium.chrome.browser.compositor.CompositorViewHolder; |
| 53 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChange Reason; | 55 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChange Reason; |
| 54 import org.chromium.chrome.browser.compositor.layouts.Layout; | 56 import org.chromium.chrome.browser.compositor.layouts.Layout; |
| 55 import org.chromium.chrome.browser.compositor.layouts.LayoutManager; | 57 import org.chromium.chrome.browser.compositor.layouts.LayoutManager; |
| 56 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; | 58 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; |
| 57 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; | 59 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; |
| 58 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromeTablet; | 60 import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromeTablet; |
| 59 import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.Overv iewModeObserver; | 61 import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.Overv iewModeObserver; |
| 60 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout; | 62 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout; |
| 61 import org.chromium.chrome.browser.cookies.CookiesFetcher; | 63 import org.chromium.chrome.browser.cookies.CookiesFetcher; |
| 62 import org.chromium.chrome.browser.device.DeviceClassManager; | 64 import org.chromium.chrome.browser.device.DeviceClassManager; |
| 63 import org.chromium.chrome.browser.document.ChromeLauncherActivity; | 65 import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
| 64 import org.chromium.chrome.browser.document.DocumentUtils; | 66 import org.chromium.chrome.browser.document.DocumentUtils; |
| 65 import org.chromium.chrome.browser.download.DownloadUtils; | 67 import org.chromium.chrome.browser.download.DownloadUtils; |
| 68 import org.chromium.chrome.browser.feature_engagement_tracker.FeatureEngagementT rackerFactory; | |
| 66 import org.chromium.chrome.browser.firstrun.FirstRunActivity; | 69 import org.chromium.chrome.browser.firstrun.FirstRunActivity; |
| 67 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; | 70 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; |
| 68 import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; | 71 import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; |
| 69 import org.chromium.chrome.browser.firstrun.FirstRunStatus; | 72 import org.chromium.chrome.browser.firstrun.FirstRunStatus; |
| 70 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; | 73 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; |
| 71 import org.chromium.chrome.browser.fullscreen.ComposedBrowserControlsVisibilityD elegate; | 74 import org.chromium.chrome.browser.fullscreen.ComposedBrowserControlsVisibilityD elegate; |
| 72 import org.chromium.chrome.browser.incognito.IncognitoNotificationManager; | 75 import org.chromium.chrome.browser.incognito.IncognitoNotificationManager; |
| 73 import org.chromium.chrome.browser.infobar.DataReductionPromoInfoBar; | 76 import org.chromium.chrome.browser.infobar.DataReductionPromoInfoBar; |
| 74 import org.chromium.chrome.browser.locale.LocaleManager; | 77 import org.chromium.chrome.browser.locale.LocaleManager; |
| 75 import org.chromium.chrome.browser.metrics.ActivityStopMetrics; | 78 import org.chromium.chrome.browser.metrics.ActivityStopMetrics; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; | 112 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; |
| 110 import org.chromium.chrome.browser.tabmodel.TabModelUtils; | 113 import org.chromium.chrome.browser.tabmodel.TabModelUtils; |
| 111 import org.chromium.chrome.browser.tabmodel.TabWindowManager; | 114 import org.chromium.chrome.browser.tabmodel.TabWindowManager; |
| 112 import org.chromium.chrome.browser.toolbar.ToolbarControlContainer; | 115 import org.chromium.chrome.browser.toolbar.ToolbarControlContainer; |
| 113 import org.chromium.chrome.browser.util.FeatureUtilities; | 116 import org.chromium.chrome.browser.util.FeatureUtilities; |
| 114 import org.chromium.chrome.browser.util.IntentUtils; | 117 import org.chromium.chrome.browser.util.IntentUtils; |
| 115 import org.chromium.chrome.browser.vr_shell.VrShellDelegate; | 118 import org.chromium.chrome.browser.vr_shell.VrShellDelegate; |
| 116 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet; | 119 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet; |
| 117 import org.chromium.chrome.browser.widget.emptybackground.EmptyBackgroundViewWra pper; | 120 import org.chromium.chrome.browser.widget.emptybackground.EmptyBackgroundViewWra pper; |
| 118 import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager; | 121 import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager; |
| 122 import org.chromium.chrome.browser.widget.textbubble.ViewAnchoredTextBubble; | |
| 123 import org.chromium.components.feature_engagement_tracker.FeatureConstants; | |
| 124 import org.chromium.components.feature_engagement_tracker.FeatureEngagementTrack er; | |
| 119 import org.chromium.content.browser.ContentVideoView; | 125 import org.chromium.content.browser.ContentVideoView; |
| 120 import org.chromium.content.browser.ContentViewCore; | 126 import org.chromium.content.browser.ContentViewCore; |
| 121 import org.chromium.content.browser.crypto.CipherFactory; | 127 import org.chromium.content.browser.crypto.CipherFactory; |
| 122 import org.chromium.content.common.ContentSwitches; | 128 import org.chromium.content.common.ContentSwitches; |
| 123 import org.chromium.content_public.browser.LoadUrlParams; | 129 import org.chromium.content_public.browser.LoadUrlParams; |
| 124 import org.chromium.content_public.common.Referrer; | 130 import org.chromium.content_public.common.Referrer; |
| 125 import org.chromium.ui.base.DeviceFormFactor; | 131 import org.chromium.ui.base.DeviceFormFactor; |
| 126 import org.chromium.ui.base.PageTransition; | 132 import org.chromium.ui.base.PageTransition; |
| 127 import org.chromium.ui.base.WindowAndroid; | 133 import org.chromium.ui.base.WindowAndroid; |
| 128 import org.chromium.ui.widget.Toast; | 134 import org.chromium.ui.widget.Toast; |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 684 tabSwitcherClickHandler, newTabClickHandler, bookmarkClickHa ndler, null); | 690 tabSwitcherClickHandler, newTabClickHandler, bookmarkClickHa ndler, null); |
| 685 | 691 |
| 686 if (isTablet()) { | 692 if (isTablet()) { |
| 687 EmptyBackgroundViewWrapper bgViewWrapper = new EmptyBackgroundVi ewWrapper( | 693 EmptyBackgroundViewWrapper bgViewWrapper = new EmptyBackgroundVi ewWrapper( |
| 688 getTabModelSelector(), getTabCreator(false), ChromeTabbe dActivity.this, | 694 getTabModelSelector(), getTabCreator(false), ChromeTabbe dActivity.this, |
| 689 getAppMenuHandler(), getSnackbarManager(), mLayoutManage r); | 695 getAppMenuHandler(), getSnackbarManager(), mLayoutManage r); |
| 690 bgViewWrapper.initialize(); | 696 bgViewWrapper.initialize(); |
| 691 } | 697 } |
| 692 | 698 |
| 693 mLayoutManager.hideOverview(false); | 699 mLayoutManager.hideOverview(false); |
| 700 FeatureEngagementTracker tracker = | |
| 701 FeatureEngagementTrackerFactory.getFeatureEngagementTrackerF orProfile( | |
| 702 Profile.getLastUsedProfile()); | |
| 703 tracker.addOnInitializedCallback(new Callback<Boolean>() { | |
| 704 @Override | |
| 705 public void onResult(Boolean result) { | |
| 706 showFeatureEngagementTextBubbleForDownloadHome(); | |
| 707 } | |
| 708 }); | |
| 694 | 709 |
| 695 mUIInitialized = true; | 710 mUIInitialized = true; |
| 696 } finally { | 711 } finally { |
| 697 TraceEvent.end("ChromeTabbedActivity.initializeUI"); | 712 TraceEvent.end("ChromeTabbedActivity.initializeUI"); |
| 698 } | 713 } |
| 699 } | 714 } |
| 700 | 715 |
| 716 private void showFeatureEngagementTextBubbleForDownloadHome() { | |
| 717 final FeatureEngagementTracker tracker = | |
| 718 FeatureEngagementTrackerFactory.getFeatureEngagementTrackerForPr ofile( | |
| 719 Profile.getLastUsedProfile()); | |
| 720 if (!tracker.shouldTriggerHelpUI(FeatureConstants.DOWNLOAD_HOME_FEATURE) ) return; | |
| 721 | |
| 722 ViewAnchoredTextBubble textBubble = new ViewAnchoredTextBubble( | |
| 723 this, getToolbarManager().getMenuAnchor(), R.string.iph_download _home_text); | |
| 724 textBubble.setDismissOnTouchInteraction(true); | |
| 725 textBubble.addOnDismissListener(new OnDismissListener() { | |
| 726 @Override | |
| 727 public void onDismiss() { | |
| 728 mHandler.post(new Runnable() { | |
|
David Trainor- moved to gerrit
2017/04/25 03:45:30
If we're doing this often, maybe we should change
| |
| 729 @Override | |
| 730 public void run() { | |
| 731 tracker.dismissed(); | |
| 732 getAppMenuHandler().setMenuHighlight(null); | |
| 733 } | |
| 734 }); | |
| 735 } | |
| 736 }); | |
| 737 getAppMenuHandler().setMenuHighlight(R.id.downloads_menu_id); | |
| 738 int yInsetPx = | |
| 739 getResources().getDimensionPixelOffset(R.dimen.text_bubble_menu_ anchor_y_inset); | |
| 740 textBubble.setInsetPx(0, yInsetPx, 0, 0); | |
| 741 textBubble.show(); | |
| 742 } | |
| 743 | |
| 701 private boolean isMainIntent(Intent intent) { | 744 private boolean isMainIntent(Intent intent) { |
| 702 return intent != null && TextUtils.equals(intent.getAction(), Intent.ACT ION_MAIN); | 745 return intent != null && TextUtils.equals(intent.getAction(), Intent.ACT ION_MAIN); |
| 703 } | 746 } |
| 704 | 747 |
| 705 private void logMainIntentBehavior(Intent intent) { | 748 private void logMainIntentBehavior(Intent intent) { |
| 706 assert isMainIntent(intent); | 749 assert isMainIntent(intent); |
| 707 long currentTime = System.currentTimeMillis(); | 750 long currentTime = System.currentTimeMillis(); |
| 708 long lastBackgroundedTimeMs = ContextUtils.getAppSharedPreferences().get Long( | 751 long lastBackgroundedTimeMs = ContextUtils.getAppSharedPreferences().get Long( |
| 709 LAST_BACKGROUNDED_TIME_MS_PREF, currentTime); | 752 LAST_BACKGROUNDED_TIME_MS_PREF, currentTime); |
| 710 mMainIntentMetrics.onMainIntentWithNative(currentTime - lastBackgrounded TimeMs); | 753 mMainIntentMetrics.onMainIntentWithNative(currentTime - lastBackgrounded TimeMs); |
| (...skipping 1277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1988 | 2031 |
| 1989 ActivityManager manager = (ActivityManager) getSystemService(Context.ACT IVITY_SERVICE); | 2032 ActivityManager manager = (ActivityManager) getSystemService(Context.ACT IVITY_SERVICE); |
| 1990 for (AppTask task : manager.getAppTasks()) { | 2033 for (AppTask task : manager.getAppTasks()) { |
| 1991 RecentTaskInfo info = DocumentUtils.getTaskInfoFromTask(task); | 2034 RecentTaskInfo info = DocumentUtils.getTaskInfoFromTask(task); |
| 1992 if (info == null) continue; | 2035 if (info == null) continue; |
| 1993 if (info.id == sMergedInstanceTaskId) return true; | 2036 if (info.id == sMergedInstanceTaskId) return true; |
| 1994 } | 2037 } |
| 1995 return false; | 2038 return false; |
| 1996 } | 2039 } |
| 1997 } | 2040 } |
| OLD | NEW |