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

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, 10 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698