Bug 1483458 - Change HTML parser to look at .py Atom files. r=hsivonen,heycam
authorJonathan Kingston <jkt@mozilla.com>
Wed, 17 Oct 2018 20:40:37 +0100
changeset 497720 0ff0b54b9ec7c3e99acf8987b63995dbdce3e64a
parent 497719 6669d853e36620b01b035409ddc14ce8281ac5ae
child 497748 c0c288dc283e315982949e5d6565520f5872ab12
child 497769 379d79841c5d439654d77f264f7c9d730863059e
push id10002
push userarchaeopteryx@coole-files.de
push dateFri, 19 Oct 2018 23:09:29 +0000
treeherdermozilla-beta@01378c910610 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewershsivonen, heycam
bugs1483458
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1483458 - Change HTML parser to look at .py Atom files. r=hsivonen,heycam
parser/html/java/Makefile
parser/html/nsHtml5AttributeName.h
parser/html/nsHtml5ElementName.h
parser/html/nsHtml5MetaScanner.h
parser/html/nsHtml5StackNode.h
parser/html/nsHtml5StateSnapshot.h
parser/html/nsHtml5Tokenizer.h
parser/html/nsHtml5TreeBuilder.h
parser/html/nsHtml5UTF16Buffer.h
xpcom/ds/StaticAtoms.py
--- a/parser/html/java/Makefile
+++ b/parser/html/java/Makefile
@@ -32,23 +32,23 @@ sync_htmlparser:: \
   fi
 
 sync:: sync_javaparser sync_htmlparser
 
 translate:: translator \
 ; mkdir -p ../javasrc ; \
   java -jar translator.jar \
     htmlparser/src/nu/validator/htmlparser/impl \
-    .. ../../../xpcom/ds/nsGkAtomList.h
+    .. ../../../xpcom/ds/StaticAtoms.py ../../../xpcom/ds/HTMLAtoms.py
 
 translate_from_snapshot:: translator \
 ; mkdir -p ../javasrc ; \
   java -jar translator.jar \
     ../javasrc \
-    .. ../../../dom/base/nsGkAtomList.h
+    .. ../../../xpcom/ds/StaticAtoms.py ../../../xpcom/ds/HTMLAtoms.py
 
 named_characters:: translator \
 ; java -cp translator.jar \
     nu.validator.htmlparser.generator.GenerateNamedCharactersCpp \
       named-character-references.html ../
 
 clean_javaparser:: \
 ; rm -rf javaparser/bin javaparser.jar
