зеркало из https://github.com/mozilla/gecko-dev.git
fix for bug 209780 - do UTF16->UTF8 conversion outside the recursion, so that we don't constantly convert the string we're looking for
r=dbaron, sr=jst
This commit is contained in:
Родитель
705c9c0bda
Коммит
10e1d18eaf
|
@ -162,7 +162,7 @@ IsNamedItem(nsIContent* aContent, nsIAtom *aTag, nsAString& aName);
|
|||
|
||||
// MatchElementId is defined in nsXMLDocument.cpp
|
||||
nsIContent *
|
||||
MatchElementId(nsIContent *aContent, const nsAString& aId);
|
||||
MatchElementId(nsIContent *aContent, const nsACString& aUTF8Id, const nsAString& aId);
|
||||
|
||||
|
||||
static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID);
|
||||
|
@ -2839,7 +2839,7 @@ nsHTMLDocument::GetElementById(const nsAString& aElementId,
|
|||
"getElementById(\"\") called, fix caller?");
|
||||
|
||||
if (mRootContent && !aElementId.IsEmpty()) {
|
||||
e = MatchElementId(mRootContent, aElementId);
|
||||
e = MatchElementId(mRootContent, NS_ConvertUCS2toUTF8(aElementId), aElementId);
|
||||
}
|
||||
|
||||
if (!e) {
|
||||
|
|
|
@ -1001,7 +1001,7 @@ nsXMLDocument::CreateElementNS(const nsAString& aNamespaceURI,
|
|||
// Id attribute matching function used by nsXMLDocument and
|
||||
// nsHTMLDocument.
|
||||
nsIContent *
|
||||
MatchElementId(nsIContent *aContent, const nsAString& aId)
|
||||
MatchElementId(nsIContent *aContent, const nsACString& aUTF8Id, const nsAString& aId)
|
||||
{
|
||||
if (aContent->IsContentOfType(nsIContent::eHTML)) {
|
||||
if (aContent->HasAttr(kNameSpaceID_None, nsHTMLAtoms::id)) {
|
||||
|
@ -1019,7 +1019,7 @@ MatchElementId(nsIContent *aContent, const nsAString& aId)
|
|||
if (xmlContent) {
|
||||
nsCOMPtr<nsIAtom> value;
|
||||
if (NS_SUCCEEDED(xmlContent->GetID(getter_AddRefs(value))) &&
|
||||
value && value->Equals(aId)) {
|
||||
value && value->EqualsUTF8(aUTF8Id)) {
|
||||
return aContent;
|
||||
}
|
||||
}
|
||||
|
@ -1032,7 +1032,7 @@ MatchElementId(nsIContent *aContent, const nsAString& aId)
|
|||
nsCOMPtr<nsIContent> child;
|
||||
for (i = 0; i < count && result == nsnull; i++) {
|
||||
aContent->ChildAt(i, getter_AddRefs(child));
|
||||
result = MatchElementId(child, aId);
|
||||
result = MatchElementId(child, aUTF8Id, aId);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -1058,7 +1058,9 @@ nsXMLDocument::GetElementById(const nsAString& aElementId,
|
|||
// XXX For now, we do a brute force search of the content tree.
|
||||
// We should come up with a more efficient solution.
|
||||
// Note that content is *not* refcounted here, so do *not* release it!
|
||||
nsIContent *content = MatchElementId(mRootContent, aElementId);
|
||||
nsIContent *content = MatchElementId(mRootContent,
|
||||
NS_ConvertUCS2toUTF8(aElementId),
|
||||
aElementId);
|
||||
|
||||
if (!content) {
|
||||
return NS_OK;
|
||||
|
|
Загрузка…
Ссылка в новой задаче