mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 15:58:39 +09:00
Issue #1375 - Stop largely using the parser service
This is based on Bug 1395828 * Add nsHTMLElement::IsBlock() * Rename nsHTMLTags methods * Remove AssertParserServiceIsCorrect() * Remove most uses of nsIParserService/nsParserService
This commit is contained in:
parent
cc649173d2
commit
9928baf912
18 changed files with 77 additions and 193 deletions
|
|
@ -15,6 +15,7 @@ XPIDL_SOURCES += [
|
|||
XPIDL_MODULE = 'htmlparser'
|
||||
|
||||
EXPORTS += [
|
||||
'nsElementTable.h',
|
||||
'nsHTMLTagList.h',
|
||||
'nsHTMLTags.h',
|
||||
'nsIContentSink.h',
|
||||
|
|
|
|||
|
|
@ -174,14 +174,23 @@ const nsHTMLElement gHTMLElements[] = {
|
|||
|
||||
/*********************************************************************************************/
|
||||
|
||||
bool nsHTMLElement::IsContainer(eHTMLTags aChild)
|
||||
{
|
||||
return !gHTMLElements[aChild].mLeaf;
|
||||
}
|
||||
|
||||
bool nsHTMLElement::IsMemberOf(int32_t aSet) const
|
||||
{
|
||||
return TestBits(aSet,mParentBits);
|
||||
return TestBits(aSet, mParentBits);
|
||||
}
|
||||
|
||||
bool nsHTMLElement::IsContainer(eHTMLTags aId)
|
||||
{
|
||||
return !gHTMLElements[aId].mLeaf;
|
||||
}
|
||||
|
||||
bool nsHTMLElement::IsBlock(eHTMLTags aId)
|
||||
{
|
||||
return gHTMLElements[aId].IsMemberOf(kBlock) ||
|
||||
gHTMLElements[aId].IsMemberOf(kBlockEntity) ||
|
||||
gHTMLElements[aId].IsMemberOf(kHeading) ||
|
||||
gHTMLElements[aId].IsMemberOf(kPreformatted)||
|
||||
gHTMLElements[aId].IsMemberOf(kList);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ struct nsHTMLElement {
|
|||
bool mLeaf;
|
||||
|
||||
static bool IsContainer(eHTMLTags aTag);
|
||||
static bool IsBlock(eHTMLTags aTag);
|
||||
};
|
||||
|
||||
extern const nsHTMLElement gHTMLElements[];
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ nsHTMLTags::ReleaseTable(void)
|
|||
|
||||
// static
|
||||
nsHTMLTag
|
||||
nsHTMLTags::LookupTag(const nsAString& aTagName)
|
||||
nsHTMLTags::StringTagToId(const nsAString& aTagName)
|
||||
{
|
||||
uint32_t length = aTagName.Length();
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ nsHTMLTags::LookupTag(const nsAString& aTagName)
|
|||
|
||||
buf[i] = 0;
|
||||
|
||||
return CaseSensitiveLookupTag(buf);
|
||||
return CaseSensitiveStringTagToId(buf);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
@ -210,33 +210,33 @@ nsHTMLTags::TestTagTable()
|
|||
// Make sure we can find everything we are supposed to
|
||||
for (int i = 0; i < NS_HTML_TAG_MAX; ++i) {
|
||||
tag = sTagUnicodeTable[i];
|
||||
id = LookupTag(nsDependentString(tag));
|
||||
id = StringTagToId(nsDependentString(tag));
|
||||
NS_ASSERTION(id != eHTMLTag_userdefined, "can't find tag id");
|
||||
const char16_t* check = GetStringValue(id);
|
||||
NS_ASSERTION(0 == nsCRT::strcmp(check, tag), "can't map id back to tag");
|
||||
|
||||
nsAutoString uname(tag);
|
||||
ToUpperCase(uname);
|
||||
NS_ASSERTION(id == LookupTag(uname), "wrong id");
|
||||
NS_ASSERTION(id == StringTagToId(uname), "wrong id");
|
||||
|
||||
NS_ASSERTION(id == CaseSensitiveLookupTag(tag), "wrong id");
|
||||
NS_ASSERTION(id == CaseSensitiveStringTagToId(tag), "wrong id");
|
||||
|
||||
atom = NS_Atomize(tag);
|
||||
NS_ASSERTION(id == CaseSensitiveLookupTag(atom), "wrong id");
|
||||
NS_ASSERTION(id == CaseSensitiveAtomTagToId(atom), "wrong id");
|
||||
NS_ASSERTION(atom == GetAtom(id), "can't map id back to atom");
|
||||
}
|
||||
|
||||
// Make sure we don't find things that aren't there
|
||||
id = LookupTag(NS_LITERAL_STRING("@"));
|
||||
id = StringTagToId(NS_LITERAL_STRING("@"));
|
||||
NS_ASSERTION(id == eHTMLTag_userdefined, "found @");
|
||||
id = LookupTag(NS_LITERAL_STRING("zzzzz"));
|
||||
id = StringTagToId(NS_LITERAL_STRING("zzzzz"));
|
||||
NS_ASSERTION(id == eHTMLTag_userdefined, "found zzzzz");
|
||||
|
||||
atom = NS_Atomize("@");
|
||||
id = CaseSensitiveLookupTag(atom);
|
||||
id = CaseSensitiveAtomTagToId(atom);
|
||||
NS_ASSERTION(id == eHTMLTag_userdefined, "found @");
|
||||
atom = NS_Atomize("zzzzz");
|
||||
id = CaseSensitiveLookupTag(atom);
|
||||
id = CaseSensitiveAtomTagToId(atom);
|
||||
NS_ASSERTION(id == eHTMLTag_userdefined, "found zzzzz");
|
||||
|
||||
tag = GetStringValue((nsHTMLTag) 0);
|
||||
|
|
|
|||
|
|
@ -46,8 +46,13 @@ public:
|
|||
static void ReleaseTable(void);
|
||||
|
||||
// Functions for converting string or atom to id
|
||||
static nsHTMLTag LookupTag(const nsAString& aTagName);
|
||||
static nsHTMLTag CaseSensitiveLookupTag(const char16_t* aTagName)
|
||||
static nsHTMLTag StringTagToId(const nsAString& aTagName);
|
||||
static nsHTMLTag AtomTagToId(nsIAtom* aTagName)
|
||||
{
|
||||
return StringTagToId(nsDependentAtomString(aTagName));
|
||||
}
|
||||
|
||||
static nsHTMLTag CaseSensitiveStringTagToId(const char16_t* aTagName)
|
||||
{
|
||||
NS_ASSERTION(gTagTable, "no lookup table, needs addref");
|
||||
NS_ASSERTION(aTagName, "null tagname!");
|
||||
|
|
@ -56,7 +61,7 @@ public:
|
|||
|
||||
return tag ? (nsHTMLTag)NS_PTR_TO_INT32(tag) : eHTMLTag_userdefined;
|
||||
}
|
||||
static nsHTMLTag CaseSensitiveLookupTag(nsIAtom* aTagName)
|
||||
static nsHTMLTag CaseSensitiveAtomTagToId(nsIAtom* aTagName)
|
||||
{
|
||||
NS_ASSERTION(gTagAtomTable, "no lookup table, needs addref");
|
||||
NS_ASSERTION(aTagName, "null tagname!");
|
||||
|
|
|
|||
|
|
@ -25,19 +25,19 @@ NS_IMPL_ISUPPORTS(nsParserService, nsIParserService)
|
|||
int32_t
|
||||
nsParserService::HTMLAtomTagToId(nsIAtom* aAtom) const
|
||||
{
|
||||
return nsHTMLTags::LookupTag(nsDependentAtomString(aAtom));
|
||||
return nsHTMLTags::StringTagToId(nsDependentAtomString(aAtom));
|
||||
}
|
||||
|
||||
int32_t
|
||||
nsParserService::HTMLCaseSensitiveAtomTagToId(nsIAtom* aAtom) const
|
||||
{
|
||||
return nsHTMLTags::CaseSensitiveLookupTag(aAtom);
|
||||
return nsHTMLTags::CaseSensitiveAtomTagToId(aAtom);
|
||||
}
|
||||
|
||||
int32_t
|
||||
nsParserService::HTMLStringTagToId(const nsAString& aTag) const
|
||||
{
|
||||
return nsHTMLTags::LookupTag(aTag);
|
||||
return nsHTMLTags::StringTagToId(aTag);
|
||||
}
|
||||
|
||||
const char16_t*
|
||||
|
|
@ -84,16 +84,7 @@ nsParserService::IsContainer(int32_t aId, bool& aIsContainer) const
|
|||
NS_IMETHODIMP
|
||||
nsParserService::IsBlock(int32_t aId, bool& aIsBlock) const
|
||||
{
|
||||
if((aId>eHTMLTag_unknown) && (aId<eHTMLTag_userdefined)) {
|
||||
aIsBlock=((gHTMLElements[aId].IsMemberOf(kBlock)) ||
|
||||
(gHTMLElements[aId].IsMemberOf(kBlockEntity)) ||
|
||||
(gHTMLElements[aId].IsMemberOf(kHeading)) ||
|
||||
(gHTMLElements[aId].IsMemberOf(kPreformatted))||
|
||||
(gHTMLElements[aId].IsMemberOf(kList)));
|
||||
}
|
||||
else {
|
||||
aIsBlock = false;
|
||||
}
|
||||
aIsBlock = nsHTMLElement::IsBlock((eHTMLTags)aId);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue