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

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

Issue 2245733004: Serve offline page for online URL on disconnected or bad networks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix junit test Created 4 years, 3 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 import org.chromium.chrome.browser.infobar.InfoBarContainer; 82 import org.chromium.chrome.browser.infobar.InfoBarContainer;
83 import org.chromium.chrome.browser.init.AsyncInitializationActivity; 83 import org.chromium.chrome.browser.init.AsyncInitializationActivity;
84 import org.chromium.chrome.browser.metrics.LaunchMetrics; 84 import org.chromium.chrome.browser.metrics.LaunchMetrics;
85 import org.chromium.chrome.browser.metrics.StartupMetrics; 85 import org.chromium.chrome.browser.metrics.StartupMetrics;
86 import org.chromium.chrome.browser.metrics.UmaSessionStats; 86 import org.chromium.chrome.browser.metrics.UmaSessionStats;
87 import org.chromium.chrome.browser.metrics.UmaUtils; 87 import org.chromium.chrome.browser.metrics.UmaUtils;
88 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; 88 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
89 import org.chromium.chrome.browser.nfc.BeamController; 89 import org.chromium.chrome.browser.nfc.BeamController;
90 import org.chromium.chrome.browser.nfc.BeamProvider; 90 import org.chromium.chrome.browser.nfc.BeamProvider;
91 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; 91 import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
92 import org.chromium.chrome.browser.offlinepages.OfflinePageItem;
93 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; 92 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
94 import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBri dge; 93 import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBri dge;
95 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; 94 import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
96 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup; 95 import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup;
97 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza tions; 96 import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza tions;
98 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; 97 import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
99 import org.chromium.chrome.browser.preferences.PrefServiceBridge; 98 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
100 import org.chromium.chrome.browser.preferences.PreferencesLauncher; 99 import org.chromium.chrome.browser.preferences.PreferencesLauncher;
101 import org.chromium.chrome.browser.printing.PrintShareActivity; 100 import org.chromium.chrome.browser.printing.PrintShareActivity;
102 import org.chromium.chrome.browser.printing.TabPrinter; 101 import org.chromium.chrome.browser.printing.TabPrinter;
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 1017
1019 triggerShare(currentTab, shareDirectly, isIncognito); 1018 triggerShare(currentTab, shareDirectly, isIncognito);
1020 } 1019 }
1021 1020
1022 private void triggerShare( 1021 private void triggerShare(
1023 final Tab currentTab, final boolean shareDirectly, boolean isIncogni to) { 1022 final Tab currentTab, final boolean shareDirectly, boolean isIncogni to) {
1024 final Activity mainActivity = this; 1023 final Activity mainActivity = this;
1025 ContentBitmapCallback callback = new ContentBitmapCallback() { 1024 ContentBitmapCallback callback = new ContentBitmapCallback() {
1026 @Override 1025 @Override
1027 public void onFinishGetBitmap(Bitmap bitmap, int response) { 1026 public void onFinishGetBitmap(Bitmap bitmap, int response) {
1028 // Check whether this page is an offline page, and use its onlin e URL if so. 1027 boolean isOfflinePage = currentTab.isOfflinePage();
1029 OfflinePageItem offlinePage = currentTab.getOfflinePage();
1030 String onlineUrl = currentTab.getOriginalUrl();
1031 RecordHistogram.recordBooleanHistogram( 1028 RecordHistogram.recordBooleanHistogram(
1032 "OfflinePages.SharedPageWasOffline", offlinePage != null ); 1029 "OfflinePages.SharedPageWasOffline", isOfflinePage);
1033 boolean canShareOfflinePage = OfflinePageBridge.isPageSharingEna bled(); 1030 boolean canShareOfflinePage = OfflinePageBridge.isPageSharingEna bled();
1034 1031
1035 if (canShareOfflinePage) { 1032 if (canShareOfflinePage) {
1036 // Share the offline page instead of the URL. 1033 // Share the offline page instead of the URL.
1037 boolean isOfflinePage = (offlinePage != null);
1038 OfflinePageUtils.shareOfflinePage(shareDirectly, true, mainA ctivity, null, 1034 OfflinePageUtils.shareOfflinePage(shareDirectly, true, mainA ctivity, null,
1039 onlineUrl, bitmap, null, currentTab, isOfflinePage); 1035 currentTab.getUrl(), bitmap, null, currentTab, isOff linePage);
1040 } else { 1036 } else {
1041 ShareHelper.share(shareDirectly, true, mainActivity, current Tab.getTitle(), 1037 ShareHelper.share(shareDirectly, true, mainActivity, current Tab.getTitle(),
1042 null, onlineUrl, null, bitmap, null); 1038 null, currentTab.getUrl(), null, bitmap, null);
1043 if (shareDirectly) { 1039 if (shareDirectly) {
1044 RecordUserAction.record("MobileMenuDirectShare"); 1040 RecordUserAction.record("MobileMenuDirectShare");
1045 } else { 1041 } else {
1046 RecordUserAction.record("MobileMenuShare"); 1042 RecordUserAction.record("MobileMenuShare");
1047 } 1043 }
1048 } 1044 }
1049 } 1045 }
1050 }; 1046 };
1051 if (isIncognito || currentTab.getWebContents() == null) { 1047 if (isIncognito || currentTab.getWebContents() == null) {
1052 callback.onFinishGetBitmap(null, ReadbackResponse.SURFACE_UNAVAILABL E); 1048 callback.onFinishGetBitmap(null, ReadbackResponse.SURFACE_UNAVAILABL E);
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
1828 "Android.MultiWindowMode.IsTabletScreenWidthBelow600", 1824 "Android.MultiWindowMode.IsTabletScreenWidthBelow600",
1829 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP); 1825 mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP);
1830 1826
1831 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) { 1827 if (mScreenWidthDp < DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP) {
1832 RecordHistogram.recordLinearCountHistogram( 1828 RecordHistogram.recordLinearCountHistogram(
1833 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1, 1829 "Android.MultiWindowMode.TabletScreenWidth", mScreenWidthDp, 1,
1834 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50); 1830 DeviceFormFactor.MINIMUM_TABLET_WIDTH_DP, 50);
1835 } 1831 }
1836 } 1832 }
1837 } 1833 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698