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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 import org.chromium.content_public.browser.readback_types.ReadbackResponse; | 146 import org.chromium.content_public.browser.readback_types.ReadbackResponse; |
144 import org.chromium.policy.CombinedPolicyProvider; | 147 import org.chromium.policy.CombinedPolicyProvider; |
145 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; | 148 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; |
146 import org.chromium.printing.PrintManagerDelegateImpl; | 149 import org.chromium.printing.PrintManagerDelegateImpl; |
147 import org.chromium.printing.PrintingController; | 150 import org.chromium.printing.PrintingController; |
148 import org.chromium.printing.PrintingControllerImpl; | 151 import org.chromium.printing.PrintingControllerImpl; |
149 import org.chromium.ui.base.ActivityWindowAndroid; | 152 import org.chromium.ui.base.ActivityWindowAndroid; |
150 import org.chromium.ui.base.DeviceFormFactor; | 153 import org.chromium.ui.base.DeviceFormFactor; |
151 import org.chromium.ui.base.PageTransition; | 154 import org.chromium.ui.base.PageTransition; |
152 import org.chromium.ui.base.WindowAndroid; | 155 import org.chromium.ui.base.WindowAndroid; |
| 156 import org.chromium.ui.widget.Toast; |
| 157 import org.chromium.webapk.lib.client.WebApkValidator; |
153 | 158 |
154 import java.util.ArrayList; | 159 import java.util.ArrayList; |
155 import java.util.HashSet; | 160 import java.util.HashSet; |
156 import java.util.List; | 161 import java.util.List; |
157 import java.util.Set; | 162 import java.util.Set; |
158 import java.util.concurrent.TimeUnit; | 163 import java.util.concurrent.TimeUnit; |
159 | 164 |
160 import javax.annotation.Nullable; | 165 import javax.annotation.Nullable; |
161 | 166 |
162 /** | 167 /** |
(...skipping 1625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1788 && PrefServiceBridge.getInstance().isPrintingEnabled()) { | 1793 && PrefServiceBridge.getInstance().isPrintingEnabled()) { |
1789 printingController.startPrint(new TabPrinter(currentTab), | 1794 printingController.startPrint(new TabPrinter(currentTab), |
1790 new PrintManagerDelegateImpl(this)); | 1795 new PrintManagerDelegateImpl(this)); |
1791 RecordUserAction.record("MobileMenuPrint"); | 1796 RecordUserAction.record("MobileMenuPrint"); |
1792 } | 1797 } |
1793 } else if (id == R.id.add_to_homescreen_id) { | 1798 } else if (id == R.id.add_to_homescreen_id) { |
1794 AddToHomescreenManager addToHomescreenManager = | 1799 AddToHomescreenManager addToHomescreenManager = |
1795 new AddToHomescreenManager(this, currentTab); | 1800 new AddToHomescreenManager(this, currentTab); |
1796 addToHomescreenManager.start(); | 1801 addToHomescreenManager.start(); |
1797 RecordUserAction.record("MobileMenuAddToHomescreen"); | 1802 RecordUserAction.record("MobileMenuAddToHomescreen"); |
| 1803 } else if (id == R.id.open_webapk_id) { |
| 1804 Context context = ContextUtils.getApplicationContext(); |
| 1805 String packageName = WebApkValidator.queryWebApkPackage(context, cur
rentTab.getUrl()); |
| 1806 Intent launchIntent = |
| 1807 context.getPackageManager().getLaunchIntentForPackage(packag
eName); |
| 1808 boolean launchFailed = false; |
| 1809 if (launchIntent != null) { |
| 1810 try { |
| 1811 context.startActivity(launchIntent); |
| 1812 RecordUserAction.record("MobileMenuOpenWebApk"); |
| 1813 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_LAUN
CH_SUCCESS); |
| 1814 } catch (ActivityNotFoundException e) { |
| 1815 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_ACTI
VITY_NOT_FOUND); |
| 1816 launchFailed = true; |
| 1817 } |
| 1818 } else { |
| 1819 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_NO_LAUNC
H_INTENT); |
| 1820 launchFailed = true; |
| 1821 } |
| 1822 if (launchFailed) { |
| 1823 Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGT
H_SHORT).show(); |
| 1824 } |
1798 } else if (id == R.id.request_desktop_site_id) { | 1825 } else if (id == R.id.request_desktop_site_id) { |
1799 final boolean reloadOnChange = !currentTab.isNativePage(); | 1826 final boolean reloadOnChange = !currentTab.isNativePage(); |
1800 final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAg
ent(); | 1827 final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAg
ent(); |
1801 currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnCh
ange); | 1828 currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnCh
ange); |
1802 RecordUserAction.record("MobileMenuRequestDesktopSite"); | 1829 RecordUserAction.record("MobileMenuRequestDesktopSite"); |
1803 } else if (id == R.id.reader_mode_prefs_id) { | 1830 } else if (id == R.id.reader_mode_prefs_id) { |
1804 if (currentTab.getWebContents() != null) { | 1831 if (currentTab.getWebContents() != null) { |
1805 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened")
; | 1832 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened")
; |
1806 AlertDialog.Builder builder = | 1833 AlertDialog.Builder builder = |
1807 new AlertDialog.Builder(this, R.style.AlertDialogTheme); | 1834 new AlertDialog.Builder(this, R.style.AlertDialogTheme); |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2039 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", | 2066 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", |
2040 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); | 2067 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); |
2041 | 2068 |
2042 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { | 2069 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { |
2043 RecordHistogram.recordLinearCountHistogram( | 2070 RecordHistogram.recordLinearCountHistogram( |
2044 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp,
1, | 2071 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp,
1, |
2045 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); | 2072 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); |
2046 } | 2073 } |
2047 } | 2074 } |
2048 } | 2075 } |
OLD | NEW |