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 |