OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/json/json_string_value_serializer.h" | 9 #include "base/json/json_string_value_serializer.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 | 376 |
377 // Second navigation to content with an img. | 377 // Second navigation to content with an img. |
378 std::string img_content = | 378 std::string img_content = |
379 "<img src=\"" + preconnect_url.spec() + "test.gif\">"; | 379 "<img src=\"" + preconnect_url.spec() + "test.gif\">"; |
380 NavigateToDataURLWithContent(img_content); | 380 NavigateToDataURLWithContent(img_content); |
381 connection_listener_->WaitUntilFirstConnectionRead(); | 381 connection_listener_->WaitUntilFirstConnectionRead(); |
382 EXPECT_EQ(1u, connection_listener_->GetAcceptedSocketCount()); | 382 EXPECT_EQ(1u, connection_listener_->GetAcceptedSocketCount()); |
383 EXPECT_EQ(1u, connection_listener_->GetReadSocketCount()); | 383 EXPECT_EQ(1u, connection_listener_->GetReadSocketCount()); |
384 } | 384 } |
385 | 385 |
| 386 // Tests that preconnect warms up a crossorigin socket connection to a test |
| 387 // server, and that that socket is later used when fetching an anonymous |
| 388 // resource. |
| 389 // Note: This test uses a data URI to serve the preconnect hint, to make sure |
| 390 // that the network stack doesn't just re-use its connection to the test server. |
| 391 IN_PROC_BROWSER_TEST_F(PredictorBrowserTest, PreconnectAndUseAnonymous) { |
| 392 GURL preconnect_url = embedded_test_server()->base_url(); |
| 393 // First navigation to content with a preconnect hint. |
| 394 std::string preconnect_content = "<link rel=\"preconnect\" href=\"" + |
| 395 preconnect_url.spec() + "\" crossorigin>"; |
| 396 NavigateToDataURLWithContent(preconnect_content); |
| 397 connection_listener_->WaitUntilFirstConnectionAccepted(); |
| 398 EXPECT_EQ(1u, connection_listener_->GetAcceptedSocketCount()); |
| 399 EXPECT_EQ(0u, connection_listener_->GetReadSocketCount()); |
| 400 |
| 401 // Second navigation to content with a font. |
| 402 std::string font_content = "<script>var font = new FontFace('FontA', 'url(" + |
| 403 preconnect_url.spec() + |
| 404 "test.woff2)');font.load();</script>"; |
| 405 NavigateToDataURLWithContent(font_content); |
| 406 connection_listener_->WaitUntilFirstConnectionRead(); |
| 407 EXPECT_EQ(1u, connection_listener_->GetAcceptedSocketCount()); |
| 408 EXPECT_EQ(1u, connection_listener_->GetReadSocketCount()); |
| 409 } |
| 410 |
386 } // namespace chrome_browser_net | 411 } // namespace chrome_browser_net |
387 | 412 |
OLD | NEW |