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

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

Issue 2081153005: [Offline Page] Offline page sharing implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge CL Created 4 years, 6 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;
(...skipping 23 matching lines...) Expand all
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698