# NOTE: if adding an exclusion for an existing failure (e.g. additional test for
# feature X that is already not working), please add it beside the existing
# failures. Otherwise please reach out to network-service-dev@.

# These tests currently fail when run with --enable-features=NetworkService
# See https://crbug.com/769401

# Uncategorized timeouts or test failures.
-DisabledSignInIsolationBrowserTest.SyntheticTrial
-DomainReliabilityBrowserTest.Upload
-EnabledSignInIsolationBrowserTest.SyntheticTrial
-ExtensionUnloadBrowserTest.UnloadWithContentScripts
-NetInternalsTest.netInternalsSessionBandwidthSucceed
-NewlibPackagedAppTest.SuccessfulLoad
-PolicyTest.DefaultCookiesSetting
-PreviewsOptimizationGuideBrowserTest.NoScriptPreviewsEnabledByWhitelist
-ProfileWindowBrowserTest.GuestClearsCookies
-ProxySettingsApiTest.ProxyEventsInvalidProxy
-RegisterProtocolHandlerBrowserTest.CustomHandler
-SubresourceFilterBrowserTest.FailedProvisionalLoadInMainframe
-WebstoreInstallerBrowserTest.SimultaneousInstall
-WebViewTest.WebViewInBackgroundPage

# Move ChromeExpectCTReporter to services/network
# https://crbug.com/844032
-ExpectCTBrowserTest.TestDynamicExpectCTHeaderProcessing
-ExpectCTBrowserTest.TestDynamicExpectCTReporting

# Add a testing method to call AddHPKP in NetworkContext.
# https://crbug.com/844034
-PKPModelClientTest.PKPBypass/0
-PKPModelClientTest.PKPBypass/1
-PKPModelClientTest.PKPEnforced/0
-PKPModelClientTest.PKPEnforced/1

# Task manager and network service. https://crbug.com/822415
-TaskManagerUtilityProcessBrowserTest.UtilityJSHeapMemory

# https://crbug.com/721398
-WebViewTest.ClearData
-WebViewTest.ClearDataCache

# Non-navigation downloads don't go through RequestLimiter (
# https://crbug.com/843631). Once that's fixed, WebContentsDelegate::CanDownload
# will be called for other downloads and that'll fix the test.
-WebViewTest.DownloadPermission

# Need a test interface API that allows us to check on the CT status.
# Then in ssl_browsertest.cc we can use that instead of the direct
# call to the transport_security_state()
-SSLUITest.CertificateTransparencyEnforcementDisabledForUrls/0
-SSLUITest.CertificateTransparencyEnforcementDisabledForUrls/1

# Redirects to chrome-extension:// should be blocked unless the resource is
# webaccessible.  https://crbug.com/821586
-ProcessManagerBrowserTest.ServerRedirectToNonWebAccessibleResource
-ProcessManagerBrowserTest.CrossExtensionEmbeddingOfWebAccessibleResources

# Need support for blocking cookies via content settings:
# https://crbug.com/789632.
-ClientHintsBrowserTest.ClientHintsLifetimeNotAttachedCookiesBlocked
-ClientHintsBrowserTest.ClientHintsNoLifetimeCookiesNotAllowed
-ContentSettingsTest.AllowCookiesForASessionUsingExceptions
-ContentSettingsTest.RedirectCrossOrigin
-ContentSettingsTest.RedirectLoopCookies

# http://crbug.com/816684 Track Page Load Metrics.
-AdsPageLoadMetricsObserverBrowserTest.OriginStatusMetricEmbedded
-AdsPageLoadMetricsObserverBrowserTest.OriginStatusMetricEmbeddedEmpty
-AdsPageLoadMetricsObserverBrowserTest.OriginStatusMetricSame
-AdsPageLoadMetricsObserverBrowserTest.OriginStatusMetricCross
-AdsPageLoadMetricsObserverBrowserTest.DocOverwritesNavigation
-AdsPageLoadMetricsObserverBrowserTest.SubresourceFilter
-PageLoadMetricsBrowserTest.LoadingMetrics
-PageLoadMetricsBrowserTest.LoadingMetricsFailed
-PageLoadMetricsBrowserTest.PayloadSize
-PageLoadMetricsBrowserTest.PayloadSizeChildFrame

# Accessing cookies after they were set in onload handler is flaky:
# https://crbug.com/820969.
-ContentSettingsTest.BasicCookies
-ContentSettingsTest.BasicCookiesHttps

# https://crbug.com/810329 DnsProbe browsertests that rely on delaying requests:
-DnsProbeBrowserTest.NxdomainProbeResultWithWorkingSlowCorrections
# Addendum to the above: These three were previously marked as flaky. After
# resolving https://crbug.com/810329, they will need to be monitored to see
# if flake is still an issue.
-DnsProbeBrowserTest.CorrectionsLoadStoppedSlowProbe
-DnsProbeBrowserTest.CorrectionsLoadStopped
-DnsProbeBrowserTest.NoInternetProbeResultWithSlowBrokenCorrections

