#include "content/browser/back_forward_cache_browsertest.h"
#include <memory>
#include "build/build_config.h"
#include "build/buildflag.h"
#include "build/chromecast_buildflags.h"
#include "content/browser/renderer_host/navigation_request.h"
#include "content/browser/renderer_host/render_frame_host_impl.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/content_browser_test_utils.h"
#include "content/public/test/test_navigation_observer.h"
#include "content/shell/browser/shell.h"
#include "net/test/embedded_test_server/controllable_http_response.h"
#include "net/test/spawned_test_server/spawned_test_server.h"
#include "net/test/test_data_directory.h"
#include "third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h"
namespace content {
NotRestoredReason;
NotRestoredReasons;
BlocklistedFeature;
namespace {
const char kResponseWithNoCache[] = …;
}
class BackForwardCacheBrowserTestNoTestingConfig
: public BackForwardCacheBrowserTest { … };
IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestNoTestingConfig,
MainFrameWithNoStoreNotCached) { … }
IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestNoTestingConfig,
SubframeWithNoStoreCached) { … }
#if BUILDFLAG(IS_ANDROID)
#define MAYBE_CCNSAndWebSocketBothRecorded …
#else
#define MAYBE_CCNSAndWebSocketBothRecorded …
#endif
IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestNoTestingConfig,
MAYBE_CCNSAndWebSocketBothRecorded) { … }
namespace {
class BackForwardCacheBrowserTestAllowCacheControlNoStore
: public BackForwardCacheBrowserTest { … };
}
IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreEnterBfcacheAndEvicted) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreCookieModifiedThroughJavaScript) { … }
IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreCookieModifiedBackTwice) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreCookieModifiedThroughJavaScriptOnDifferentDomain) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreRecordOtherReasonsWhenEvictionHappens) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreRecordOtherReasonsUponEntrance) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreRecordOtherReasonsForEviction) { … }
namespace {
const char kResponseWithNoCacheWithCookie[] = …;
const char kResponseWithNoCacheWithHTTPOnlyCookie[] = …;
const char kResponseWithNoCacheWithHTTPOnlyCookie2[] = …;
const char kResponseWithNoCacheWithRedirectionWithHTTPOnlyCookie[] = …;
}
IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreSetFromResponseHeader) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreSetFromResponseHeaderHTTPOnlyCookie) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestAllowCacheControlNoStore,
PagesWithCacheControlNoStoreHTTPOnlyCookieModifiedBackTwice) { … }
namespace {
void SendFetchRequest(const ToRenderFrameHost& execution_target,
const GURL& url) { … }
void SendXhrRequest(const ToRenderFrameHost& execution_target,
const GURL& url) { … }
void CreateIframe(const ToRenderFrameHost& execution_target, GURL url) { … }
}
enum class RequestType { … };
class BackForwardCacheWithJsNetworkRequestReceivingCCNSResourceBrowserTest
: public BackForwardCacheBrowserTest,
public ::testing::WithParamInterface<RequestType> { … };
INSTANTIATE_TEST_SUITE_P(…);
IN_PROC_BROWSER_TEST_P(
BackForwardCacheWithJsNetworkRequestReceivingCCNSResourceBrowserTest,
CCNSResponseNotLogged) { … }
IN_PROC_BROWSER_TEST_P(
BackForwardCacheWithJsNetworkRequestReceivingCCNSResourceBrowserTest,
CCNSResponseLoggedMainFrame) { … }
IN_PROC_BROWSER_TEST_P(
BackForwardCacheWithJsNetworkRequestReceivingCCNSResourceBrowserTest,
CCNSResponseSameOriginSubFrameLogged) { … }
IN_PROC_BROWSER_TEST_P(
BackForwardCacheWithJsNetworkRequestReceivingCCNSResourceBrowserTest,
CCNSResponseSubFrameTree) { … }
IN_PROC_BROWSER_TEST_P(
BackForwardCacheWithJsNetworkRequestReceivingCCNSResourceBrowserTest,
CCNSResponseCrossOriginSubFrameNotLogged) { … }
class CookieDisabledContentBrowserClient
: public ContentBrowserTestContentBrowserClient { … };
class BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange
: public BackForwardCacheBrowserTest { … };
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreRestoreFromBackForwardCache) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
CCNSResponseBlocks) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreEvictedIfCookieChange) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreEvictedWithBothCookieReasons) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithCookieSetInResponse) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithCookieSetAfterRequestIsMade) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithCookieSetBeforeNavigateAway) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithCookieSetFromAnotherTabBeforeNavigateAway) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreRestoredIfCookieChangeIsMadeBeforeRedirection) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithCookieSetBeforeSameDocumentNavigation) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithCookieSetImmediatelyBeforeNavigateBack) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreCacheControlNoStoreUnlessCookieChange,
PagesWithCacheControlNoStoreIsNotCacheIfCookieIsDisabled) { … }
class BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange
: public BackForwardCacheBrowserTest { … };
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
NoCacheControlNoStoreButHTTPOnlyCookieChange) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
PagesWithCacheControlNoStoreNotEvictedIfNormalCookieChange) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
PagesWithCacheControlNoStoreEvictedIfHTTPOnlyCookieChange) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
PagesWithCacheControlNoStoreEvictedIfJSAndHTTPOnlyCookieChange) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithHTTPOnlyCookieSetInResponse) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithHTTPOnlyCookieSetFromAnotherTabBeforeNavigateAway) { … }
IN_PROC_BROWSER_TEST_F(
BackForwardCacheBrowserTestRestoreUnlessHTTPOnlyCookieChange,
PagesWithCacheControlNoStoreNotBFCachedWithHTTPOnlyCookieSetBeforeSameDocumentNavigation) { … }
}