Bug 1950575 - Simplify Expat changes. r=mccr8

Differential Revision: https://phabricator.services.mozilla.com/D239716
This commit is contained in:
Peter Van der Beken
2025-03-07 14:15:29 +00:00
parent e5aa95ebae
commit c1b6e7c6d1
10 changed files with 271 additions and 144 deletions

View File

@@ -17,7 +17,10 @@
#define XMLCALL
#define XML_STATIC
#define XMLIMPORT
#ifdef HAVE_VISIBILITY_HIDDEN_ATTRIBUTE
# undef XMLIMPORT
# define XMLIMPORT __attribute__((visibility("hidden")))
#endif
#define XML_UNICODE
typedef char XML_LChar;
@@ -37,112 +40,4 @@ typedef uint16_t XML_Char;
#define XML_DTD
#define XML_NS
/* avoid conflicts with system version of libexpat */
/* expat.h */
#define XML_SetElementDeclHandler MOZ_XML_SetElementDeclHandler
#define XML_SetAttlistDeclHandler MOZ_XML_SetAttlistDeclHandler
#define XML_SetXmlDeclHandler MOZ_XML_SetXmlDeclHandler
#define XML_ParserCreate MOZ_XML_ParserCreate
#define XML_ParserCreateNS MOZ_XML_ParserCreateNS
#define XML_ParserCreate_MM MOZ_XML_ParserCreate_MM
#define XML_ParserReset MOZ_XML_ParserReset
#define XML_SetEntityDeclHandler MOZ_XML_SetEntityDeclHandler
#define XML_SetElementHandler MOZ_XML_SetElementHandler
#define XML_SetStartElementHandler MOZ_XML_SetStartElementHandler
#define XML_SetEndElementHandler MOZ_XML_SetEndElementHandler
#define XML_SetCharacterDataHandler MOZ_XML_SetCharacterDataHandler
#ifndef __VMS
#define XML_SetProcessingInstructionHandler MOZ_XML_SetProcessingInstructionHandler
#else
#define XML_SetProcessingInstrHandler MOZ_XML_SetProcessingInstrHandler
#endif
#define XML_SetCommentHandler MOZ_XML_SetCommentHandler
#define XML_SetCdataSectionHandler MOZ_XML_SetCdataSectionHandler
#define XML_SetStartCdataSectionHandler MOZ_XML_SetStartCdataSectionHandler
#define XML_SetEndCdataSectionHandler MOZ_XML_SetEndCdataSectionHandler
#define XML_SetDefaultHandler MOZ_XML_SetDefaultHandler
#define XML_SetDefaultHandlerExpand MOZ_XML_SetDefaultHandlerExpand
#define XML_SetDoctypeDeclHandler MOZ_XML_SetDoctypeDeclHandler
#define XML_SetStartDoctypeDeclHandler MOZ_XML_SetStartDoctypeDeclHandler
#define XML_SetEndDoctypeDeclHandler MOZ_XML_SetEndDoctypeDeclHandler
#ifndef __VMS
#define XML_SetUnparsedEntityDeclHandler MOZ_XML_SetUnparsedEntityDeclHandler
#else
#define XML_SetUnparsedEntDeclHandler MOZ_XML_SetUnparsedEntDeclHandler
#endif
#define XML_SetNotationDeclHandler MOZ_XML_SetNotationDeclHandler
#define XML_SetNamespaceDeclHandler MOZ_XML_SetNamespaceDeclHandler
#ifndef __VMS
#define XML_SetStartNamespaceDeclHandler MOZ_XML_SetStartNamespaceDeclHandler
#else
#define XML_SetStartNamespcDeclHandler MOZ_XML_SetStartNamespcDeclHandler
#endif
#define XML_SetEndNamespaceDeclHandler MOZ_XML_SetEndNamespaceDeclHandler
#define XML_SetNotStandaloneHandler MOZ_XML_SetNotStandaloneHandler
#define XML_SetExternalEntityRefHandler MOZ_XML_SetExternalEntityRefHandler
#ifndef __VMS
#define XML_SetExternalEntityRefHandlerArg MOZ_XML_SetExternalEntityRefHandlerArg
#else
#define XML_SetExternalEntRefHandlerArg MOZ_XML_SetExternalEntRefHandlerArg
#endif
#define XML_SetSkippedEntityHandler MOZ_XML_SetSkippedEntityHandler
#define XML_SetUnknownEncodingHandler MOZ_XML_SetUnknownEncodingHandler
#define XML_DefaultCurrent MOZ_XML_DefaultCurrent
#define XML_SetReturnNSTriplet MOZ_XML_SetReturnNSTriplet
#define XML_SetUserData MOZ_XML_SetUserData
#define XML_SetEncoding MOZ_XML_SetEncoding
#define XML_UseParserAsHandlerArg MOZ_XML_UseParserAsHandlerArg
#define XML_UseForeignDTD MOZ_XML_UseForeignDTD
#define XML_SetBase MOZ_XML_SetBase
#define XML_GetBase MOZ_XML_GetBase
#define XML_GetSpecifiedAttributeCount MOZ_XML_GetSpecifiedAttributeCount
#define XML_GetIdAttributeIndex MOZ_XML_GetIdAttributeIndex
#define XML_Parse MOZ_XML_Parse
#define XML_GetBuffer MOZ_XML_GetBuffer
#define XML_ParseBuffer MOZ_XML_ParseBuffer
#define XML_StopParser MOZ_XML_StopParser
#define XML_ResumeParser MOZ_XML_ResumeParser
#define XML_GetParsingStatus MOZ_XML_GetParsingStatus
#define XML_ExternalEntityParserCreate MOZ_XML_ExternalEntityParserCreate
#define XML_SetParamEntityParsing MOZ_XML_SetParamEntityParsing
#define XML_GetErrorCode MOZ_XML_GetErrorCode
#define XML_GetCurrentLineNumber MOZ_XML_GetCurrentLineNumber
#define XML_GetCurrentColumnNumber MOZ_XML_GetCurrentColumnNumber
#define XML_GetCurrentByteIndex MOZ_XML_GetCurrentByteIndex
#define XML_GetCurrentByteCount MOZ_XML_GetCurrentByteCount
#define XML_GetInputContext MOZ_XML_GetInputContext
#define XML_FreeContentModel MOZ_XML_FreeContentModel
#define XML_MemMalloc MOZ_XML_MemMalloc
#define XML_MemRealloc MOZ_XML_MemRealloc
#define XML_MemFree MOZ_XML_MemFree
#define XML_ParserFree MOZ_XML_ParserFree
#define XML_ErrorString MOZ_XML_ErrorString
#define XML_ExpatVersion MOZ_XML_ExpatVersion
#define XML_ExpatVersionInfo MOZ_XML_ExpatVersionInfo
#define XML_GetFeatureList MOZ_XML_GetFeatureList
/* xmlrole.h */
#define XmlPrologStateInit MOZ_XmlPrologStateInit
#ifndef __VMS
#define XmlPrologStateInitExternalEntity MOZ_XmlPrologStateInitExternalEntity
#else
#define XmlPrologStateInitExternalEnt MOZ_XmlPrologStateInitExternalEnt
#endif
/* xmltok.h */
#define XmlParseXmlDecl MOZ_XmlParseXmlDecl
#define XmlParseXmlDeclNS MOZ_XmlParseXmlDeclNS
#define XmlInitEncoding MOZ_XmlInitEncoding
#define XmlInitEncodingNS MOZ_XmlInitEncodingNS
#define XmlGetUtf8InternalEncoding MOZ_XmlGetUtf8InternalEncoding
#define XmlGetUtf16InternalEncoding MOZ_XmlGetUtf16InternalEncoding
#define XmlGetUtf8InternalEncodingNS MOZ_XmlGetUtf8InternalEncodingNS
#define XmlGetUtf16InternalEncodingNS MOZ_XmlGetUtf16InternalEncodingNS
#define XmlUtf8Encode MOZ_XmlUtf8Encode
#define XmlUtf16Encode MOZ_XmlUtf16Encode
#define XmlSizeOfUnknownEncoding MOZ_XmlSizeOfUnknownEncoding
#define XmlInitUnknownEncoding MOZ_XmlInitUnknownEncoding
#define XmlInitUnknownEncodingNS MOZ_XmlInitUnknownEncodingNS
#endif /* __expat_config_h__ */

