OLD | NEW |
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 #include <memory> | 5 #include <memory> |
6 #include <string> | 6 #include <string> |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 class AsyncRevalidationManagerBrowserTest : public ContentBrowserTest { | 41 class AsyncRevalidationManagerBrowserTest : public ContentBrowserTest { |
42 protected: | 42 protected: |
43 AsyncRevalidationManagerBrowserTest() {} | 43 AsyncRevalidationManagerBrowserTest() {} |
44 ~AsyncRevalidationManagerBrowserTest() override {} | 44 ~AsyncRevalidationManagerBrowserTest() override {} |
45 | 45 |
46 void SetUp() override { | 46 void SetUp() override { |
47 scoped_feature_list_.InitAndEnableFeature(features::kStaleWhileRevalidate); | 47 scoped_feature_list_.InitAndEnableFeature(features::kStaleWhileRevalidate); |
48 ContentBrowserTest::SetUp(); | 48 ContentBrowserTest::SetUp(); |
49 } | 49 } |
50 | 50 |
51 base::RunLoop* run_loop() { return &run_loop_; } | 51 void SetUpOnMainThread() override { |
| 52 ContentBrowserTest::SetUpOnMainThread(); |
| 53 run_loop_.reset(new base::RunLoop); |
| 54 } |
| 55 |
| 56 base::RunLoop* run_loop() { |
| 57 DCHECK(run_loop_); |
| 58 return run_loop_.get(); |
| 59 } |
| 60 |
52 int requests_counted() const { return requests_counted_; } | 61 int requests_counted() const { return requests_counted_; } |
53 | 62 |
54 // This method lacks diagnostics for the failure case because TitleWatcher | 63 // This method lacks diagnostics for the failure case because TitleWatcher |
55 // will just wait until the test times out if |expected_title| does not | 64 // will just wait until the test times out if |expected_title| does not |
56 // appear. | 65 // appear. |
57 bool TitleBecomes(const GURL& url, const std::string& expected_title) { | 66 bool TitleBecomes(const GURL& url, const std::string& expected_title) { |
58 base::string16 expected_title16(base::ASCIIToUTF16(expected_title)); | 67 base::string16 expected_title16(base::ASCIIToUTF16(expected_title)); |
59 TitleWatcher title_watcher(shell()->web_contents(), expected_title16); | 68 TitleWatcher title_watcher(shell()->web_contents(), expected_title16); |
60 NavigateToURL(shell(), url); | 69 NavigateToURL(shell(), url); |
61 return title_watcher.WaitAndGetTitle() == expected_title16; | 70 return title_watcher.WaitAndGetTitle() == expected_title16; |
(...skipping 23 matching lines...) Expand all Loading... |
85 | 94 |
86 std::unique_ptr<BasicHttpResponse> http_response( | 95 std::unique_ptr<BasicHttpResponse> http_response( |
87 StaleWhileRevalidateHeaders()); | 96 StaleWhileRevalidateHeaders()); |
88 http_response->set_content( | 97 http_response->set_content( |
89 base::StringPrintf("<title>Version %d</title>", version)); | 98 base::StringPrintf("<title>Version %d</title>", version)); |
90 | 99 |
91 // The second time this handler is run is the async revalidation. Tests can | 100 // The second time this handler is run is the async revalidation. Tests can |
92 // use this for synchronisation. | 101 // use this for synchronisation. |
93 if (version == 2) { | 102 if (version == 2) { |
94 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 103 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
95 run_loop_.QuitClosure()); | 104 run_loop()->QuitClosure()); |
96 } | 105 } |
97 return std::move(http_response); | 106 return std::move(http_response); |
98 } | 107 } |
99 | 108 |
100 // A request handler which increases a cookie value on every request. | 109 // A request handler which increases a cookie value on every request. |
101 std::unique_ptr<HttpResponse> CookieRequestHandler( | 110 std::unique_ptr<HttpResponse> CookieRequestHandler( |
102 const HttpRequest& request) { | 111 const HttpRequest& request) { |
103 static const char kHtml[] = | 112 static const char kHtml[] = |
104 "<script>\n" | 113 "<script>\n" |
105 "var intervalId;\n" | 114 "var intervalId;\n" |
(...skipping 29 matching lines...) Expand all Loading... |
135 http_response->AddCustomHeader("Cache-Control", | 144 http_response->AddCustomHeader("Cache-Control", |
136 "max-age=0, stale-while-revalidate=86400"); | 145 "max-age=0, stale-while-revalidate=86400"); |
137 // A validator is needed for revalidations, and hence | 146 // A validator is needed for revalidations, and hence |
138 // stale-while-revalidate, to work. | 147 // stale-while-revalidate, to work. |
139 std::string etag = base::StringPrintf( | 148 std::string etag = base::StringPrintf( |
140 "\"AsyncRevalidationManagerBrowserTest%d\"", requests_counted_); | 149 "\"AsyncRevalidationManagerBrowserTest%d\"", requests_counted_); |
141 http_response->AddCustomHeader("ETag", etag); | 150 http_response->AddCustomHeader("ETag", etag); |
142 return http_response; | 151 return http_response; |
143 } | 152 } |
144 | 153 |
145 base::RunLoop run_loop_; | 154 std::unique_ptr<base::RunLoop> run_loop_; |
146 int requests_counted_ = 0; | 155 int requests_counted_ = 0; |
147 base::test::ScopedFeatureList scoped_feature_list_; | 156 base::test::ScopedFeatureList scoped_feature_list_; |
148 | 157 |
149 DISALLOW_COPY_AND_ASSIGN(AsyncRevalidationManagerBrowserTest); | 158 DISALLOW_COPY_AND_ASSIGN(AsyncRevalidationManagerBrowserTest); |
150 }; | 159 }; |
151 | 160 |
152 // Verify that the "Cache-Control: stale-while-revalidate" directive correctly | 161 // Verify that the "Cache-Control: stale-while-revalidate" directive correctly |
153 // triggers an async revalidation. | 162 // triggers an async revalidation. |
154 IN_PROC_BROWSER_TEST_F(AsyncRevalidationManagerBrowserTest, | 163 IN_PROC_BROWSER_TEST_F(AsyncRevalidationManagerBrowserTest, |
155 StaleWhileRevalidateIsApplied) { | 164 StaleWhileRevalidateIsApplied) { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 NavigateToURL(shell(), GURL("about:blank")); | 241 NavigateToURL(shell(), GURL("about:blank")); |
233 | 242 |
234 // The page will load from the cache, then when the async revalidation | 243 // The page will load from the cache, then when the async revalidation |
235 // completes the cookie will update. | 244 // completes the cookie will update. |
236 EXPECT_TRUE(TitleBecomes(url, "PASS")); | 245 EXPECT_TRUE(TitleBecomes(url, "PASS")); |
237 } | 246 } |
238 | 247 |
239 } // namespace | 248 } // namespace |
240 | 249 |
241 } // namespace content | 250 } // namespace content |
OLD | NEW |