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

Unified Diff: content/browser/loader/async_revalidation_manager_browsertest.cc

Issue 2764683002: Remove stale-while-revalidate from content and chrome (Closed)
Patch Set: rebase Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/loader/async_revalidation_manager_browsertest.cc
diff --git a/content/browser/loader/async_revalidation_manager_browsertest.cc b/content/browser/loader/async_revalidation_manager_browsertest.cc
deleted file mode 100644
index 982ecebf4573d76043963cf2e2ef5266828585f9..0000000000000000000000000000000000000000
--- a/content/browser/loader/async_revalidation_manager_browsertest.cc
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/macros.h"
-#include "base/run_loop.h"
-#include "base/strings/string16.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_feature_list.h"
-#include "content/public/common/browser_side_navigation_policy.h"
-#include "content/public/common/content_features.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "net/test/embedded_test_server/http_request.h"
-#include "net/test/embedded_test_server/http_response.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "url/gurl.h"
-
-namespace content {
-
-namespace {
-
-using net::test_server::HttpResponse;
-using net::test_server::HttpRequest;
-using net::test_server::BasicHttpResponse;
-
-const char kCountedHtmlPath[] = "/counted.html";
-const char kCookieHtmlPath[] = "/cookie.html";
-
-class AsyncRevalidationManagerBrowserTest : public ContentBrowserTest {
- protected:
- AsyncRevalidationManagerBrowserTest() {}
- ~AsyncRevalidationManagerBrowserTest() override {}
-
- void SetUp() override {
- scoped_feature_list_.InitAndEnableFeature(features::kStaleWhileRevalidate);
- ContentBrowserTest::SetUp();
- }
-
- void SetUpOnMainThread() override {
- ContentBrowserTest::SetUpOnMainThread();
- run_loop_.reset(new base::RunLoop);
- }
-
- base::RunLoop* run_loop() {
- DCHECK(run_loop_);
- return run_loop_.get();
- }
-
- int requests_counted() const { return requests_counted_; }
-
- // This method lacks diagnostics for the failure case because TitleWatcher
- // will just wait until the test times out if |expected_title| does not
- // appear.
- bool TitleBecomes(const GURL& url, const std::string& expected_title) {
- base::string16 expected_title16(base::ASCIIToUTF16(expected_title));
- TitleWatcher title_watcher(shell()->web_contents(), expected_title16);
- NavigateToURL(shell(), url);
- return title_watcher.WaitAndGetTitle() == expected_title16;
- }
-
- void RegisterCountingRequestHandler() {
- embedded_test_server()->RegisterRequestHandler(base::Bind(
- &AsyncRevalidationManagerBrowserTest::CountingRequestHandler,
- base::Unretained(this)));
- }
-
- void RegisterCookieRequestHandler() {
- embedded_test_server()->RegisterRequestHandler(base::Bind(
- &AsyncRevalidationManagerBrowserTest::CookieRequestHandler,
- base::Unretained(this)));
- }
-
- private:
- // A request handler which increases the number in the title tag on every
- // request.
- std::unique_ptr<HttpResponse> CountingRequestHandler(
- const HttpRequest& request) {
- if (request.relative_url != kCountedHtmlPath)
- return nullptr;
-
- int version = ++requests_counted_;
-
- std::unique_ptr<BasicHttpResponse> http_response(
- StaleWhileRevalidateHeaders());
- http_response->set_content(
- base::StringPrintf("<title>Version %d</title>", version));
-
- // The second time this handler is run is the async revalidation. Tests can
- // use this for synchronisation.
- if (version == 2) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- run_loop()->QuitClosure());
- }
- return std::move(http_response);
- }
-
- // A request handler which increases a cookie value on every request.
- std::unique_ptr<HttpResponse> CookieRequestHandler(
- const HttpRequest& request) {
- static const char kHtml[] =
- "<script>\n"
- "var intervalId;\n"
- "function checkCookie() {\n"
- " if (document.cookie.search(/version=2/) != -1) {\n"
- " clearInterval(intervalId);\n"
- " document.title = \"PASS\";\n"
- " }\n"
- "}\n"
- "intervalId = setInterval(checkCookie, 10);\n"
- "</script>\n"
- "<title>Loaded</title>\n";
-
- if (request.relative_url != kCookieHtmlPath)
- return nullptr;
-
- int version = ++requests_counted_;
-
- std::unique_ptr<BasicHttpResponse> http_response(
- StaleWhileRevalidateHeaders());
- http_response->AddCustomHeader("Set-Cookie",
- base::StringPrintf("version=%d", version));
- http_response->set_content(kHtml);
-
- return std::move(http_response);
- }
-
- // Generate the standard response headers common to all request handlers.
- std::unique_ptr<BasicHttpResponse> StaleWhileRevalidateHeaders() {
- std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse);
- http_response->set_code(net::HTTP_OK);
- http_response->set_content_type("text/html; charset=utf-8");
- http_response->AddCustomHeader("Cache-Control",
- "max-age=0, stale-while-revalidate=86400");
- // A validator is needed for revalidations, and hence
- // stale-while-revalidate, to work.
- std::string etag = base::StringPrintf(
- "\"AsyncRevalidationManagerBrowserTest%d\"", requests_counted_);
- http_response->AddCustomHeader("ETag", etag);
- return http_response;
- }
-
- std::unique_ptr<base::RunLoop> run_loop_;
- int requests_counted_ = 0;
- base::test::ScopedFeatureList scoped_feature_list_;
-
- DISALLOW_COPY_AND_ASSIGN(AsyncRevalidationManagerBrowserTest);
-};
-
-// Verify that the "Cache-Control: stale-while-revalidate" directive correctly
-// triggers an async revalidation.
-IN_PROC_BROWSER_TEST_F(AsyncRevalidationManagerBrowserTest,
- StaleWhileRevalidateIsApplied) {
- RegisterCountingRequestHandler();
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // PlzNavigate: Stale while revalidate is disabled.
- // TODO(clamy): Re-enable the test when there is support.
- if (IsBrowserSideNavigationEnabled())
- return;
- GURL url(embedded_test_server()->GetURL(kCountedHtmlPath));
-
- EXPECT_TRUE(TitleBecomes(url, "Version 1"));
-
- // The first request happens synchronously.
- EXPECT_EQ(1, requests_counted());
-
- // Force the renderer to be destroyed so that the Blink cache doesn't
- // interfere with the result.
- NavigateToURL(shell(), GURL("about:blank"));
-
- // Load the page again. We should get the stale version from the cache.
- EXPECT_TRUE(TitleBecomes(url, "Version 1"));
-
- // Wait for the async revalidation to complete.
- run_loop()->Run();
- EXPECT_EQ(2, requests_counted());
-}
-
-// The fresh cache entry must become visible once the async revalidation request
-// has been sent.
-IN_PROC_BROWSER_TEST_F(AsyncRevalidationManagerBrowserTest, CacheIsUpdated) {
- RegisterCountingRequestHandler();
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // PlzNavigate: Stale while revalidate is disabled.
- // TODO(clamy): Re-enable the test when there is support.
- if (IsBrowserSideNavigationEnabled())
- return;
- using base::ASCIIToUTF16;
- GURL url(embedded_test_server()->GetURL(kCountedHtmlPath));
-
- EXPECT_TRUE(TitleBecomes(url, "Version 1"));
-
- // Reset the renderer cache.
- NavigateToURL(shell(), GURL("about:blank"));
-
- // Load the page again. We should get the stale version from the cache.
- EXPECT_TRUE(TitleBecomes(url, "Version 1"));
-
- // Wait for the async revalidation request to be processed by the
- // EmbeddedTestServer.
- run_loop()->Run();
-
- // Reset the renderer cache.
- NavigateToURL(shell(), GURL("about:blank"));
-
- // Since the async revalidation request has been sent, the cache can no
- // longer return the stale contents.
- EXPECT_TRUE(TitleBecomes(url, "Version 2"));
-}
-
-// When the asynchronous revalidation arrives, any cookies it contains must be
-// applied immediately.
-IN_PROC_BROWSER_TEST_F(AsyncRevalidationManagerBrowserTest,
- CookieSetAsynchronously) {
- RegisterCookieRequestHandler();
- ASSERT_TRUE(embedded_test_server()->Start());
-
- // PlzNavigate: Stale while revalidate is disabled.
- // TODO(clamy): Re-enable the test when there is support.
- if (IsBrowserSideNavigationEnabled())
- return;
- GURL url(embedded_test_server()->GetURL(kCookieHtmlPath));
-
- // Set cookie to version=1
- NavigateToURL(shell(), url);
-
- // Reset render cache.
- NavigateToURL(shell(), GURL("about:blank"));
-
- // The page will load from the cache, then when the async revalidation
- // completes the cookie will update.
- EXPECT_TRUE(TitleBecomes(url, "PASS"));
-}
-
-} // namespace
-
-} // namespace content
« no previous file with comments | « content/browser/loader/async_revalidation_manager.cc ('k') | content/browser/loader/async_revalidation_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698