View File

@@ -820,13 +820,7 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
When suspended, parsing can be resumed by calling XML_ResumeParser().
*/
XMLPARSEAPI(enum XML_Status)
/* BEGIN MOZILLA CHANGE (Bug 1743007 - Convert expat XML_StopParser API to take an int param instead of u8) */
#if 0
XML_StopParser(XML_Parser parser, XML_Bool resumable);
#else
XML_StopParser(XML_Parser parser, int resumable);
#endif
/* END MOZILLA CHANGE */
/* Resumes parsing after it has been suspended with XML_StopParser().
Must not be called from within a handler call-back. Returns same
@@ -1058,16 +1052,6 @@ XML_GetFeatureList(void);
#define XML_MINOR_VERSION 2
#define XML_MICRO_VERSION 1
/* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */
XMLPARSEAPI(const XML_Char*)
MOZ_XML_GetMismatchedTag(XML_Parser parser);
/* END MOZILLA CHANGE */
/* BEGIN MOZILLA CHANGE (Report whether the parser is currently expanding an entity) */
XMLPARSEAPI(XML_Bool)
MOZ_XML_ProcessingEntityValue(XML_Parser parser);
/* END MOZILLA CHANGE */
#ifdef __cplusplus
}
#endif

View File

@@ -9,12 +9,11 @@ include("sources.mozbuild")
EXPORTS += [
'expat.h',
'expat_external.h',
'moz_expat.h',
]
if CONFIG["MOZ_WASM_SANDBOXING_EXPAT"]:
# Ideally we'd only build moz_extensions.c, but it's currently included
# from xmltok.c because it uses a lot of its internals.
SOURCES += ['xmltok.c']
SOURCES += ['moz_xmltok.c']
else:
SOURCES += expat_sources

View File

@@ -0,0 +1,114 @@
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef MOZ_EXPAT_H_
#define MOZ_EXPAT_H_
#include "expat_config.h"
#include "expat.h"
#include "mozilla/Types.h"
MOZ_BEGIN_EXTERN_C
void
MOZ_XML_SetXmlDeclHandler(XML_Parser parser,
XML_XmlDeclHandler xmldecl);
XML_Parser
MOZ_XML_ParserCreate_MM(const XML_Char *encoding,
const XML_Memory_Handling_Suite *memsuite,
const XML_Char *namespaceSeparator);
void
MOZ_XML_SetElementHandler(XML_Parser parser,
XML_StartElementHandler start,
XML_EndElementHandler end);
void
MOZ_XML_SetCharacterDataHandler(XML_Parser parser,
XML_CharacterDataHandler handler);
void
MOZ_XML_SetProcessingInstructionHandler(XML_Parser parser,
XML_ProcessingInstructionHandler handler);
void
MOZ_XML_SetCommentHandler(XML_Parser parser,
XML_CommentHandler handler);
void
MOZ_XML_SetCdataSectionHandler(XML_Parser parser,
XML_StartCdataSectionHandler start,
XML_EndCdataSectionHandler end);
void
MOZ_XML_SetDefaultHandlerExpand(XML_Parser parser,
XML_DefaultHandler handler);
void
MOZ_XML_SetDoctypeDeclHandler(XML_Parser parser,
XML_StartDoctypeDeclHandler start,
XML_EndDoctypeDeclHandler end);
void
MOZ_XML_SetExternalEntityRefHandler(XML_Parser parser,
XML_ExternalEntityRefHandler handler);
void
MOZ_XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
enum XML_Status
MOZ_XML_SetBase(XML_Parser parser, const XML_Char *base);
const XML_Char *
MOZ_XML_GetBase(XML_Parser parser);
int
MOZ_XML_GetSpecifiedAttributeCount(XML_Parser parser);
enum XML_Status
MOZ_XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
enum XML_Status
MOZ_XML_StopParser(XML_Parser parser, int resumable);
enum XML_Status
MOZ_XML_ResumeParser(XML_Parser parser);
XML_Parser
MOZ_XML_ExternalEntityParserCreate(XML_Parser parser,
const XML_Char *context,
const XML_Char *encoding);
int
MOZ_XML_SetParamEntityParsing(XML_Parser parser,
enum XML_ParamEntityParsing parsing);
int
MOZ_XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt);
enum XML_Error
MOZ_XML_GetErrorCode(XML_Parser parser);
XML_Size MOZ_XML_GetCurrentLineNumber(XML_Parser parser);
XML_Size MOZ_XML_GetCurrentColumnNumber(XML_Parser parser);
XML_Index MOZ_XML_GetCurrentByteIndex(XML_Parser parser);
void
MOZ_XML_ParserFree(XML_Parser parser);
// Mozilla-only API: Report opening tag of mismatched closing tag.
const XML_Char*
MOZ_XML_GetMismatchedTag(XML_Parser parser);
// Mozilla-only API: Report whether the parser is currently expanding an entity.
XML_Bool
MOZ_XML_ProcessingEntityValue(XML_Parser parser);
MOZ_END_EXTERN_C
#endif /* MOZ_EXPAT_H_ */

