Don't drop the old sheet when "rel" changes from one value that contains
"stylesheet" to anoher. Bug 360746, r+sr=sicking git-svn-id: svn://10.0.0.236/trunk@225026 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -297,12 +297,20 @@ nsHTMLLinkElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
|
||||
nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
|
||||
aValue, aNotify);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
PRBool dropSheet = PR_FALSE;
|
||||
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::rel &&
|
||||
mStyleSheet) {
|
||||
nsStringArray linkTypes(4);
|
||||
nsStyleLinkElement::ParseLinkTypes(aValue, linkTypes);
|
||||
dropSheet = linkTypes.IndexOf(NS_LITERAL_STRING("stylesheet")) < 0;
|
||||
}
|
||||
|
||||
UpdateStyleSheetInternal(nsnull,
|
||||
aNameSpaceID == kNameSpaceID_None &&
|
||||
(aName == nsGkAtoms::rel ||
|
||||
aName == nsGkAtoms::title ||
|
||||
aName == nsGkAtoms::media ||
|
||||
aName == nsGkAtoms::type));
|
||||
dropSheet ||
|
||||
(aNameSpaceID == kNameSpaceID_None &&
|
||||
(aName == nsGkAtoms::title ||
|
||||
aName == nsGkAtoms::media ||
|
||||
aName == nsGkAtoms::type)));
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
||||
14
mozilla/layout/reftests/bugs/360746-1-ref.html
Normal file
14
mozilla/layout/reftests/bugs/360746-1-ref.html
Normal file
@@ -0,0 +1,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Testcase bug 360746 - The right panel has disappeared at andrewdupont.net</title>
|
||||
<style>
|
||||
div { height: 20px; background-color: green }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="test1"></div>
|
||||
<div id="test2"></div>
|
||||
<div id="test3"></div>
|
||||
<div id="test4"></div>
|
||||
</body>
|
||||
</html>
|
||||
40
mozilla/layout/reftests/bugs/360746-1.html
Normal file
40
mozilla/layout/reftests/bugs/360746-1.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Testcase bug 360746 - The right panel has disappeared at andrewdupont.net</title>
|
||||
<style>
|
||||
div { height: 20px }
|
||||
#test1 {
|
||||
background-color: red;
|
||||
}
|
||||
#test2 {
|
||||
background-color: red;
|
||||
}
|
||||
#test3 {
|
||||
background-color: green;
|
||||
}
|
||||
#test4 {
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
<link href="data:text/css;charset=utf-8," title="narrow" rel="stylesheet" type="text/css" />
|
||||
<link href="data:text/css;charset=utf-8,%23test1%20%7Bbackground-color%3A%20green%3B%7D" title="medium" rel="alternate stylesheet" type="text/css" />
|
||||
<link href="data:text/css;charset=utf-8,%23test2%20%7Bbackground-color%3A%20green%3B%7D" type="text/css" />
|
||||
<link href="data:text/css;charset=utf-8,%23test3%20%7Bbackground-color%3A%20red%3B%7D" rel="stylesheet" type="text/css" />
|
||||
<link href="data:text/css;charset=utf-8,%23test4%20%7Bbackground-color%3A%20red%3B%7D" rel="stylesheet" type="text/css" />
|
||||
<script>
|
||||
document.getElementsByTagName('link')[1].disabled = false;
|
||||
document.getElementsByTagName('link')[1].rel = 'stylesheet';
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="test1"></div>
|
||||
<div id="test2"></div>
|
||||
<div id="test3"></div>
|
||||
<div id="test4"></div>
|
||||
<script>
|
||||
document.getElementsByTagName('link')[2].rel = 'stylesheet for-the-win';
|
||||
document.getElementsByTagName('link')[3].rel = 'just for-the-win';
|
||||
document.getElementsByTagName('link')[4].removeAttribute("rel");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -150,6 +150,7 @@ fails == 351641-2b.html 351641-2-ref.html # bug 358433 (2006-10-19)
|
||||
== 359903-1.html 359903-1-ref.html
|
||||
== 359903-2.html 359903-2-ref.html
|
||||
== 360065-1.html 360065-1-ref.html
|
||||
== 360746-1.html 360746-1-ref.html
|
||||
== 360757-1a.html 360757-1-ref.html
|
||||
== 360757-1b.html 360757-1-ref.html
|
||||
== 361091-1.html 361091-1-ref.html
|
||||
|
||||
Reference in New Issue
Block a user