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:
bzbarsky%mit.edu
2007-04-25 18:48:18 +00:00
parent a96ed5e357
commit de5f48f022
4 changed files with 68 additions and 5 deletions

View File

@@ -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;

View 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>

View 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>

View File

@@ -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