View File

@@ -0,0 +1,147 @@
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "moz_expat.h"
#include "xmlparse.c"
void
MOZ_XML_SetXmlDeclHandler(XML_Parser parser,
XML_XmlDeclHandler xmldecl) {
return XML_SetXmlDeclHandler(parser, xmldecl);
}
XML_Parser
MOZ_XML_ParserCreate_MM(const XML_Char *encoding,
const XML_Memory_Handling_Suite *memsuite,
const XML_Char *namespaceSeparator) {
return XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator);
}
void
MOZ_XML_SetElementHandler(XML_Parser parser,
XML_StartElementHandler start,
XML_EndElementHandler end) {
XML_SetElementHandler(parser, start, end);
}
void
MOZ_XML_SetCharacterDataHandler(XML_Parser parser,
XML_CharacterDataHandler handler) {
return XML_SetCharacterDataHandler(parser, handler);
}
void
MOZ_XML_SetProcessingInstructionHandler(XML_Parser parser,
XML_ProcessingInstructionHandler handler) {
return XML_SetProcessingInstructionHandler(parser, handler);
}
void
MOZ_XML_SetCommentHandler(XML_Parser parser,
XML_CommentHandler handler) {
XML_SetCommentHandler(parser, handler);
}
void
MOZ_XML_SetCdataSectionHandler(XML_Parser parser,
XML_StartCdataSectionHandler start,
XML_EndCdataSectionHandler end) {
XML_SetCdataSectionHandler(parser, start, end);
}
void
MOZ_XML_SetDefaultHandlerExpand(XML_Parser parser,
XML_DefaultHandler handler) {
XML_SetDefaultHandlerExpand(parser, handler);
}
void
MOZ_XML_SetDoctypeDeclHandler(XML_Parser parser,
XML_StartDoctypeDeclHandler start,
XML_EndDoctypeDeclHandler end) {
XML_SetDoctypeDeclHandler(parser, start, end);
}
void
MOZ_XML_SetExternalEntityRefHandler(XML_Parser parser,
XML_ExternalEntityRefHandler handler) {
XML_SetExternalEntityRefHandler(parser, handler);
}
void
MOZ_XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) {
XML_SetReturnNSTriplet(parser, do_nst);
}
enum XML_Status
MOZ_XML_SetBase(XML_Parser parser, const XML_Char *base) {
return XML_SetBase(parser, base);
}
const XML_Char *
MOZ_XML_GetBase(XML_Parser parser) {
return XML_GetBase(parser);
}
int
MOZ_XML_GetSpecifiedAttributeCount(XML_Parser parser) {
return XML_GetSpecifiedAttributeCount(parser);
}
enum XML_Status
MOZ_XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) {
return XML_Parse(parser, s, len, isFinal);
}
enum XML_Status
MOZ_XML_StopParser(XML_Parser parser, int resumable) {
return XML_StopParser(parser, resumable);
}
enum XML_Status
MOZ_XML_ResumeParser(XML_Parser parser) {
return XML_ResumeParser(parser);
}
XML_Parser
MOZ_XML_ExternalEntityParserCreate(XML_Parser parser,
const XML_Char *context,
const XML_Char *encoding) {
return XML_ExternalEntityParserCreate(parser, context, encoding);
}
int
MOZ_XML_SetParamEntityParsing(XML_Parser parser,
enum XML_ParamEntityParsing parsing) {
return XML_SetParamEntityParsing(parser, parsing);
}
int
MOZ_XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) {
return XML_SetHashSalt(parser, hash_salt);
}
enum XML_Error
MOZ_XML_GetErrorCode(XML_Parser parser)
{
return XML_GetErrorCode(parser);
}
XML_Size MOZ_XML_GetCurrentLineNumber(XML_Parser parser) {
return XML_GetCurrentLineNumber(parser);
}
XML_Size MOZ_XML_GetCurrentColumnNumber(XML_Parser parser) {
return XML_GetCurrentColumnNumber(parser);
}
XML_Index MOZ_XML_GetCurrentByteIndex(XML_Parser parser) {
return XML_GetCurrentByteIndex(parser);
}
void
MOZ_XML_ParserFree(XML_Parser parser) {
return XML_ParserFree(parser);
}

