Title: [96999] trunk
Revision
96999
Author
[email protected]
Date
2011-10-07 19:22:21 -0700 (Fri, 07 Oct 2011)

Log Message

Make isXMLMIMEType regex use TLS
https://bugs.webkit.org/show_bug.cgi?id=69665

Reviewed by Adam Barth.

Source/WebCore:

Test: fast/workers/worker-multi-startup.html

* dom/DOMImplementation.cpp:
(WebCore::XMLMIMETypeRegExp::XMLMIMETypeRegExp):
(WebCore::XMLMIMETypeRegExp::~XMLMIMETypeRegExp):
(WebCore::XMLMIMETypeRegExp::isXMLMIMEType):
(WebCore::DOMImplementation::isXMLMIMEType):
* dom/DOMImplementation.h:
* platform/ThreadGlobalData.cpp:
(WebCore::ThreadGlobalData::ThreadGlobalData):
(WebCore::ThreadGlobalData::destroy):
* platform/ThreadGlobalData.h:
(WebCore::ThreadGlobalData::xmlTypeRegExp):

LayoutTests:

* fast/workers/worker-multi-startup-expected.txt: Added.
* fast/workers/worker-multi-startup.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (96998 => 96999)


--- trunk/LayoutTests/ChangeLog	2011-10-08 02:08:11 UTC (rev 96998)
+++ trunk/LayoutTests/ChangeLog	2011-10-08 02:22:21 UTC (rev 96999)
@@ -1,3 +1,13 @@
+2011-10-07  Justin Schuh  <[email protected]>
+
+        Make isXMLMIMEType regex use TLS
+        https://bugs.webkit.org/show_bug.cgi?id=69665
+
+        Reviewed by Adam Barth.
+
+        * fast/workers/worker-multi-startup-expected.txt: Added.
+        * fast/workers/worker-multi-startup.html: Added.
+
 2011-10-07  James Simonsen  <[email protected]>
 
         [Chromium] Allow failure of another Mac Skia test.

Added: trunk/LayoutTests/fast/workers/worker-multi-startup-expected.txt (0 => 96999)


--- trunk/LayoutTests/fast/workers/worker-multi-startup-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/workers/worker-multi-startup-expected.txt	2011-10-08 02:22:21 UTC (rev 96999)
@@ -0,0 +1,34 @@
+Test that multipe workers can be spawned simultaneously. Should print "DONE" when done.
+
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+SUCCESS: Worker context initialized
+DONE
+

Added: trunk/LayoutTests/fast/workers/worker-multi-startup.html (0 => 96999)


--- trunk/LayoutTests/fast/workers/worker-multi-startup.html	                        (rev 0)
+++ trunk/LayoutTests/fast/workers/worker-multi-startup.html	2011-10-08 02:22:21 UTC (rev 96999)
@@ -0,0 +1,31 @@
+<head>
+<p>Test that multipe workers can be spawned simultaneously.
+Should print "DONE" when done.</p>
+<div id=result></div>
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+
+function log(message)
+{
+    document.getElementById("result").innerHTML += message + "<br>";
+}
+
+totalWorkers = 30;
+replies = 0;
+
+for (var i = 0; i < totalWorkers; i++) {
+    var worker = new Worker('resources/worker-init.js');
+    worker._onmessage_ = function(evt) {
+        log(evt.data);
+        if (++replies < totalWorkers)
+            return;
+        log("DONE");
+        if (window.layoutTestController)
+            layoutTestController.notifyDone();
+    }
+}
+</script>
+</body>

Modified: trunk/Source/WebCore/ChangeLog (96998 => 96999)


--- trunk/Source/WebCore/ChangeLog	2011-10-08 02:08:11 UTC (rev 96998)
+++ trunk/Source/WebCore/ChangeLog	2011-10-08 02:22:21 UTC (rev 96999)
@@ -1,3 +1,24 @@
+2011-10-07  Justin Schuh  <[email protected]>
+
+        Make isXMLMIMEType regex use TLS
+        https://bugs.webkit.org/show_bug.cgi?id=69665
+
+        Reviewed by Adam Barth.
+
+        Test: fast/workers/worker-multi-startup.html
+
+        * dom/DOMImplementation.cpp:
+        (WebCore::XMLMIMETypeRegExp::XMLMIMETypeRegExp):
+        (WebCore::XMLMIMETypeRegExp::~XMLMIMETypeRegExp):
+        (WebCore::XMLMIMETypeRegExp::isXMLMIMEType):
+        (WebCore::DOMImplementation::isXMLMIMEType):
+        * dom/DOMImplementation.h:
+        * platform/ThreadGlobalData.cpp:
+        (WebCore::ThreadGlobalData::ThreadGlobalData):
+        (WebCore::ThreadGlobalData::destroy):
+        * platform/ThreadGlobalData.h:
+        (WebCore::ThreadGlobalData::xmlTypeRegExp):
+
 2011-10-07  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r96847.

Modified: trunk/Source/WebCore/dom/DOMImplementation.cpp (96998 => 96999)


--- trunk/Source/WebCore/dom/DOMImplementation.cpp	2011-10-08 02:08:11 UTC (rev 96998)
+++ trunk/Source/WebCore/dom/DOMImplementation.cpp	2011-10-08 02:22:21 UTC (rev 96999)
@@ -48,6 +48,7 @@
 #include "RegularExpression.h"
 #include "Settings.h"
 #include "TextDocument.h"
