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

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

Issue 2707993003: [Android]: Hide add-to-homescreen app menu item when WebAPK is installed (Closed)
Patch Set: Add new state for 'Add to Homescreen' Menu item Created 3 years, 9 months 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
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;
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698