# crbug.com/776589 Intercepting requests with net::URLRequestFilter.
-ContinueWhereILeftOffTest.CookiesClearedOnExit
-DownloadExtensionTest.DownloadExtensionTest_Download_FileSystemURL
-PolicyTest.CertificateTransparencyEnforcementDisabledForUrls/0
-PolicyTest.CertificateTransparencyEnforcementDisabledForUrls/1
-PolicyTest.ExtensionInstallSources
-PolicyTest.ForceGoogleSafeSearch
-ProfileBrowserTest.SendHPKPReport
-ProfileBrowserTest.SendHPKPReportServerHangs

# https://bugs.chromium.org/p/chromium/issues/detail?id=789670
-DiceBrowserTest.Reauth
-DiceBrowserTest.Signin
-DiceBrowserTest.SignoutAllAccounts
-DiceBrowserTest.SignoutMainAccount
-DiceBrowserTest.SignoutSecondaryAccount
-DiceFixAuthErrorsBrowserTest.ReauthFixAuthError
-DiceFixAuthErrorsBrowserTest.SigninAccountMismatch
-DicePrepareMigrationBrowserTest.EnableSyncAfterToken
-DicePrepareMigrationBrowserTest.EnableSyncBeforeToken
-DicePrepareMigrationBrowserTest.Signout
-ChromeResourceDispatcherHostDelegateBrowserTest.MirrorRequestHeader

# crbug.com/778793
# Started failing in r514649.
-PreviewsNoScriptBrowserTest.NoScriptPreviewsEnabled
# Added in r519342.
-PreviewsNoScriptBrowserTest.NoScriptPreviewsEnabledHttpRedirectToHttps
-PreviewsNoScriptBrowserTest.NoScriptPreviewsEnabledButNoTransformDirective

# crbug.com/778814 Null NavigationData is given to NavigationURLLoaderDelegate::OnResponseStarted() as parameter.
-ChromeResourceDispatcherHostDelegateBrowserTest.NavigationDataProcessed

# crbug.com/778860 SecurityStyleExplanations::info_explanations is empty.
-BrowserTestNonsecureURLRequest.DidChangeVisibleSecurityStateObserverObsoleteTLSSettings

# These rely on proxy configuration and PAC execution being configured on the
# legacy in-process URLRequestContext. They should be removed or updated to
# use Mojo APIs instead.
-HangingPacRequestProxyScriptBrowserTest.Shutdown
-IOThreadBrowserTestWithHangingPacRequest.Shutdown
-ProxySettingsApiTest.ProxyEventsParseError

# https://bugs.chromium.org/p/chromium/issues/detail?id=755309
-SSLUITest.SHA1PrefsCanEnable/0
-SSLUITest.SHA1PrefsCanEnable/1
-SSLUITest.TestBadHTTPSDownload/0
-SSLUITest.TestBadHTTPSDownload/1
-SSLUITest.TestHTTPSOCSPOk/0
-SSLUITest.TestHTTPSOCSPOk/1
-SSLUITest.TestHTTPSOCSPRevoked/0
-SSLUITest.TestHTTPSOCSPRevoked/1

# http://crbug.com/721414
# TODO(rockot): add support for webRequest API.
-ExtensionWebRequestApiTest.WebRequestBlocking
-ExtensionWebRequestApiTest.WebRequestDeclarative2
-ExtensionWebRequestApiTest.WebRequestDiceHeaderProtection
-ExtensionWebRequestApiTest.WebRequestTypes
-ExtensionWebRequestApiTest.WebRequestTestOSDD
# http://crbug.com/841002
-ExtensionWebRequestApiTest.WebRequestURLLoaderInterception
-ExtensionWebRequestApiTest.WebRequestClientsGoogleComProtection
# Note WebRequestUnloadImmediately is disabled on Linux
-ExtensionWebRequestApiTest.WebRequestUnloadImmediately
# http://crbug.com/841827
-BackgroundXhrTest.HttpAuth
-BackgroundXhrTest.TlsClientAuth

# https://crbug.com/721400
# WebSocket with the network service
-DeclarativeNetRequestResourceTypeBrowserTest.Test2/1
-DeclarativeNetRequestResourceTypeBrowserTest.Test2/0
-ExtensionWebRequestApiTest.WebSocketRequestAuthRequired
-ExtensionWebRequestApiTest.WebSocketRequest

# http://crbug.com/705114
# Remove streams concept from code and replace with data pipe passing.
-MimeHandlerViewTests/MimeHandlerViewTest.Abort/0
-MimeHandlerViewTests/MimeHandlerViewTest.Abort/1