--- a/parser/html/nsHtml5AttributeName.h
+++ b/parser/html/nsHtml5AttributeName.h
@@ -53,33 +53,29 @@ class nsHtml5MetaScanner;
 class nsHtml5UTF16Buffer;
 class nsHtml5StateSnapshot;
 class nsHtml5Portability;
 
 class nsHtml5AttributeName
 {
 public:
   static int32_t* ALL_NO_NS;
-
 private:
   static int32_t* XMLNS_NS;
   static int32_t* XML_NS;
   static int32_t* XLINK_NS;
-
 public:
   static nsAtom** ALL_NO_PREFIX;
-
 private:
   static nsAtom** XMLNS_PREFIX;
   static nsAtom** XLINK_PREFIX;
   static nsAtom** XML_PREFIX;
   static nsAtom** SVG_DIFFERENT(nsAtom* name, nsAtom* camel);
   static nsAtom** MATH_DIFFERENT(nsAtom* name, nsAtom* camel);
   static nsAtom** COLONIFIED_LOCAL(nsAtom* name, nsAtom* suffix);
-
 public:
   static nsAtom** SAME_LOCAL(nsAtom* name);
   inline static int32_t levelOrderBinarySearch(jArray<int32_t, int32_t> data,
                                                int32_t key)
   {
     int32_t n = data.length;
     int32_t i = 0;
     while (i < n) {
@@ -157,17 +153,16 @@ public:
   static const int32_t SVG = 2;
 
 private:
   int32_t* uri;
   nsAtom** local;
   nsAtom** prefix;
   bool custom;
   nsHtml5AttributeName(int32_t* uri, nsAtom** local, nsAtom** prefix);
-
 public:
   nsHtml5AttributeName();
   inline bool isInterned() { return !custom; }
 
   inline void setNameForNonInterned(nsAtom* name)
   {
     MOZ_ASSERT(custom);
     local[0] = name;
@@ -669,19 +664,17 @@ public:
   static nsHtml5AttributeName* ATTR_RX;
   static nsHtml5AttributeName* ATTR_REFX;
   static nsHtml5AttributeName* ATTR_BY;
   static nsHtml5AttributeName* ATTR_CY;
   static nsHtml5AttributeName* ATTR_DY;
   static nsHtml5AttributeName* ATTR_FY;
   static nsHtml5AttributeName* ATTR_RY;
   static nsHtml5AttributeName* ATTR_REFY;
-
 private:
   static nsHtml5AttributeName** ATTRIBUTE_NAMES;
   static staticJArray<int32_t, int32_t> ATTRIBUTE_HASHES;
-
 public:
   static void initializeStatics();
   static void releaseStatics();
 };
 
 #endif
--- a/parser/html/nsHtml5ElementName.h
+++ b/parser/html/nsHtml5ElementName.h
@@ -75,17 +75,16 @@ public:
 
   static const int32_t OPTIONAL_END_TAG = (1 << 23);
 
 private:
   nsAtom* name;
   nsAtom* camelCaseName;
   mozilla::dom::HTMLContentCreatorFunction htmlCreator;
   mozilla::dom::SVGContentCreatorFunction svgCreator;
-
 public:
   int32_t flags;
   inline nsAtom* getName() { return name; }
 
   inline nsAtom* getCamelCaseName() { return camelCaseName; }
 
   inline mozilla::dom::HTMLContentCreatorFunction getHtmlCreator()
   {
@@ -401,19 +400,17 @@ public:
   static nsHtml5ElementName* ELT_VIEW;
   static nsHtml5ElementName* ELT_FECOLORMATRIX;
   static nsHtml5ElementName* ELT_FECONVOLVEMATRIX;
   static nsHtml5ElementName* ELT_BODY;
   static nsHtml5ElementName* ELT_FEMORPHOLOGY;
   static nsHtml5ElementName* ELT_RUBY;
   static nsHtml5ElementName* ELT_SUMMARY;
   static nsHtml5ElementName* ELT_TBODY;
-
 private:
   static nsHtml5ElementName** ELEMENT_NAMES;
   static staticJArray<int32_t, int32_t> ELEMENT_HASHES;
-
 public:
   static void initializeStatics();
   static void releaseStatics();
 };
 
 #endif
--- a/parser/html/nsHtml5MetaScanner.h
+++ b/parser/html/nsHtml5MetaScanner.h
@@ -115,60 +115,52 @@ private:
   static const int32_t HTTP_EQUIV_NOT_SEEN = 0;
 
   static const int32_t HTTP_EQUIV_CONTENT_TYPE = 1;
 
   static const int32_t HTTP_EQUIV_OTHER = 2;
 
 protected:
   nsHtml5ByteReadable* readable;
-
 private:
   int32_t metaState;
   int32_t contentIndex;
   int32_t charsetIndex;
   int32_t httpEquivIndex;
   int32_t contentTypeIndex;
-
 protected:
   int32_t stateSave;
-
 private:
   int32_t strBufLen;
   autoJArray<char16_t, int32_t> strBuf;
   nsHtml5String content;
   nsHtml5String charset;
   int32_t httpEquivState;
   nsHtml5TreeBuilder* treeBuilder;
-
 public:
   explicit nsHtml5MetaScanner(nsHtml5TreeBuilder* tb);
   ~nsHtml5MetaScanner();
-
 protected:
   void stateLoop(int32_t state);
-
 private:
   void handleCharInAttributeValue(int32_t c);
   inline int32_t toAsciiLowerCase(int32_t c)
   {
     if (c >= 'A' && c <= 'Z') {
       return c + 0x20;
     }
     return c;
   }
 
   void addToBuffer(int32_t c);
   void handleAttributeValue();
   bool handleTag();
   bool handleTagInner();
-
 protected:
   bool tryCharset(nsHtml5String encoding);
-
 public:
   static void initializeStatics();
   static void releaseStatics();
 
 #include "nsHtml5MetaScannerHSupplement.h"
 };
 
 #endif
--- a/parser/html/nsHtml5StackNode.h
+++ b/parser/html/nsHtml5StackNode.h
@@ -61,21 +61,19 @@ class nsHtml5StackNode
 public:
   int32_t idxInTreeBuilder;
   int32_t flags;
   nsAtom* name;
   nsAtom* popName;
   int32_t ns;
   nsIContentHandle* node;
   nsHtml5HtmlAttributes* attributes;
-
 private:
   int32_t refcount;
   mozilla::dom::HTMLContentCreatorFunction htmlCreator;
-
 public:
   inline int32_t getFlags() { return flags; }
 
   int32_t getGroup();
   bool isScoping();
   bool isSpecial();
   bool isFosterParenting();
   bool isHtmlIntegrationPoint();
@@ -101,17 +99,16 @@ public:
   void setValues(nsHtml5ElementName* elementName,
                  nsIContentHandle* node,
                  nsAtom* popName,
                  bool markAsIntegrationPoint);
 
 private:
   static int32_t prepareSvgFlags(int32_t flags);
   static int32_t prepareMathFlags(int32_t flags, bool markAsIntegrationPoint);
-
 public:
   ~nsHtml5StackNode();
   void dropAttributes();
   void retain();
   void release(nsHtml5TreeBuilder* owningTreeBuilder);
   bool isUnused();
   static void initializeStatics();
   static void releaseStatics();
--- a/parser/html/nsHtml5StateSnapshot.h
+++ b/parser/html/nsHtml5StateSnapshot.h
@@ -63,17 +63,16 @@ private:
   nsIContentHandle* formPointer;
   nsIContentHandle* headPointer;
   nsIContentHandle* deepTreeSurrogateParent;
   int32_t mode;
   int32_t originalMode;
   bool framesetOk;
   bool needToDropLF;
   bool quirks;
-
 public:
   nsHtml5StateSnapshot(
     jArray<nsHtml5StackNode*, int32_t> stack,
     jArray<nsHtml5StackNode*, int32_t> listOfActiveFormattingElements,
     jArray<int32_t, int32_t> templateModeStack,
     nsIContentHandle* formPointer,
     nsIContentHandle* headPointer,
     nsIContentHandle* deepTreeSurrogateParent,
--- a/parser/html/nsHtml5Tokenizer.h
+++ b/parser/html/nsHtml5Tokenizer.h
@@ -230,112 +230,93 @@ private:
   static staticJArray<char16_t, int32_t> STYLE_ARR;
   static staticJArray<char16_t, int32_t> PLAINTEXT_ARR;
   static staticJArray<char16_t, int32_t> XMP_ARR;
   static staticJArray<char16_t, int32_t> TEXTAREA_ARR;
   static staticJArray<char16_t, int32_t> IFRAME_ARR;
   static staticJArray<char16_t, int32_t> NOEMBED_ARR;
   static staticJArray<char16_t, int32_t> NOSCRIPT_ARR;
   static staticJArray<char16_t, int32_t> NOFRAMES_ARR;
-
 protected:
   nsHtml5TreeBuilder* tokenHandler;
   nsHtml5StreamParser* encodingDeclarationHandler;
   bool lastCR;
   int32_t stateSave;
-
 private:
   int32_t returnStateSave;
-
 protected:
   int32_t index;
-
 private:
   bool forceQuirks;
   char16_t additional;
   int32_t entCol;
   int32_t firstCharKey;
   int32_t lo;
   int32_t hi;
   int32_t candidate;
   int32_t charRefBufMark;
-
 protected:
   int32_t value;
-
 private:
   bool seenDigits;
-
 protected:
   int32_t cstart;
-
 private:
   nsHtml5String publicId;
   nsHtml5String systemId;
   autoJArray<char16_t, int32_t> strBuf;
   int32_t strBufLen;
   autoJArray<char16_t, int32_t> charRefBuf;
   int32_t charRefBufLen;
   autoJArray<char16_t, int32_t> bmpChar;
   autoJArray<char16_t, int32_t> astralChar;
-
 protected:
   nsHtml5ElementName* endTagExpectation;
-
 private:
   jArray<char16_t, int32_t> endTagExpectationAsArray;
-
 protected:
   bool endTag;
-
 private:
   bool containsHyphen;
   nsHtml5ElementName* tagName;
   nsHtml5ElementName* nonInternedTagName;
-
 protected:
   nsHtml5AttributeName* attributeName;
-
 private:
   nsHtml5AttributeName* nonInternedAttributeName;
   nsAtom* doctypeName;
   nsHtml5String publicIdentifier;
   nsHtml5String systemIdentifier;
   nsHtml5HtmlAttributes* attributes;
   bool newAttributesEachTime;
   bool shouldSuspend;
-
 protected:
   bool confident;
-
 private:
   int32_t line;
   int32_t attributeLine;
   nsHtml5AtomTable* interner;
   bool viewingXmlSource;
-
 public:
   nsHtml5Tokenizer(nsHtml5TreeBuilder* tokenHandler, bool viewingXmlSource);
   void setInterner(nsHtml5AtomTable* interner);
   void initLocation(nsHtml5String newPublicId, nsHtml5String newSystemId);
   bool isViewingXmlSource();
   void setStateAndEndTagExpectation(int32_t specialTokenizerState,
                                     nsAtom* endTagExpectation);
   void setStateAndEndTagExpectation(int32_t specialTokenizerState,
                                     nsHtml5ElementName* endTagExpectation);
 
 private:
   void endTagExpectationToArray();
-
 public:
   void setLineNumber(int32_t line);
   inline int32_t getLineNumber() { return line; }
 
   nsHtml5HtmlAttributes* emptyAttributes();
-
 private:
   inline void appendCharRefBuf(char16_t c)
   {
     MOZ_RELEASE_ASSERT(charRefBufLen < charRefBuf.length,
                        "Attempted to overrun charRefBuf!");
     charRefBuf[charRefBufLen++] = c;
   }
 
@@ -364,17 +345,16 @@ private:
         MOZ_CRASH("Unable to recover from buffer reallocation failure");
       }
     }
     strBuf[strBufLen++] = c;
   }
 
 protected:
   nsHtml5String strBufToString();
