Chromium Code Reviews| 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; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 import android.view.Window; | 34 import android.view.Window; |
| 35 import android.view.WindowManager; | 35 import android.view.WindowManager; |
| 36 import android.view.accessibility.AccessibilityManager; | 36 import android.view.accessibility.AccessibilityManager; |
| 37 import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeL istener; | 37 import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeL istener; |
| 38 import android.view.accessibility.AccessibilityManager.TouchExplorationStateChan geListener; | 38 import android.view.accessibility.AccessibilityManager.TouchExplorationStateChan geListener; |
| 39 | 39 |
| 40 import org.chromium.base.ActivityState; | 40 import org.chromium.base.ActivityState; |
| 41 import org.chromium.base.ApiCompatibilityUtils; | 41 import org.chromium.base.ApiCompatibilityUtils; |
| 42 import org.chromium.base.ApplicationStatus; | 42 import org.chromium.base.ApplicationStatus; |
| 43 import org.chromium.base.BaseSwitches; | 43 import org.chromium.base.BaseSwitches; |
| 44 import org.chromium.base.Callback; | |
| 44 import org.chromium.base.CommandLine; | 45 import org.chromium.base.CommandLine; |
| 45 import org.chromium.base.SysUtils; | 46 import org.chromium.base.SysUtils; |
| 46 import org.chromium.base.TraceEvent; | 47 import org.chromium.base.TraceEvent; |
| 47 import org.chromium.base.VisibleForTesting; | 48 import org.chromium.base.VisibleForTesting; |
| 48 import org.chromium.base.metrics.RecordHistogram; | 49 import org.chromium.base.metrics.RecordHistogram; |
| 49 import org.chromium.base.metrics.RecordUserAction; | 50 import org.chromium.base.metrics.RecordUserAction; |
| 50 import org.chromium.chrome.R; | 51 import org.chromium.chrome.R; |
| 51 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; | 52 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; |
| 52 import org.chromium.chrome.browser.IntentHandler.TabOpenType; | 53 import org.chromium.chrome.browser.IntentHandler.TabOpenType; |
| 53 import org.chromium.chrome.browser.appmenu.AppMenu; | 54 import org.chromium.chrome.browser.appmenu.AppMenu; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 77 import org.chromium.chrome.browser.help.HelpAndFeedback; | 78 import org.chromium.chrome.browser.help.HelpAndFeedback; |
| 78 import org.chromium.chrome.browser.infobar.InfoBarContainer; | 79 import org.chromium.chrome.browser.infobar.InfoBarContainer; |
| 79 import org.chromium.chrome.browser.init.AsyncInitializationActivity; | 80 import org.chromium.chrome.browser.init.AsyncInitializationActivity; |
| 80 import org.chromium.chrome.browser.metrics.LaunchMetrics; | 81 import org.chromium.chrome.browser.metrics.LaunchMetrics; |
| 81 import org.chromium.chrome.browser.metrics.StartupMetrics; | 82 import org.chromium.chrome.browser.metrics.StartupMetrics; |
| 82 import org.chromium.chrome.browser.metrics.UmaSessionStats; | 83 import org.chromium.chrome.browser.metrics.UmaSessionStats; |
| 83 import org.chromium.chrome.browser.metrics.UmaUtils; | 84 import org.chromium.chrome.browser.metrics.UmaUtils; |
| 84 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; | 85 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; |
| 85 import org.chromium.chrome.browser.nfc.BeamController; | 86 import org.chromium.chrome.browser.nfc.BeamController; |
| 86 import org.chromium.chrome.browser.nfc.BeamProvider; | 87 import org.chromium.chrome.browser.nfc.BeamProvider; |
| 88 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; | |
| 89 import org.chromium.chrome.browser.offlinepages.OfflinePageItem; | |
| 87 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; | 90 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; |
| 88 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; | 91 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; |
| 89 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup; | 92 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup; |
| 90 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza tions; | 93 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza tions; |
| 91 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; | 94 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; |
| 92 import org.chromium.chrome.browser.preferences.PrefServiceBridge; | 95 import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
| 93 import org.chromium.chrome.browser.preferences.PreferencesLauncher; | 96 import org.chromium.chrome.browser.preferences.PreferencesLauncher; |
| 94 import org.chromium.chrome.browser.printing.TabPrinter; | 97 import org.chromium.chrome.browser.printing.TabPrinter; |
| 95 import org.chromium.chrome.browser.share.ShareHelper; | 98 import org.chromium.chrome.browser.share.ShareHelper; |
| 96 import org.chromium.chrome.browser.snackbar.DataUseSnackbarController; | 99 import org.chromium.chrome.browser.snackbar.DataUseSnackbarController; |
| (...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 952 * @param shareDirectly Whether it should share directly with the activity t hat was most | 955 * @param shareDirectly Whether it should share directly with the activity t hat was most |
| 953 * recently used to share. | 956 * recently used to share. |
| 954 * @param isIncognito Whether currentTab is incognito. | 957 * @param isIncognito Whether currentTab is incognito. |
| 955 */ | 958 */ |
| 956 public void onShareMenuItemSelected(final boolean shareDirectly, boolean isI ncognito) { | 959 public void onShareMenuItemSelected(final boolean shareDirectly, boolean isI ncognito) { |
| 957 final Tab currentTab = getActivityTab(); | 960 final Tab currentTab = getActivityTab(); |
| 958 if (currentTab == null) return; | 961 if (currentTab == null) return; |
| 959 | 962 |
| 960 final Activity mainActivity = this; | 963 final Activity mainActivity = this; |
| 961 ContentBitmapCallback callback = new ContentBitmapCallback() { | 964 ContentBitmapCallback callback = new ContentBitmapCallback() { |
| 962 @Override | 965 @Override |
|
fgorski
2016/06/23 17:41:10
nit: this indentation looks weir to me. Since it i
Vivian
2016/06/27 16:56:08
Done.
| |
| 963 public void onFinishGetBitmap(Bitmap bitmap, int response) { | 966 public void onFinishGetBitmap(Bitmap bitmap, int response) { |
| 964 // Check whether this page is an offline page, and use i ts online URL if so. | 967 // Check whether this page is an offline page, and use i ts online URL if so. |
| 965 String url = currentTab.getOfflinePageOriginalUrl(); | 968 String url = currentTab.getOfflinePageOriginalUrl(); |
| 966 RecordHistogram.recordBooleanHistogram( | 969 RecordHistogram.recordBooleanHistogram( |
| 967 "OfflinePages.SharedPageWasOffline", url != null ); | 970 "OfflinePages.SharedPageWasOffline", url != null ); |
| 971 boolean offlinePageSharing = | |
| 972 (url != null && OfflinePageBridge.isPageSharingE nabled()); | |
| 968 | 973 |
| 969 // If there is no entry in the offline pages DB for this tab, use the tab's | 974 if (!offlinePageSharing) { |
| 970 // URL directly. | 975 // If there is no entry in the offline pages DB for this tab, use the |
| 971 if (url == null) url = currentTab.getUrl(); | 976 // tab's |
|
fgorski
2016/06/23 17:41:10
nit: please remove NL from the end.
Vivian
2016/06/27 16:56:08
Done.
| |
| 977 // URL directly. | |
| 978 if (url == null) url = currentTab.getUrl(); | |
| 972 | 979 |
| 973 ShareHelper.share( | 980 ShareHelper.share(shareDirectly, mainActivity, curre ntTab.getTitle(), |
| 974 shareDirectly, mainActivity, currentTab.getTitle (), url, bitmap); | 981 url, bitmap); |
| 975 if (shareDirectly) { | 982 if (shareDirectly) { |
| 976 RecordUserAction.record("MobileMenuDirectShare"); | 983 RecordUserAction.record("MobileMenuDirectShare") ; |
| 984 } else { | |
| 985 RecordUserAction.record("MobileMenuShare"); | |
| 986 } | |
| 977 } else { | 987 } else { |
| 978 RecordUserAction.record("MobileMenuShare"); | 988 // This is for experienmental feature Offline Page S haring |
|
fgorski
2016/06/23 17:41:11
nit: End sentences with a period, please.
Vivian
2016/06/27 16:56:08
Done.
| |
| 989 // If this page is an offline page, and the share th e offline page | |
| 990 // instead of url | |
|
fgorski
2016/06/23 17:41:11
ditto Re: period.
Vivian
2016/06/27 16:56:08
Done.
| |
| 991 String offlineUrl = currentTab.getUrl(); | |
|
fgorski
2016/06/23 17:41:11
how do you know the URL is offline here?
Vivian
2016/06/27 16:56:08
It is checked in this line:
boolean offlinePageSh
| |
| 992 OfflinePageBridge offlinePageBridge = | |
| 993 OfflinePageBridge.getForProfile(currentTab.g etProfile()); | |
| 994 | |
| 995 offlinePageBridge.getPageByOfflineUrl( | |
|
fgorski
2016/06/23 17:41:10
Perhaps this whole code could be moved outside of
Vivian
2016/06/27 16:56:08
Done. This part is moved to OfflinePageUtils.
| |
| 996 offlineUrl, new Callback<OfflinePageItem>() { | |
| 997 @Override | |
| 998 public void onResult(OfflinePageItem ite m) { | |
| 999 if (item != null) { | |
| 1000 String offlineFilePath = item.ge tFilePath(); | |
| 1001 Context mContext = getApplicatio nContext(); | |
| 1002 ShareHelper.shareOfflinePage(sha reDirectly, | |
| 1003 mainActivity, currentTab .getTitle(), | |
| 1004 offlineFilePath, mContex t); | |
| 1005 } | |
| 1006 } | |
| 1007 }); | |
| 979 } | 1008 } |
| 980 } | 1009 } |
| 981 }; | 1010 }; |
| 982 if (isIncognito || currentTab.getWebContents() == null) { | 1011 if (isIncognito || currentTab.getWebContents() == null) { |
| 983 callback.onFinishGetBitmap(null, ReadbackResponse.SURFACE_UNAVAILABL E); | 1012 callback.onFinishGetBitmap(null, ReadbackResponse.SURFACE_UNAVAILABL E); |
| 984 } else { | 1013 } else { |
| 985 currentTab.getWebContents().getContentBitmapAsync( | 1014 currentTab.getWebContents().getContentBitmapAsync( |
| 986 Bitmap.Config.ARGB_8888, 1.f, EMPTY_RECT, callback); | 1015 Bitmap.Config.ARGB_8888, 1.f, EMPTY_RECT, callback); |
| 987 } | 1016 } |
| 988 } | 1017 } |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1742 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", | 1771 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", |
| 1743 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); | 1772 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); |
| 1744 | 1773 |
| 1745 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { | 1774 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { |
| 1746 RecordHistogram.recordLinearCountHistogram( | 1775 RecordHistogram.recordLinearCountHistogram( |
| 1747 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1, | 1776 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1, |
| 1748 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); | 1777 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); |
| 1749 } | 1778 } |
| 1750 } | 1779 } |
| 1751 } | 1780 } |
| OLD | NEW |