Bug 672014. Pass the crossorigin attribute through to image preloading code. r=joe,hsivonen
authorBoris Zbarsky <bzbarsky@mit.edu>
Fri, 29 Jul 2011 14:30:00 -0400
changeset 73576 185e9d01a1ec3fcc33e9907629db418814a957e7
parent 73575 baeed07e6d01b3805e22f4a3d443d1c441f875bf
child 73577 c5defc5009257db43b0f637da0af8902181fac5d
push id20896
push usermak77@bonardo.net
push dateMon, 01 Aug 2011 14:04:43 +0000
treeherdermozilla-central@345ba237404d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjoe, hsivonen
bugs672014
milestone8.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 672014. Pass the crossorigin attribute through to image preloading code. r=joe,hsivonen
content/base/public/nsIDocument.h
content/base/src/nsDocument.cpp
content/base/src/nsDocument.h
parser/html/javasrc/AttributeName.java
parser/html/nsHtml5AtomList.h
parser/html/nsHtml5AttributeName.cpp
parser/html/nsHtml5AttributeName.h
parser/html/nsHtml5SpeculativeLoad.cpp
parser/html/nsHtml5SpeculativeLoad.h
parser/html/nsHtml5TreeBuilderCppSupplement.h
parser/html/nsHtml5TreeOpExecutor.cpp
parser/html/nsHtml5TreeOpExecutor.h
parser/htmlparser/src/nsParser.cpp
--- a/content/base/public/nsIDocument.h
+++ b/content/base/public/nsIDocument.h
@@ -121,18 +121,18 @@ class Loader;
 namespace dom {
 class Link;
 class Element;
 } // namespace dom
 } // namespace mozilla
 
 
 #define NS_IDOCUMENT_IID \
-{ 0x18e4d4bd, 0x006b, 0x4008, \
-  { 0x90, 0x05, 0x27, 0x57, 0x35, 0xf0, 0xd4, 0x85 } }
+{ 0xe4bc7342, 0x6528, 0x4979, \
+ { 0x9e, 0xb5, 0x12, 0xef, 0x4a, 0x97, 0xe1, 0xea } }
 
 // Flag for AddStyleSheet().
 #define NS_STYLESHEET_FROM_CATALOG                (1 << 0)
 
 // Document states
 
 // RTL locale: specific to the XUL localedir attribute
 #define NS_DOCUMENT_STATE_RTL_LOCALE              NS_DEFINE_EVENT_STATE_MACRO(0)
@@ -1381,17 +1381,18 @@ public:
    */
   nsIDocument* GetOriginalDocument() { return mOriginalDocument; }
 
   /**
    * Called by nsParser to preload images. Can be removed and code moved
    * to nsPreloadURIs::PreloadURIs() in file nsParser.cpp whenever the
    * parser-module is linked with gklayout-module.
    */
