зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1272651. Fix fallback loading of <embed> inside an <object> with no type attribute to actually work reliably. r=qdot
This commit is contained in:
Родитель
2b85094faf
Коммит
29016786b4
|
@ -3120,7 +3120,8 @@ nsObjectLoadingContent::LoadFallback(FallbackType aType, bool aNotify) {
|
|||
thisContent->IsHTMLElement(nsGkAtoms::applet)) &&
|
||||
(aType == eFallbackUnsupported ||
|
||||
aType == eFallbackDisabled ||
|
||||
aType == eFallbackBlocklisted))
|
||||
aType == eFallbackBlocklisted ||
|
||||
aType == eFallbackAlternate))
|
||||
{
|
||||
for (nsIContent* child = thisContent->GetFirstChild(); child;
|
||||
child = child->GetNextNode(thisContent)) {
|
||||
|
@ -3129,7 +3130,8 @@ nsObjectLoadingContent::LoadFallback(FallbackType aType, bool aNotify) {
|
|||
nsStyleUtil::IsSignificantChild(child, true, false)) {
|
||||
aType = eFallbackAlternate;
|
||||
}
|
||||
if (child->IsHTMLElement(nsGkAtoms::embed)) {
|
||||
if (child->IsHTMLElement(nsGkAtoms::embed) &&
|
||||
thisContent->IsHTMLElement(nsGkAtoms::object)) {
|
||||
HTMLSharedObjectElement* object = static_cast<HTMLSharedObjectElement*>(child);
|
||||
if (object) {
|
||||
object->StartObjectLoad(true, true);
|
||||
|
|
|
@ -36003,6 +36003,12 @@
|
|||
"url": "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html"
|
||||
}
|
||||
],
|
||||
"html/semantics/embedded-content/the-embed-element/embed-in-object-fallback.html": [
|
||||
{
|
||||
"path": "html/semantics/embedded-content/the-embed-element/embed-in-object-fallback.html",
|
||||
"url": "/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback.html"
|
||||
}
|
||||
],
|
||||
"html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html": [
|
||||
{
|
||||
"path": "html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html",
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<script>
|
||||
var varName = location.search.substr(1);
|
||||
parent[varName] = true;
|
||||
</script>
|
|
@ -0,0 +1,38 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>Ensure that embed elements inside object elements load when the objects
|
||||
fall back but not otherwise</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script>
|
||||
var child1Loaded = false;
|
||||
var child2Loaded = false;
|
||||
var child3Loaded = false;
|
||||
var parent3Loaded = false;
|
||||
</script>
|
||||
<object>
|
||||
<embed src="embed-in-object-fallback-subdocument.html?child1Loaded">
|
||||
</object>
|
||||
<object>
|
||||
<embed id="two" src="embed-in-object-fallback-subdocument.html?child2Loaded">
|
||||
<!-- Something that forces the embed to be in the tree before the <object>
|
||||
is done parsing -->
|
||||
<script>
|
||||
test(function() {
|
||||
assert_equals(document.getElementById("two").localName,
|
||||
"embed");
|
||||
}, "We have the right embed element");
|
||||
</script>
|
||||
</object>
|
||||
<object data="embed-in-object-fallback-subdocument.html?parent3Loaded">
|
||||
<embed src="embed-in-object-fallback-subdocument.html?child3Loaded">
|
||||
</object>
|
||||
<script>
|
||||
var t = async_test("Check that the right things loaded");
|
||||
onload = t.step_func_done(function() {
|
||||
assert_true(child1Loaded, "child 1 should load");
|
||||
assert_true(child2Loaded, "child 2 should load");
|
||||
assert_false(child3Loaded, "child 3 should not load");
|
||||
assert_true(parent3Loaded, "parent 3 should load");
|
||||
});
|
||||
</script>
|
Загрузка…
Ссылка в новой задаче