# http://crbug.com/784576
# Convert ExtensionRequestLimitingThrottle into a URLLoaderThrottle.
-ExtensionRequestLimitingThrottleBrowserTest.DoNotThrottleCachedResponse
-ExtensionRequestLimitingThrottleBrowserTest.DoNotThrottleCachedResponse_NonRedirectCached
-ExtensionRequestLimitingThrottleBrowserTest.DoNotThrottleCachedResponse_Redirect
-ExtensionRequestLimitingThrottleBrowserTest.ThrottleRequest
-ExtensionRequestLimitingThrottleBrowserTest.ThrottleRequest_Redirect
-ExtensionRequestLimitingThrottleBrowserTest.ThrottleRequest_RedirectCached
-ExtensionRequestLimitingThrottleCommandLineBrowserTest.ThrottleRequestDisabled

# Switch test from using a custom net::URLRequestFileJob to using a test
# URLLoaderFactory via SetNetworkFactoryForTesting.
-ErrorPageSniffTest.SniffSmallHttpErrorResponseAsDownload

# http://crbug.com/809583
# Switch Predictor from using ResourceThrottle and ResourceDispatcherHost to
# using WebContentsObserver and NavigationHandle.
-PredictorBrowserTest.CrossSiteNoReferrerNoPredictionAfterOneNavigation
-PredictorBrowserTest.CrossSiteRedirectNoPredictionWithPath
-PredictorBrowserTest.CrossSiteRedirectPredictionWithNoPath
-PredictorBrowserTest.CrossSiteRedirectPredictionWithNoPathDifferentHostName
-PredictorBrowserTest.CrossSiteSimplePredictionAfterOneNavigation
-PredictorBrowserTest.CrossSiteSimplePredictionAfterOneNavigationNoInterceptor
-PredictorBrowserTest.CrossSiteSimplePredictionAfterTwoNavigations
-PredictorBrowserTest.CrossSiteSimplePredictionAfterTwoNavigations2
-PredictorBrowserTest.CrossSiteTwoRedirectsPredictionWithNoPath
-PredictorBrowserTest.CrossSiteUseOneSocket
-PredictorBrowserTest.CrossSiteUseThreeSockets
-PredictorBrowserTest.DoNotEvictRecentlyUsed
-PredictorBrowserTest.DontPredictBasedOnSubresources
-PredictorBrowserTest.ForgetBadPrediction
-PredictorBrowserTest.PreconnectAndFetchCORS
-PredictorBrowserTest.PreconnectAndFetchNonCORS
-PredictorBrowserTest.PredictBasedOnSubframeRedirect
-PredictorBrowserTest.RendererInitiatedNavigationPreconnect
-PredictorBrowserTest.SubframeCrossSitePrediction
-PredictorBrowserTest.SubframeInitiatesPreconnects
-PredictorBrowserTest.SubframeLearning

# Support URLLoaderFactories from embedder in shared workers.
# https://crbug.com/839982
-ExtensionApiTest.Debugger
-ExtensionApiTestWithSwitch.ExtensionDebugger

# https://crbug.com/832749
# Add DMServer header
-ChromeResourceDispatcherHostDelegateBrowserTest.PolicyHeader
-ChromeResourceDispatcherHostDelegateBrowserTest.PolicyHeaderForRedirect

# download_to_file is only used by PNaCl at this point and it will be removed
# soon as it has almost zero usage. At that point these tests should be deleted.
# http://crbug.com/791702
-OutOfProcessPPAPITest.FileRef1
-OutOfProcessPPAPITest.FileRef2
-OutOfProcessPPAPITest.URLLoader1
-PPAPINaClNewlibTest.FileRef1
-PPAPINaClNewlibTest.FileRef2
-PPAPINaClNewlibTest.URLLoader1
-PPAPINaClPNaClNonSfiTest.FileRef1
-PPAPINaClPNaClNonSfiTest.FileRef2
-PPAPINaClPNaClNonSfiTest.URLLoader1

# Requires a replacement for ChromeNetworkDelegate.
# http://crbug.com/841309
-VariationsHttpHeadersBrowserTest.TestStrippingHeadersFromResourceRequest
-VariationsHttpHeadersBrowserTest.TestStrippingHeadersFromInternalRequest

# Fails because of missing support to navigate to filesystem: URLs.
# https://crbug.com/797292
-ProcessManagerBrowserTest.NestedURLDownloadsToExtensionAllowed
-SecurityStateTabHelperTest.DefaultSecurityLevelOnSecureFilesystemUrl/0
-SecurityStateTabHelperTest.DefaultSecurityLevelOnSecureFilesystemUrl/1

# Tests check state of NQE in the browser process, but need to be updated to
# watch NQE in the renderer process.
# https://crbug.com/819244
-IOThreadEctCommandLineBrowserTest.ForceECTFromCommandLine
-IOThreadEctFieldTrialAndCommandLineBrowserTest.ECTFromCommandLineOverridesFieldTrial
-IOThreadEctFieldTrialBrowserTest.ForceECTUsingFieldTrial

# Fails on Windows. It's passing on Linux but this feature needs to be converted
# to work with network service.
-ConditionalCacheCountingHelperBrowserTest.Count

# NOTE: if adding an exclusion for an existing failure (e.g. additional test for
# feature X that is already not working), please add it beside the existing
# failures. Otherwise please reach out to network-service-dev@.