+#include "ThreadGlobalData.h"
 #include "XMLNames.h"
 #include <wtf/StdLibExtras.h>
 
@@ -264,13 +265,27 @@
     return sheet.release();
 }
 
+static const char* const validXMLMIMETypeChars = "[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]"; // per RFCs: 3023, 2045
+
+XMLMIMETypeRegExp::XMLMIMETypeRegExp() :
+    m_regex(adoptPtr(new RegularExpression(WTF::makeString("^", validXMLMIMETypeChars, "+/", validXMLMIMETypeChars, "+\\+xml$"), TextCaseSensitive)))
+{
+}
+
+XMLMIMETypeRegExp::~XMLMIMETypeRegExp()
+{
+}
+
+bool XMLMIMETypeRegExp::isXMLMIMEType(const String& mimeType)
+{
+    return m_regex->match(mimeType) > -1;
+}
+
 bool DOMImplementation::isXMLMIMEType(const String& mimeType)
 {
     if (mimeType == "text/xml" || mimeType == "application/xml" || mimeType == "text/xsl")
         return true;
-    static const char* const validChars = "[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]"; // per RFCs: 3023, 2045
-    DEFINE_STATIC_LOCAL(RegularExpression, xmlTypeRegExp, (String("^") + validChars + "+/" + validChars + "+\\+xml$", TextCaseSensitive));
-    return xmlTypeRegExp.match(mimeType) > -1;
+    return threadGlobalData().xmlTypeRegExp().isXMLMIMEType(mimeType);
 }
 
 bool DOMImplementation::isTextMIMEType(const String& mimeType)

Modified: trunk/Source/WebCore/dom/DOMImplementation.h (96998 => 96999)


--- trunk/Source/WebCore/dom/DOMImplementation.h	2011-10-08 02:08:11 UTC (rev 96998)
+++ trunk/Source/WebCore/dom/DOMImplementation.h	2011-10-08 02:22:21 UTC (rev 96999)
@@ -37,6 +37,7 @@
 class Frame;
 class HTMLDocument;
 class KURL;
+class RegularExpression;
 
 typedef int ExceptionCode;
 
@@ -73,6 +74,18 @@
     Document* m_document;
 };
 
+class XMLMIMETypeRegExp {
+public:
+    XMLMIMETypeRegExp();
+    ~XMLMIMETypeRegExp();
+    bool isXMLMIMEType(const String& mimeType);
+
+    WTF_MAKE_NONCOPYABLE(XMLMIMETypeRegExp);
+private:
+    OwnPtr<RegularExpression> m_regex;
+};
+
+
 } // namespace WebCore
 
 #endif

Modified: trunk/Source/WebCore/platform/ThreadGlobalData.cpp (96998 => 96999)


--- trunk/Source/WebCore/platform/ThreadGlobalData.cpp	2011-10-08 02:08:11 UTC (rev 96998)
+++ trunk/Source/WebCore/platform/ThreadGlobalData.cpp	2011-10-08 02:22:21 UTC (rev 96999)
@@ -27,6 +27,7 @@
 #include "config.h"
 #include "ThreadGlobalData.h"
 
+#include "DOMImplementation.h"
 #include "EventNames.h"
 #include "ThreadTimers.h"
 #include <wtf/MainThread.h>
@@ -59,6 +60,7 @@
 ThreadGlobalData::ThreadGlobalData()
     : m_eventNames(new EventNames)
     , m_threadTimers(new ThreadTimers)
+    , m_xmlTypeRegExp(new XMLMIMETypeRegExp)
 #ifndef NDEBUG
     , m_isMainThread(isMainThread())
 #endif
@@ -98,6 +100,8 @@
     m_eventNames = 0;
     delete m_threadTimers;
     m_threadTimers = 0;
+    delete m_xmlTypeRegExp;
+    m_xmlTypeRegExp = 0;
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/ThreadGlobalData.h (96998 => 96999)


--- trunk/Source/WebCore/platform/ThreadGlobalData.h	2011-10-08 02:08:11 UTC (rev 96998)
+++ trunk/Source/WebCore/platform/ThreadGlobalData.h	2011-10-08 02:22:21 UTC (rev 96999)
@@ -43,6 +43,7 @@
 
     class EventNames;
     class ThreadTimers;
+    class XMLMIMETypeRegExp;
 
     struct ICUConverterWrapper;
     struct TECConverterWrapper;
@@ -56,6 +57,7 @@
 
         EventNames& eventNames() { return *m_eventNames; }
         ThreadTimers& threadTimers() { return *m_threadTimers; }
+        XMLMIMETypeRegExp& xmlTypeRegExp() { return *m_xmlTypeRegExp; }
 
 #if USE(ICU_UNICODE)
         ICUConverterWrapper& cachedConverterICU() { return *m_cachedConverterICU; }
@@ -68,6 +70,7 @@
     private:
         EventNames* m_eventNames;
         ThreadTimers* m_threadTimers;
+        XMLMIMETypeRegExp* m_xmlTypeRegExp;
 
 #ifndef NDEBUG
         bool m_isMainThread;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to