-  virtual void MaybePreLoadImage(nsIURI* uri) = 0;
+  virtual void MaybePreLoadImage(nsIURI* uri,
+                                 const nsAString& aCrossOriginAttr) = 0;
 
   /**
    * Called by nsParser to preload style sheets.  Can also be merged into
    * the parser if and when the parser is merged with libgklayout.
    */
   virtual void PreloadStyle(nsIURI* aURI, const nsAString& aCharset) = 0;
 
   /**
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -198,16 +198,18 @@
 
 #include "mozilla/dom/Link.h"
 #include "nsIHTMLDocument.h"
 #include "nsXULAppAPI.h"
 #include "nsDOMTouchEvent.h"
 
 #include "mozilla/Preferences.h"
 
+#include "imgILoader.h"
+
 using namespace mozilla;
 using namespace mozilla::dom;
 
 typedef nsTArray<Link*> LinkArray;
 
 
 #ifdef PR_LOGGING
 static PRLogModuleInfo* gDocumentLeakPRLog;
@@ -7663,37 +7665,47 @@ FireOrClearDelayedEvents(nsTArray<nsCOMP
       if (shell) {
         shell->FireOrClearDelayedEvents(aFireEvents);
       }
     }
   }
 }
 
 void
-nsDocument::MaybePreLoadImage(nsIURI* uri)
+nsDocument::MaybePreLoadImage(nsIURI* uri, const nsAString &aCrossOriginAttr)
 {
   // Early exit if the img is already present in the img-cache
   // which indicates that the "real" load has already started and
   // that we shouldn't preload it.
   PRInt16 blockingStatus;
   if (nsContentUtils::IsImageInCache(uri) ||
       !nsContentUtils::CanLoadImage(uri, static_cast<nsIDocument *>(this),
                                     this, NodePrincipal(), &blockingStatus)) {
     return;
   }
 
+  nsLoadFlags loadFlags = nsIRequest::LOAD_NORMAL;
+  if (aCrossOriginAttr.LowerCaseEqualsLiteral("anonymous")) {
+    loadFlags |= imgILoader::LOAD_CORS_ANONYMOUS;
+  } else if (aCrossOriginAttr.LowerCaseEqualsLiteral("use-credentials")) {
+    loadFlags |= imgILoader::LOAD_CORS_USE_CREDENTIALS;
+  }
+  // else should we err on the side of not doing the preload if
+  // aCrossOriginAttr is nonempty?  Let's err on the side of doing the
+  // preload as CORS_NONE.
+
   // Image not in cache - trigger preload
   nsCOMPtr<imgIRequest> request;
   nsresult rv =
     nsContentUtils::LoadImage(uri,
                               this,
                               NodePrincipal(),
                               mDocumentURI, // uri of document used as referrer
                               nsnull,       // no observer
-                              nsIRequest::LOAD_NORMAL,
+                              loadFlags,
                               getter_AddRefs(request));
 
   // Pin image-reference to avoid evicting it from the img-cache before
   // the "real" load occurs. Unpinned in DispatchContentLoadedEvents and
   // unlink
   if (NS_SUCCEEDED(rv)) {
     mPreloadingImages.AppendObject(request);
   }
--- a/content/base/src/nsDocument.h
+++ b/content/base/src/nsDocument.h
@@ -880,17 +880,18 @@ public:
   void SetLoadedAsData(PRBool aLoadedAsData) { mLoadedAsData = aLoadedAsData; }
 
   nsresult CloneDocHelper(nsDocument* clone) const;
 
   void MaybeInitializeFinalizeFrameLoaders();
 
   void MaybeEndOutermostXBLUpdate();
 
-  virtual void MaybePreLoadImage(nsIURI* uri);
+  virtual void MaybePreLoadImage(nsIURI* uri,
+                                 const nsAString &aCrossOriginAttr);
 
   virtual void PreloadStyle(nsIURI* uri, const nsAString& charset);
 
   virtual nsresult LoadChromeSheetSync(nsIURI* uri, PRBool isAgentSheet,
                                        nsCSSStyleSheet** sheet);
 
   virtual nsISupports* GetCurrentContentSink();
 
--- a/parser/html/javasrc/AttributeName.java
+++ b/parser/html/javasrc/AttributeName.java
@@ -1089,16 +1089,17 @@ public final class AttributeName
     public static final AttributeName ARIA_SECRET = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-secret"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName ARIA_ATOMIC = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-atomic"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName ARIA_HIDDEN = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-hidden"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName ARIA_FLOWTO = new AttributeName(ALL_NO_NS, SAME_LOCAL("aria-flowto"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName ARABIC_FORM = new AttributeName(ALL_NO_NS, SAME_LOCAL("arabic-form"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName CELLPADDING = new AttributeName(ALL_NO_NS, SAME_LOCAL("cellpadding"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName CELLSPACING = new AttributeName(ALL_NO_NS, SAME_LOCAL("cellspacing"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName COLUMNWIDTH = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnwidth"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
+    public static final AttributeName CROSSORIGIN = new AttributeName(ALL_NO_NS, SAME_LOCAL("crossorigin"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName COLUMNALIGN = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnalign"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName COLUMNLINES = new AttributeName(ALL_NO_NS, SAME_LOCAL("columnlines"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName CONTEXTMENU = new AttributeName(ALL_NO_NS, SAME_LOCAL("contextmenu"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName BASEPROFILE = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("baseprofile", "baseProfile"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName FONT_FAMILY = new AttributeName(ALL_NO_NS, SAME_LOCAL("font-family"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName FRAMEBORDER = new AttributeName(ALL_NO_NS, SAME_LOCAL("frameborder"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName FILTERUNITS = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("filterunits", "filterUnits"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName FLOOD_COLOR = new AttributeName(ALL_NO_NS, SAME_LOCAL("flood-color"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
@@ -1671,16 +1672,17 @@ public final class AttributeName
     ARIA_SECRET,
     ARIA_ATOMIC,
     ARIA_HIDDEN,
     ARIA_FLOWTO,
     ARABIC_FORM,
     CELLPADDING,
     CELLSPACING,
     COLUMNWIDTH,
+    CROSSORIGIN,
     COLUMNALIGN,
     COLUMNLINES,
     CONTEXTMENU,
     BASEPROFILE,
     FONT_FAMILY,
     FRAMEBORDER,
     FILTERUNITS,
     FLOOD_COLOR,
@@ -2254,16 +2256,17 @@ public final class AttributeName
     370353345,
     370710317,
     371074566,
     371122285,
     371194213,
     371448425,
     371448430,
     371545055,
+    371593469,
     371596922,
     371758751,
     371964792,
     372151328,
     376550136,
     376710172,
     376795771,
     376826271,
--- a/parser/html/nsHtml5AtomList.h
+++ b/parser/html/nsHtml5AtomList.h
@@ -453,16 +453,17 @@ HTML5_ATOM(accentunder, "accentunder")
 HTML5_ATOM(aria_secret, "aria-secret")
 HTML5_ATOM(aria_atomic, "aria-atomic")
 HTML5_ATOM(aria_hidden, "aria-hidden")
 HTML5_ATOM(aria_flowto, "aria-flowto")
 HTML5_ATOM(arabic_form, "arabic-form")
 HTML5_ATOM(cellpadding, "cellpadding")
 HTML5_ATOM(cellspacing, "cellspacing")
 HTML5_ATOM(columnwidth, "columnwidth")
+HTML5_ATOM(crossorigin, "crossorigin")
 HTML5_ATOM(columnalign, "columnalign")
 HTML5_ATOM(columnlines, "columnlines")
 HTML5_ATOM(contextmenu, "contextmenu")
 HTML5_ATOM(baseprofile, "baseprofile")
 HTML5_ATOM(baseProfile, "baseProfile")
 HTML5_ATOM(font_family, "font-family")
 HTML5_ATOM(frameborder, "frameborder")
 HTML5_ATOM(filterunits, "filterunits")
--- a/parser/html/nsHtml5AttributeName.cpp
+++ b/parser/html/nsHtml5AttributeName.cpp
@@ -571,16 +571,17 @@ nsHtml5AttributeName* nsHtml5AttributeNa
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_SECRET = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_ATOMIC = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_HIDDEN = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARIA_FLOWTO = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_ARABIC_FORM = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CELLPADDING = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CELLSPACING = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNWIDTH = nsnull;
+nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CROSSORIGIN = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNALIGN = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLUMNLINES = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CONTEXTMENU = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BASEPROFILE = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FONT_FAMILY = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FRAMEBORDER = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FILTERUNITS = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FLOOD_COLOR = nsnull;
@@ -776,17 +777,17 @@ nsHtml5AttributeName* nsHtml5AttributeNa
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_VERYVERYTHICKMATHSPACE = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRIKETHROUGH_POSITION = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_STRIKETHROUGH_THICKNESS = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_EXTERNALRESOURCESREQUIRED = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_ORIENTATION_VERTICAL = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_COLOR_INTERPOLATION_FILTERS = nsnull;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_GLYPH_ORIENTATION_HORIZONTAL = nsnull;
 nsHtml5AttributeName** nsHtml5AttributeName::ATTRIBUTE_NAMES = 0;
-static PRInt32 const ATTRIBUTE_HASHES_DATA[] = { 1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471 };
+static PRInt32 const ATTRIBUTE_HASHES_DATA[] = { 1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371593469, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471 };
 staticJArray<PRInt32,PRInt32> nsHtml5AttributeName::ATTRIBUTE_HASHES = { ATTRIBUTE_HASHES_DATA, NS_ARRAY_LENGTH(ATTRIBUTE_HASHES_DATA) };
 void
 nsHtml5AttributeName::initializeStatics()
 {
   ALL_NO_NS = new PRInt32[3];
   ALL_NO_NS[0] = kNameSpaceID_None;
   ALL_NO_NS[1] = kNameSpaceID_None;
   ALL_NO_NS[2] = kNameSpaceID_None;
@@ -1190,16 +1191,17 @@ nsHtml5AttributeName::initializeStatics(
   ATTR_ARIA_SECRET = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_secret), ALL_NO_PREFIX);
   ATTR_ARIA_ATOMIC = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_atomic), ALL_NO_PREFIX);
   ATTR_ARIA_HIDDEN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_hidden), ALL_NO_PREFIX);
   ATTR_ARIA_FLOWTO = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::aria_flowto), ALL_NO_PREFIX);
   ATTR_ARABIC_FORM = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::arabic_form), ALL_NO_PREFIX);
   ATTR_CELLPADDING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellpadding), ALL_NO_PREFIX);
   ATTR_CELLSPACING = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::cellspacing), ALL_NO_PREFIX);
   ATTR_COLUMNWIDTH = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnwidth), ALL_NO_PREFIX);
+  ATTR_CROSSORIGIN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::crossorigin), ALL_NO_PREFIX);
   ATTR_COLUMNALIGN = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnalign), ALL_NO_PREFIX);
   ATTR_COLUMNLINES = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::columnlines), ALL_NO_PREFIX);
   ATTR_CONTEXTMENU = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::contextmenu), ALL_NO_PREFIX);
   ATTR_BASEPROFILE = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::baseprofile, nsHtml5Atoms::baseProfile), ALL_NO_PREFIX);
   ATTR_FONT_FAMILY = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::font_family), ALL_NO_PREFIX);
   ATTR_FRAMEBORDER = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::frameborder), ALL_NO_PREFIX);
   ATTR_FILTERUNITS = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::filterunits, nsHtml5Atoms::filterUnits), ALL_NO_PREFIX);
   ATTR_FLOOD_COLOR = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::flood_color), ALL_NO_PREFIX);
@@ -1394,17 +1396,17 @@ nsHtml5AttributeName::initializeStatics(
   ATTR_VERYVERYTHINMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::veryverythinmathspace), ALL_NO_PREFIX);
   ATTR_VERYVERYTHICKMATHSPACE = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::veryverythickmathspace), ALL_NO_PREFIX);
   ATTR_STRIKETHROUGH_POSITION = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_position), ALL_NO_PREFIX);
   ATTR_STRIKETHROUGH_THICKNESS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::strikethrough_thickness), ALL_NO_PREFIX);
   ATTR_EXTERNALRESOURCESREQUIRED = new nsHtml5AttributeName(ALL_NO_NS, SVG_DIFFERENT(nsHtml5Atoms::externalresourcesrequired, nsHtml5Atoms::externalResourcesRequired), ALL_NO_PREFIX);
   ATTR_GLYPH_ORIENTATION_VERTICAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_vertical), ALL_NO_PREFIX);
   ATTR_COLOR_INTERPOLATION_FILTERS = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::color_interpolation_filters), ALL_NO_PREFIX);
   ATTR_GLYPH_ORIENTATION_HORIZONTAL = new nsHtml5AttributeName(ALL_NO_NS, SAME_LOCAL(nsHtml5Atoms::glyph_orientation_horizontal), ALL_NO_PREFIX);
-  ATTRIBUTE_NAMES = new nsHtml5AttributeName*[581];
+  ATTRIBUTE_NAMES = new nsHtml5AttributeName*[582];
   ATTRIBUTE_NAMES[0] = ATTR_D;
   ATTRIBUTE_NAMES[1] = ATTR_K;
   ATTRIBUTE_NAMES[2] = ATTR_R;
   ATTRIBUTE_NAMES[3] = ATTR_X;
   ATTRIBUTE_NAMES[4] = ATTR_Y;
   ATTRIBUTE_NAMES[5] = ATTR_Z;
   ATTRIBUTE_NAMES[6] = ATTR_BY;
   ATTRIBUTE_NAMES[7] = ATTR_CX;
@@ -1772,220 +1774,221 @@ nsHtml5AttributeName::initializeStatics(
   ATTRIBUTE_NAMES[369] = ATTR_ARIA_SECRET;
   ATTRIBUTE_NAMES[370] = ATTR_ARIA_ATOMIC;
   ATTRIBUTE_NAMES[371] = ATTR_ARIA_HIDDEN;
   ATTRIBUTE_NAMES[372] = ATTR_ARIA_FLOWTO;
   ATTRIBUTE_NAMES[373] = ATTR_ARABIC_FORM;
   ATTRIBUTE_NAMES[374] = ATTR_CELLPADDING;
   ATTRIBUTE_NAMES[375] = ATTR_CELLSPACING;
   ATTRIBUTE_NAMES[376] = ATTR_COLUMNWIDTH;
-  ATTRIBUTE_NAMES[377] = ATTR_COLUMNALIGN;
-  ATTRIBUTE_NAMES[378] = ATTR_COLUMNLINES;
-  ATTRIBUTE_NAMES[379] = ATTR_CONTEXTMENU;
-  ATTRIBUTE_NAMES[380] = ATTR_BASEPROFILE;
-  ATTRIBUTE_NAMES[381] = ATTR_FONT_FAMILY;
-  ATTRIBUTE_NAMES[382] = ATTR_FRAMEBORDER;
-  ATTRIBUTE_NAMES[383] = ATTR_FILTERUNITS;
-  ATTRIBUTE_NAMES[384] = ATTR_FLOOD_COLOR;
-  ATTRIBUTE_NAMES[385] = ATTR_FONT_WEIGHT;
-  ATTRIBUTE_NAMES[386] = ATTR_HORIZ_ADV_X;
-  ATTRIBUTE_NAMES[387] = ATTR_ONDRAGLEAVE;
-  ATTRIBUTE_NAMES[388] = ATTR_ONMOUSEMOVE;
-  ATTRIBUTE_NAMES[389] = ATTR_ORIENTATION;
-  ATTRIBUTE_NAMES[390] = ATTR_ONMOUSEDOWN;
-  ATTRIBUTE_NAMES[391] = ATTR_ONMOUSEOVER;
-  ATTRIBUTE_NAMES[392] = ATTR_ONDRAGENTER;
-  ATTRIBUTE_NAMES[393] = ATTR_IDEOGRAPHIC;
-  ATTRIBUTE_NAMES[394] = ATTR_ONBEFORECUT;
-  ATTRIBUTE_NAMES[395] = ATTR_ONFORMINPUT;
-  ATTRIBUTE_NAMES[396] = ATTR_ONDRAGSTART;
-  ATTRIBUTE_NAMES[397] = ATTR_ONMOVESTART;
-  ATTRIBUTE_NAMES[398] = ATTR_MARKERUNITS;
-  ATTRIBUTE_NAMES[399] = ATTR_MATHVARIANT;
-  ATTRIBUTE_NAMES[400] = ATTR_MARGINWIDTH;
-  ATTRIBUTE_NAMES[401] = ATTR_MARKERWIDTH;
-  ATTRIBUTE_NAMES[402] = ATTR_TEXT_ANCHOR;
-  ATTRIBUTE_NAMES[403] = ATTR_TABLEVALUES;
-  ATTRIBUTE_NAMES[404] = ATTR_SCRIPTLEVEL;
-  ATTRIBUTE_NAMES[405] = ATTR_REPEATCOUNT;
-  ATTRIBUTE_NAMES[406] = ATTR_STITCHTILES;
-  ATTRIBUTE_NAMES[407] = ATTR_STARTOFFSET;
-  ATTRIBUTE_NAMES[408] = ATTR_SCROLLDELAY;
-  ATTRIBUTE_NAMES[409] = ATTR_XMLNS_XLINK;
-  ATTRIBUTE_NAMES[410] = ATTR_XLINK_TITLE;
-  ATTRIBUTE_NAMES[411] = ATTR_ARIA_INVALID;
-  ATTRIBUTE_NAMES[412] = ATTR_ARIA_PRESSED;
-  ATTRIBUTE_NAMES[413] = ATTR_ARIA_CHECKED;
-  ATTRIBUTE_NAMES[414] = ATTR_AUTOCOMPLETE;
-  ATTRIBUTE_NAMES[415] = ATTR_ARIA_SETSIZE;
-  ATTRIBUTE_NAMES[416] = ATTR_ARIA_CHANNEL;
-  ATTRIBUTE_NAMES[417] = ATTR_EQUALCOLUMNS;
-  ATTRIBUTE_NAMES[418] = ATTR_DISPLAYSTYLE;
-  ATTRIBUTE_NAMES[419] = ATTR_DATAFORMATAS;
-  ATTRIBUTE_NAMES[420] = ATTR_FILL_OPACITY;
-  ATTRIBUTE_NAMES[421] = ATTR_FONT_VARIANT;
-  ATTRIBUTE_NAMES[422] = ATTR_FONT_STRETCH;
-  ATTRIBUTE_NAMES[423] = ATTR_FRAMESPACING;
-  ATTRIBUTE_NAMES[424] = ATTR_KERNELMATRIX;
-  ATTRIBUTE_NAMES[425] = ATTR_ONDEACTIVATE;
-  ATTRIBUTE_NAMES[426] = ATTR_ONROWSDELETE;
-  ATTRIBUTE_NAMES[427] = ATTR_ONMOUSELEAVE;
-  ATTRIBUTE_NAMES[428] = ATTR_ONFORMCHANGE;
-  ATTRIBUTE_NAMES[429] = ATTR_ONCELLCHANGE;
-  ATTRIBUTE_NAMES[430] = ATTR_ONMOUSEWHEEL;
-  ATTRIBUTE_NAMES[431] = ATTR_ONMOUSEENTER;
-  ATTRIBUTE_NAMES[432] = ATTR_ONAFTERPRINT;
-  ATTRIBUTE_NAMES[433] = ATTR_ONBEFORECOPY;
-  ATTRIBUTE_NAMES[434] = ATTR_MARGINHEIGHT;
-  ATTRIBUTE_NAMES[435] = ATTR_MARKERHEIGHT;
-  ATTRIBUTE_NAMES[436] = ATTR_MARKER_START;
-  ATTRIBUTE_NAMES[437] = ATTR_MATHEMATICAL;
-  ATTRIBUTE_NAMES[438] = ATTR_LENGTHADJUST;
-  ATTRIBUTE_NAMES[439] = ATTR_UNSELECTABLE;
-  ATTRIBUTE_NAMES[440] = ATTR_UNICODE_BIDI;
-  ATTRIBUTE_NAMES[441] = ATTR_UNITS_PER_EM;
-  ATTRIBUTE_NAMES[442] = ATTR_WORD_SPACING;
-  ATTRIBUTE_NAMES[443] = ATTR_WRITING_MODE;
-  ATTRIBUTE_NAMES[444] = ATTR_V_ALPHABETIC;
-  ATTRIBUTE_NAMES[445] = ATTR_PATTERNUNITS;
-  ATTRIBUTE_NAMES[446] = ATTR_SPREADMETHOD;
-  ATTRIBUTE_NAMES[447] = ATTR_SURFACESCALE;
-  ATTRIBUTE_NAMES[448] = ATTR_STROKE_WIDTH;
-  ATTRIBUTE_NAMES[449] = ATTR_REPEAT_START;
-  ATTRIBUTE_NAMES[450] = ATTR_STDDEVIATION;
-  ATTRIBUTE_NAMES[451] = ATTR_STOP_OPACITY;
-  ATTRIBUTE_NAMES[452] = ATTR_ARIA_CONTROLS;
-  ATTRIBUTE_NAMES[453] = ATTR_ARIA_HASPOPUP;
-  ATTRIBUTE_NAMES[454] = ATTR_ACCENT_HEIGHT;
-  ATTRIBUTE_NAMES[455] = ATTR_ARIA_VALUENOW;
-  ATTRIBUTE_NAMES[456] = ATTR_ARIA_RELEVANT;
-  ATTRIBUTE_NAMES[457] = ATTR_ARIA_POSINSET;
-  ATTRIBUTE_NAMES[458] = ATTR_ARIA_VALUEMAX;
-  ATTRIBUTE_NAMES[459] = ATTR_ARIA_READONLY;
-  ATTRIBUTE_NAMES[460] = ATTR_ARIA_SELECTED;
-  ATTRIBUTE_NAMES[461] = ATTR_ARIA_REQUIRED;
-  ATTRIBUTE_NAMES[462] = ATTR_ARIA_EXPANDED;
-  ATTRIBUTE_NAMES[463] = ATTR_ARIA_DISABLED;
-  ATTRIBUTE_NAMES[464] = ATTR_ATTRIBUTETYPE;
-  ATTRIBUTE_NAMES[465] = ATTR_ATTRIBUTENAME;
-  ATTRIBUTE_NAMES[466] = ATTR_ARIA_DATATYPE;
-  ATTRIBUTE_NAMES[467] = ATTR_ARIA_VALUEMIN;
-  ATTRIBUTE_NAMES[468] = ATTR_BASEFREQUENCY;
-  ATTRIBUTE_NAMES[469] = ATTR_COLUMNSPACING;
-  ATTRIBUTE_NAMES[470] = ATTR_COLOR_PROFILE;
-  ATTRIBUTE_NAMES[471] = ATTR_CLIPPATHUNITS;
-  ATTRIBUTE_NAMES[472] = ATTR_DEFINITIONURL;
-  ATTRIBUTE_NAMES[473] = ATTR_GRADIENTUNITS;
-  ATTRIBUTE_NAMES[474] = ATTR_FLOOD_OPACITY;
-  ATTRIBUTE_NAMES[475] = ATTR_ONAFTERUPDATE;
-  ATTRIBUTE_NAMES[476] = ATTR_ONERRORUPDATE;
-  ATTRIBUTE_NAMES[477] = ATTR_ONBEFOREPASTE;
-  ATTRIBUTE_NAMES[478] = ATTR_ONLOSECAPTURE;
-  ATTRIBUTE_NAMES[479] = ATTR_ONCONTEXTMENU;
-  ATTRIBUTE_NAMES[480] = ATTR_ONSELECTSTART;
-  ATTRIBUTE_NAMES[481] = ATTR_ONBEFOREPRINT;
-  ATTRIBUTE_NAMES[482] = ATTR_MOVABLELIMITS;
-  ATTRIBUTE_NAMES[483] = ATTR_LINETHICKNESS;
-  ATTRIBUTE_NAMES[484] = ATTR_UNICODE_RANGE;
-  ATTRIBUTE_NAMES[485] = ATTR_THINMATHSPACE;
-  ATTRIBUTE_NAMES[486] = ATTR_VERT_ORIGIN_X;
-  ATTRIBUTE_NAMES[487] = ATTR_VERT_ORIGIN_Y;
-  ATTRIBUTE_NAMES[488] = ATTR_V_IDEOGRAPHIC;
-  ATTRIBUTE_NAMES[489] = ATTR_PRESERVEALPHA;
-  ATTRIBUTE_NAMES[490] = ATTR_SCRIPTMINSIZE;
-  ATTRIBUTE_NAMES[491] = ATTR_SPECIFICATION;
-  ATTRIBUTE_NAMES[492] = ATTR_XLINK_ACTUATE;
-  ATTRIBUTE_NAMES[493] = ATTR_XLINK_ARCROLE;
-  ATTRIBUTE_NAMES[494] = ATTR_ACCEPT_CHARSET;
-  ATTRIBUTE_NAMES[495] = ATTR_ALIGNMENTSCOPE;
-  ATTRIBUTE_NAMES[496] = ATTR_ARIA_MULTILINE;
-  ATTRIBUTE_NAMES[497] = ATTR_BASELINE_SHIFT;
-  ATTRIBUTE_NAMES[498] = ATTR_HORIZ_ORIGIN_X;
-  ATTRIBUTE_NAMES[499] = ATTR_HORIZ_ORIGIN_Y;
-  ATTRIBUTE_NAMES[500] = ATTR_ONBEFOREUPDATE;
-  ATTRIBUTE_NAMES[501] = ATTR_ONFILTERCHANGE;
-  ATTRIBUTE_NAMES[502] = ATTR_ONROWSINSERTED;
-  ATTRIBUTE_NAMES[503] = ATTR_ONBEFOREUNLOAD;
-  ATTRIBUTE_NAMES[504] = ATTR_MATHBACKGROUND;
-  ATTRIBUTE_NAMES[505] = ATTR_LETTER_SPACING;
-  ATTRIBUTE_NAMES[506] = ATTR_LIGHTING_COLOR;
-  ATTRIBUTE_NAMES[507] = ATTR_THICKMATHSPACE;
-  ATTRIBUTE_NAMES[508] = ATTR_TEXT_RENDERING;
-  ATTRIBUTE_NAMES[509] = ATTR_V_MATHEMATICAL;
-  ATTRIBUTE_NAMES[510] = ATTR_POINTER_EVENTS;
-  ATTRIBUTE_NAMES[511] = ATTR_PRIMITIVEUNITS;
-  ATTRIBUTE_NAMES[512] = ATTR_SYSTEMLANGUAGE;
-  ATTRIBUTE_NAMES[513] = ATTR_STROKE_LINECAP;
-  ATTRIBUTE_NAMES[514] = ATTR_SUBSCRIPTSHIFT;
-  ATTRIBUTE_NAMES[515] = ATTR_STROKE_OPACITY;
-  ATTRIBUTE_NAMES[516] = ATTR_ARIA_DROPEFFECT;
-  ATTRIBUTE_NAMES[517] = ATTR_ARIA_LABELLEDBY;
-  ATTRIBUTE_NAMES[518] = ATTR_ARIA_TEMPLATEID;
-  ATTRIBUTE_NAMES[519] = ATTR_COLOR_RENDERING;
-  ATTRIBUTE_NAMES[520] = ATTR_CONTENTEDITABLE;
-  ATTRIBUTE_NAMES[521] = ATTR_DIFFUSECONSTANT;
-  ATTRIBUTE_NAMES[522] = ATTR_ONDATAAVAILABLE;
-  ATTRIBUTE_NAMES[523] = ATTR_ONCONTROLSELECT;
-  ATTRIBUTE_NAMES[524] = ATTR_IMAGE_RENDERING;
-  ATTRIBUTE_NAMES[525] = ATTR_MEDIUMMATHSPACE;
-  ATTRIBUTE_NAMES[526] = ATTR_TEXT_DECORATION;
-  ATTRIBUTE_NAMES[527] = ATTR_SHAPE_RENDERING;
-  ATTRIBUTE_NAMES[528] = ATTR_STROKE_LINEJOIN;
-  ATTRIBUTE_NAMES[529] = ATTR_REPEAT_TEMPLATE;
-  ATTRIBUTE_NAMES[530] = ATTR_ARIA_DESCRIBEDBY;
-  ATTRIBUTE_NAMES[531] = ATTR_CONTENTSTYLETYPE;
-  ATTRIBUTE_NAMES[532] = ATTR_FONT_SIZE_ADJUST;
-  ATTRIBUTE_NAMES[533] = ATTR_KERNELUNITLENGTH;
-  ATTRIBUTE_NAMES[534] = ATTR_ONBEFOREACTIVATE;
-  ATTRIBUTE_NAMES[535] = ATTR_ONPROPERTYCHANGE;
-  ATTRIBUTE_NAMES[536] = ATTR_ONDATASETCHANGED;
-  ATTRIBUTE_NAMES[537] = ATTR_MASKCONTENTUNITS;
-  ATTRIBUTE_NAMES[538] = ATTR_PATTERNTRANSFORM;
-  ATTRIBUTE_NAMES[539] = ATTR_REQUIREDFEATURES;
-  ATTRIBUTE_NAMES[540] = ATTR_RENDERING_INTENT;
-  ATTRIBUTE_NAMES[541] = ATTR_SPECULAREXPONENT;
-  ATTRIBUTE_NAMES[542] = ATTR_SPECULARCONSTANT;
-  ATTRIBUTE_NAMES[543] = ATTR_SUPERSCRIPTSHIFT;
-  ATTRIBUTE_NAMES[544] = ATTR_STROKE_DASHARRAY;
-  ATTRIBUTE_NAMES[545] = ATTR_XCHANNELSELECTOR;
-  ATTRIBUTE_NAMES[546] = ATTR_YCHANNELSELECTOR;
-  ATTRIBUTE_NAMES[547] = ATTR_ARIA_AUTOCOMPLETE;
-  ATTRIBUTE_NAMES[548] = ATTR_CONTENTSCRIPTTYPE;
-  ATTRIBUTE_NAMES[549] = ATTR_ENABLE_BACKGROUND;
-  ATTRIBUTE_NAMES[550] = ATTR_DOMINANT_BASELINE;
-  ATTRIBUTE_NAMES[551] = ATTR_GRADIENTTRANSFORM;
-  ATTRIBUTE_NAMES[552] = ATTR_ONBEFORDEACTIVATE;
-  ATTRIBUTE_NAMES[553] = ATTR_ONDATASETCOMPLETE;
-  ATTRIBUTE_NAMES[554] = ATTR_OVERLINE_POSITION;
-  ATTRIBUTE_NAMES[555] = ATTR_ONBEFOREEDITFOCUS;
-  ATTRIBUTE_NAMES[556] = ATTR_LIMITINGCONEANGLE;
-  ATTRIBUTE_NAMES[557] = ATTR_VERYTHINMATHSPACE;
-  ATTRIBUTE_NAMES[558] = ATTR_STROKE_DASHOFFSET;
-  ATTRIBUTE_NAMES[559] = ATTR_STROKE_MITERLIMIT;
-  ATTRIBUTE_NAMES[560] = ATTR_ALIGNMENT_BASELINE;
-  ATTRIBUTE_NAMES[561] = ATTR_ONREADYSTATECHANGE;
-  ATTRIBUTE_NAMES[562] = ATTR_OVERLINE_THICKNESS;
-  ATTRIBUTE_NAMES[563] = ATTR_UNDERLINE_POSITION;
-  ATTRIBUTE_NAMES[564] = ATTR_VERYTHICKMATHSPACE;
-  ATTRIBUTE_NAMES[565] = ATTR_REQUIREDEXTENSIONS;
-  ATTRIBUTE_NAMES[566] = ATTR_COLOR_INTERPOLATION;
-  ATTRIBUTE_NAMES[567] = ATTR_UNDERLINE_THICKNESS;
-  ATTRIBUTE_NAMES[568] = ATTR_PRESERVEASPECTRATIO;
-  ATTRIBUTE_NAMES[569] = ATTR_PATTERNCONTENTUNITS;
-  ATTRIBUTE_NAMES[570] = ATTR_ARIA_MULTISELECTABLE;
-  ATTRIBUTE_NAMES[571] = ATTR_SCRIPTSIZEMULTIPLIER;
-  ATTRIBUTE_NAMES[572] = ATTR_ARIA_ACTIVEDESCENDANT;
-  ATTRIBUTE_NAMES[573] = ATTR_VERYVERYTHINMATHSPACE;
-  ATTRIBUTE_NAMES[574] = ATTR_VERYVERYTHICKMATHSPACE;
-  ATTRIBUTE_NAMES[575] = ATTR_STRIKETHROUGH_POSITION;
-  ATTRIBUTE_NAMES[576] = ATTR_STRIKETHROUGH_THICKNESS;
-  ATTRIBUTE_NAMES[577] = ATTR_EXTERNALRESOURCESREQUIRED;
-  ATTRIBUTE_NAMES[578] = ATTR_GLYPH_ORIENTATION_VERTICAL;
-  ATTRIBUTE_NAMES[579] = ATTR_COLOR_INTERPOLATION_FILTERS;
-  ATTRIBUTE_NAMES[580] = ATTR_GLYPH_ORIENTATION_HORIZONTAL;
+  ATTRIBUTE_NAMES[377] = ATTR_CROSSORIGIN;
+  ATTRIBUTE_NAMES[378] = ATTR_COLUMNALIGN;
+  ATTRIBUTE_NAMES[379] = ATTR_COLUMNLINES;
+  ATTRIBUTE_NAMES[380] = ATTR_CONTEXTMENU;
+  ATTRIBUTE_NAMES[381] = ATTR_BASEPROFILE;
+  ATTRIBUTE_NAMES[382] = ATTR_FONT_FAMILY;
+  ATTRIBUTE_NAMES[383] = ATTR_FRAMEBORDER;
+  ATTRIBUTE_NAMES[384] = ATTR_FILTERUNITS;
+  ATTRIBUTE_NAMES[385] = ATTR_FLOOD_COLOR;
+  ATTRIBUTE_NAMES[386] = ATTR_FONT_WEIGHT;
+  ATTRIBUTE_NAMES[387] = ATTR_HORIZ_ADV_X;
+  ATTRIBUTE_NAMES[388] = ATTR_ONDRAGLEAVE;
+  ATTRIBUTE_NAMES[389] = ATTR_ONMOUSEMOVE;
+  ATTRIBUTE_NAMES[390] = ATTR_ORIENTATION;
+  ATTRIBUTE_NAMES[391] = ATTR_ONMOUSEDOWN;
+  ATTRIBUTE_NAMES[392] = ATTR_ONMOUSEOVER;
+  ATTRIBUTE_NAMES[393] = ATTR_ONDRAGENTER;
+  ATTRIBUTE_NAMES[394] = ATTR_IDEOGRAPHIC;
+  ATTRIBUTE_NAMES[395] = ATTR_ONBEFORECUT;
+  ATTRIBUTE_NAMES[396] = ATTR_ONFORMINPUT;
+  ATTRIBUTE_NAMES[397] = ATTR_ONDRAGSTART;
+  ATTRIBUTE_NAMES[398] = ATTR_ONMOVESTART;
+  ATTRIBUTE_NAMES[399] = ATTR_MARKERUNITS;
+  ATTRIBUTE_NAMES[400] = ATTR_MATHVARIANT;
+  ATTRIBUTE_NAMES[401] = ATTR_MARGINWIDTH;
+  ATTRIBUTE_NAMES[402] = ATTR_MARKERWIDTH;
+  ATTRIBUTE_NAMES[403] = ATTR_TEXT_ANCHOR;
+  ATTRIBUTE_NAMES[404] = ATTR_TABLEVALUES;
+  ATTRIBUTE_NAMES[405] = ATTR_SCRIPTLEVEL;
+  ATTRIBUTE_NAMES[406] = ATTR_REPEATCOUNT;
+  ATTRIBUTE_NAMES[407] = ATTR_STITCHTILES;
+  ATTRIBUTE_NAMES[408] = ATTR_STARTOFFSET;
+  ATTRIBUTE_NAMES[409] = ATTR_SCROLLDELAY;
+  ATTRIBUTE_NAMES[410] = ATTR_XMLNS_XLINK;
+  ATTRIBUTE_NAMES[411] = ATTR_XLINK_TITLE;
+  ATTRIBUTE_NAMES[412] = ATTR_ARIA_INVALID;
+  ATTRIBUTE_NAMES[413] = ATTR_ARIA_PRESSED;
+  ATTRIBUTE_NAMES[414] = ATTR_ARIA_CHECKED;
+  ATTRIBUTE_NAMES[415] = ATTR_AUTOCOMPLETE;
+  ATTRIBUTE_NAMES[416] = ATTR_ARIA_SETSIZE;
+  ATTRIBUTE_NAMES[417] = ATTR_ARIA_CHANNEL;
+  ATTRIBUTE_NAMES[418] = ATTR_EQUALCOLUMNS;
+  ATTRIBUTE_NAMES[419] = ATTR_DISPLAYSTYLE;
+  ATTRIBUTE_NAMES[420] = ATTR_DATAFORMATAS;
+  ATTRIBUTE_NAMES[421] = ATTR_FILL_OPACITY;
+  ATTRIBUTE_NAMES[422] = ATTR_FONT_VARIANT;
+  ATTRIBUTE_NAMES[423] = ATTR_FONT_STRETCH;
+  ATTRIBUTE_NAMES[424] = ATTR_FRAMESPACING;
+  ATTRIBUTE_NAMES[425] = ATTR_KERNELMATRIX;
+  ATTRIBUTE_NAMES[426] = ATTR_ONDEACTIVATE;
+  ATTRIBUTE_NAMES[427] = ATTR_ONROWSDELETE;
+  ATTRIBUTE_NAMES[428] = ATTR_ONMOUSELEAVE;
+  ATTRIBUTE_NAMES[429] = ATTR_ONFORMCHANGE;
+  ATTRIBUTE_NAMES[430] = ATTR_ONCELLCHANGE;
+  ATTRIBUTE_NAMES[431] = ATTR_ONMOUSEWHEEL;
+  ATTRIBUTE_NAMES[432] = ATTR_ONMOUSEENTER;
+  ATTRIBUTE_NAMES[433] = ATTR_ONAFTERPRINT;
+  ATTRIBUTE_NAMES[434] = ATTR_ONBEFORECOPY;
+  ATTRIBUTE_NAMES[435] = ATTR_MARGINHEIGHT;
+  ATTRIBUTE_NAMES[436] = ATTR_MARKERHEIGHT;
+  ATTRIBUTE_NAMES[437] = ATTR_MARKER_START;
+  ATTRIBUTE_NAMES[438] = ATTR_MATHEMATICAL;
+  ATTRIBUTE_NAMES[439] = ATTR_LENGTHADJUST;
+  ATTRIBUTE_NAMES[440] = ATTR_UNSELECTABLE;
+  ATTRIBUTE_NAMES[441] = ATTR_UNICODE_BIDI;
+  ATTRIBUTE_NAMES[442] = ATTR_UNITS_PER_EM;
+  ATTRIBUTE_NAMES[443] = ATTR_WORD_SPACING;
+  ATTRIBUTE_NAMES[444] = ATTR_WRITING_MODE;
+  ATTRIBUTE_NAMES[445] = ATTR_V_ALPHABETIC;
+  ATTRIBUTE_NAMES[446] = ATTR_PATTERNUNITS;
+  ATTRIBUTE_NAMES[447] = ATTR_SPREADMETHOD;
+  ATTRIBUTE_NAMES[448] = ATTR_SURFACESCALE;
+  ATTRIBUTE_NAMES[449] = ATTR_STROKE_WIDTH;
+  ATTRIBUTE_NAMES[450] = ATTR_REPEAT_START;
+  ATTRIBUTE_NAMES[451] = ATTR_STDDEVIATION;
+  ATTRIBUTE_NAMES[452] = ATTR_STOP_OPACITY;
+  ATTRIBUTE_NAMES[453] = ATTR_ARIA_CONTROLS;
+  ATTRIBUTE_NAMES[454] = ATTR_ARIA_HASPOPUP;
+  ATTRIBUTE_NAMES[455] = ATTR_ACCENT_HEIGHT;
+  ATTRIBUTE_NAMES[456] = ATTR_ARIA_VALUENOW;
+  ATTRIBUTE_NAMES[457] = ATTR_ARIA_RELEVANT;
+  ATTRIBUTE_NAMES[458] = ATTR_ARIA_POSINSET;
+  ATTRIBUTE_NAMES[459] = ATTR_ARIA_VALUEMAX;
+  ATTRIBUTE_NAMES[460] = ATTR_ARIA_READONLY;
+  ATTRIBUTE_NAMES[461] = ATTR_ARIA_SELECTED;
+  ATTRIBUTE_NAMES[462] = ATTR_ARIA_REQUIRED;
+  ATTRIBUTE_NAMES[463] = ATTR_ARIA_EXPANDED;
+  ATTRIBUTE_NAMES[464] = ATTR_ARIA_DISABLED;
+  ATTRIBUTE_NAMES[465] = ATTR_ATTRIBUTETYPE;
+  ATTRIBUTE_NAMES[466] = ATTR_ATTRIBUTENAME;
+  ATTRIBUTE_NAMES[467] = ATTR_ARIA_DATATYPE;
+  ATTRIBUTE_NAMES[468] = ATTR_ARIA_VALUEMIN;
+  ATTRIBUTE_NAMES[469] = ATTR_BASEFREQUENCY;
+  ATTRIBUTE_NAMES[470] = ATTR_COLUMNSPACING;
+  ATTRIBUTE_NAMES[471] = ATTR_COLOR_PROFILE;
+  ATTRIBUTE_NAMES[472] = ATTR_CLIPPATHUNITS;
+  ATTRIBUTE_NAMES[473] = ATTR_DEFINITIONURL;
+  ATTRIBUTE_NAMES[474] = ATTR_GRADIENTUNITS;
+  ATTRIBUTE_NAMES[475] = ATTR_FLOOD_OPACITY;
+  ATTRIBUTE_NAMES[476] = ATTR_ONAFTERUPDATE;
+  ATTRIBUTE_NAMES[477] = ATTR_ONERRORUPDATE;
+  ATTRIBUTE_NAMES[478] = ATTR_ONBEFOREPASTE;
+  ATTRIBUTE_NAMES[479] = ATTR_ONLOSECAPTURE;
+  ATTRIBUTE_NAMES[480] = ATTR_ONCONTEXTMENU;
+  ATTRIBUTE_NAMES[481] = ATTR_ONSELECTSTART;
+  ATTRIBUTE_NAMES[482] = ATTR_ONBEFOREPRINT;
+  ATTRIBUTE_NAMES[483] = ATTR_MOVABLELIMITS;
+  ATTRIBUTE_NAMES[484] = ATTR_LINETHICKNESS;
+  ATTRIBUTE_NAMES[485] = ATTR_UNICODE_RANGE;
+  ATTRIBUTE_NAMES[486] = ATTR_THINMATHSPACE;
+  ATTRIBUTE_NAMES[487] = ATTR_VERT_ORIGIN_X;
+  ATTRIBUTE_NAMES[488] = ATTR_VERT_ORIGIN_Y;
+  ATTRIBUTE_NAMES[489] = ATTR_V_IDEOGRAPHIC;
+  ATTRIBUTE_NAMES[490] = ATTR_PRESERVEALPHA;
+  ATTRIBUTE_NAMES[491] = ATTR_SCRIPTMINSIZE;
+  ATTRIBUTE_NAMES[492] = ATTR_SPECIFICATION;
+  ATTRIBUTE_NAMES[493] = ATTR_XLINK_ACTUATE;
+  ATTRIBUTE_NAMES[494] = ATTR_XLINK_ARCROLE;
+  ATTRIBUTE_NAMES[495] = ATTR_ACCEPT_CHARSET;
+  ATTRIBUTE_NAMES[496] = ATTR_ALIGNMENTSCOPE;
+  ATTRIBUTE_NAMES[497] = ATTR_ARIA_MULTILINE;
+  ATTRIBUTE_NAMES[498] = ATTR_BASELINE_SHIFT;
+  ATTRIBUTE_NAMES[499] = ATTR_HORIZ_ORIGIN_X;
+  ATTRIBUTE_NAMES[500] = ATTR_HORIZ_ORIGIN_Y;
+  ATTRIBUTE_NAMES[501] = ATTR_ONBEFOREUPDATE;
+  ATTRIBUTE_NAMES[502] = ATTR_ONFILTERCHANGE;
+  ATTRIBUTE_NAMES[503] = ATTR_ONROWSINSERTED;
+  ATTRIBUTE_NAMES[504] = ATTR_ONBEFOREUNLOAD;
+  ATTRIBUTE_NAMES[505] = ATTR_MATHBACKGROUND;
+  ATTRIBUTE_NAMES[506] = ATTR_LETTER_SPACING;
+  ATTRIBUTE_NAMES[507] = ATTR_LIGHTING_COLOR;
+  ATTRIBUTE_NAMES[508] = ATTR_THICKMATHSPACE;
+  ATTRIBUTE_NAMES[509] = ATTR_TEXT_RENDERING;
+  ATTRIBUTE_NAMES[510] = ATTR_V_MATHEMATICAL;
+  ATTRIBUTE_NAMES[511] = ATTR_POINTER_EVENTS;
+  ATTRIBUTE_NAMES[512] = ATTR_PRIMITIVEUNITS;
+  ATTRIBUTE_NAMES[513] = ATTR_SYSTEMLANGUAGE;
+  ATTRIBUTE_NAMES[514] = ATTR_STROKE_LINECAP;
+  ATTRIBUTE_NAMES[515] = ATTR_SUBSCRIPTSHIFT;
+  ATTRIBUTE_NAMES[516] = ATTR_STROKE_OPACITY;
+  ATTRIBUTE_NAMES[517] = ATTR_ARIA_DROPEFFECT;
+  ATTRIBUTE_NAMES[518] = ATTR_ARIA_LABELLEDBY;
+  ATTRIBUTE_NAMES[519] = ATTR_ARIA_TEMPLATEID;
+  ATTRIBUTE_NAMES[520] = ATTR_COLOR_RENDERING;
+  ATTRIBUTE_NAMES[521] = ATTR_CONTENTEDITABLE;
+  ATTRIBUTE_NAMES[522] = ATTR_DIFFUSECONSTANT;
+  ATTRIBUTE_NAMES[523] = ATTR_ONDATAAVAILABLE;
+  ATTRIBUTE_NAMES[524] = ATTR_ONCONTROLSELECT;
+  ATTRIBUTE_NAMES[525] = ATTR_IMAGE_RENDERING;
+  ATTRIBUTE_NAMES[526] = ATTR_MEDIUMMATHSPACE;
+  ATTRIBUTE_NAMES[527] = ATTR_TEXT_DECORATION;
+  ATTRIBUTE_NAMES[528] = ATTR_SHAPE_RENDERING;
+  ATTRIBUTE_NAMES[529] = ATTR_STROKE_LINEJOIN;
+  ATTRIBUTE_NAMES[530] = ATTR_REPEAT_TEMPLATE;
+  ATTRIBUTE_NAMES[531] = ATTR_ARIA_DESCRIBEDBY;
+  ATTRIBUTE_NAMES[532] = ATTR_CONTENTSTYLETYPE;
+  ATTRIBUTE_NAMES[533] = ATTR_FONT_SIZE_ADJUST;
+  ATTRIBUTE_NAMES[534] = ATTR_KERNELUNITLENGTH;
+  ATTRIBUTE_NAMES[535] = ATTR_ONBEFOREACTIVATE;
+  ATTRIBUTE_NAMES[536] = ATTR_ONPROPERTYCHANGE;
+  ATTRIBUTE_NAMES[537] = ATTR_ONDATASETCHANGED;
+  ATTRIBUTE_NAMES[538] = ATTR_MASKCONTENTUNITS;
+  ATTRIBUTE_NAMES[539] = ATTR_PATTERNTRANSFORM;
+  ATTRIBUTE_NAMES[540] = ATTR_REQUIREDFEATURES;
+  ATTRIBUTE_NAMES[541] = ATTR_RENDERING_INTENT;
+  ATTRIBUTE_NAMES[542] = ATTR_SPECULAREXPONENT;
+  ATTRIBUTE_NAMES[543] = ATTR_SPECULARCONSTANT;
+  ATTRIBUTE_NAMES[544] = ATTR_SUPERSCRIPTSHIFT;
+  ATTRIBUTE_NAMES[545] = ATTR_STROKE_DASHARRAY;
+  ATTRIBUTE_NAMES[546] = ATTR_XCHANNELSELECTOR;
+  ATTRIBUTE_NAMES[547] = ATTR_YCHANNELSELECTOR;
+  ATTRIBUTE_NAMES[548] = ATTR_ARIA_AUTOCOMPLETE;
+  ATTRIBUTE_NAMES[549] = ATTR_CONTENTSCRIPTTYPE;
+  ATTRIBUTE_NAMES[550] = ATTR_ENABLE_BACKGROUND;
+  ATTRIBUTE_NAMES[551] = ATTR_DOMINANT_BASELINE;
+  ATTRIBUTE_NAMES[552] = ATTR_GRADIENTTRANSFORM;
+  ATTRIBUTE_NAMES[553] = ATTR_ONBEFORDEACTIVATE;
+  ATTRIBUTE_NAMES[554] = ATTR_ONDATASETCOMPLETE;
+  ATTRIBUTE_NAMES[555] = ATTR_OVERLINE_POSITION;
+  ATTRIBUTE_NAMES[556] = ATTR_ONBEFOREEDITFOCUS;
+  ATTRIBUTE_NAMES[557] = ATTR_LIMITINGCONEANGLE;
+  ATTRIBUTE_NAMES[558] = ATTR_VERYTHINMATHSPACE;
+  ATTRIBUTE_NAMES[559] = ATTR_STROKE_DASHOFFSET;
+  ATTRIBUTE_NAMES[560] = ATTR_STROKE_MITERLIMIT;
+  ATTRIBUTE_NAMES[561] = ATTR_ALIGNMENT_BASELINE;
+  ATTRIBUTE_NAMES[562] = ATTR_ONREADYSTATECHANGE;
+  ATTRIBUTE_NAMES[563] = ATTR_OVERLINE_THICKNESS;
+  ATTRIBUTE_NAMES[564] = ATTR_UNDERLINE_POSITION;
+  ATTRIBUTE_NAMES[565] = ATTR_VERYTHICKMATHSPACE;
+  ATTRIBUTE_NAMES[566] = ATTR_REQUIREDEXTENSIONS;
+  ATTRIBUTE_NAMES[567] = ATTR_COLOR_INTERPOLATION;
+  ATTRIBUTE_NAMES[568] = ATTR_UNDERLINE_THICKNESS;
+  ATTRIBUTE_NAMES[569] = ATTR_PRESERVEASPECTRATIO;
+  ATTRIBUTE_NAMES[570] = ATTR_PATTERNCONTENTUNITS;
+  ATTRIBUTE_NAMES[571] = ATTR_ARIA_MULTISELECTABLE;
+  ATTRIBUTE_NAMES[572] = ATTR_SCRIPTSIZEMULTIPLIER;
+  ATTRIBUTE_NAMES[573] = ATTR_ARIA_ACTIVEDESCENDANT;
+  ATTRIBUTE_NAMES[574] = ATTR_VERYVERYTHINMATHSPACE;
+  ATTRIBUTE_NAMES[575] = ATTR_VERYVERYTHICKMATHSPACE;
+  ATTRIBUTE_NAMES[576] = ATTR_STRIKETHROUGH_POSITION;
+  ATTRIBUTE_NAMES[577] = ATTR_STRIKETHROUGH_THICKNESS;
+  ATTRIBUTE_NAMES[578] = ATTR_EXTERNALRESOURCESREQUIRED;
+  ATTRIBUTE_NAMES[579] = ATTR_GLYPH_ORIENTATION_VERTICAL;
+  ATTRIBUTE_NAMES[580] = ATTR_COLOR_INTERPOLATION_FILTERS;
+  ATTRIBUTE_NAMES[581] = ATTR_GLYPH_ORIENTATION_HORIZONTAL;
 }
 
 void
 nsHtml5AttributeName::releaseStatics()
 {
   delete[] ALL_NO_NS;
   delete[] XMLNS_NS;
   delete[] XML_NS;
@@ -2366,16 +2369,17 @@ nsHtml5AttributeName::releaseStatics()
   delete ATTR_ARIA_SECRET;
   delete ATTR_ARIA_ATOMIC;
   delete ATTR_ARIA_HIDDEN;
   delete ATTR_ARIA_FLOWTO;
   delete ATTR_ARABIC_FORM;
   delete ATTR_CELLPADDING;
   delete ATTR_CELLSPACING;
   delete ATTR_COLUMNWIDTH;
+  delete ATTR_CROSSORIGIN;
   delete ATTR_COLUMNALIGN;
   delete ATTR_COLUMNLINES;
   delete ATTR_CONTEXTMENU;
   delete ATTR_BASEPROFILE;
   delete ATTR_FONT_FAMILY;
   delete ATTR_FRAMEBORDER;
   delete ATTR_FILTERUNITS;
   delete ATTR_FLOOD_COLOR;
--- a/parser/html/nsHtml5AttributeName.h
+++ b/parser/html/nsHtml5AttributeName.h
@@ -468,16 +468,17 @@ class nsHtml5AttributeName
     static nsHtml5AttributeName* ATTR_ARIA_SECRET;
     static nsHtml5AttributeName* ATTR_ARIA_ATOMIC;
     static nsHtml5AttributeName* ATTR_ARIA_HIDDEN;
     static nsHtml5AttributeName* ATTR_ARIA_FLOWTO;
     static nsHtml5AttributeName* ATTR_ARABIC_FORM;
     static nsHtml5AttributeName* ATTR_CELLPADDING;
     static nsHtml5AttributeName* ATTR_CELLSPACING;
     static nsHtml5AttributeName* ATTR_COLUMNWIDTH;
+    static nsHtml5AttributeName* ATTR_CROSSORIGIN;
     static nsHtml5AttributeName* ATTR_COLUMNALIGN;
     static nsHtml5AttributeName* ATTR_COLUMNLINES;
     static nsHtml5AttributeName* ATTR_CONTEXTMENU;
     static nsHtml5AttributeName* ATTR_BASEPROFILE;
     static nsHtml5AttributeName* ATTR_FONT_FAMILY;
     static nsHtml5AttributeName* ATTR_FRAMEBORDER;
     static nsHtml5AttributeName* ATTR_FILTERUNITS;
     static nsHtml5AttributeName* ATTR_FLOOD_COLOR;
--- a/parser/html/nsHtml5SpeculativeLoad.cpp
+++ b/parser/html/nsHtml5SpeculativeLoad.cpp
@@ -56,23 +56,23 @@ nsHtml5SpeculativeLoad::~nsHtml5Speculat
 void
 nsHtml5SpeculativeLoad::Perform(nsHtml5TreeOpExecutor* aExecutor)
 {
   switch (mOpCode) {
     case eSpeculativeLoadBase:
         aExecutor->SetSpeculationBase(mUrl);
       break;
     case eSpeculativeLoadImage:
-        aExecutor->PreloadImage(mUrl);
+        aExecutor->PreloadImage(mUrl, mCharsetOrCrossOrigin);
       break;
     case eSpeculativeLoadScript:
-        aExecutor->PreloadScript(mUrl, mCharset, mType);
+        aExecutor->PreloadScript(mUrl, mCharsetOrCrossOrigin, mType);
       break;
     case eSpeculativeLoadStyle:
-        aExecutor->PreloadStyle(mUrl, mCharset);
+        aExecutor->PreloadStyle(mUrl, mCharsetOrCrossOrigin);
       break;
     case eSpeculativeLoadManifest:  
         aExecutor->ProcessOfflineManifest(mUrl);
       break;
     default:
       NS_NOTREACHED("Bogus speculative load.");
       break;
   }
--- a/parser/html/nsHtml5SpeculativeLoad.h
+++ b/parser/html/nsHtml5SpeculativeLoad.h
@@ -60,40 +60,42 @@ class nsHtml5SpeculativeLoad {
     
     inline void InitBase(const nsAString& aUrl) {
       NS_PRECONDITION(mOpCode == eSpeculativeLoadUninitialized,
                       "Trying to reinitialize a speculative load!");
       mOpCode = eSpeculativeLoadBase;
       mUrl.Assign(aUrl);
     }
 
-    inline void InitImage(const nsAString& aUrl) {
+    inline void InitImage(const nsAString& aUrl,
+                          const nsAString& aCrossOrigin) {
       NS_PRECONDITION(mOpCode == eSpeculativeLoadUninitialized,
                       "Trying to reinitialize a speculative load!");
       mOpCode = eSpeculativeLoadImage;
       mUrl.Assign(aUrl);
+      mCharsetOrCrossOrigin.Assign(aCrossOrigin);
     }
 
     inline void InitScript(const nsAString& aUrl,
                       const nsAString& aCharset,
                       const nsAString& aType) {
       NS_PRECONDITION(mOpCode == eSpeculativeLoadUninitialized,
                       "Trying to reinitialize a speculative load!");
       mOpCode = eSpeculativeLoadScript;
       mUrl.Assign(aUrl);
-      mCharset.Assign(aCharset);
+      mCharsetOrCrossOrigin.Assign(aCharset);
       mType.Assign(aType);
     }
     
     inline void InitStyle(const nsAString& aUrl, const nsAString& aCharset) {
       NS_PRECONDITION(mOpCode == eSpeculativeLoadUninitialized,
                       "Trying to reinitialize a speculative load!");
       mOpCode = eSpeculativeLoadStyle;
       mUrl.Assign(aUrl);
-      mCharset.Assign(aCharset);
+      mCharsetOrCrossOrigin.Assign(aCharset);
     }
 
     /**
      * "Speculative" manifest loads aren't truly speculative--if a manifest
      * gets loaded, we are committed to it. There can never be a <script>
      * before the manifest, so the situation of having to undo a manifest due
      * to document.write() never arises. The reason why a parser
      * thread-discovered manifest gets loaded via the speculative load queue
@@ -109,13 +111,17 @@ class nsHtml5SpeculativeLoad {
       mUrl.Assign(aUrl);
     }
 
     void Perform(nsHtml5TreeOpExecutor* aExecutor);
     
   private:
     eHtml5SpeculativeLoad mOpCode;
     nsString mUrl;
-    nsString mCharset;
+    // If mOpCode is eSpeculativeLoadImage, this is the value of the
+    // "crossorigin" attribute.  If mOpCode is eSpeculativeLoadStyle
+    // or eSpeculativeLoadScript then this is the value of the
+    // "charset" attribute.  Otherwise it's empty.
+    nsString mCharsetOrCrossOrigin;
     nsString mType;
 };
 
 #endif // nsHtml5SpeculativeLoad_h_
--- a/parser/html/nsHtml5TreeBuilderCppSupplement.h
+++ b/parser/html/nsHtml5TreeBuilderCppSupplement.h
@@ -100,17 +100,23 @@ nsHtml5TreeBuilder::createElement(PRInt3
   // Start wall of code for speculative loading and line numbers
   
   if (mSpeculativeLoadStage) {
     switch (aNamespace) {
       case kNameSpaceID_XHTML:
         if (nsHtml5Atoms::img == aName) {
           nsString* url = aAttributes->getValue(nsHtml5AttributeName::ATTR_SRC);
           if (url) {
-            mSpeculativeLoadQueue.AppendElement()->InitImage(*url);
+            nsString* crossOrigin =
+              aAttributes->getValue(nsHtml5AttributeName::ATTR_CROSSORIGIN);
+            if (crossOrigin) {
+              mSpeculativeLoadQueue.AppendElement()->InitImage(*url, *crossOrigin);
+            } else {
+              mSpeculativeLoadQueue.AppendElement()->InitImage(*url, EmptyString());
+            }
           }
         } else if (nsHtml5Atoms::script == aName) {
           nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
           NS_ASSERTION(treeOp, "Tree op allocation failed.");
           treeOp->Init(eTreeOpSetScriptLineNumberAndFreeze, content, tokenizer->getLineNumber());
 
           nsString* url = aAttributes->getValue(nsHtml5AttributeName::ATTR_SRC);
           if (url) {
@@ -133,17 +139,17 @@ nsHtml5TreeBuilder::createElement(PRInt3
               nsString* charset = aAttributes->getValue(nsHtml5AttributeName::ATTR_CHARSET);
               mSpeculativeLoadQueue.AppendElement()->InitStyle(*url,
                                                     (charset) ? *charset : EmptyString());
             }
           }
         } else if (nsHtml5Atoms::video == aName) {
           nsString* url = aAttributes->getValue(nsHtml5AttributeName::ATTR_POSTER);
           if (url) {
-            mSpeculativeLoadQueue.AppendElement()->InitImage(*url);
+            mSpeculativeLoadQueue.AppendElement()->InitImage(*url, EmptyString());
           }
         } else if (nsHtml5Atoms::style == aName) {
           nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
           NS_ASSERTION(treeOp, "Tree op allocation failed.");
           treeOp->Init(eTreeOpSetStyleLineNumber, content, tokenizer->getLineNumber());
         } else if (nsHtml5Atoms::html == aName) {
           nsString* url = aAttributes->getValue(nsHtml5AttributeName::ATTR_MANIFEST);
           if (url) {
@@ -158,17 +164,17 @@ nsHtml5TreeBuilder::createElement(PRInt3
             mSpeculativeLoadQueue.AppendElement()->InitBase(*url);
           }
         }
         break;
       case kNameSpaceID_SVG:
         if (nsHtml5Atoms::image == aName) {
           nsString* url = aAttributes->getValue(nsHtml5AttributeName::ATTR_XLINK_HREF);
           if (url) {
-            mSpeculativeLoadQueue.AppendElement()->InitImage(*url);
+            mSpeculativeLoadQueue.AppendElement()->InitImage(*url, EmptyString());
           }
         } else if (nsHtml5Atoms::script == aName) {
           nsHtml5TreeOperation* treeOp = mOpQueue.AppendElement();
           NS_ASSERTION(treeOp, "Tree op allocation failed.");
           treeOp->Init(eTreeOpSetScriptLineNumberAndFreeze, content, tokenizer->getLineNumber());
 
           nsString* url = aAttributes->getValue(nsHtml5AttributeName::ATTR_XLINK_HREF);
           if (url) {
--- a/parser/html/nsHtml5TreeOpExecutor.cpp
+++ b/parser/html/nsHtml5TreeOpExecutor.cpp
@@ -886,23 +886,24 @@ nsHtml5TreeOpExecutor::PreloadStyle(cons
   nsCOMPtr<nsIURI> uri = ConvertIfNotPreloadedYet(aURL);
   if (!uri) {
     return;
   }
   mDocument->PreloadStyle(uri, aCharset);
 }
 
 void
-nsHtml5TreeOpExecutor::PreloadImage(const nsAString& aURL)
+nsHtml5TreeOpExecutor::PreloadImage(const nsAString& aURL,
+                                    const nsAString& aCrossOrigin)
 {
   nsCOMPtr<nsIURI> uri = ConvertIfNotPreloadedYet(aURL);
   if (!uri) {
     return;
   }
-  mDocument->MaybePreLoadImage(uri);
+  mDocument->MaybePreLoadImage(uri, aCrossOrigin);
 }
 
 void
 nsHtml5TreeOpExecutor::SetSpeculationBase(const nsAString& aURL)
 {
   if (mSpeculationBaseURI) {
     // the first one wins
     return;
--- a/parser/html/nsHtml5TreeOpExecutor.h
+++ b/parser/html/nsHtml5TreeOpExecutor.h
@@ -396,17 +396,17 @@ class nsHtml5TreeOpExecutor : public nsC
 #endif
 
     void PreloadScript(const nsAString& aURL,
                        const nsAString& aCharset,
                        const nsAString& aType);
 
     void PreloadStyle(const nsAString& aURL, const nsAString& aCharset);
 
-    void PreloadImage(const nsAString& aURL);
+    void PreloadImage(const nsAString& aURL, const nsAString& aCrossOrigin);
 
     void SetSpeculationBase(const nsAString& aURL);
 
   private:
 
     nsHtml5Tokenizer* GetTokenizer();
 
     /**
--- a/parser/htmlparser/src/nsParser.cpp
+++ b/parser/htmlparser/src/nsParser.cpp
@@ -357,17 +357,17 @@ nsPreloadURIs::PreloadURIs(const nsAutoT
 
     alreadyPreloaded.Put(spec, PR_TRUE);
 
     switch (pe.type) {
       case nsSpeculativeScriptThread::SCRIPT:
         doc->ScriptLoader()->PreloadURI(uri, pe.charset, pe.elementType);
         break;
       case nsSpeculativeScriptThread::IMAGE:
-        doc->MaybePreLoadImage(uri);
+        doc->MaybePreLoadImage(uri, EmptyString());
         break;
       case nsSpeculativeScriptThread::STYLESHEET:
         doc->PreloadStyle(uri, pe.charset);
         break;
       case nsSpeculativeScriptThread::NONE:
         NS_NOTREACHED("Uninitialized preload entry?");
         break;
     }