mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backout a6f040934c99 (Bug 548133) for reftest orange
This commit is contained in:
parent
916da33f22
commit
f25d874531
@ -2281,20 +2281,37 @@ nsObjectLoadingContent::LoadFallback(FallbackType aType, bool aNotify) {
|
|||||||
aType = eFallbackAlternate;
|
aType = eFallbackAlternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// XXX(johns): This block is just mimicing legacy behavior, not any spec
|
||||||
|
// Check if we have any significant content (excluding param tags) OR a
|
||||||
|
// param named 'pluginUrl'
|
||||||
|
bool hasAlternateContent = false;
|
||||||
|
bool hasPluginUrl = false;
|
||||||
if (thisContent->Tag() == nsGkAtoms::object &&
|
if (thisContent->Tag() == nsGkAtoms::object &&
|
||||||
(aType == eFallbackUnsupported ||
|
(aType == eFallbackUnsupported ||
|
||||||
aType == eFallbackDisabled ||
|
aType == eFallbackDisabled ||
|
||||||
aType == eFallbackBlocklisted))
|
aType == eFallbackBlocklisted))
|
||||||
{
|
{
|
||||||
// Show alternate content instead, if it exists
|
|
||||||
for (nsIContent* child = thisContent->GetFirstChild();
|
for (nsIContent* child = thisContent->GetFirstChild();
|
||||||
child; child = child->GetNextSibling()) {
|
child; child = child->GetNextSibling())
|
||||||
if (!child->IsHTML(nsGkAtoms::param) &&
|
{
|
||||||
nsStyleUtil::IsSignificantChild(child, true, false)) {
|
if (child->IsHTML(nsGkAtoms::param)) {
|
||||||
aType = eFallbackAlternate;
|
if (child->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
|
||||||
break;
|
NS_LITERAL_STRING("pluginurl"), eIgnoreCase)) {
|
||||||
|
hasPluginUrl = true;
|
||||||
|
}
|
||||||
|
} else if (nsStyleUtil::IsSignificantChild(child, true, false)) {
|
||||||
|
hasAlternateContent = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show alternate content if it exists, unless we have a 'pluginurl' param,
|
||||||
|
// in which case the missing-plugin fallback handler will want to handle
|
||||||
|
// it
|
||||||
|
if (hasAlternateContent && !hasPluginUrl) {
|
||||||
|
LOG(("OBJLC [%p]: Unsupported/disabled/blocked plugin has alternate "
|
||||||
|
"content, showing instead of custom handler", this));
|
||||||
|
aType = eFallbackAlternate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mType = eType_Null;
|
mType = eType_Null;
|
||||||
|
@ -43,7 +43,7 @@ document.addEventListener("PluginBlocklisted", blocked_plugin_detected, true);
|
|||||||
<div><embed id="plugin1" style="width: 100px; height: 100px" type="application/x-test"></div>
|
<div><embed id="plugin1" style="width: 100px; height: 100px" type="application/x-test"></div>
|
||||||
<div><embed id="plugin2" style="width: 100px; height: 100px" src="data:application/x-test,test"></div>
|
<div><embed id="plugin2" style="width: 100px; height: 100px" src="data:application/x-test,test"></div>
|
||||||
|
|
||||||
<!-- So do objects with a type/uri and no content -->
|
<!-- So do objects with no content and no pluginurl -->
|
||||||
<div><object id="plugin3" style="width: 100px; height: 100px" type="application/x-test"></object></div>
|
<div><object id="plugin3" style="width: 100px; height: 100px" type="application/x-test"></object></div>
|
||||||
<div><object id="plugin4" style="width: 100px; height: 100px" data="data:application/x-test,test"></object></div>
|
<div><object id="plugin4" style="width: 100px; height: 100px" data="data:application/x-test,test"></object></div>
|
||||||
|
|
||||||
@ -69,6 +69,16 @@ document.addEventListener("PluginBlocklisted", blocked_plugin_detected, true);
|
|||||||
|
|
||||||
</object></div>
|
</object></div>
|
||||||
|
|
||||||
|
<!-- Pluginurl forces the psuedo class and error event regardless of content -->
|
||||||
|
<div><object id="plugin11" style="width: 100px; height: 100px" type="application/x-test">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
|
<p>Fallback content</p>
|
||||||
|
</object></div>
|
||||||
|
<div><object id="plugin12" style="width: 100px; height: 100px" data="data:application/x-test,test">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
|
<p>Fallback content</p>
|
||||||
|
</object></div>
|
||||||
|
|
||||||
<!-- No errors or psuedo classes for objects with fallback content -->
|
<!-- No errors or psuedo classes for objects with fallback content -->
|
||||||
<div><object id="fallback1" style="width: 100px; height: 100px" type="application/x-test">
|
<div><object id="fallback1" style="width: 100px; height: 100px" type="application/x-test">
|
||||||
<p>Fallback content</p>
|
<p>Fallback content</p>
|
||||||
@ -80,10 +90,10 @@ document.addEventListener("PluginBlocklisted", blocked_plugin_detected, true);
|
|||||||
<!-- Even other plugins are considered content so no errors dispatched from these
|
<!-- Even other plugins are considered content so no errors dispatched from these
|
||||||
objects, but the inner embeds do get processed -->
|
objects, but the inner embeds do get processed -->
|
||||||
<div><object id="fallback3" style="width: 100px; height: 100px" type="application/x-test">
|
<div><object id="fallback3" style="width: 100px; height: 100px" type="application/x-test">
|
||||||
<embed id="plugin11" style="width: 100px; height: 100px" type="application/x-test">
|
<embed id="plugin13" style="width: 100px; height: 100px" type="application/x-test">
|
||||||
</object></div>
|
</object></div>
|
||||||
<div><object id="fallback4" style="width: 100px; height: 100px" data="data:application/x-test,test">
|
<div><object id="fallback4" style="width: 100px; height: 100px" data="data:application/x-test,test">
|
||||||
<embed id="plugin12" style="width: 100px; height: 100px" type="application/x-test">
|
<embed id="plugin14" style="width: 100px; height: 100px" type="application/x-test">
|
||||||
</object></div>
|
</object></div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
@ -43,7 +43,7 @@ document.addEventListener("PluginBlocklisted", blocked_plugin_detected, true);
|
|||||||
<div><embed id="plugin1" style="width: 100px; height: 100px" type="application/x-unknown"></div>
|
<div><embed id="plugin1" style="width: 100px; height: 100px" type="application/x-unknown"></div>
|
||||||
<div><embed id="plugin2" style="width: 100px; height: 100px" src="data:application/x-unknown,test"></div>
|
<div><embed id="plugin2" style="width: 100px; height: 100px" src="data:application/x-unknown,test"></div>
|
||||||
|
|
||||||
<!-- So do objects with a type/uri and no content -->
|
<!-- So do objects with no content and no pluginurl -->
|
||||||
<div><object id="plugin3" style="width: 100px; height: 100px" type="application/x-unknown"></object></div>
|
<div><object id="plugin3" style="width: 100px; height: 100px" type="application/x-unknown"></object></div>
|
||||||
<div><object id="plugin4" style="width: 100px; height: 100px" data="data:application/x-unknown,test"></object></div>
|
<div><object id="plugin4" style="width: 100px; height: 100px" data="data:application/x-unknown,test"></object></div>
|
||||||
|
|
||||||
@ -69,6 +69,16 @@ document.addEventListener("PluginBlocklisted", blocked_plugin_detected, true);
|
|||||||
|
|
||||||
</object></div>
|
</object></div>
|
||||||
|
|
||||||
|
<!-- Pluginurl forces the psuedo class and error event regardless of content -->
|
||||||
|
<div><object id="plugin11" style="width: 100px; height: 100px" type="application/x-unknown">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
|
<p>Fallback content</p>
|
||||||
|
</object></div>
|
||||||
|
<div><object id="plugin12" style="width: 100px; height: 100px" data="data:application/x-unknown,test">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
|
<p>Fallback content</p>
|
||||||
|
</object></div>
|
||||||
|
|
||||||
<!-- No errors or psuedo classes for objects with fallback content -->
|
<!-- No errors or psuedo classes for objects with fallback content -->
|
||||||
<div><object id="fallback1" style="width: 100px; height: 100px" type="application/x-unknown">
|
<div><object id="fallback1" style="width: 100px; height: 100px" type="application/x-unknown">
|
||||||
<p>Fallback content</p>
|
<p>Fallback content</p>
|
||||||
@ -80,10 +90,10 @@ document.addEventListener("PluginBlocklisted", blocked_plugin_detected, true);
|
|||||||
<!-- Even other plugins are considered content so no errors dispatched from these
|
<!-- Even other plugins are considered content so no errors dispatched from these
|
||||||
objects, but the inner embeds do get processed -->
|
objects, but the inner embeds do get processed -->
|
||||||
<div><object id="fallback3" style="width: 100px; height: 100px" type="application/x-unknown">
|
<div><object id="fallback3" style="width: 100px; height: 100px" type="application/x-unknown">
|
||||||
<embed id="plugin11" style="width: 100px; height: 100px" type="application/x-unknown">
|
<embed id="plugin13" style="width: 100px; height: 100px" type="application/x-unknown">
|
||||||
</object></div>
|
</object></div>
|
||||||
<div><object id="fallback4" style="width: 100px; height: 100px" data="data:application/x-unknown,test">
|
<div><object id="fallback4" style="width: 100px; height: 100px" data="data:application/x-unknown,test">
|
||||||
<embed id="plugin12" style="width: 100px; height: 100px" type="application/x-unknown">
|
<embed id="plugin14" style="width: 100px; height: 100px" type="application/x-unknown">
|
||||||
</object></div>
|
</object></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -19,7 +19,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=391728
|
|||||||
<script class="testbody" type="text/javascript">
|
<script class="testbody" type="text/javascript">
|
||||||
/** Test for Bug 391728 **/
|
/** Test for Bug 391728 **/
|
||||||
// Plugins that should dispatch error events and have the pseudo classes set
|
// Plugins that should dispatch error events and have the pseudo classes set
|
||||||
const PLUGIN_COUNT = 12;
|
const PLUGIN_COUNT = 14;
|
||||||
// Plugins that should neither dispatch error events or have the pseudo classes set
|
// Plugins that should neither dispatch error events or have the pseudo classes set
|
||||||
const FALLBACK_COUNT = 4;
|
const FALLBACK_COUNT = 4;
|
||||||
|
|
||||||
|
@ -43,36 +43,47 @@ Embed height=100 (stylesheet width:400px height:400px)
|
|||||||
|
|
||||||
Object without defined width/height:
|
Object without defined width/height:
|
||||||
<object id="object1" type="bogus">
|
<object id="object1" type="bogus">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width=0 height=0
|
Object width=0 height=0
|
||||||
<object id="object2" type="bogus" width="0" height="0">
|
<object id="object2" type="bogus" width="0" height="0">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width=100 height=100
|
Object width=100 height=100
|
||||||
<object id="object3" type="bogus" width="100" height="100">
|
<object id="object3" type="bogus" width="100" height="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object height=100
|
Object height=100
|
||||||
<object id="object4" type="bogus" height="100">
|
<object id="object4" type="bogus" height="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width=100
|
Object width=100
|
||||||
<object id="object5" type="bogus" width="100">
|
<object id="object5" type="bogus" width="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width=100xxx height=100
|
Object width=100xxx height=100
|
||||||
<object id="object6" type="bogus" width="100xxx" height="100">
|
<object id="object6" type="bogus" width="100xxx" height="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width=0100 height=100
|
Object width=0100 height=100
|
||||||
<object id="object7" type="bogus" width="0100" height="100">
|
<object id="object7" type="bogus" width="0100" height="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width= height=100
|
Object width= height=100
|
||||||
<object id="object8" type="bogus" width="" height="100">
|
<object id="object8" type="bogus" width="" height="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object width=100 height=100 style="width:400px"
|
Object width=100 height=100 style="width:400px"
|
||||||
<object id="object9" type="bogus" width="100" height="100" style="width:400px;">
|
<object id="object9" type="bogus" width="100" height="100" style="width:400px;">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object height=100 style="width:400px"
|
Object height=100 style="width:400px"
|
||||||
<object id="object10" type="bogus" height="100" style="width:400px;">
|
<object id="object10" type="bogus" height="100" style="width:400px;">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
Object height=100 (stylesheet width:400px height:400px)
|
Object height=100 (stylesheet width:400px height:400px)
|
||||||
<object id="object11" type="bogus" height="100">
|
<object id="object11" type="bogus" height="100">
|
||||||
|
<param name="pluginurl" value="http://foo">
|
||||||
</object><br>
|
</object><br>
|
||||||
</div>
|
</div>
|
||||||
<pre id="test">
|
<pre id="test">
|
||||||
|
@ -3762,7 +3762,8 @@ nsObjectFrame* nsPluginInstanceOwner::GetFrame()
|
|||||||
// |value| for certain inputs of |name|
|
// |value| for certain inputs of |name|
|
||||||
void nsPluginInstanceOwner::FixUpURLS(const nsString &name, nsAString &value)
|
void nsPluginInstanceOwner::FixUpURLS(const nsString &name, nsAString &value)
|
||||||
{
|
{
|
||||||
if (name.LowerCaseEqualsLiteral("pluginspage")) {
|
if (name.LowerCaseEqualsLiteral("pluginurl") ||
|
||||||
|
name.LowerCaseEqualsLiteral("pluginspage")) {
|
||||||
nsCOMPtr<nsIURI> baseURI = mContent->GetBaseURI();
|
nsCOMPtr<nsIURI> baseURI = mContent->GetBaseURI();
|
||||||
nsAutoString newURL;
|
nsAutoString newURL;
|
||||||
NS_MakeAbsoluteURI(newURL, value, baseURI);
|
NS_MakeAbsoluteURI(newURL, value, baseURI);
|
||||||
|
@ -76,6 +76,8 @@ CSS_PSEUDO_CLASS(nthLastChild, ":nth-last-child")
|
|||||||
CSS_PSEUDO_CLASS(nthOfType, ":nth-of-type")
|
CSS_PSEUDO_CLASS(nthOfType, ":nth-of-type")
|
||||||
CSS_PSEUDO_CLASS(nthLastOfType, ":nth-last-of-type")
|
CSS_PSEUDO_CLASS(nthLastOfType, ":nth-last-of-type")
|
||||||
|
|
||||||
|
CSS_PSEUDO_CLASS(mozHasHandlerRef, ":-moz-has-handlerref")
|
||||||
|
|
||||||
// Match nodes that are HTML but not XHTML
|
// Match nodes that are HTML but not XHTML
|
||||||
CSS_PSEUDO_CLASS(mozIsHTML, ":-moz-is-html")
|
CSS_PSEUDO_CLASS(mozIsHTML, ":-moz-is-html")
|
||||||
|
|
||||||
|
@ -1909,6 +1909,27 @@ static bool SelectorMatches(Element* aElement,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case nsCSSPseudoClasses::ePseudoClass_mozHasHandlerRef:
|
||||||
|
{
|
||||||
|
nsIContent *child = nullptr;
|
||||||
|
int32_t index = -1;
|
||||||
|
|
||||||
|
do {
|
||||||
|
child = aElement->GetChildAt(++index);
|
||||||
|
if (child && child->IsHTML() &&
|
||||||
|
child->Tag() == nsGkAtoms::param &&
|
||||||
|
child->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
|
||||||
|
NS_LITERAL_STRING("pluginurl"),
|
||||||
|
eIgnoreCase)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (child);
|
||||||
|
if (!child) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case nsCSSPseudoClasses::ePseudoClass_mozIsHTML:
|
case nsCSSPseudoClasses::ePseudoClass_mozIsHTML:
|
||||||
if (!aTreeMatchContext.mIsHTMLDocument || !aElement->IsHTML()) {
|
if (!aTreeMatchContext.mIsHTMLDocument || !aElement->IsHTML()) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -813,6 +813,7 @@ function run() {
|
|||||||
test_parseable(":-moz-handler-disabled");
|
test_parseable(":-moz-handler-disabled");
|
||||||
test_parseable(":-moz-handler-blocked");
|
test_parseable(":-moz-handler-blocked");
|
||||||
test_parseable(":-moz-handler-crashed");
|
test_parseable(":-moz-handler-crashed");
|
||||||
|
test_parseable(":-moz-has-handlerref");
|
||||||
|
|
||||||
// Case sensitivity of tag selectors
|
// Case sensitivity of tag selectors
|
||||||
function setup_cased_spans(body) {
|
function setup_cased_spans(body) {
|
||||||
|
@ -8,10 +8,10 @@
|
|||||||
override the default Mozilla plugin finder service with their own mechanism. */
|
override the default Mozilla plugin finder service with their own mechanism. */
|
||||||
embed:-moz-type-unsupported,
|
embed:-moz-type-unsupported,
|
||||||
applet:-moz-type-unsupported,
|
applet:-moz-type-unsupported,
|
||||||
object:-moz-type-unsupported,
|
object:-moz-has-handlerref:-moz-type-unsupported,
|
||||||
embed:-moz-type-unsupported-platform,
|
embed:-moz-type-unsupported-platform,
|
||||||
applet:-moz-type-unsupported-platform,
|
applet:-moz-type-unsupported-platform,
|
||||||
object:-moz-type-unsupported-platform {
|
object:-moz-has-handlerref:-moz-type-unsupported-platform {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
-moz-binding: url('chrome://mozapps/content/plugins/pluginProblem.xml#pluginProblem') !important;
|
-moz-binding: url('chrome://mozapps/content/plugins/pluginProblem.xml#pluginProblem') !important;
|
||||||
|
@ -18,8 +18,8 @@ applet:-moz-handler-clicktoplay,
|
|||||||
applet:-moz-handler-playpreview,
|
applet:-moz-handler-playpreview,
|
||||||
applet:-moz-handler-vulnerable-updatable,
|
applet:-moz-handler-vulnerable-updatable,
|
||||||
applet:-moz-handler-vulnerable-no-update,
|
applet:-moz-handler-vulnerable-no-update,
|
||||||
object:-moz-handler-disabled,
|
object:-moz-has-handlerref:-moz-handler-disabled,
|
||||||
object:-moz-handler-blocked,
|
object:-moz-has-handlerref:-moz-handler-blocked,
|
||||||
object:-moz-handler-crashed,
|
object:-moz-handler-crashed,
|
||||||
object:-moz-handler-clicktoplay,
|
object:-moz-handler-clicktoplay,
|
||||||
object:-moz-handler-playpreview,
|
object:-moz-handler-playpreview,
|
||||||
|
Loading…
Reference in New Issue
Block a user