Modified: trunk/Source/WebCore/ChangeLog (163905 => 163906)
--- trunk/Source/WebCore/ChangeLog 2014-02-11 21:28:55 UTC (rev 163905)
+++ trunk/Source/WebCore/ChangeLog 2014-02-11 21:36:06 UTC (rev 163906)
@@ -1,3 +1,25 @@
+2014-01-24 Jer Noble <[email protected]>
+
+ Run UserAgentScripts through jsmin rather than the css preprocessor
+ https://bugs.webkit.org/show_bug.cgi?id=127559
+
+ Reviewed by Tim Horton.
+
+ User Agent _javascript_ files were being run through the c++ preprocessor to strip out
+ comments (and presumably to allow #if ENABLE macros, though that feature is entirely
+ unused). This had the side effect of removing important whitespace, namely newlines where
+ there would normally be an implicit semicolon.
+
+ Instead, .js files will now be run through the jsmin minifier, used by the inspector.
+ Jsmin will also strip comments and whitespace, but in a syntactically aware way which will
+ keep newlines when their presence adds an implied semicolon.
+
+ * DerivedSources.make:
+ * Scripts/make-js-file-arrays.py: Added.
+ (stringifyCodepoint):
+ (chunk):
+ (main):
+
2014-02-11 Andy Estes <[email protected]>
[Mac] connection:willStopBufferingData: no longer exists in NSURLConnectionDelegate
Modified: trunk/Source/WebCore/DerivedSources.make (163905 => 163906)
--- trunk/Source/WebCore/DerivedSources.make 2014-02-11 21:28:55 UTC (rev 163905)
+++ trunk/Source/WebCore/DerivedSources.make 2014-02-11 21:36:06 UTC (rev 163906)
@@ -892,8 +892,8 @@
USER_AGENT_SCRIPTS := $(USER_AGENT_SCRIPTS) $(WebCore)/Modules/plugins/QuickTimePluginReplacement.js
endif
-UserAgentScripts.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(USER_AGENT_SCRIPTS) $(PLATFORM_FEATURE_DEFINES)
- perl -I$(WebCore)/bindings/scripts $< --defines "$(FEATURE_DEFINES)" $@ UserAgentScriptsData.cpp $(USER_AGENT_SCRIPTS)
+UserAgentScripts.h : Scripts/make-js-file-arrays.py $(USER_AGENT_SCRIPTS)
+ PYTHONPATH=$(InspectorScripts) python $< $@ UserAgentScriptsData.cpp $(USER_AGENT_SCRIPTS)
# --------
Added: trunk/Source/WebCore/Scripts/make-js-file-arrays.py (0 => 163906)
--- trunk/Source/WebCore/Scripts/make-js-file-arrays.py (rev 0)
+++ trunk/Source/WebCore/Scripts/make-js-file-arrays.py 2014-02-11 21:36:06 UTC (rev 163906)
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+# Copyright (C) 2014 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import io
+import os
+from optparse import OptionParser
+from StringIO import StringIO
+from jsmin import _javascript_Minify
+
+
+def stringifyCodepoint(code):
+ if code < 128:
+ return '{0:d}'.format(code)
+ else:
+ return "'\\x{0:02x}'".format(code)
+
+
+def chunk(list, chunkSize):
+ for i in xrange(0, len(list), chunkSize):
+ yield list[i:i + chunkSize]
+
+
+def main():
+ parser = OptionParser(usage="usage: %prog [--no-minify] header source [input [input...]]")
+ parser.add_option('--no-minify', action='', help='Do not run the input files through jsmin')
+ (options, arguments) = parser.parse_args()
+ if len(arguments) < 3:
+ print 'Error: must provide at least 3 arguments'
+ parser.print_usage()
+ exit(-1)
+
+ headerPath = arguments[0]
+ sourcePath = arguments[1]
+ inputPaths = arguments[2:]
+
+ headerFile = open(headerPath, 'w')
+ print >> headerFile, 'namespace WebCore {'
+
+ sourceFile = open(sourcePath, 'w')
+ print >> sourceFile, '#include "{0:s}"'.format(os.path.basename(headerPath))
+ print >> sourceFile, 'namespace WebCore {'
+
+ jsm = _javascript_Minify()
+
+ for inputFileName in inputPaths:
+ inputStream = io.FileIO(inputFileName)
+ outputStream = StringIO()
+
+ if not options.no_minify:
+ jsm.minify(inputStream, outputStream)
+ characters = outputStream.getvalue()
+ else:
+ characters = inputStream.read()
+
+ size = len(characters)
+ variableName = os.path.splitext(os.path.basename(inputFileName))[0]
+
+ print >> headerFile, 'extern const char {0:s}_javascript_[{1:d}];'.format(variableName, size)
+ print >> sourceFile, 'const char {0:s}_javascript_[{1:d}] = {{'.format(variableName, size)
+
+ codepoints = map(ord, characters)
+ for codepointChunk in chunk(codepoints, 16):
+ print >> sourceFile, ' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk)))
+
+ print >> sourceFile, '};'
+
+ print >> headerFile, '}'
+ print >> sourceFile, '}'
+
+if __name__ == '__main__':
+ main()
Property changes on: trunk/Source/WebCore/Scripts/make-js-file-arrays.py
___________________________________________________________________