Checking in for bug 50742, this change removes the use of XIF in mozilla and replaces the XIF converter with a HTML (and XML) serializer.
Contextual information added to HTML copy and intelligence added to HTML paste in the editor (fixes bugs 47014, 50568 and 46554, and partly (at least) fixes bug 53188). Code written by vidur, jfrancis, jst, akkana. Tested by jfrancis, akkana, vidur, jst, kin. Reviwed (and super reviewed) by waterson, vidur, kin, jfrancis, jst
This commit is contained in:
@@ -63,8 +63,8 @@ public:
|
||||
PRInt32* aUnicode) const;
|
||||
NS_IMETHOD HTMLConvertUnicodeToEntity(PRInt32 aUnicode,
|
||||
nsCString& aEntity) const;
|
||||
NS_IMETHOD IsContainer(nsString& aTag, PRBool& aIsContainer) const;
|
||||
NS_IMETHOD IsBlock(nsString& aTag, PRBool& aIsBlock) const;
|
||||
NS_IMETHOD IsContainer(PRInt32 aId, PRBool& aIsContainer) const;
|
||||
NS_IMETHOD IsBlock(PRInt32 aId, PRBool& aIsBlock) const;
|
||||
};
|
||||
|
||||
nsParserService::nsParserService()
|
||||
@@ -112,24 +112,21 @@ nsParserService::HTMLConvertUnicodeToEntity(PRInt32 aUnicode,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsParserService::IsContainer(nsString& aTag, PRBool& aIsContainer) const
|
||||
nsParserService::IsContainer(PRInt32 aId, PRBool& aIsContainer) const
|
||||
{
|
||||
PRInt32 id = nsHTMLTags::LookupTag(aTag);
|
||||
aIsContainer = nsHTMLElement::IsContainer((eHTMLTags)id);
|
||||
aIsContainer = nsHTMLElement::IsContainer((eHTMLTags)aId);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsParserService::IsBlock(nsString& aTag, PRBool& aIsBlock) const
|
||||
nsParserService::IsBlock(PRInt32 aId, PRBool& aIsBlock) const
|
||||
{
|
||||
PRInt32 id = nsHTMLTags::LookupTag(aTag);
|
||||
|
||||
if((id>eHTMLTag_unknown) && (id<eHTMLTag_userdefined)) {
|
||||
aIsBlock=((gHTMLElements[id].IsMemberOf(kBlock)) ||
|
||||
(gHTMLElements[id].IsMemberOf(kBlockEntity)) ||
|
||||
(gHTMLElements[id].IsMemberOf(kHeading)) ||
|
||||
(gHTMLElements[id].IsMemberOf(kPreformatted))||
|
||||
(gHTMLElements[id].IsMemberOf(kList)));
|
||||
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 = PR_FALSE;
|
||||
@@ -147,6 +144,7 @@ static NS_DEFINE_CID(kWellFormedDTDCID, NS_WELLFORMEDDTD_CID);
|
||||
static NS_DEFINE_CID(kNavDTDCID, NS_CNAVDTD_CID);
|
||||
static NS_DEFINE_CID(kXIFDTDCID, NS_XIF_DTD_CID);
|
||||
static NS_DEFINE_CID(kCOtherDTDCID, NS_COTHER_DTD_CID);
|
||||
static NS_DEFINE_CID(kCTransitionalDTDCID, NS_CTRANSITIONAL_DTD_CID);
|
||||
static NS_DEFINE_CID(kViewSourceDTDCID, NS_VIEWSOURCE_DTD_CID);
|
||||
static NS_DEFINE_CID(kRtfDTDCID, NS_CRTF_DTD_CID);
|
||||
static NS_DEFINE_CID(kHTMLContentSinkStreamCID, NS_HTMLCONTENTSINKSTREAM_CID);
|
||||
@@ -166,6 +164,7 @@ static Components gComponents[] = {
|
||||
{ "Navigator HTML DTD", &kNavDTDCID },
|
||||
{ "XIF DTD", &kXIFDTDCID },
|
||||
{ "OTHER DTD", &kCOtherDTDCID },
|
||||
{ "Transitional DTD", &kCTransitionalDTDCID },
|
||||
{ "ViewSource DTD", &kViewSourceDTDCID },
|
||||
{ "Rtf DTD", &kRtfDTDCID },
|
||||
{ "HTML Content Sink Stream", &kHTMLContentSinkStreamCID },
|
||||
@@ -182,6 +181,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(CWellFormedDTD)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(CNavDTD)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsXIFDTD)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(COtherDTD)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(CTransitionalDTD)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(CViewSourceHTML)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(CRtfDTD)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLContentSinkStream)
|
||||
@@ -212,6 +212,7 @@ protected:
|
||||
nsCOMPtr<nsIGenericFactory> mNavHTMLDTDFactory;
|
||||
nsCOMPtr<nsIGenericFactory> mXIFDTDFactory;
|
||||
nsCOMPtr<nsIGenericFactory> mOtherHTMLDTDFactory;
|
||||
nsCOMPtr<nsIGenericFactory> mTransitionalHTMLDTDFactory;
|
||||
nsCOMPtr<nsIGenericFactory> mViewSourceHTMLDTDFactory;
|
||||
nsCOMPtr<nsIGenericFactory> mRtfHTMLDTDFactory;
|
||||
nsCOMPtr<nsIGenericFactory> mHTMLContentSinkStreamFactory;
|
||||
@@ -326,6 +327,13 @@ nsParserModule::GetClassObject(nsIComponentManager *aCompMgr,
|
||||
}
|
||||
fact = mOtherHTMLDTDFactory;
|
||||
}
|
||||
else if (aClass.Equals(kCTransitionalDTDCID)) {
|
||||
if (!mTransitionalHTMLDTDFactory) {
|
||||
rv = NS_NewGenericFactory(getter_AddRefs(mTransitionalHTMLDTDFactory),
|
||||
&CTransitionalDTDConstructor);
|
||||
}
|
||||
fact = mTransitionalHTMLDTDFactory;
|
||||
}
|
||||
else if (aClass.Equals(kViewSourceDTDCID)) {
|
||||
if (!mViewSourceHTMLDTDFactory) {
|
||||
rv = NS_NewGenericFactory(getter_AddRefs(mViewSourceHTMLDTDFactory),
|
||||
|
||||
Reference in New Issue
Block a user