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

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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 import org.chromium.content_public.browser.readback_types.ReadbackResponse; 145 import org.chromium.content_public.browser.readback_types.ReadbackResponse;
143 import org.chromium.policy.CombinedPolicyProvider; 146 import org.chromium.policy.CombinedPolicyProvider;
144 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; 147 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener;
145 import org.chromium.printing.PrintManagerDelegateImpl; 148 import org.chromium.printing.PrintManagerDelegateImpl;
146 import org.chromium.printing.PrintingController; 149 import org.chromium.printing.PrintingController;
147 import org.chromium.printing.PrintingControllerImpl; 150 import org.chromium.printing.PrintingControllerImpl;
148 import org.chromium.ui.base.ActivityWindowAndroid; 151 import org.chromium.ui.base.ActivityWindowAndroid;
149 import org.chromium.ui.base.DeviceFormFactor; 152 import org.chromium.ui.base.DeviceFormFactor;
150 import org.chromium.ui.base.PageTransition; 153 import org.chromium.ui.base.PageTransition;
151 import org.chromium.ui.base.WindowAndroid; 154 import org.chromium.ui.base.WindowAndroid;
155 import org.chromium.ui.widget.Toast;
156 import org.chromium.webapk.lib.client.WebApkValidator;
152 157
153 import java.util.ArrayList; 158 import java.util.ArrayList;
154 import java.util.HashSet; 159 import java.util.HashSet;
155 import java.util.List; 160 import java.util.List;
156 import java.util.Set; 161 import java.util.Set;
157 import java.util.concurrent.TimeUnit; 162 import java.util.concurrent.TimeUnit;
158 163
159 import javax.annotation.Nullable; 164 import javax.annotation.Nullable;
160 165
161 /** 166 /**
(...skipping 1607 matching lines...) Expand 10 before | Expand all | Expand 10 after
1769 && PrefServiceBridge.getInstance().isPrintingEnabled()) { 1774 && PrefServiceBridge.getInstance().isPrintingEnabled()) {
1770 printingController.startPrint(new TabPrinter(currentTab), 1775 printingController.startPrint(new TabPrinter(currentTab),
1771 new PrintManagerDelegateImpl(this)); 1776 new PrintManagerDelegateImpl(this));
1772 RecordUserAction.record("MobileMenuPrint"); 1777 RecordUserAction.record("MobileMenuPrint");
1773 } 1778 }
1774 } else if (id == R.id.add_to_homescreen_id) { 1779 } else if (id == R.id.add_to_homescreen_id) {
1775 AddToHomescreenManager addToHomescreenManager = 1780 AddToHomescreenManager addToHomescreenManager =
1776 new AddToHomescreenManager(this, currentTab); 1781 new AddToHomescreenManager(this, currentTab);
1777 addToHomescreenManager.start(); 1782 addToHomescreenManager.start();
1778 RecordUserAction.record("MobileMenuAddToHomescreen"); 1783 RecordUserAction.record("MobileMenuAddToHomescreen");
1784 } else if (id == R.id.open_webapk_id) {
1785 Context context = ContextUtils.getApplicationContext();
nyquist 2017/02/28 07:04:19 Is there a reason why you don't use |this| as the
gonzalon 2017/02/28 16:12:23 Not sure why I used the application context, we ca
1786 String packageName = WebApkValidator.queryWebApkPackage(context, cur rentTab.getUrl());
nyquist 2017/02/28 07:04:19 This ended up being a very long section of the men
gonzalon 2017/02/28 16:12:23 Sounds great, it did get quite big. Only thing I w
nyquist 2017/02/28 17:57:17 Yeah, that's totally fine.
1787 Intent launchIntent =
1788 context.getPackageManager().getLaunchIntentForPackage(packag eName);
1789 boolean launchFailed = false;
1790 if (launchIntent != null) {
1791 try {
1792 context.startActivity(launchIntent);
1793 RecordUserAction.record("MobileMenuOpenWebApk");
1794 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_LAUN CH_SUCCESS);
1795 } catch (ActivityNotFoundException e) {
1796 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_ACTI VITY_NOT_FOUND);
1797 launchFailed = true;
1798 }
1799 } else {
1800 WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_NO_LAUNC H_INTENT);
1801 launchFailed = true;
1802 }
1803 if (launchFailed) {
1804 Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGT H_SHORT).show();
1805 }
1779 } else if (id == R.id.request_desktop_site_id) { 1806 } else if (id == R.id.request_desktop_site_id) {
1780 final boolean reloadOnChange = !currentTab.isNativePage(); 1807 final boolean reloadOnChange = !currentTab.isNativePage();
1781 final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAg ent(); 1808 final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAg ent();
1782 currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnCh ange); 1809 currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnCh ange);
1783 RecordUserAction.record("MobileMenuRequestDesktopSite"); 1810 RecordUserAction.record("MobileMenuRequestDesktopSite");
1784 } else if (id == R.id.reader_mode_prefs_id) { 1811 } else if (id == R.id.reader_mode_prefs_id) {
1785 if (currentTab.getWebContents() != null) { 1812 if (currentTab.getWebContents() != null) {
1786 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened") ; 1813 RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened") ;
1787 AlertDialog.Builder builder = 1814 AlertDialog.Builder builder =
1788 new AlertDialog.Builder(this, R.style.AlertDialogTheme); 1815 new AlertDialog.Builder(this, R.style.AlertDialogTheme);
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", 2047 "Android.MultiWindowMode.IsTabletScreenWidthBelow600",
2021 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); 2048 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP);
2022 2049
2023 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { 2050 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) {
2024 RecordHistogram.recordLinearCountHistogram( 2051 RecordHistogram.recordLinearCountHistogram(
2025 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1, 2052 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1,
2026 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); 2053 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50);
2027 } 2054 }
2028 } 2055 }
2029 } 2056 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698