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.SearchManager; | 10 import android.app.SearchManager; |
11 import android.app.assist.AssistContent; | 11 import android.app.assist.AssistContent; |
| 12 import android.content.ActivityNotFoundException; |
12 import android.content.Context; | 13 import android.content.Context; |
13 import android.content.Intent; | 14 import android.content.Intent; |
14 import android.content.res.Configuration; | 15 import android.content.res.Configuration; |
15 import android.graphics.Bitmap; | 16 import android.graphics.Bitmap; |
16 import android.graphics.Color; | 17 import android.graphics.Color; |
17 import android.graphics.Rect; | 18 import android.graphics.Rect; |
18 import android.graphics.drawable.ColorDrawable; | 19 import android.graphics.drawable.ColorDrawable; |
19 import android.graphics.drawable.Drawable; | 20 import android.graphics.drawable.Drawable; |
20 import android.net.Uri; | 21 import android.net.Uri; |
21 import android.os.Build; | 22 import android.os.Build; |
(...skipping 15 matching lines...) Expand all Loading... |
37 import android.view.accessibility.AccessibilityManager; | 38 import android.view.accessibility.AccessibilityManager; |
38 import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeL
istener; | 39 import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeL
istener; |
39 import android.view.accessibility.AccessibilityManager.TouchExplorationStateChan
geListener; | 40 import android.view.accessibility.AccessibilityManager.TouchExplorationStateChan
geListener; |
40 | 41 |
41 import org.chromium.base.ActivityState; | 42 import org.chromium.base.ActivityState; |
42 import org.chromium.base.ApiCompatibilityUtils; | 43 import org.chromium.base.ApiCompatibilityUtils; |
43 import org.chromium.base.ApplicationStatus; | 44 import org.chromium.base.ApplicationStatus; |
44 import org.chromium.base.BaseSwitches; | 45 import org.chromium.base.BaseSwitches; |
45 import org.chromium.base.Callback; | 46 import org.chromium.base.Callback; |
46 import org.chromium.base.CommandLine; | 47 import org.chromium.base.CommandLine; |
| 48 import org.chromium.base.ContextUtils; |
47 import org.chromium.base.SysUtils; | 49 import org.chromium.base.SysUtils; |
48 import org.chromium.base.TraceEvent; | 50 import org.chromium.base.TraceEvent; |
49 import org.chromium.base.VisibleForTesting; | 51 import org.chromium.base.VisibleForTesting; |
50 import org.chromium.base.metrics.RecordHistogram; | 52 import org.chromium.base.metrics.RecordHistogram; |
51 import org.chromium.base.metrics.RecordUserAction; | 53 import org.chromium.base.metrics.RecordUserAction; |
52 import org.chromium.chrome.R; | 54 import org.chromium.chrome.R; |
53 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; | 55 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; |
54 import org.chromium.chrome.browser.IntentHandler.TabOpenType; | 56 import org.chromium.chrome.browser.IntentHandler.TabOpenType; |
55 import org.chromium.chrome.browser.appmenu.AppMenu; | 57 import org.chromium.chrome.browser.appmenu.AppMenu; |
56 import org.chromium.chrome.browser.appmenu.AppMenuHandler; | 58 import org.chromium.chrome.browser.appmenu.AppMenuHandler; |
(...skipping 23 matching lines...) Expand all Loading... |
80 import org.chromium.chrome.browser.gsa.GSAAccountChangeListener; | 82 import org.chromium.chrome.browser.gsa.GSAAccountChangeListener; |
81 import org.chromium.chrome.browser.gsa.GSAState; | 83 import org.chromium.chrome.browser.gsa.GSAState; |
82 import org.chromium.chrome.browser.help.HelpAndFeedback; | 84 import org.chromium.chrome.browser.help.HelpAndFeedback; |
83 import org.chromium.chrome.browser.history.HistoryManagerUtils; | 85 import org.chromium.chrome.browser.history.HistoryManagerUtils; |
84 import org.chromium.chrome.browser.infobar.InfoBarContainer; | 86 import org.chromium.chrome.browser.infobar.InfoBarContainer; |
85 import org.chromium.chrome.browser.init.AsyncInitializationActivity; | 87 import org.chromium.chrome.browser.init.AsyncInitializationActivity; |
86 import org.chromium.chrome.browser.metrics.LaunchMetrics; | 88 import org.chromium.chrome.browser.metrics.LaunchMetrics; |
87 import org.chromium.chrome.browser.metrics.StartupMetrics; | 89 import org.chromium.chrome.browser.metrics.StartupMetrics; |
88 import org.chromium.chrome.browser.metrics.UmaSessionStats; | 90 import org.chromium.chrome.browser.metrics.UmaSessionStats; |
89 import org.chromium.chrome.browser.metrics.UmaUtils; | 91 import org.chromium.chrome.browser.metrics.UmaUtils; |
| 92 import org.chromium.chrome.browser.metrics.WebApkUma; |
90 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; | 93 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; |
91 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; | 94 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
92 import org.chromium.chrome.browser.nfc.BeamController; | 95 import org.chromium.chrome.browser.nfc.BeamController; |
93 import org.chromium.chrome.browser.nfc.BeamProvider; | 96 import org.chromium.chrome.browser.nfc.BeamProvider; |
94 import org.chromium.chrome.browser.ntp.NewTabPage; | 97 import org.chromium.chrome.browser.ntp.NewTabPage; |
95 import org.chromium.chrome.browser.ntp.NewTabPageUma; | 98 import org.chromium.chrome.browser.ntp.NewTabPageUma; |
96 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; | 99 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; |
97 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; | 100 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; |
98 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; | 101 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; |
99 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup; | 102 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 import org.chromium.content_public.browser.readback_types.ReadbackResponse; | 144 import org.chromium.content_public.browser.readback_types.ReadbackResponse; |
142 import org.chromium.policy.CombinedPolicyProvider; | 145 import org.chromium.policy.CombinedPolicyProvider; |
143 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; | 146 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; |
144 import org.chromium.printing.PrintManagerDelegateImpl; | 147 import org.chromium.printing.PrintManagerDelegateImpl; |
145 import org.chromium.printing.PrintingController; | 148 import org.chromium.printing.PrintingController; |
146 import org.chromium.printing.PrintingControllerImpl; | 149 import org.chromium.printing.PrintingControllerImpl; |
147 import org.chromium.ui.base.ActivityWindowAndroid; | 150 import org.chromium.ui.base.ActivityWindowAndroid; |
148 import org.chromium.ui.base.DeviceFormFactor; | 151 import org.chromium.ui.base.DeviceFormFactor; |
149 import org.chromium.ui.base.PageTransition; | 152 import org.chromium.ui.base.PageTransition; |
150 import org.chromium.ui.base.WindowAndroid; | 153 import org.chromium.ui.base.WindowAndroid; |
| 154 import org.chromium.ui.widget.Toast; |
| 155 import org.chromium.webapk.lib.client.WebApkValidator; |
151 | 156 |
152 import java.util.ArrayList; | 157 import java.util.ArrayList; |
153 import java.util.List; | 158 import java.util.List; |
154 import java.util.concurrent.TimeUnit; | 159 import java.util.concurrent.TimeUnit; |
155 | 160 |
156 import javax.annotation.Nullable; | 161 import javax.annotation.Nullable; |
157 | 162 |
158 /** | 163 /** |
159 * A {@link AsyncInitializationActivity} that builds and manages a {@link Compos
itorViewHolder} | 164 * A {@link AsyncInitializationActivity} that builds and manages a {@link Compos
itorViewHolder} |
160 * and associated classes. | 165 * and associated classes. |
(...skipping 1598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1759 && PrefServiceBridge.getInstance().isPrintingEnabled()) { | 1764 && PrefServiceBridge.getInstance().isPrintingEnabled()) { |
1760 printingController.startPrint(new TabPrinter(currentTab), | 1765 printingController.startPrint(new TabPrinter(currentTab), |
1761 new PrintManagerDelegateImpl(this)); | 1766 new PrintManagerDelegateImpl(this)); |
1762 RecordUserAction.record("MobileMenuPrint"); | 1767 RecordUserAction.record("MobileMenuPrint"); |
1763 } | 1768 } |
1764 } else if (id == R.id.add_to_homescreen_id) { | 1769 } else if (id == R.id.add_to_homescreen_id) { |
1765 AddToHomescreenManager addToHomescreenManager = | 1770 AddToHomescreenManager addToHomescreenManager = |
1766 new AddToHomescreenManager(this, currentTab); | 1771 new AddToHomescreenManager(this, currentTab); |
1767 addToHomescreenManager.start(); | 1772 addToHomescreenManager.start(); |
1768 RecordUserAction.record("MobileMenuAddToHomescreen"); | 1773 RecordUserAction.record("MobileMenuAddToHomescreen"); |
| 1774 } else if (id == R.id.open_webapk_id) { |
| 1775 Context context = ContextUtils.getApplicationContext(); |
| 1776 String packageName = WebApkValidator.queryWebApkPackage(context, cur
rentTab.getUrl()); |
| 1777 Intent launchIntent = |
| 1778 context.getPackageManager().getLaunchIntentForPackage(packag
eName); |
| 1779 boolean launchFailed = false; |
| 1780 if (launchIntent != null) { |
| 1781 try { |
| 1782 context.startActivity(launchIntent); |
| 1783 RecordUserAction.record("MobileMenuOpenWebApk"); |
| 1784 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_LAUN
CH_SUCCESS); |
| 1785 } catch (ActivityNotFoundException e) { |
| 1786 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_ACTI
VITY_NOT_FOUND); |
| 1787 launchFailed = true; |
| 1788 } |
| 1789 } else { |
| 1790 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_NO_LAUNC
H_INTENT); |
| 1791 launchFailed = true; |
| 1792 } |
| 1793 if (launchFailed) { |
| 1794 Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGT
H_SHORT).show(); |
| 1795 } |
1769 } else if (id == R.id.request_desktop_site_id) { | 1796 } else if (id == R.id.request_desktop_site_id) { |
1770 final boolean reloadOnChange = !currentTab.isNativePage(); | 1797 final boolean reloadOnChange = !currentTab.isNativePage(); |
1771 final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAg
ent(); | 1798 final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAg
ent(); |
1772 currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnCh
ange); | 1799 currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnCh
ange); |
1773 RecordUserAction.record("MobileMenuRequestDesktopSite"); | 1800 RecordUserAction.record("MobileMenuRequestDesktopSite"); |
1774 } else if (id == R.id.reader_mode_prefs_id) { | 1801 } else if (id == R.id.reader_mode_prefs_id) { |
1775 if (currentTab.getWebContents() != null) { | 1802 if (currentTab.getWebContents() != null) { |
1776 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened")
; | 1803 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened")
; |
1777 AlertDialog.Builder builder = | 1804 AlertDialog.Builder builder = |
1778 new AlertDialog.Builder(this, R.style.AlertDialogTheme); | 1805 new AlertDialog.Builder(this, R.style.AlertDialogTheme); |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2010 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", | 2037 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", |
2011 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); | 2038 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); |
2012 | 2039 |
2013 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { | 2040 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { |
2014 RecordHistogram.recordLinearCountHistogram( | 2041 RecordHistogram.recordLinearCountHistogram( |
2015 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp,
1, | 2042 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp,
1, |
2016 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); | 2043 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); |
2017 } | 2044 } |
2018 } | 2045 } |
2019 } | 2046 } |
OLD | NEW |