Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java |
| index a894354e732826c9dc32d136ef5ef693e4db5dee..3cb6683312cfcf93ef97833ba07d09dcdab1ccc8 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java |
| @@ -16,6 +16,7 @@ import org.chromium.base.BuildInfo; |
| import org.chromium.base.VisibleForTesting; |
| import org.chromium.chrome.R; |
| import org.chromium.chrome.browser.ChromeActivity; |
| +import org.chromium.chrome.browser.UrlConstants; |
| import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; |
| import org.chromium.chrome.browser.firstrun.FirstRunStatus; |
| import org.chromium.chrome.browser.share.ShareHelper; |
| @@ -34,13 +35,44 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat |
| private final boolean mShowShare; |
| private final boolean mIsMediaViewer; |
| + private final boolean mIsOpenedByChrome; |
| private final List<String> mMenuEntries; |
| private final Map<MenuItem, Integer> mItemToIndexMap = new HashMap<MenuItem, Integer>(); |
| - private final AsyncTask<Void, Void, String> mDefaultBrowserFetcher; |
| private boolean mIsCustomEntryAdded; |
| + private class DefaultBrowserFetcher extends AsyncTask<String, Void, String> { |
|
Ted C
2016/12/28 00:53:47
Hmm...I'm pretty sure you don't want this string l
ltian
2016/12/29 16:31:56
Done.
|
| + @Override |
| + protected String doInBackground(String... params) { |
| + String packageLabel = null; |
| + if (mIsOpenedByChrome) { |
| + // If the Custom Tab was created by Chrome, Chrome should open it. |
| + packageLabel = BuildInfo.getPackageLabel(mActivity); |
| + } else { |
| + // Check if there is a default handler for the Intent. If so, grab its label. |
| + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(SAMPLE_URL)); |
| + PackageManager pm = mActivity.getPackageManager(); |
| + ResolveInfo info = pm.resolveActivity(intent, 0); |
| + if (info != null && info.match != 0) { |
| + packageLabel = info.loadLabel(pm).toString(); |
| + } |
| + } |
| + |
| + if (params != null && params.length > 0 && params[0].equals("menu")) { |
| + return packageLabel == null |
| + ? mActivity.getString(R.string.menu_open_in_product_default) |
| + : mActivity.getString(R.string.menu_open_in_product, packageLabel); |
| + } else if (params != null && params.length > 0 && params[0].equals("bookmark")) { |
| + return packageLabel == null |
| + ? null |
| + : mActivity.getString(R.string.bookmark_page_saved, packageLabel); |
| + } else { |
| + return null; |
| + } |
| + } |
| + } |
| + |
| /** |
| * Creates an {@link CustomTabAppMenuPropertiesDelegate} instance. |
| */ |
| @@ -51,29 +83,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat |
| mMenuEntries = menuEntries; |
| mShowShare = showShare; |
| mIsMediaViewer = isMediaViewer; |
| - |
| - mDefaultBrowserFetcher = new AsyncTask<Void, Void, String>() { |
| - @Override |
| - protected String doInBackground(Void... params) { |
| - String packageLabel = null; |
| - if (isOpenedByChrome) { |
| - // If the Custom Tab was created by Chrome, Chrome should open it. |
| - packageLabel = BuildInfo.getPackageLabel(activity); |
| - } else { |
| - // Check if there is a default handler for the Intent. If so, grab its label. |
| - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(SAMPLE_URL)); |
| - PackageManager pm = activity.getPackageManager(); |
| - ResolveInfo info = pm.resolveActivity(intent, 0); |
| - if (info != null && info.match != 0) { |
| - packageLabel = info.loadLabel(pm).toString(); |
| - } |
| - } |
| - |
| - return packageLabel == null |
| - ? activity.getString(R.string.menu_open_in_product_default) |
| - : activity.getString(R.string.menu_open_in_product, packageLabel); |
| - } |
| - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); |
|
Ted C
2016/12/28 00:53:47
FWIW, by removing this, you are essentially blocki
ltian
2016/12/29 16:31:56
Done.
|
| + mIsOpenedByChrome = isOpenedByChrome; |
| } |
| @Override |
| @@ -103,11 +113,16 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat |
| openInChromeItem.setVisible(false); |
| } else { |
| try { |
| - openInChromeItem.setTitle(mDefaultBrowserFetcher.get()); |
| + openInChromeItem.setTitle( |
| + new DefaultBrowserFetcher() |
| + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "menu") |
| + .get()); |
| } catch (InterruptedException | ExecutionException e) { |
| openInChromeItem.setTitle( |
| mActivity.getString(R.string.menu_open_in_product_default)); |
| } |
| + MenuItem bookmarkMenuItem = menu.findItem(R.id.bookmark_this_page_id); |
| + updateBookmarkMenuItem(bookmarkMenuItem, currentTab); |
| } |
| if (!FirstRunStatus.getFirstRunFlowComplete()) { |
|
Ted C
2016/12/28 00:53:47
if first run hasn't been completed, can you make i
ltian
2016/12/29 16:31:56
Done.
|
| @@ -122,6 +137,18 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat |
| mItemToIndexMap.put(item, i); |
| } |
| } |
| + |
| + // Hide request desktop site on all chrome:// pages except for the NTP. Check request |
| + // desktop site if it's activated on this page. |
| + MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id); |
| + String url = currentTab.getUrl(); |
| + boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_SCHEME) |
| + || url.startsWith(UrlConstants.CHROME_NATIVE_SCHEME); |
| + requestItem.setVisible(!isChromeScheme || currentTab.isNativePage()); |
| + requestItem.setChecked(currentTab.getUseDesktopUserAgent()); |
| + requestItem.setTitleCondensed(requestItem.isChecked() |
| + ? mActivity.getString(R.string.menu_request_desktop_site_on) |
|
Ted C
2016/12/28 00:53:47
indented too much. should be 8 from the start of
ltian
2016/12/29 16:31:56
Done.
|
| + : mActivity.getString(R.string.menu_request_desktop_site_off)); |
| } |
| } |
| @@ -142,6 +169,19 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat |
| } |
| /** |
| + * @return The app-based text message displayed in the snackbar when bookmark a page. |
| + */ |
| + public String getSnackbarTextForBookmark() { |
| + try { |
| + return new DefaultBrowserFetcher() |
| + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "bookmark") |
| + .get(); |
| + } catch (InterruptedException | ExecutionException e) { |
| + return null; |
| + } |
| + } |
| + |
| + /** |
| * Get the {@link MenuItem} object associated with the given title. If multiple menu items have |
| * the same title, a random one will be returned. This method is for testing purpose _only_. |
| */ |