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 "core/html/parser/HTMLPreloadScanner.h" | 5 #include "core/html/parser/HTMLPreloadScanner.h" |
6 | 6 |
7 #include "core/MediaTypeNames.h" | 7 #include "core/MediaTypeNames.h" |
8 #include "core/css/MediaValuesCached.h" | 8 #include "core/css/MediaValuesCached.h" |
9 #include "core/fetch/ClientHintsPreferences.h" | 9 #include "core/fetch/ClientHintsPreferences.h" |
10 #include "core/frame/Settings.h" | 10 #include "core/frame/Settings.h" |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 {"http://example.test", "<link rel=preload href=bla as=media>", "bla", "
http://example.test/", Resource::Media, 0}, | 407 {"http://example.test", "<link rel=preload href=bla as=media>", "bla", "
http://example.test/", Resource::Media, 0}, |
408 {"http://example.test", "<link rel=preload href=bla as=track>", "bla", "
http://example.test/", Resource::TextTrack, 0}, | 408 {"http://example.test", "<link rel=preload href=bla as=track>", "bla", "
http://example.test/", Resource::TextTrack, 0}, |
409 {"http://example.test", "<link rel=preload href=bla as=image media=\"(ma
x-width: 800px)\">", "bla", "http://example.test/", Resource::Image, 0}, | 409 {"http://example.test", "<link rel=preload href=bla as=image media=\"(ma
x-width: 800px)\">", "bla", "http://example.test/", Resource::Image, 0}, |
410 {"http://example.test", "<link rel=preload href=bla as=image media=\"(ma
x-width: 400px)\">", nullptr, "http://example.test/", Resource::Image, 0}, | 410 {"http://example.test", "<link rel=preload href=bla as=image media=\"(ma
x-width: 400px)\">", nullptr, "http://example.test/", Resource::Image, 0}, |
411 }; | 411 }; |
412 | 412 |
413 for (const auto& testCase : testCases) | 413 for (const auto& testCase : testCases) |
414 test(testCase); | 414 test(testCase); |
415 } | 415 } |
416 | 416 |
| 417 // The preload scanner should follow the same policy that the ScriptLoader does |
| 418 // with regard to the type and language attribute. |
| 419 TEST_F(HTMLPreloadScannerTest, testScriptTypeAndLanguage) |
| 420 { |
| 421 TestCase testCases[] = { |
| 422 // Allow empty src and language attributes. |
| 423 {"http://example.test", "<script src='test.js'></script>", "test.js", "h
ttp://example.test/", Resource::Script, 0}, |
| 424 {"http://example.test", "<script type='' language='' src='test.js'></scr
ipt>", "test.js", "http://example.test/", Resource::Script, 0}, |
| 425 // Allow standard language and type attributes. |
| 426 {"http://example.test", "<script type='text/javascript' src='test.js'></
script>", "test.js", "http://example.test/", Resource::Script, 0}, |
| 427 {"http://example.test", "<script type='text/javascript' language='javasc
ript' src='test.js'></script>", "test.js", "http://example.test/", Resource::Scr
ipt, 0}, |
| 428 // Allow legacy languages in the "language" attribute with an empty |
| 429 // type. |
| 430 {"http://example.test", "<script language='javascript1.1' src='test.js'>
</script>", "test.js", "http://example.test/", Resource::Script, 0}, |
| 431 // Allow legacy languages in the "type" attribute. |
| 432 {"http://example.test", "<script type='javascript' src='test.js'></scrip
t>", "test.js", "http://example.test/", Resource::Script, 0}, |
| 433 {"http://example.test", "<script type='javascript1.7' src='test.js'></sc
ript>", "test.js", "http://example.test/", Resource::Script, 0}, |
| 434 // Do not allow invalid types in the "type" attribute. |
| 435 {"http://example.test", "<script type='invalid' src='test.js'></script>"
, nullptr, "http://example.test/", Resource::Script, 0}, |
| 436 {"http://example.test", "<script type='asdf' src='test.js'></script>", n
ullptr, "http://example.test/", Resource::Script, 0}, |
| 437 // Do not allow invalid languages. |
| 438 {"http://example.test", "<script language='french' src='test.js'></scrip
t>", nullptr, "http://example.test/", Resource::Script, 0}, |
| 439 {"http://example.test", "<script language='python' src='test.js'></scrip
t>", nullptr, "http://example.test/", Resource::Script, 0}, |
| 440 }; |
| 441 |
| 442 for (const auto& testCase : testCases) |
| 443 test(testCase); |
| 444 } |
| 445 |
417 } // namespace blink | 446 } // namespace blink |
OLD | NEW |