View File

@@ -3,6 +3,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "xmltok.c"
#ifdef IS_LITTLE_ENDIAN
#define PREFIX(ident) little2_ ## ident

View File

@@ -5,7 +5,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
expat_sources = [
'xmlparse.c',
'moz_xmlparse.c',
'xmlrole.c',
'xmltok.c',
]

View File

@@ -2145,13 +2145,7 @@ XML_GetBuffer(XML_Parser parser, int len)
}
enum XML_Status XMLCALL
/* BEGIN MOZILLA CHANGE (Bug 1743007 - Convert expat XML_StopParser API to take an int param instead of u8) */
#if 0
XML_StopParser(XML_Parser parser, XML_Bool resumable)
#else
XML_StopParser(XML_Parser parser, int resumable)
#endif
/* END MOZILLA CHANGE */
{
if (parser == NULL)
return XML_STATUS_ERROR;

View File

@@ -1758,11 +1758,3 @@ XmlInitUnknownEncodingNS(void *mem,
}
#endif /* XML_NS */
/* BEGIN MOZILLA CHANGE (Mozilla extensions for QName checking) */
#ifdef MOZILLA_CLIENT
#ifndef MOZ_IN_WASM_SANDBOX
#include "moz_extensions.c"
#endif
#endif /* MOZILLA_CLIENT */
/* END MOZILLA CHANGE */

View File

@@ -7,7 +7,7 @@
#define NS_EXPAT_DRIVER__
#include "expat_config.h"
#include "expat.h"
#include "moz_expat.h"
#include "nsCOMPtr.h"
#include "nsString.h"
#include "nsIDTD.h"