-
 private:
   void strBufToDoctypeName();
   void emitStrBuf();
   inline void appendSecondHyphenToBogusComment() { appendStrBuf('-'); }
 
   inline void adjustDoubleHyphenAndAppendToStrBufAndErr(char16_t c)
   {
     errConsecutiveHyphens();
@@ -384,31 +364,27 @@ private:
   void appendStrBuf(char16_t* buffer, int32_t offset, int32_t length);
   inline void appendCharRefBufToStrBuf()
   {
     appendStrBuf(charRefBuf, 0, charRefBufLen);
     charRefBufLen = 0;
   }
 
   void emitComment(int32_t provisionalHyphens, int32_t pos);
-
 protected:
   void flushChars(char16_t* buf, int32_t pos);
-
 private:
   void strBufToElementNameString();
   int32_t emitCurrentTagToken(bool selfClosing, int32_t pos);
   void attributeNameComplete();
   void addAttributeWithoutValue();
   void addAttributeWithValue();
-
 public:
   void start();
   bool tokenizeBuffer(nsHtml5UTF16Buffer* buffer);
-
 private:
   template<class P>
   int32_t stateLoop(int32_t state,
                     char16_t c,
                     int32_t pos,
                     char16_t* buf,
                     bool reconsume,
                     int32_t returnState,
@@ -450,33 +426,28 @@ protected:
 private:
   void emitCarriageReturn(char16_t* buf, int32_t pos);
   void emitReplacementCharacter(char16_t* buf, int32_t pos);
   void emitPlaintextReplacementCharacter(char16_t* buf, int32_t pos);
   void setAdditionalAndRememberAmpersandLocation(char16_t add);
   void bogusDoctype();
   void bogusDoctypeWithoutQuirks();
   void handleNcrValue(int32_t returnState);
-
 public:
   void eof();
-
 private:
   void emitDoctypeToken(int32_t pos);
-
 protected:
   inline char16_t checkChar(char16_t* buf, int32_t pos) { return buf[pos]; }
 
 public:
   bool internalEncodingDeclaration(nsHtml5String internalCharset);
-
 private:
   void emitOrAppendTwo(const char16_t* val, int32_t returnState);
   void emitOrAppendOne(const char16_t* val, int32_t returnState);
-
 public:
   void end();
   void requestSuspension();
   bool isInDataState();
   void resetToDataState();
   void loadState(nsHtml5Tokenizer* other);
   void initializeWithoutStarting();
   void setEncodingDeclarationHandler(
--- a/parser/html/nsHtml5TreeBuilder.h
+++ b/parser/html/nsHtml5TreeBuilder.h
@@ -66,17 +66,16 @@ class nsHtml5MetaScanner;
 class nsHtml5UTF16Buffer;
 class nsHtml5StateSnapshot;
 class nsHtml5Portability;
 
 class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState
 {
 private:
   static char16_t REPLACEMENT_CHARACTER[];
-
 public:
   static const int32_t OTHER = 0;
 
   static const int32_t A = 1;
 
   static const int32_t BASE = 2;
 
   static const int32_t BODY = 3;
@@ -283,20 +282,18 @@ private:
   static const int32_t CHARSET_UNQUOTED = 11;
 
   static staticJArray<const char*, int32_t> QUIRKY_PUBLIC_IDS;
   static const int32_t NOT_FOUND_ON_STACK = INT32_MAX;
 
   int32_t mode;
   int32_t originalMode;
   bool framesetOk;
-
 protected:
   nsHtml5Tokenizer* tokenizer;
-
 private:
   bool scriptingEnabled;
   bool needToDropLF;
   bool fragment;
   nsAtom* contextName;
   int32_t contextNamespace;
   nsIContentHandle* contextNode;
   autoJArray<int32_t, int32_t> templateModeStack;
@@ -306,21 +303,19 @@ private:
   int32_t numStackNodes;
   autoJArray<nsHtml5StackNode*, int32_t> stack;
   int32_t currentPtr;
   autoJArray<nsHtml5StackNode*, int32_t> listOfActiveFormattingElements;
   int32_t listPtr;
   nsIContentHandle* formPointer;
   nsIContentHandle* headPointer;
   nsIContentHandle* deepTreeSurrogateParent;
-
 protected:
   autoJArray<char16_t, int32_t> charBuffer;
   int32_t charBufferLen;
-
 private:
   bool quirks;
   bool isSrcdocDocument;
   inline nsHtml5ContentCreatorFunction htmlCreator(
     mozilla::dom::HTMLContentCreatorFunction htmlCreator)
   {
     nsHtml5ContentCreatorFunction creator;
     creator.html = htmlCreator;
@@ -357,27 +352,24 @@ private:
                               nsHtml5HtmlAttributes* attributes);
   void startTagScriptInHead(nsHtml5ElementName* elementName,
                             nsHtml5HtmlAttributes* attributes);
   void startTagTemplateInHead(nsHtml5ElementName* elementName,
                               nsHtml5HtmlAttributes* attributes);
   bool isTemplateContents();
   bool isTemplateModeStackEmpty();
   bool isSpecialParentInForeign(nsHtml5StackNode* stackNode);
-
 public:
   static nsHtml5String extractCharsetFromContent(nsHtml5String attributeValue,
                                                  nsHtml5TreeBuilder* tb);
 
 private:
   void checkMetaCharset(nsHtml5HtmlAttributes* attributes);
-
 public:
   void endTag(nsHtml5ElementName* elementName);
-
 private:
   void endTagTemplateInHead();
   int32_t findLastInTableScopeOrRootTemplateTbodyTheadTfoot();
   int32_t findLast(nsAtom* name);
   int32_t findLastInTableScope(nsAtom* name);
   int32_t findLastInButtonScope(nsAtom* name);
   int32_t findLastInScope(nsAtom* name);
   int32_t findLastInListScope(nsAtom* name);
@@ -430,20 +422,18 @@ private:
     nsAtom* name,
     nsHtml5HtmlAttributes* attributes);
   int32_t findLastOrRoot(nsAtom* name);
   int32_t findLastOrRoot(int32_t group);
   bool addAttributesToBody(nsHtml5HtmlAttributes* attributes);
   void addAttributesToHtml(nsHtml5HtmlAttributes* attributes);
   void pushHeadPointerOntoStack();
   void reconstructTheActiveFormattingElements();
-
 public:
   void notifyUnusedStackNode(int32_t idxInStackNodes);
-
 private:
   nsHtml5StackNode* getUnusedStackNode();
   nsHtml5StackNode* createStackNode(
     int32_t flags,
     int32_t ns,
     nsAtom* name,
     nsIContentHandle* node,
     nsAtom* popName,
@@ -516,17 +506,16 @@ private:
     nsHtml5ElementName* elementName,
     nsHtml5HtmlAttributes* attributes);
   void appendVoidElementToCurrentMayFosterMathML(
     nsHtml5ElementName* elementName,
     nsHtml5HtmlAttributes* attributes);
   void appendVoidInputToCurrent(nsHtml5HtmlAttributes* attributes,
                                 nsIContentHandle* form);
   void appendVoidFormToCurrent(nsHtml5HtmlAttributes* attributes);
-
 protected:
   void accumulateCharacters(const char16_t* buf, int32_t start, int32_t length);
   void requestSuspension();
   nsIContentHandle* createElement(int32_t ns,
                                   nsAtom* name,
                                   nsHtml5HtmlAttributes* attributes,
                                   nsIContentHandle* intendedParent,
                                   nsHtml5ContentCreatorFunction creator);
@@ -574,42 +563,37 @@ protected:
   void markMalformedIfScript(nsIContentHandle* elt);
   void start(bool fragmentMode);
   void end();
   void appendDoctypeToDocument(nsAtom* name,
                                nsHtml5String publicIdentifier,
                                nsHtml5String systemIdentifier);
   void elementPushed(int32_t ns, nsAtom* name, nsIContentHandle* node);
   void elementPopped(int32_t ns, nsAtom* name, nsIContentHandle* node);
-
 public:
   inline bool cdataSectionAllowed() { return isInForeign(); }
 
 private:
   bool isInForeign();
   bool isInForeignButNotHtmlOrMathTextIntegrationPoint();
-
 public:
   void setFragmentContext(nsAtom* context,
                           int32_t ns,
                           nsIContentHandle* node,
                           bool quirks);
 
 protected:
   nsIContentHandle* currentNode();
-
 public:
   bool isScriptingEnabled();
   void setScriptingEnabled(bool scriptingEnabled);
   void setIsSrcdocDocument(bool isSrcdocDocument);
   void flushCharacters();
-
 private:
   bool charBufferContainsNonWhitespace();
-
 public:
   nsAHtml5TreeBuilderState* newSnapshot();
   bool snapshotMatches(nsAHtml5TreeBuilderState* snapshot);
   void loadState(nsAHtml5TreeBuilderState* snapshot,
                  nsHtml5AtomTable* interner);
 
 private:
   int32_t findInArray(nsHtml5StackNode* node,
--- a/parser/html/nsHtml5UTF16Buffer.h
+++ b/parser/html/nsHtml5UTF16Buffer.h
@@ -55,17 +55,16 @@ class nsHtml5StateSnapshot;
 class nsHtml5Portability;
 
 class nsHtml5UTF16Buffer
 {
 private:
   char16_t* buffer;
   int32_t start;
   int32_t end;
-
 public:
   int32_t getStart();
   void setStart(int32_t start);
   char16_t* getBuffer();
   int32_t getEnd();
   bool hasMore();
   int32_t getLength();
   void adjust(bool lastWasCR);
--- a/xpcom/ds/StaticAtoms.py
+++ b/xpcom/ds/StaticAtoms.py
@@ -12,18 +12,23 @@ import sys
 # Static atom definitions, used to generate nsGkAtomList.h.
 #
 # Each atom is defined by a call to Atom, PseudoElementAtom,
 # NonInheritingAnonBoxAtom or InheritingAnonBoxAtom.
 #
 # The first argument is the atom's identifier.
 # The second argument is the atom's string value.
 #
+# Please keep the Atom() definitions on one line as this is parsed by the
+#   htmlparser: parser/html/java/htmlparser
+# Please keep "START ATOMS" and "END ATOMS" comments as the parser uses them.
+#
 # It is not possible to conditionally define static atoms with #ifdef etc.
 STATIC_ATOMS = [
+    # START ATOMS
     # --------------------------------------------------------------------------
     # Generic atoms
     # --------------------------------------------------------------------------
 
     Atom("_empty", ""),
     Atom("moz", "_moz"),
     Atom("mozframetype", "mozframetype"),
     Atom("_moz_abspos", "_moz_abspos"),
@@ -70,18 +75,17 @@ STATIC_ATOMS = [
     Atom("allowfullscreen", "allowfullscreen"),
     Atom("allowmodals", "allow-modals"),
     Atom("alloworientationlock", "allow-orientation-lock"),
     Atom("allowpaymentrequest", "allowpaymentrequest"),
     Atom("allowpointerlock", "allow-pointer-lock"),
     Atom("allowpopupstoescapesandbox", "allow-popups-to-escape-sandbox"),
     Atom("allowpopups", "allow-popups"),
     Atom("allowpresentation", "allow-presentation"),
-    Atom("allowstorageaccessbyuseractivatetion",
-         "allow-storage-access-by-user-activation"),
+    Atom("allowstorageaccessbyuseractivatetion", "allow-storage-access-by-user-activation"),
     Atom("allowsameorigin", "allow-same-origin"),
     Atom("allowscripts", "allow-scripts"),
     Atom("allowscriptstoclose", "allowscriptstoclose"),
     Atom("allowtopnavigation", "allow-top-navigation"),
     Atom("allowuntrusted", "allowuntrusted"),
     Atom("alt", "alt"),
     Atom("alternate", "alternate"),
     Atom("always", "always"),
@@ -2311,16 +2315,17 @@ STATIC_ATOMS = [
     InheritingAnonBoxAtom("AnonBox_mozTreeImage", ":-moz-tree-image"),
     InheritingAnonBoxAtom("AnonBox_mozTreeCellText", ":-moz-tree-cell-text"),
     InheritingAnonBoxAtom("AnonBox_mozTreeCheckbox", ":-moz-tree-checkbox"),
     InheritingAnonBoxAtom("AnonBox_mozTreeDropFeedback", ":-moz-tree-drop-feedback"),
     InheritingAnonBoxAtom("AnonBox_mozSVGMarkerAnonChild", ":-moz-svg-marker-anon-child"),
     InheritingAnonBoxAtom("AnonBox_mozSVGOuterSVGAnonChild", ":-moz-svg-outer-svg-anon-child"),
     InheritingAnonBoxAtom("AnonBox_mozSVGForeignContent", ":-moz-svg-foreign-content"),
     InheritingAnonBoxAtom("AnonBox_mozSVGText", ":-moz-svg-text"),
+    # END ATOMS
 ] + HTML_PARSER_ATOMS
 
 
 def verify():
     idents = set()
     strings = set()
     failed = False
     for atom in STATIC_ATOMS: