Commit 6172952e authored by Ian Wells's avatar Ian Wells Committed by Commit Bot

Disable offline pages features on touchless devices

Disables offline indicator, prefetching, MHTML intent handling, offline
page cache, the net error page download button, offline pages cached
data remover, auto-fetch, and intercepting HTML downloads.

Bug: 955642, 959321
Change-Id: Ia7fc981cd18e70334d2951cf3794bc0dc96b6210
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1600356
Commit-Queue: Ian Wells <iwells@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarJoshua Bell <jsbell@chromium.org>
Reviewed-by: default avatarMichael van Ouwerkerk <mvanouwerkerk@chromium.org>
Reviewed-by: default avatarXing Liu <xingliu@chromium.org>
Reviewed-by: default avatarEdward Jung (EMEA) <edwardjung@chromium.org>
Reviewed-by: default avatarCathy Li <chili@chromium.org>
Reviewed-by: default avatarJustin DeWitt <dewittj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661076}
parent 47d83ac1
...@@ -561,7 +561,7 @@ java_cpp_template("browser_build_config") { ...@@ -561,7 +561,7 @@ java_cpp_template("browser_build_config") {
package_path = "org/chromium/chrome/browser" package_path = "org/chromium/chrome/browser"
defines = [] defines = []
if (enable_offline_pages) { if (!notouch_build) {
defines += [ "_ENABLE_OFFLINE_PAGES" ] defines += [ "_ENABLE_OFFLINE_PAGES" ]
} }
} }
......
...@@ -472,6 +472,10 @@ public class IntentHandler { ...@@ -472,6 +472,10 @@ public class IntentHandler {
if (isIntentForMhtmlFileOrContent(intent) && tabOpenType == TabOpenType.OPEN_NEW_TAB if (isIntentForMhtmlFileOrContent(intent) && tabOpenType == TabOpenType.OPEN_NEW_TAB
&& referrerUrl == null && extraHeaders == null) { && referrerUrl == null && extraHeaders == null) {
// TODO(https://crbug.com/963233): should MHTML intent be handled on touchless someday?
if (!OfflinePageUtils.isEnabled()) {
return false;
}
handleMhtmlFileOrContentIntent(url, intent); handleMhtmlFileOrContentIntent(url, intent);
return true; return true;
} }
......
...@@ -227,6 +227,13 @@ public class OfflinePageUtils { ...@@ -227,6 +227,13 @@ public class OfflinePageUtils {
return sInstance; return sInstance;
} }
/**
* Returns false if offline pages features should be disabled.
*/
public static boolean isEnabled() {
return org.chromium.chrome.browser.BuildConfig.ENABLE_OFFLINE_PAGES;
}
/** /**
* Returns the number of free bytes on the storage. * Returns the number of free bytes on the storage.
*/ */
......
...@@ -64,25 +64,27 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI ...@@ -64,25 +64,27 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_SNIPPET); NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_SNIPPET);
} }
// We explicitly open an offline page only for prefetched offline pages when Data Reduction if (OfflinePageUtils.isEnabled()) {
// Proxy is enabled. For all other sections the URL is opened and it is up to Offline Pages // We explicitly open an offline page only for prefetched offline pages when Data
// whether to open its offline page (e.g. when offline). // Reduction Proxy is enabled. For all other sections the URL is opened and it is up to
if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled() // Offline Pages whether to open its offline page (e.g. when offline).
&& article.isPrefetched()) { if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()
assert article.getOfflinePageOfflineId() != null; && article.isPrefetched()) {
assert windowOpenDisposition == WindowOpenDisposition.CURRENT_TAB assert article.getOfflinePageOfflineId() != null;
|| windowOpenDisposition == WindowOpenDisposition.NEW_WINDOW assert windowOpenDisposition == WindowOpenDisposition.CURRENT_TAB
|| windowOpenDisposition == WindowOpenDisposition.NEW_BACKGROUND_TAB; || windowOpenDisposition == WindowOpenDisposition.NEW_WINDOW
OfflinePageUtils.getLoadUrlParamsForOpeningOfflineVersion(article.mUrl, || windowOpenDisposition == WindowOpenDisposition.NEW_BACKGROUND_TAB;
article.getOfflinePageOfflineId(), LaunchLocation.SUGGESTION, OfflinePageUtils.getLoadUrlParamsForOpeningOfflineVersion(article.mUrl,
(loadUrlParams) -> { article.getOfflinePageOfflineId(), LaunchLocation.SUGGESTION,
if (loadUrlParams == null) return; (loadUrlParams) -> {
// Extra headers are not read in loadUrl, but verbatim headers are. if (loadUrlParams == null) return;
loadUrlParams.setVerbatimHeaders(loadUrlParams.getExtraHeadersString()); // Extra headers are not read in loadUrl, but verbatim headers are.
openDownloadSuggestion(windowOpenDisposition, article, loadUrlParams); loadUrlParams.setVerbatimHeaders(loadUrlParams.getExtraHeadersString());
}); openDownloadSuggestion(windowOpenDisposition, article, loadUrlParams);
});
return; return;
}
} }
LoadUrlParams loadUrlParams = new LoadUrlParams(article.mUrl, PageTransition.AUTO_BOOKMARK); LoadUrlParams loadUrlParams = new LoadUrlParams(article.mUrl, PageTransition.AUTO_BOOKMARK);
......
...@@ -62,6 +62,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; ...@@ -62,6 +62,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.ntp.IncognitoNewTabPage; import org.chromium.chrome.browser.ntp.IncognitoNewTabPage;
import org.chromium.chrome.browser.ntp.NewTabPage; import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
import org.chromium.chrome.browser.omnibox.LocationBar; import org.chromium.chrome.browser.omnibox.LocationBar;
import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
...@@ -625,7 +626,8 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF ...@@ -625,7 +626,8 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF
OfflinePageBridge bridge = OfflinePageBridge.getForProfile(tab.getProfile()); OfflinePageBridge bridge = OfflinePageBridge.getForProfile(tab.getProfile());
if (bridge == null if (bridge == null
|| !bridge.isShowingDownloadButtonInErrorPage(tab.getWebContents())) { || !bridge.isShowingDownloadButtonInErrorPage(tab.getWebContents())
|| !OfflinePageUtils.isEnabled()) {
return; return;
} }
......
...@@ -23,6 +23,7 @@ import org.chromium.base.test.util.CallbackHelper; ...@@ -23,6 +23,7 @@ import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.DeviceConditions; import org.chromium.chrome.browser.DeviceConditions;
...@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.tabmodel.TabModel; ...@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelUtils; import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ChromeRestriction;
import org.chromium.chrome.test.util.ChromeTabUtils; import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
...@@ -56,6 +58,7 @@ import java.util.concurrent.atomic.AtomicReference; ...@@ -56,6 +58,7 @@ import java.util.concurrent.atomic.AtomicReference;
/** Unit tests for auto-fetch-on-net-error-page. */ /** Unit tests for auto-fetch-on-net-error-page. */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@Restriction({ChromeRestriction.RESTRICTION_TYPE_REQUIRES_TOUCH})
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
"enable-features=AutoFetchOnNetErrorPage", "disable-features=NewNetErrorPageUI"}) "enable-features=AutoFetchOnNetErrorPage", "disable-features=NewNetErrorPageUI"})
public class OfflinePageAutoFetchTest { public class OfflinePageAutoFetchTest {
......
...@@ -15,11 +15,13 @@ import org.junit.runner.RunWith; ...@@ -15,11 +15,13 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction;
import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.ServicificationBackgroundService; import org.chromium.chrome.browser.ServicificationBackgroundService;
import org.chromium.chrome.browser.offlinepages.OfflineTestUtil; import org.chromium.chrome.browser.offlinepages.OfflineTestUtil;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ChromeRestriction;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
...@@ -27,6 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean; ...@@ -27,6 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
/** Integration tests for {@link PrefetchConfiguration}. */ /** Integration tests for {@link PrefetchConfiguration}. */
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
@Restriction({ChromeRestriction.RESTRICTION_TYPE_REQUIRES_TOUCH})
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
public class PrefetchConfigurationTest { public class PrefetchConfigurationTest {
@Before @Before
......
...@@ -23,6 +23,7 @@ import org.chromium.base.test.util.CallbackHelper; ...@@ -23,6 +23,7 @@ import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf; import org.chromium.base.test.util.DisableIf;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction;
import org.chromium.base.test.util.RetryOnFailure; import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.base.test.util.UrlUtils; import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
...@@ -39,6 +40,7 @@ import org.chromium.chrome.browser.preferences.PrefServiceBridge; ...@@ -39,6 +40,7 @@ import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ChromeRestriction;
import org.chromium.components.background_task_scheduler.TaskIds; import org.chromium.components.background_task_scheduler.TaskIds;
import org.chromium.components.background_task_scheduler.TaskParameters; import org.chromium.components.background_task_scheduler.TaskParameters;
import org.chromium.components.download.NetworkStatusListenerAndroid; import org.chromium.components.download.NetworkStatusListenerAndroid;
...@@ -68,6 +70,7 @@ import java.util.concurrent.atomic.AtomicReference; ...@@ -68,6 +70,7 @@ import java.util.concurrent.atomic.AtomicReference;
* Instrumentation tests for Prefetch, using the Feed as the suggestion provider. * Instrumentation tests for Prefetch, using the Feed as the suggestion provider.
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@Restriction({ChromeRestriction.RESTRICTION_TYPE_REQUIRES_TOUCH})
@RetryOnFailure @RetryOnFailure
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class PrefetchFeedFlowTest implements WebServer.RequestHandler { public class PrefetchFeedFlowTest implements WebServer.RequestHandler {
......
...@@ -20,6 +20,7 @@ import org.chromium.base.ContextUtils; ...@@ -20,6 +20,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction;
import org.chromium.base.test.util.RetryOnFailure; import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
...@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.preferences.PrefServiceBridge; ...@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ChromeRestriction;
import org.chromium.components.background_task_scheduler.TaskIds; import org.chromium.components.background_task_scheduler.TaskIds;
import org.chromium.components.background_task_scheduler.TaskParameters; import org.chromium.components.background_task_scheduler.TaskParameters;
import org.chromium.components.download.NetworkStatusListenerAndroid; import org.chromium.components.download.NetworkStatusListenerAndroid;
...@@ -55,6 +57,7 @@ import java.util.concurrent.TimeoutException; ...@@ -55,6 +57,7 @@ import java.util.concurrent.TimeoutException;
* PrefetchFeedFlowTest. * PrefetchFeedFlowTest.
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@Restriction({ChromeRestriction.RESTRICTION_TYPE_REQUIRES_TOUCH})
@RetryOnFailure @RetryOnFailure
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class PrefetchFlowTest implements WebServer.RequestHandler { public class PrefetchFlowTest implements WebServer.RequestHandler {
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "components/offline_items_collection/core/offline_content_provider.h" #include "components/offline_items_collection/core/offline_content_provider.h"
#include "components/offline_items_collection/core/offline_item.h" #include "components/offline_items_collection/core/offline_item.h"
#include "components/offline_items_collection/core/offline_item_state.h" #include "components/offline_items_collection/core/offline_item_state.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/strong_binding.h"
#include "ui/base/l10n/time_format.h" #include "ui/base/l10n/time_format.h"
...@@ -219,7 +220,8 @@ AvailableOfflineContentProvider::AvailableOfflineContentProvider( ...@@ -219,7 +220,8 @@ AvailableOfflineContentProvider::AvailableOfflineContentProvider(
AvailableOfflineContentProvider::~AvailableOfflineContentProvider() = default; AvailableOfflineContentProvider::~AvailableOfflineContentProvider() = default;
void AvailableOfflineContentProvider::List(ListCallback callback) { void AvailableOfflineContentProvider::List(ListCallback callback) {
if (!base::FeatureList::IsEnabled(features::kNewNetErrorPageUI)) { if (!offline_pages::IsOfflinePagesEnabled() ||
!base::FeatureList::IsEnabled(features::kNewNetErrorPageUI)) {
std::move(callback).Run(true, {}); std::move(callback).Run(true, {});
return; return;
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "components/offline_items_collection/core/offline_item.h" #include "components/offline_items_collection/core/offline_item.h"
#include "components/offline_items_collection/core/offline_item_state.h" #include "components/offline_items_collection/core/offline_item_state.h"
#include "components/offline_items_collection/core/test_support/mock_offline_content_provider.h" #include "components/offline_items_collection/core/test_support/mock_offline_content_provider.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "content/public/test/test_browser_thread_bundle.h" #include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -179,7 +180,12 @@ TEST_F(AvailableOfflineContentTest, TooFewInterestingItems) { ...@@ -179,7 +180,12 @@ TEST_F(AvailableOfflineContentTest, TooFewInterestingItems) {
EXPECT_TRUE(list_visible_by_prefs); EXPECT_TRUE(list_visible_by_prefs);
} }
TEST_F(AvailableOfflineContentTest, FourInterestingItems) { #if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
#define MAYBE_FourInterestingItems DISABLED_FourInterestingItems
#else
#define MAYBE_FourInterestingItems FourInterestingItems
#endif
TEST_F(AvailableOfflineContentTest, MAYBE_FourInterestingItems) {
// We need at least 4 interesting items for anything to show up at all. // We need at least 4 interesting items for anything to show up at all.
content_provider_.SetItems({UninterestingImageItem(), VideoItem(), content_provider_.SetItems({UninterestingImageItem(), VideoItem(),
SuggestedOfflinePageItem(), AudioItem(), SuggestedOfflinePageItem(), AudioItem(),
...@@ -236,7 +242,12 @@ TEST_F(AvailableOfflineContentTest, NotEnabled) { ...@@ -236,7 +242,12 @@ TEST_F(AvailableOfflineContentTest, NotEnabled) {
EXPECT_TRUE(list_visible_by_prefs); EXPECT_TRUE(list_visible_by_prefs);
} }
TEST_F(AvailableOfflineContentTest, ListVisibilityChanges) { #if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
#define MAYBE_ListVisibilityChanges DISABLED_ListVisibilityChanges
#else
#define MAYBE_ListVisibilityChanges ListVisibilityChanges
#endif
TEST_F(AvailableOfflineContentTest, MAYBE_ListVisibilityChanges) {
// We need at least 4 interesting items for anything to show up at all. // We need at least 4 interesting items for anything to show up at all.
content_provider_.SetItems({UninterestingImageItem(), VideoItem(), content_provider_.SetItems({UninterestingImageItem(), VideoItem(),
SuggestedOfflinePageItem(), AudioItem(), SuggestedOfflinePageItem(), AudioItem(),
......
...@@ -950,7 +950,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( ...@@ -950,7 +950,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
// For now we're considering offline pages as cache, so if we're removing // For now we're considering offline pages as cache, so if we're removing
// cache we should remove offline pages as well. // cache we should remove offline pages as well.
if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE)) { if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_CACHE) &&
offline_pages::IsOfflinePagesEnabled()) {
offline_pages::OfflinePageModelFactory::GetForBrowserContext(profile_) offline_pages::OfflinePageModelFactory::GetForBrowserContext(profile_)
->DeleteCachedPagesByURLPredicate( ->DeleteCachedPagesByURLPredicate(
filter, filter,
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/sequenced_task_runner_handle.h"
#include "chrome/browser/offline_pages/offline_page_utils.h" #include "chrome/browser/offline_pages/offline_page_utils.h"
#include "chrome/browser/renderer_host/chrome_navigation_ui_data.h" #include "chrome/browser/renderer_host/chrome_navigation_ui_data.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "components/offline_pages/core/offline_page_item.h" #include "components/offline_pages/core/offline_page_item.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -45,6 +46,9 @@ net::RedirectInfo CreateRedirectInfo(const GURL& redirected_url, ...@@ -45,6 +46,9 @@ net::RedirectInfo CreateRedirectInfo(const GURL& redirected_url,
} }
bool ShouldCreateLoader(const network::ResourceRequest& resource_request) { bool ShouldCreateLoader(const network::ResourceRequest& resource_request) {
if (!IsOfflinePagesEnabled())
return false;
// Ignore the requests not for the main frame. // Ignore the requests not for the main frame.
if (resource_request.resource_type != if (resource_request.resource_type !=
static_cast<int>(content::ResourceType::kMainFrame)) static_cast<int>(content::ResourceType::kMainFrame))
......
...@@ -333,6 +333,9 @@ void OfflinePageUtils::ScheduleDownload(content::WebContents* web_contents, ...@@ -333,6 +333,9 @@ void OfflinePageUtils::ScheduleDownload(content::WebContents* web_contents,
bool OfflinePageUtils::CanDownloadAsOfflinePage( bool OfflinePageUtils::CanDownloadAsOfflinePage(
const GURL& url, const GURL& url,
const std::string& contents_mime_type) { const std::string& contents_mime_type) {
if (!IsOfflinePagesEnabled())
return false;
return url.SchemeIsHTTPOrHTTPS() && return url.SchemeIsHTTPOrHTTPS() &&
(net::MatchesMimeType(contents_mime_type, "text/html") || (net::MatchesMimeType(contents_mime_type, "text/html") ||
net::MatchesMimeType(contents_mime_type, "application/xhtml+xml")); net::MatchesMimeType(contents_mime_type, "application/xhtml+xml"));
......
...@@ -350,7 +350,12 @@ TEST_F(OfflinePageUtilsTest, CheckDuplicateDownloads) { ...@@ -350,7 +350,12 @@ TEST_F(OfflinePageUtilsTest, CheckDuplicateDownloads) {
EXPECT_EQ(OfflinePageUtils::DuplicateCheckResult::NOT_FOUND, result); EXPECT_EQ(OfflinePageUtils::DuplicateCheckResult::NOT_FOUND, result);
} }
TEST_F(OfflinePageUtilsTest, ScheduleDownload) { #if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
#define MAYBE_ScheduleDownload DISABLED_ScheduleDownload
#else
#define MAYBE_ScheduleDownload ScheduleDownload
#endif
TEST_F(OfflinePageUtilsTest, MAYBE_ScheduleDownload) {
// Pre-check. // Pre-check.
ASSERT_EQ(0, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage1Url)); ASSERT_EQ(0, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage1Url));
ASSERT_EQ(1, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage3Url)); ASSERT_EQ(1, FindRequestByNamespaceAndURL(kDownloadNamespace, kTestPage3Url));
......
include_rules = [ include_rules = [
"+components/error_page/renderer", "+components/error_page/renderer",
"+components/offline_pages/core",
"+components/security_interstitials/core", "+components/security_interstitials/core",
"+components/security_interstitials/core/common/interfaces", "+components/security_interstitials/core/common/interfaces",
"+third_party/zlib/google", "+third_party/zlib/google",
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "components/error_page/common/localized_error.h" #include "components/error_page/common/localized_error.h"
#include "components/error_page/common/net_error_info.h" #include "components/error_page/common/net_error_info.h"
#include "components/grit/components_resources.h" #include "components/grit/components_resources.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "components/security_interstitials/core/common/interfaces/interstitial_commands.mojom.h" #include "components/security_interstitials/core/common/interfaces/interstitial_commands.mojom.h"
#include "content/public/common/content_client.h" #include "content/public/common/content_client.h"
#include "content/public/common/content_features.h" #include "content/public/common/content_features.h"
...@@ -99,7 +100,8 @@ NetErrorHelperCore::FrameType GetFrameType(RenderFrame* render_frame) { ...@@ -99,7 +100,8 @@ NetErrorHelperCore::FrameType GetFrameType(RenderFrame* render_frame) {
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
bool IsOfflineContentOnNetErrorFeatureEnabled() { bool IsOfflineContentOnNetErrorFeatureEnabled() {
return base::FeatureList::IsEnabled(features::kNewNetErrorPageUI); return offline_pages::IsOfflinePagesEnabled() &&
base::FeatureList::IsEnabled(features::kNewNetErrorPageUI);
} }
#else // OS_ANDROID #else // OS_ANDROID
bool IsOfflineContentOnNetErrorFeatureEnabled() { bool IsOfflineContentOnNetErrorFeatureEnabled() {
...@@ -110,9 +112,10 @@ bool IsOfflineContentOnNetErrorFeatureEnabled() { ...@@ -110,9 +112,10 @@ bool IsOfflineContentOnNetErrorFeatureEnabled() {
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
bool IsAutoFetchFeatureEnabled() { bool IsAutoFetchFeatureEnabled() {
// This feature is incompatible with OfflineContentOnNetError, so don't allow // This feature is incompatible with OfflineContentOnNetError, so don't allow
// both. // both. Disabled for touchless builds.
return !IsOfflineContentOnNetErrorFeatureEnabled() && return !IsOfflineContentOnNetErrorFeatureEnabled() &&
base::FeatureList::IsEnabled(features::kAutoFetchOnNetErrorPage); base::FeatureList::IsEnabled(features::kAutoFetchOnNetErrorPage) &&
offline_pages::IsOfflinePagesEnabled();
} }
#else // OS_ANDROID #else // OS_ANDROID
bool IsAutoFetchFeatureEnabled() { bool IsAutoFetchFeatureEnabled() {
......
...@@ -3091,9 +3091,7 @@ test("unit_tests") { ...@@ -3091,9 +3091,7 @@ test("unit_tests") {
# Pixeltests only support win. # Pixeltests only support win.
if (is_win) { if (is_win) {
sources += [ sources += [ "../test/pixel/skia_gold_pixel_diff_unittest.cc" ]
"../test/pixel/skia_gold_pixel_diff_unittest.cc",
]
} }
if (!is_android) { if (!is_android) {
...@@ -3275,12 +3273,10 @@ test("unit_tests") { ...@@ -3275,12 +3273,10 @@ test("unit_tests") {
"../browser/offline_pages/background_loader_offliner_unittest.cc", "../browser/offline_pages/background_loader_offliner_unittest.cc",
"../browser/offline_pages/download_archive_manager_unittest.cc", "../browser/offline_pages/download_archive_manager_unittest.cc",
"../browser/offline_pages/offline_page_mhtml_archiver_unittest.cc", "../browser/offline_pages/offline_page_mhtml_archiver_unittest.cc",
"../browser/offline_pages/offline_page_request_handler_unittest.cc",
"../browser/offline_pages/offline_page_tab_helper_unittest.cc", "../browser/offline_pages/offline_page_tab_helper_unittest.cc",
"../browser/offline_pages/offline_page_utils_unittest.cc", "../browser/offline_pages/offline_page_utils_unittest.cc",
"../browser/offline_pages/prefetch/offline_metrics_collector_impl_unittest.cc", "../browser/offline_pages/prefetch/offline_metrics_collector_impl_unittest.cc",
"../browser/offline_pages/prefetch/prefetch_background_task_handler_impl_unittest.cc", "../browser/offline_pages/prefetch/prefetch_background_task_handler_impl_unittest.cc",
"../browser/offline_pages/prefetch/prefetch_instance_id_proxy_unittest.cc",
"../browser/offline_pages/prefetch/prefetched_pages_notifier_unittest.cc", "../browser/offline_pages/prefetch/prefetched_pages_notifier_unittest.cc",
"../browser/offline_pages/prefetch/thumbnail_fetcher_impl_unittest.cc", "../browser/offline_pages/prefetch/thumbnail_fetcher_impl_unittest.cc",
"../browser/offline_pages/recent_tab_helper_unittest.cc", "../browser/offline_pages/recent_tab_helper_unittest.cc",
...@@ -3297,6 +3293,14 @@ test("unit_tests") { ...@@ -3297,6 +3293,14 @@ test("unit_tests") {
"//components/offline_pages/core/background:test_support", "//components/offline_pages/core/background:test_support",
"//components/offline_pages/core/prefetch:test_support", "//components/offline_pages/core/prefetch:test_support",
] ]
if (defined(notouch_build) && notouch_build) {
defines += [ "DISABLE_OFFLINE_PAGES_TOUCHLESS" ]
} else {
sources += [
"../browser/offline_pages/offline_page_request_handler_unittest.cc",
"../browser/offline_pages/prefetch/prefetch_instance_id_proxy_unittest.cc",
]
}
} }
if (enable_feed_in_chrome) { if (enable_feed_in_chrome) {
...@@ -6073,17 +6077,19 @@ if (is_win) { ...@@ -6073,17 +6077,19 @@ if (is_win) {
"pixel/demo/skia_gold_demo_pixeltest.cc", "pixel/demo/skia_gold_demo_pixeltest.cc",
] ]
configs += [ "//build/config:precompiled_headers" ] configs += [ "//build/config:precompiled_headers" ]
defines = [ defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
"HAS_OUT_OF_PROC_TEST_RUNNER",
]
deps = [ deps = [
":test_support",
":browser_tests_runner", ":browser_tests_runner",
":test_support",
] ]
if (is_win) { if (is_win) {
data = [ "//tools/skia_goldctl/goldctl.exe" ] data = [
"//tools/skia_goldctl/goldctl.exe",
]
} else { } else {
data = [ "//tools/skia_goldctl/goldctl" ] data = [
"//tools/skia_goldctl/goldctl",
]
} }
} }
} }
......
...@@ -22,6 +22,7 @@ import org.chromium.base.test.BaseTestResult.PreTestHook; ...@@ -22,6 +22,7 @@ import org.chromium.base.test.BaseTestResult.PreTestHook;
import org.chromium.base.test.util.RestrictionSkipCheck; import org.chromium.base.test.util.RestrictionSkipCheck;
import org.chromium.base.test.util.SkipCheck; import org.chromium.base.test.util.SkipCheck;
import org.chromium.chrome.browser.ChromeVersionInfo; import org.chromium.chrome.browser.ChromeVersionInfo;
import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.test.util.ChromeRestriction; import org.chromium.chrome.test.util.ChromeRestriction;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.content_public.browser.test.ContentJUnit4ClassRunner; import org.chromium.content_public.browser.test.ContentJUnit4ClassRunner;
...@@ -207,6 +208,9 @@ public class ChromeJUnit4ClassRunner extends ContentJUnit4ClassRunner { ...@@ -207,6 +208,9 @@ public class ChromeJUnit4ClassRunner extends ContentJUnit4ClassRunner {
restriction, ChromeRestriction.RESTRICTION_TYPE_VR_SETTINGS_SERVICE)) { restriction, ChromeRestriction.RESTRICTION_TYPE_VR_SETTINGS_SERVICE)) {
return !isVrSettingsServiceEnabled(); return !isVrSettingsServiceEnabled();
} }
if (TextUtils.equals(restriction, ChromeRestriction.RESTRICTION_TYPE_REQUIRES_TOUCH)) {
return FeatureUtilities.isNoTouchModeEnabled();
}
return false; return false;
} }
} }
......
...@@ -32,4 +32,6 @@ public final class ChromeRestriction { ...@@ -32,4 +32,6 @@ public final class ChromeRestriction {
public static final String RESTRICTION_TYPE_SVR = "Smartphone_VR"; public static final String RESTRICTION_TYPE_SVR = "Smartphone_VR";
/** Specifies the test is only valid if the VR settings service is enabled */ /** Specifies the test is only valid if the VR settings service is enabled */
public static final String RESTRICTION_TYPE_VR_SETTINGS_SERVICE = "VR_Settings_Service"; public static final String RESTRICTION_TYPE_VR_SETTINGS_SERVICE = "VR_Settings_Service";
/** Specifies the test is not valid on touchless devices. */
public static final String RESTRICTION_TYPE_REQUIRES_TOUCH = "Not_Touchless";
} }
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "components/error_page/common/error_page_params.h" #include "components/error_page/common/error_page_params.h"
#include "components/error_page/common/error_page_switches.h" #include "components/error_page/common/error_page_switches.h"
#include "components/error_page/common/net_error_info.h" #include "components/error_page/common/net_error_info.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "components/strings/grit/components_chromium_strings.h" #include "components/strings/grit/components_chromium_strings.h"
#include "components/strings/grit/components_strings.h" #include "components/strings/grit/components_strings.h"
#include "components/url_formatter/url_formatter.h" #include "components/url_formatter/url_formatter.h"
...@@ -1041,7 +1042,7 @@ LocalizedError::PageState LocalizedError::GetPageState( ...@@ -1041,7 +1042,7 @@ LocalizedError::PageState LocalizedError::GetPageState(
if (!is_post && !result.reload_button_shown && !is_incognito && if (!is_post && !result.reload_button_shown && !is_incognito &&
failed_url.is_valid() && failed_url.SchemeIsHTTPOrHTTPS() && failed_url.is_valid() && failed_url.SchemeIsHTTPOrHTTPS() &&
IsOfflineError(error_domain, error_code)) { IsOfflineError(error_domain, error_code)) {
if (!auto_fetch_feature_enabled) { if (!auto_fetch_feature_enabled && offline_pages::IsOfflinePagesEnabled()) {
result.download_button_shown = true; result.download_button_shown = true;
result.strings.SetPath({"downloadButton", "msg"}, result.strings.SetPath({"downloadButton", "msg"},
base::Value(l10n_util::GetStringUTF16( base::Value(l10n_util::GetStringUTF16(
......
...@@ -142,6 +142,11 @@ static_library("switches") { ...@@ -142,6 +142,11 @@ static_library("switches") {
"//base", "//base",
"//components/version_info", "//components/version_info",
] ]
defines = []
if (defined(notouch_build) && notouch_build) {
defines += [ "DISABLE_OFFLINE_PAGES_TOUCHLESS" ]
}
} }
source_set("unit_tests") { source_set("unit_tests") {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/stl_util.h" #include "base/stl_util.h"
#include "components/offline_pages/core/client_namespace_constants.h" #include "components/offline_pages/core/client_namespace_constants.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
using LifetimeType = offline_pages::LifetimePolicy::LifetimeType; using LifetimeType = offline_pages::LifetimePolicy::LifetimeType;
...@@ -213,7 +214,7 @@ TEST_F(ClientPolicyControllerTest, CheckSuggestedArticlesDefined) { ...@@ -213,7 +214,7 @@ TEST_F(ClientPolicyControllerTest, CheckSuggestedArticlesDefined) {
EXPECT_TRUE(isTemporary(policy)); EXPECT_TRUE(isTemporary(policy));
EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kSuggestedArticlesNamespace)); EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kSuggestedArticlesNamespace));
ExpectRemovedOnCacheReset(kSuggestedArticlesNamespace, true); ExpectRemovedOnCacheReset(kSuggestedArticlesNamespace, true);
ExpectDownloadSupport(kSuggestedArticlesNamespace, true); ExpectDownloadSupport(kSuggestedArticlesNamespace, IsOfflinePagesEnabled());
ExpectUserRequestedDownloadSupport(kSuggestedArticlesNamespace, false); ExpectUserRequestedDownloadSupport(kSuggestedArticlesNamespace, false);
ExpectRecentTab(kSuggestedArticlesNamespace, false); ExpectRecentTab(kSuggestedArticlesNamespace, false);
ExpectRestrictedToTabFromClientId(kSuggestedArticlesNamespace, false); ExpectRestrictedToTabFromClientId(kSuggestedArticlesNamespace, false);
......
...@@ -83,7 +83,8 @@ bool IsOfflinePagesLivePageSharingEnabled() { ...@@ -83,7 +83,8 @@ bool IsOfflinePagesLivePageSharingEnabled() {
} }
bool IsPrefetchingOfflinePagesEnabled() { bool IsPrefetchingOfflinePagesEnabled() {
return base::FeatureList::IsEnabled(kPrefetchingOfflinePagesFeature); return IsOfflinePagesEnabled() &&
base::FeatureList::IsEnabled(kPrefetchingOfflinePagesFeature);
} }
bool IsOfflinePagesLoadSignalCollectingEnabled() { bool IsOfflinePagesLoadSignalCollectingEnabled() {
...@@ -140,7 +141,8 @@ std::string GetPrefetchingOfflinePagesExperimentTag() { ...@@ -140,7 +141,8 @@ std::string GetPrefetchingOfflinePagesExperimentTag() {
} }
bool IsOfflineIndicatorFeatureEnabled() { bool IsOfflineIndicatorFeatureEnabled() {
return base::FeatureList::IsEnabled(kOfflineIndicatorFeature); return IsOfflinePagesEnabled() &&
base::FeatureList::IsEnabled(kOfflineIndicatorFeature);
} }
bool IsOfflineIndicatorAlwaysHttpProbeEnabled() { bool IsOfflineIndicatorAlwaysHttpProbeEnabled() {
...@@ -151,4 +153,12 @@ bool IsOnTheFlyMhtmlHashComputationEnabled() { ...@@ -151,4 +153,12 @@ bool IsOnTheFlyMhtmlHashComputationEnabled() {
return base::FeatureList::IsEnabled(kOnTheFlyMhtmlHashComputationFeature); return base::FeatureList::IsEnabled(kOnTheFlyMhtmlHashComputationFeature);
} }
bool IsOfflinePagesEnabled() {
#if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
return false;
#else
return true;
#endif // defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
}
} // namespace offline_pages } // namespace offline_pages
...@@ -101,6 +101,9 @@ bool IsOfflineIndicatorAlwaysHttpProbeEnabled(); ...@@ -101,6 +101,9 @@ bool IsOfflineIndicatorAlwaysHttpProbeEnabled();
// calculating their content digests in one step. // calculating their content digests in one step.
bool IsOnTheFlyMhtmlHashComputationEnabled(); bool IsOnTheFlyMhtmlHashComputationEnabled();
// Returns true if offline pages as a whole is enabled.
bool IsOfflinePagesEnabled();
} // namespace offline_pages } // namespace offline_pages
#endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_FEATURE_H_ #endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_FEATURE_H_
...@@ -44,7 +44,8 @@ TEST(OfflinePageFeatureTest, OfflinePagesLoadSignalCollecting) { ...@@ -44,7 +44,8 @@ TEST(OfflinePageFeatureTest, OfflinePagesLoadSignalCollecting) {
TEST(OfflinePageFeatureTest, OfflinePagesPrefetching) { TEST(OfflinePageFeatureTest, OfflinePagesPrefetching) {
// Enabled by default. // Enabled by default.
EXPECT_TRUE(offline_pages::IsPrefetchingOfflinePagesEnabled()); EXPECT_EQ(offline_pages::IsOfflinePagesEnabled(),
offline_pages::IsPrefetchingOfflinePagesEnabled());
// Check if helper method works correctly when the features is disabled. // Check if helper method works correctly when the features is disabled.
base::test::ScopedFeatureList scoped_feature_list; base::test::ScopedFeatureList scoped_feature_list;
......
...@@ -215,8 +215,6 @@ source_set("unit_tests") { ...@@ -215,8 +215,6 @@ source_set("unit_tests") {
sources = [ sources = [
"generate_page_bundle_request_unittest.cc", "generate_page_bundle_request_unittest.cc",
"get_operation_request_unittest.cc", "get_operation_request_unittest.cc",
"prefetch_dispatcher_impl_unittest.cc",
"prefetch_download_flow_unittest.cc",
"prefetch_downloader_impl_unittest.cc", "prefetch_downloader_impl_unittest.cc",
"prefetch_gcm_app_handler_unittest.cc", "prefetch_gcm_app_handler_unittest.cc",
"prefetch_importer_impl_unittest.cc", "prefetch_importer_impl_unittest.cc",
...@@ -259,6 +257,7 @@ source_set("unit_tests") { ...@@ -259,6 +257,7 @@ source_set("unit_tests") {
"//components/download/public/background_service/test:test_support", "//components/download/public/background_service/test:test_support",
"//components/gcm_driver/instance_id", "//components/gcm_driver/instance_id",
"//components/image_fetcher/core:test_support", "//components/image_fetcher/core:test_support",
"//components/offline_pages/buildflags",
"//components/offline_pages/core", "//components/offline_pages/core",
"//components/offline_pages/core:switches", "//components/offline_pages/core:switches",
"//components/offline_pages/core:test_support", "//components/offline_pages/core:test_support",
...@@ -275,4 +274,15 @@ source_set("unit_tests") { ...@@ -275,4 +274,15 @@ source_set("unit_tests") {
"//testing/gtest", "//testing/gtest",
"//url", "//url",
] ]
defines = []
if (defined(notouch_build) && notouch_build) {
defines += [ "DISABLE_OFFLINE_PAGES_TOUCHLESS" ]
} else {
sources += [
"prefetch_dispatcher_impl_unittest.cc",
"prefetch_download_flow_unittest.cc",
]
}
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "components/offline_pages/core/prefetch/prefetch_prefs.h" #include "components/offline_pages/core/prefetch/prefetch_prefs.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "components/offline_pages/buildflags/buildflags.h"
#include "components/offline_pages/core/offline_clock.h" #include "components/offline_pages/core/offline_clock.h"
#include "components/offline_pages/core/offline_page_feature.h" #include "components/offline_pages/core/offline_page_feature.h"
#include "components/offline_pages/core/test_scoped_offline_clock.h" #include "components/offline_pages/core/test_scoped_offline_clock.h"
...@@ -27,7 +28,12 @@ void PrefetchPrefsTest::SetUp() { ...@@ -27,7 +28,12 @@ void PrefetchPrefsTest::SetUp() {
prefetch_prefs::RegisterPrefs(prefs()->registry()); prefetch_prefs::RegisterPrefs(prefs()->registry());
} }
TEST_F(PrefetchPrefsTest, PrefetchingEnabled) { #if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
#define MAYBE_PrefetchingEnabled DISABLED_PrefetchingEnabled
#else
#define MAYBE_PrefetchingEnabled PrefetchingEnabled
#endif
TEST_F(PrefetchPrefsTest, MAYBE_PrefetchingEnabled) {
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(kPrefetchingOfflinePagesFeature); feature_list.InitAndEnableFeature(kPrefetchingOfflinePagesFeature);
EXPECT_FALSE(prefetch_prefs::IsEnabled(prefs())); EXPECT_FALSE(prefetch_prefs::IsEnabled(prefs()));
...@@ -104,7 +110,12 @@ TEST_F(PrefetchPrefsTest, EnabledByServer) { ...@@ -104,7 +110,12 @@ TEST_F(PrefetchPrefsTest, EnabledByServer) {
EXPECT_FALSE(prefetch_prefs::IsEnabledByServer(prefs())); EXPECT_FALSE(prefetch_prefs::IsEnabledByServer(prefs()));
} }
TEST_F(PrefetchPrefsTest, ForbiddenCheck) { #if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
#define MAYBE_ForbiddenCheck DISABLED_ForbiddenCheck
#else
#define MAYBE_ForbiddenCheck ForbiddenCheck
#endif
TEST_F(PrefetchPrefsTest, MAYBE_ForbiddenCheck) {
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(kPrefetchingOfflinePagesFeature); feature_list.InitAndEnableFeature(kPrefetchingOfflinePagesFeature);
...@@ -135,7 +146,12 @@ TEST_F(PrefetchPrefsTest, ForbiddenCheck) { ...@@ -135,7 +146,12 @@ TEST_F(PrefetchPrefsTest, ForbiddenCheck) {
EXPECT_FALSE(prefetch_prefs::IsForbiddenCheckDue(prefs())); EXPECT_FALSE(prefetch_prefs::IsForbiddenCheckDue(prefs()));
} }
TEST_F(PrefetchPrefsTest, FirstForbiddenCheck) { #if defined(DISABLE_OFFLINE_PAGES_TOUCHLESS)
#define MAYBE_FirstForbiddenCheck DISABLED_FirstForbiddenCheck
#else
#define MAYBE_FirstForbiddenCheck FirstForbiddenCheck
#endif
TEST_F(PrefetchPrefsTest, MAYBE_FirstForbiddenCheck) {
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(kPrefetchingOfflinePagesFeature); feature_list.InitAndEnableFeature(kPrefetchingOfflinePagesFeature);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment