summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2020-04-18 15:27:00 -0700
committerMartin Jansa <Martin.Jansa@gmail.com>2020-04-21 16:49:36 +0200
commit05b3e648ec3508f4f73eeb094bdb82440519c56c (patch)
treeee99fb81f870a22e5d16181f71622687edefb7e3
parentabed512f82ee96c37d98fdd3011f32e6456f03bf (diff)
downloadmeta-qt5-05b3e648ec3508f4f73eeb094bdb82440519c56c.tar.gz
qtwebkit: Switch to 5.212 branch
Drop py3 support patch as its no longer needed on this branch This is more uptodate branch and has needed fixes to work with Qt 5.15 Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch3845
-rw-r--r--recipes-qt/qt5/qtwebkit_git.bb5
2 files changed, 2 insertions, 3848 deletions
diff --git a/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch b/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch
deleted file mode 100644
index 5c925cd5..00000000
--- a/recipes-qt/qt5/qtwebkit/0001-Port-build-to-python3.patch
+++ /dev/null
@@ -1,3845 +0,0 @@
1From a8bbd89d7a1d3e8ca381c025bc8dd1275c59356a Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
3Date: Tue, 4 Feb 2020 22:41:00 +0100
4Subject: [PATCH] Port build to python3
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Procdure:
10
11* send all py-files through 2to3
12* find inspiration at / steel from (jsmin.py) webkitgtk
13* manual fixes e.g rename builtins to mybuiltins - 'import builtins' does
14 not load what's defined here
15
16Upstream-Status: Pending
17
18Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
19---
20 Source/JavaScriptCore/CMakeLists.txt | 18 +--
21 Source/JavaScriptCore/DerivedSources.make | 18 +--
22 .../JavaScriptCore/KeywordLookupGenerator.py | 28 ++--
23 .../Scripts/builtins/builtins.py | 11 --
24 .../generate-combined-inspector-json.py | 4 +-
25 .../Scripts/generate-js-builtins.py | 12 +-
26 ...line-and-minify-stylesheets-and-scripts.py | 2 +-
27 Source/JavaScriptCore/Scripts/jsmin.py | 23 +--
28 .../Scripts/make-js-file-arrays.py | 59 +++++---
29 .../{builtins => mybuiltins}/__init__.py | 2 +-
30 .../Scripts/mybuiltins/mybuiltins.py | 11 ++
31 .../mybuiltins_generate_combined_header.py} | 4 +-
32 ...ltins_generate_combined_implementation.py} | 6 +-
33 .../mybuiltins_generate_separate_header.py} | 6 +-
34 ...ltins_generate_separate_implementation.py} | 6 +-
35 .../mybuiltins_generator.py} | 4 +-
36 .../mybuiltins_model.py} | 7 +-
37 .../mybuiltins_templates.py} | 0
38 .../disassembler/udis86/ud_itab.py | 10 +-
39 .../disassembler/udis86/ud_opcode.py | 12 +-
40 Source/JavaScriptCore/generate-bytecode-files | 16 +--
41 .../inspector/scripts/codegen/__init__.py | 42 +++---
42 .../scripts/codegen/cpp_generator.py | 20 +--
43 ...cpp_alternate_backend_dispatcher_header.py | 8 +-
44 .../generate_cpp_backend_dispatcher_header.py | 16 +--
45 ...e_cpp_backend_dispatcher_implementation.py | 12 +-
46 ...generate_cpp_frontend_dispatcher_header.py | 12 +-
47 ..._cpp_frontend_dispatcher_implementation.py | 12 +-
48 .../generate_cpp_protocol_types_header.py | 38 ++---
49 ...erate_cpp_protocol_types_implementation.py | 20 +--
50 .../codegen/generate_js_backend_commands.py | 14 +-
51 ...generate_objc_backend_dispatcher_header.py | 14 +-
52 ..._objc_backend_dispatcher_implementation.py | 18 +--
53 .../generate_objc_configuration_header.py | 6 +-
54 ...erate_objc_configuration_implementation.py | 6 +-
55 .../generate_objc_conversion_helpers.py | 12 +-
56 ...objc_frontend_dispatcher_implementation.py | 16 +--
57 .../scripts/codegen/generate_objc_header.py | 28 ++--
58 .../codegen/generate_objc_internal_header.py | 10 +-
59 ...rate_objc_protocol_types_implementation.py | 16 +--
60 .../inspector/scripts/codegen/generator.py | 12 +-
61 .../inspector/scripts/codegen/models.py | 2 +-
62 .../scripts/codegen/objc_generator.py | 74 +++++-----
63 .../generate-inspector-protocol-bindings.py | 2 +-
64 .../scripts/CodeGeneratorReplayInputs.py | 26 ++--
65 .../ANGLE/generate_winrt_projects.py | 4 +-
66 .../ANGLE/src/libANGLE/Float16ToFloat32.py | 26 ++--
67 .../renderer/generate_new_renderer.py | 2 +-
68 .../gtest/scripts/fuse_gtest_files.py | 12 +-
69 .../gtest/scripts/gen_gtest_pred_impl.py | 12 +-
70 Source/ThirdParty/gtest/scripts/pump.py | 30 ++--
71 Source/ThirdParty/gtest/scripts/upload.py | 134 +++++++++---------
72 .../test/gtest_break_on_failure_unittest.py | 2 +-
73 .../ThirdParty/gtest/test/gtest_color_test.py | 66 ++++-----
74 .../gtest/test/gtest_env_var_test.py | 4 +-
75 .../gtest/test/gtest_filter_unittest.py | 14 +-
76 .../ThirdParty/gtest/test/gtest_help_test.py | 16 +--
77 .../gtest/test/gtest_list_tests_unittest.py | 4 +-
78 .../gtest/test/gtest_shuffle_test.py | 40 +++---
79 .../ThirdParty/gtest/test/gtest_test_utils.py | 2 +-
80 .../gtest/test/gtest_throw_on_failure_test.py | 4 +-
81 .../gtest/test/gtest_uninitialized_test.py | 4 +-
82 .../gtest/test/gtest_xml_outfiles_test.py | 6 +-
83 .../gtest/test/gtest_xml_output_unittest.py | 22 +--
84 .../gtest/test/gtest_xml_test_utils.py | 26 ++--
85 .../ThirdParty/gtest/test/run_tests_util.py | 26 ++--
86 .../gtest/test/run_tests_util_test.py | 16 +--
87 .../gtest/xcode/Scripts/versiongenerate.py | 2 +-
88 Source/WebCore/AVFoundationSupport.py | 14 +-
89 Source/WebCore/CMakeLists.txt | 16 +--
90 Source/WebCore/DerivedSources.make | 16 +--
91 .../network/create-http-header-name-table | 2 +-
92 Source/WebInspectorUI/Scripts/jsmin.py | 23 +--
93 .../Scripts/generate-message-receiver.py | 2 +-
94 .../Scripts/generate-messages-header.py | 2 +-
95 .../Scripts/webkit/messages_unittest.py | 46 +++---
96 Source/cmake/WebKitCommon.cmake | 3 -
97 Tools/jhbuild/jhbuildutils.py | 10 +-
98 78 files changed, 665 insertions(+), 638 deletions(-)
99 delete mode 100644 Source/JavaScriptCore/Scripts/builtins/builtins.py
100 rename Source/JavaScriptCore/Scripts/{builtins => mybuiltins}/__init__.py (72%)
101 create mode 100644 Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py
102 rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_combined_header.py => mybuiltins/mybuiltins_generate_combined_header.py} (98%)
103 rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_combined_implementation.py => mybuiltins/mybuiltins_generate_combined_implementation.py} (95%)
104 rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_separate_header.py => mybuiltins/mybuiltins_generate_separate_header.py} (97%)
105 rename Source/JavaScriptCore/Scripts/{builtins/builtins_generate_separate_implementation.py => mybuiltins/mybuiltins_generate_separate_implementation.py} (95%)
106 rename Source/JavaScriptCore/Scripts/{builtins/builtins_generator.py => mybuiltins/mybuiltins_generator.py} (97%)
107 rename Source/JavaScriptCore/Scripts/{builtins/builtins_model.py => mybuiltins/mybuiltins_model.py} (97%)
108 rename Source/JavaScriptCore/Scripts/{builtins/builtins_templates.py => mybuiltins/mybuiltins_templates.py} (100%)
109
110diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt
111index 937b3ed00..a4b5fd432 100644
112--- a/Source/JavaScriptCore/CMakeLists.txt
113+++ b/Source/JavaScriptCore/CMakeLists.txt
114@@ -883,7 +883,7 @@ set(JavaScriptCore_SCRIPTS_SOURCES_DIR "${JAVASCRIPTCORE_DIR}/Scripts")
115 set(JavaScriptCore_SCRIPTS_SOURCES_PATHS
116 ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/*.pl
117 ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/*.py
118- ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/builtins/builtins*.py
119+ ${JavaScriptCore_SCRIPTS_SOURCES_DIR}/mybuiltins/mybuiltins*.py
120 )
121
122 # Force JavaScriptCore to run scripts from the same staging path as WebCore.
123@@ -1174,14 +1174,14 @@ add_custom_command(
124 # JSCBuiltins
125
126 set(BUILTINS_GENERATOR_SCRIPTS
127- ${JavaScriptCore_SCRIPTS_DIR}/builtins.py
128- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generator.py
129- ${JavaScriptCore_SCRIPTS_DIR}/builtins_model.py
130- ${JavaScriptCore_SCRIPTS_DIR}/builtins_templates.py
131- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_header.py
132- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_implementation.py
133- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_header.py
134- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_implementation.py
135+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins.py
136+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generator.py
137+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_model.py
138+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_templates.py
139+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_header.py
140+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_implementation.py
141+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_header.py
142+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_implementation.py
143 ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py
144 ${JavaScriptCore_SCRIPTS_DIR}/lazywriter.py
145 )
146diff --git a/Source/JavaScriptCore/DerivedSources.make b/Source/JavaScriptCore/DerivedSources.make
147index d5a3fc159..7ef28eff3 100644
148--- a/Source/JavaScriptCore/DerivedSources.make
149+++ b/Source/JavaScriptCore/DerivedSources.make
150@@ -66,15 +66,15 @@ all : \
151 # JavaScript builtins.
152
153 BUILTINS_GENERATOR_SCRIPTS = \
154- $(JavaScriptCore_SCRIPTS_DIR)/builtins/__init__.py \
155- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins.py \
156- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generator.py \
157- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_model.py \
158- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_templates.py \
159- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_combined_header.py \
160- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_combined_implementation.py \
161- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_separate_header.py \
162- $(JavaScriptCore_SCRIPTS_DIR)/builtins/builtins_generate_separate_implementation.py \
163+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/__init__.py \
164+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins.py \
165+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generator.py \
166+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_model.py \
167+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_templates.py \
168+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_combined_header.py \
169+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_combined_implementation.py \
170+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_separate_header.py \
171+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins/mybuiltins_generate_separate_implementation.py \
172 $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py \
173 $(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py \
174 #
175diff --git a/Source/JavaScriptCore/KeywordLookupGenerator.py b/Source/JavaScriptCore/KeywordLookupGenerator.py
176index d13daba61..938d5d6e7 100644
177--- a/Source/JavaScriptCore/KeywordLookupGenerator.py
178+++ b/Source/JavaScriptCore/KeywordLookupGenerator.py
179@@ -110,7 +110,7 @@ class Trie:
180
181 def coalesce(self):
182 keys = {}
183- for k, v in self.keys.items():
184+ for k, v in list(self.keys.items()):
185 t = v.coalesce()
186 keys[t.prefix] = t
187 self.keys = keys
188@@ -119,7 +119,7 @@ class Trie:
189 if len(self.keys) != 1:
190 return self
191 # Python 3: for() loop for compatibility. Use next() when Python 2.6 is the baseline.
192- for (prefix, suffix) in self.keys.items():
193+ for (prefix, suffix) in list(self.keys.items()):
194 res = Trie(self.prefix + prefix)
195 res.value = suffix.value
196 res.keys = suffix.keys
197@@ -131,22 +131,22 @@ class Trie:
198 if self.fullPrefix in keyWordWeights:
199 weight = weight + keyWordWeights[self.fullPrefix]
200 self.selfWeight = weight
201- for trie in self.keys.values():
202+ for trie in list(self.keys.values()):
203 trie.fillOut(self.fullPrefix)
204 weight = weight + trie.weight
205- self.keys = [(trie.prefix, trie) for trie in sorted(self.keys.values(), key=operator.attrgetter('weight'), reverse=True)]
206+ self.keys = [(trie.prefix, trie) for trie in sorted(list(self.keys.values()), key=operator.attrgetter('weight'), reverse=True)]
207 self.weight = weight
208
209 def printSubTreeAsC(self, typeName, indent):
210 str = makePadding(indent)
211
212 if self.value != None:
213- print(str + "if (!isIdentPartIncludingEscape(code+%d, m_codeEnd)) {" % (len(self.fullPrefix)))
214- print(str + " internalShift<%d>();" % len(self.fullPrefix))
215- print(str + " if (shouldCreateIdentifier)")
216- print(str + (" data->ident = &m_vm->propertyNames->%sKeyword;" % self.fullPrefix))
217- print(str + " return " + self.value + ";")
218- print(str + "}")
219+ print((str + "if (!isIdentPartIncludingEscape(code+%d, m_codeEnd)) {" % (len(self.fullPrefix))))
220+ print((str + " internalShift<%d>();" % len(self.fullPrefix)))
221+ print((str + " if (shouldCreateIdentifier)"))
222+ print((str + (" data->ident = &m_vm->propertyNames->%sKeyword;" % self.fullPrefix)))
223+ print((str + " return " + self.value + ";"))
224+ print((str + "}"))
225 rootIndex = len(self.fullPrefix)
226 itemCount = 0
227 for k, trie in self.keys:
228@@ -163,15 +163,15 @@ class Trie:
229 base = "code + %d" % baseIndex
230 comparison = ("COMPARE_%d%sS(%s, " % (len(test), typeName, base)) + ", ".join(test) + ")"
231 if itemCount == 0:
232- print(str + "if (" + comparison + ") {")
233+ print((str + "if (" + comparison + ") {"))
234 else:
235- print(str + "} else if (" + comparison + ") {")
236+ print((str + "} else if (" + comparison + ") {"))
237
238 trie.printSubTreeAsC(typeName, indent + 4)
239 itemCount = itemCount + 1
240
241 if itemCount == len(self.keys):
242- print(str + "}")
243+ print((str + "}"))
244
245 def maxLength(self):
246 max = len(self.fullPrefix)
247@@ -187,7 +187,7 @@ class Trie:
248 print("static ALWAYS_INLINE bool isIdentPartIncludingEscape(const LChar* code, const LChar* codeEnd);")
249 print("static ALWAYS_INLINE bool isIdentPartIncludingEscape(const UChar* code, const UChar* codeEnd);")
250 # max length + 1 so we don't need to do any bounds checking at all
251- print("static const int maxTokenLength = %d;" % (self.maxLength() + 1))
252+ print(("static const int maxTokenLength = %d;" % (self.maxLength() + 1)))
253 print("")
254 print("template <>")
255 print("template <bool shouldCreateIdentifier> ALWAYS_INLINE JSTokenType Lexer<UChar>::parseKeyword(JSTokenData* data)")
256diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins.py b/Source/JavaScriptCore/Scripts/builtins/builtins.py
257deleted file mode 100644
258index 9349eeef6..000000000
259--- a/Source/JavaScriptCore/Scripts/builtins/builtins.py
260+++ /dev/null
261@@ -1,11 +0,0 @@
262-# This file is used to simulate the builtins/ directory when generate-js-builtins.py
263-# is run from JavaScriptCore framework's private headers directory, which is flattened.
264-
265-from builtins_model import *
266-from builtins_templates import *
267-
268-from builtins_generator import *
269-from builtins_generate_combined_header import *
270-from builtins_generate_combined_implementation import *
271-from builtins_generate_separate_header import *
272-from builtins_generate_separate_implementation import *
273diff --git a/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py b/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py
274index 53660318d..6b0e95dc9 100755
275--- a/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py
276+++ b/Source/JavaScriptCore/Scripts/generate-combined-inspector-json.py
277@@ -29,7 +29,7 @@ import os
278 import sys
279
280 if len(sys.argv) < 2:
281- print("usage: %s [json files or directory of json files ...]" % os.path.basename(sys.argv[0]))
282+ print(("usage: %s [json files or directory of json files ...]" % os.path.basename(sys.argv[0])))
283 sys.exit(1)
284
285 files = []
286@@ -64,6 +64,6 @@ for file in files:
287 sys.stderr.write("File \"%s\" does not contain valid JSON:\n" % file)
288 raise
289
290- print(string.rstrip())
291+ print((string.rstrip()))
292 print("]}")
293
294diff --git a/Source/JavaScriptCore/Scripts/generate-js-builtins.py b/Source/JavaScriptCore/Scripts/generate-js-builtins.py
295index 554a72ccc..3dce94c5c 100644
296--- a/Source/JavaScriptCore/Scripts/generate-js-builtins.py
297+++ b/Source/JavaScriptCore/Scripts/generate-js-builtins.py
298@@ -25,7 +25,7 @@
299 # THE POSSIBILITY OF SUCH DAMAGE.
300
301 # This script generates C++ bindings for JavaScript builtins.
302-# Generators for individual files are located in the builtins/ directory.
303+# Generators for individual files are located in the mybuiltins/ directory.
304
305 import fnmatch
306 import logging
307@@ -37,8 +37,8 @@ log = logging.getLogger('global')
308
309 from lazywriter import LazyFileWriter
310
311-import builtins
312-from builtins import *
313+#import mybuiltins
314+from mybuiltins import *
315
316
317 def generate_bindings_for_builtins_files(builtins_files=[],
318@@ -118,7 +118,7 @@ if __name__ == '__main__':
319 cli_parser.add_option("-t", "--test", action="store_true", help="Enable test mode.")
320
321 arg_options, arg_values = cli_parser.parse_args()
322- if len(arg_values) is 0 and not arg_options.input_directory:
323+ if len(arg_values) == 0 and not arg_options.input_directory:
324 raise ParseException("At least one input file or directory expected.")
325
326 if not arg_options.output_directory:
327@@ -132,7 +132,7 @@ if __name__ == '__main__':
328 for filepath in os.listdir(arg_options.input_directory):
329 input_filepaths.append(os.path.join(arg_options.input_directory, filepath))
330
331- input_filepaths = filter(lambda name: fnmatch.fnmatch(name, '*.js'), input_filepaths)
332+ input_filepaths = [name for name in input_filepaths if fnmatch.fnmatch(name, '*.js')]
333
334 options = {
335 'output_path': arg_options.output_directory,
336@@ -144,7 +144,7 @@ if __name__ == '__main__':
337
338 log.debug("Generating code for builtins.")
339 log.debug("Parsed options:")
340- for option, value in options.items():
341+ for option, value in list(options.items()):
342 log.debug(" %s: %s" % (option, value))
343 log.debug("")
344 log.debug("Input files:")
345diff --git a/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py b/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py
346index 89200c84e..a4a26c2b4 100755
347--- a/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py
348+++ b/Source/JavaScriptCore/Scripts/inline-and-minify-stylesheets-and-scripts.py
349@@ -37,7 +37,7 @@ import sys
350 def main(argv):
351
352 if len(argv) < 2:
353- print('usage: %s inputFile outputFile' % argv[0])
354+ print(('usage: %s inputFile outputFile' % argv[0]))
355 return 1
356
357 inputFileName = argv[1]
358diff --git a/Source/JavaScriptCore/Scripts/jsmin.py b/Source/JavaScriptCore/Scripts/jsmin.py
359index 372418b4d..2f9fddfce 100644
360--- a/Source/JavaScriptCore/Scripts/jsmin.py
361+++ b/Source/JavaScriptCore/Scripts/jsmin.py
362@@ -23,17 +23,20 @@
363 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
364 # THE SOFTWARE.
365
366+# stolen from webkitgtk 2.26.2
367
368 import sys
369 is_3 = sys.version_info >= (3, 0)
370 if is_3:
371 import io
372+ python_text_type = str
373 else:
374 import StringIO
375 try:
376 import cStringIO
377 except ImportError:
378 cStringIO = None
379+ python_text_type = basestring
380
381
382 __all__ = ['jsmin', 'JavascriptMinify']
383@@ -79,14 +82,18 @@ class JavascriptMinify(object):
384 def write(char):
385 # all of this is to support literal regular expressions.
386 # sigh
387- if char in 'return':
388+ if str(char) in 'return':
389 self.return_buf += char
390 self.is_return = self.return_buf == 'return'
391 self.outs.write(char)
392 if self.is_return:
393 self.return_buf = ''
394
395- read = self.ins.read
396+ def read(n):
397+ char = self.ins.read(n)
398+ if not isinstance(char, python_text_type):
399+ raise ValueError("ERROR: The script jsmin.py can only handle text input, but it received input of type %s" % type(char))
400+ return char
401
402 space_strings = "abcdefghijklmnopqrstuvwxyz"\
403 "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$\\"
404@@ -118,8 +125,8 @@ class JavascriptMinify(object):
405 write(previous)
406 elif not previous:
407 return
408- elif previous >= '!':
409- if previous in "'\"":
410+ elif str(previous) >= "!":
411+ if str(previous) in "'\"":
412 in_quote = previous
413 write(previous)
414 previous_non_space = previous
415@@ -166,7 +173,7 @@ class JavascriptMinify(object):
416 if numslashes % 2 == 0:
417 in_quote = ''
418 write(''.join(quote_buf))
419- elif next1 in '\r\n':
420+ elif str(next1) in '\r\n':
421 if previous_non_space in newlineend_strings \
422 or previous_non_space > '~':
423 while 1:
424@@ -179,7 +186,7 @@ class JavascriptMinify(object):
425 or next2 > '~' or next2 == '/':
426 do_newline = True
427 break
428- elif next1 < '!' and not in_re:
429+ elif str(next1) < '!' and not in_re:
430 if (previous_non_space in space_strings \
431 or previous_non_space > '~') \
432 and (next2 in space_strings or next2 > '~'):
433@@ -217,14 +224,14 @@ class JavascriptMinify(object):
434 do_newline = False
435
436 write(next1)
437- if not in_re and next1 in "'\"`":
438+ if not in_re and str(next1) in "'\"`":
439 in_quote = next1
440 quote_buf = []
441
442 previous = next1
443 next1 = next2
444
445- if previous >= '!':
446+ if str(previous) >= '!':
447 previous_non_space = previous
448
449 if previous == '\\':
450diff --git a/Source/JavaScriptCore/Scripts/make-js-file-arrays.py b/Source/JavaScriptCore/Scripts/make-js-file-arrays.py
451index 65056646a..4bb2bfe66 100755
452--- a/Source/JavaScriptCore/Scripts/make-js-file-arrays.py
453+++ b/Source/JavaScriptCore/Scripts/make-js-file-arrays.py
454@@ -21,11 +21,15 @@
455 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
456 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
457
458+# stolen from webkitgtk 2.26.2
459+
460+from __future__ import print_function
461 import io
462 import os
463 from optparse import OptionParser
464-from StringIO import StringIO
465-from jsmin import JavascriptMinify
466+import sys
467+from jsmin import jsmin
468+is_3 = sys.version_info >= (3, 0)
469
470
471 def stringifyCodepoint(code):
472@@ -36,7 +40,7 @@ def stringifyCodepoint(code):
473
474
475 def chunk(list, chunkSize):
476- for i in xrange(0, len(list), chunkSize):
477+ for i in range(0, len(list), chunkSize):
478 yield list[i:i + chunkSize]
479
480
481@@ -46,11 +50,11 @@ def main():
482 parser.add_option('-n', '--namespace', help='Namespace to use')
483 (options, arguments) = parser.parse_args()
484 if not options.namespace:
485- print 'Error: must provide a namespace'
486+ print('Error: must provide a namespace')
487 parser.print_usage()
488 exit(-1)
489 if len(arguments) < 3:
490- print 'Error: must provide at least 3 arguments'
491+ print('Error: must provide at least 3 arguments')
492 parser.print_usage()
493 exit(-1)
494
495@@ -60,38 +64,47 @@ def main():
496 inputPaths = arguments[2:]
497
498 headerFile = open(headerPath, 'w')
499- print >> headerFile, 'namespace {0:s} {{'.format(namespace)
500+ print('namespace {0:s} {{'.format(namespace), file=headerFile)
501
502 sourceFile = open(sourcePath, 'w')
503- print >> sourceFile, '#include "{0:s}"'.format(os.path.basename(headerPath))
504- print >> sourceFile, 'namespace {0:s} {{'.format(namespace)
505-
506- jsm = JavascriptMinify()
507+ print('#include "{0:s}"'.format(os.path.basename(headerPath)), file=sourceFile)
508+ print('namespace {0:s} {{'.format(namespace), file=sourceFile)
509
510 for inputFileName in inputPaths:
511- inputStream = io.FileIO(inputFileName)
512- outputStream = StringIO()
513+
514+ if is_3:
515+ inputStream = io.open(inputFileName, encoding='utf-8')
516+ else:
517+ inputStream = io.FileIO(inputFileName)
518+
519+ data = inputStream.read()
520
521 if not options.no_minify:
522- jsm.minify(inputStream, outputStream)
523- characters = outputStream.getvalue()
524+ characters = jsmin(data)
525+ else:
526+ characters = data
527+
528+ if is_3:
529+ codepoints = bytearray(characters, encoding='utf-8')
530 else:
531- characters = inputStream.read()
532+ codepoints = list(map(ord, characters))
533+
534+ # Use the size of codepoints instead of the characters
535+ # because UTF-8 characters may need more than one byte.
536+ size = len(codepoints)
537
538- size = len(characters)
539 variableName = os.path.splitext(os.path.basename(inputFileName))[0]
540
541- print >> headerFile, 'extern const char {0:s}JavaScript[{1:d}];'.format(variableName, size)
542- print >> sourceFile, 'const char {0:s}JavaScript[{1:d}] = {{'.format(variableName, size)
543+ print('extern const char {0:s}JavaScript[{1:d}];'.format(variableName, size), file=headerFile)
544+ print('const char {0:s}JavaScript[{1:d}] = {{'.format(variableName, size), file=sourceFile)
545
546- codepoints = map(ord, characters)
547 for codepointChunk in chunk(codepoints, 16):
548- print >> sourceFile, ' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk)))
549+ print(' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk))), file=sourceFile)
550
551- print >> sourceFile, '};'
552+ print('};', file=sourceFile)
553
554- print >> headerFile, '}} // namespace {0:s}'.format(namespace)
555- print >> sourceFile, '}} // namespace {0:s}'.format(namespace)
556+ print('}} // namespace {0:s}'.format(namespace), file=headerFile)
557+ print('}} // namespace {0:s}'.format(namespace), file=sourceFile)
558
559 if __name__ == '__main__':
560 main()
561diff --git a/Source/JavaScriptCore/Scripts/builtins/__init__.py b/Source/JavaScriptCore/Scripts/mybuiltins/__init__.py
562similarity index 72%
563rename from Source/JavaScriptCore/Scripts/builtins/__init__.py
564rename to Source/JavaScriptCore/Scripts/mybuiltins/__init__.py
565index fdfcba981..1b9668023 100644
566--- a/Source/JavaScriptCore/Scripts/builtins/__init__.py
567+++ b/Source/JavaScriptCore/Scripts/mybuiltins/__init__.py
568@@ -1,3 +1,3 @@
569 # Required for Python to search this directory for module files
570
571-from builtins import *
572+from mybuiltins import *
573diff --git a/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py
574new file mode 100644
575index 000000000..1bea3da5c
576--- /dev/null
577+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins.py
578@@ -0,0 +1,11 @@
579+# This file is used to simulate the builtins/ directory when generate-js-builtins.py
580+# is run from JavaScriptCore framework's private headers directory, which is flattened.
581+
582+from mybuiltins_model import *
583+from mybuiltins_templates import *
584+
585+from mybuiltins_generator import *
586+from mybuiltins_generate_combined_header import *
587+from mybuiltins_generate_combined_implementation import *
588+from mybuiltins_generate_separate_header import *
589+from mybuiltins_generate_separate_implementation import *
590diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_header.py
591similarity index 98%
592rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py
593rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_header.py
594index 891bd3cb4..6520a5f16 100644
595--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py
596+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_header.py
597@@ -30,8 +30,8 @@ import re
598 import string
599 from string import Template
600
601-from builtins_generator import BuiltinsGenerator
602-from builtins_templates import BuiltinsGeneratorTemplates as Templates
603+from mybuiltins_generator import BuiltinsGenerator
604+from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
605
606 log = logging.getLogger('global')
607
608diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_implementation.py
609similarity index 95%
610rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py
611rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_implementation.py
612index 094434b64..76eed7665 100644
613--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py
614+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_combined_implementation.py
615@@ -30,9 +30,9 @@ import re
616 import string
617 from string import Template
618
619-from builtins_generator import BuiltinsGenerator
620-from builtins_model import Framework, Frameworks
621-from builtins_templates import BuiltinsGeneratorTemplates as Templates
622+from mybuiltins_generator import BuiltinsGenerator
623+from mybuiltins_model import Framework, Frameworks
624+from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
625
626 log = logging.getLogger('global')
627
628diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_header.py
629similarity index 97%
630rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py
631rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_header.py
632index b72a94bfe..6cbfbdca1 100644
633--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py
634+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_header.py
635@@ -30,9 +30,9 @@ import re
636 import string
637 from string import Template
638
639-from builtins_generator import BuiltinsGenerator
640-from builtins_model import Frameworks
641-from builtins_templates import BuiltinsGeneratorTemplates as Templates
642+from mybuiltins_generator import BuiltinsGenerator
643+from mybuiltins_model import Frameworks
644+from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
645
646 log = logging.getLogger('global')
647
648diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_implementation.py
649similarity index 95%
650rename from Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py
651rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_implementation.py
652index 0443975da..9f811df6a 100644
653--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py
654+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generate_separate_implementation.py
655@@ -30,9 +30,9 @@ import re
656 import string
657 from string import Template
658
659-from builtins_generator import BuiltinsGenerator, WK_lcfirst
660-from builtins_model import Framework, Frameworks
661-from builtins_templates import BuiltinsGeneratorTemplates as Templates
662+from mybuiltins_generator import BuiltinsGenerator, WK_lcfirst
663+from mybuiltins_model import Framework, Frameworks
664+from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
665
666 log = logging.getLogger('global')
667
668diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generator.py
669similarity index 97%
670rename from Source/JavaScriptCore/Scripts/builtins/builtins_generator.py
671rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generator.py
672index 21ac4c1d9..546eb2e07 100644
673--- a/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py
674+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_generator.py
675@@ -30,8 +30,8 @@ import re
676 from string import Template
677 import json
678
679-from builtins_model import BuiltinFunction, BuiltinObject
680-from builtins_templates import BuiltinsGeneratorTemplates as Templates
681+from mybuiltins_model import BuiltinFunction, BuiltinObject
682+from mybuiltins_templates import BuiltinsGeneratorTemplates as Templates
683
684 log = logging.getLogger('global')
685
686diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_model.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_model.py
687similarity index 97%
688rename from Source/JavaScriptCore/Scripts/builtins/builtins_model.py
689rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_model.py
690index cdd5f9003..68d7aed06 100755
691--- a/Source/JavaScriptCore/Scripts/builtins/builtins_model.py
692+++ b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_model.py
693@@ -122,7 +122,8 @@ class BuiltinFunction:
694 interface = interface + " [Constructor]"
695
696 return interface
697-
698+ def __lt__(self, other):
699+ return self.function_name < other.function_name
700
701 class BuiltinsCollection:
702 def __init__(self, framework_name):
703@@ -178,7 +179,7 @@ class BuiltinsCollection:
704
705 result = []
706
707- for owner, years in owner_to_years.items():
708+ for owner, years in list(owner_to_years.items()):
709 sorted_years = list(years)
710 sorted_years.sort()
711 result.append("%s %s" % (', '.join(sorted_years), owner))
712@@ -271,4 +272,4 @@ class BuiltinsCollection:
713 functionBounds.append((start, end))
714
715 functionStrings = [text[start:end].strip() for (start, end) in functionBounds]
716- return map(BuiltinFunction.fromString, functionStrings)
717+ return list(map(BuiltinFunction.fromString, functionStrings))
718diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_templates.py b/Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_templates.py
719similarity index 100%
720rename from Source/JavaScriptCore/Scripts/builtins/builtins_templates.py
721rename to Source/JavaScriptCore/Scripts/mybuiltins/mybuiltins_templates.py
722diff --git a/Source/JavaScriptCore/disassembler/udis86/ud_itab.py b/Source/JavaScriptCore/disassembler/udis86/ud_itab.py
723index ef011d2ec..205dcb1ae 100644
724--- a/Source/JavaScriptCore/disassembler/udis86/ud_itab.py
725+++ b/Source/JavaScriptCore/disassembler/udis86/ud_itab.py
726@@ -266,15 +266,15 @@ class UdItabGenerator:
727 pfx_c = []
728 opr = insn.operands
729 for i in range(len(opr)):
730- if not (opr[i] in self.OperandDict.keys()):
731- print("error: invalid operand declaration: %s\n" % opr[i])
732+ if not (opr[i] in list(self.OperandDict.keys())):
733+ print(("error: invalid operand declaration: %s\n" % opr[i]))
734 opr_c[i] = "O_" + opr[i]
735 opr = "%s %s %s %s" % (opr_c[0] + ",", opr_c[1] + ",",
736 opr_c[2] + ",", opr_c[3])
737
738 for p in insn.prefixes:
739- if not ( p in self.PrefixDict.keys() ):
740- print("error: invalid prefix specification: %s \n" % pfx)
741+ if not ( p in list(self.PrefixDict.keys()) ):
742+ print(("error: invalid prefix specification: %s \n" % pfx))
743 pfx_c.append( self.PrefixDict[p] )
744 if len(insn.prefixes) == 0:
745 pfx_c.append( "P_none" )
746@@ -346,7 +346,7 @@ class UdItabGenerator:
747 # Macros defining short-names for operands
748 #
749 self.ItabC.write("\n\n/* itab entry operand definitions (for readability) */\n");
750- operands = self.OperandDict.keys()
751+ operands = list(self.OperandDict.keys())
752 operands = sorted(operands)
753 for o in operands:
754 self.ItabC.write("#define O_%-7s { %-12s %-8s }\n" %
755diff --git a/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py b/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py
756index fe1833dc7..00961071c 100644
757--- a/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py
758+++ b/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py
759@@ -28,7 +28,7 @@ import os
760 # Some compatibility stuff for supporting python 2.x as well as python 3.x
761 def itemslist(dict):
762 try:
763- return dict.iteritems() # python 2.x
764+ return iter(dict.items()) # python 2.x
765 except AttributeError:
766 return list(dict.items()) # python 3.x
767
768@@ -180,7 +180,7 @@ class UdOpcodeTable:
769 return itemslist(self._entries)
770
771 def numEntries(self):
772- return len(self._entries.keys())
773+ return len(list(self._entries.keys()))
774
775 def label(self):
776 return self._TableInfo[self._typ]['label']
777@@ -248,7 +248,7 @@ class UdOpcodeTable:
778 @classmethod
779 def getLabels(cls):
780 """Returns a list of all labels"""
781- return [cls._TableInfo[k]['label'] for k in cls._TableInfo.keys()]
782+ return [cls._TableInfo[k]['label'] for k in list(cls._TableInfo.keys())]
783
784
785 class UdOpcodeTables(object):
786@@ -401,7 +401,7 @@ class UdOpcodeTables(object):
787 self.map(self.root, opcodes, insn)
788 except self.CollisionError as e:
789 self.pprint()
790- print(opcodes, insn, str(e.obj1), str(e.obj2))
791+ print((opcodes, insn, str(e.obj1), str(e.obj2)))
792 raise
793 except Exception as e:
794 self.pprint()
795@@ -550,10 +550,10 @@ class UdOpcodeTables(object):
796 entries = tbl.entries()
797 for k, e in entries:
798 if isinstance(e, UdOpcodeTable):
799- self.log("%s |-<%02x> %s" % (indent, k, e))
800+ self.log("%s |-<%02x> %s" % (indent, int(k), e))
801 printWalk(e, indent + " |")
802 elif isinstance(e, UdInsnDef):
803- self.log("%s |-<%02x> %s" % (indent, k, e))
804+ self.log("%s |-<%02x> %s" % (indent, int(k), e))
805 printWalk(self.root)
806
807
808diff --git a/Source/JavaScriptCore/generate-bytecode-files b/Source/JavaScriptCore/generate-bytecode-files
809index 5666a3f92..371ac5e4e 100644
810--- a/Source/JavaScriptCore/generate-bytecode-files
811+++ b/Source/JavaScriptCore/generate-bytecode-files
812@@ -91,14 +91,14 @@ def openOrExit(path, mode):
813 try:
814 return open(path, mode)
815 except IOError as e:
816- print "I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror)
817+ print("I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror))
818 exit(1)
819
820 def hashFile(file):
821 sha1 = hashlib.sha1()
822 file.seek(0)
823 for line in file:
824- sha1.update(line)
825+ sha1.update(line.encode('utf-8'))
826
827 file.seek(0)
828
829@@ -114,7 +114,7 @@ if __name__ == "__main__":
830 parser.error("missing <bytecode-json-file>")
831
832 bytecodeJSONFile = args[0]
833- bytecodeFile = openOrExit(bytecodeJSONFile, "rb")
834+ bytecodeFile = openOrExit(bytecodeJSONFile, "r")
835 sha1Hash = hashFile(bytecodeFile)
836
837 hFileHashString = "// SHA1Hash: {0}\n".format(sha1Hash)
838@@ -131,7 +131,7 @@ if __name__ == "__main__":
839
840 if bytecodeHFilename:
841 try:
842- bytecodeHReadFile = open(bytecodeHFilename, "rb")
843+ bytecodeHReadFile = open(bytecodeHFilename, "r")
844
845 hashLine = bytecodeHReadFile.readline()
846 if hashLine != hFileHashString:
847@@ -143,7 +143,7 @@ if __name__ == "__main__":
848
849 if initASMFileName:
850 try:
851- initBytecodesReadFile = open(initASMFileName, "rb")
852+ initBytecodesReadFile = open(initASMFileName, "r")
853
854 hashLine = initBytecodesReadFile.readline()
855 if hashLine != asmFileHashString:
856@@ -157,15 +157,15 @@ if __name__ == "__main__":
857 exit(0)
858
859 if bytecodeHFilename:
860- bytecodeHFile = openOrExit(bytecodeHFilename, "wb")
861+ bytecodeHFile = openOrExit(bytecodeHFilename, "w")
862
863 if initASMFileName:
864- initBytecodesFile = openOrExit(initASMFileName, "wb")
865+ initBytecodesFile = openOrExit(initASMFileName, "w")
866
867 try:
868 bytecodeSections = json.load(bytecodeFile, encoding = "utf-8")
869 except:
870- print "Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info())
871+ print("Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info()))
872
873 if bytecodeHFilename:
874 bytecodeHFile.write(hFileHashString)
875diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py b/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py
876index 6077fa97a..bd30c817c 100644
877--- a/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py
878+++ b/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py
879@@ -1,24 +1,24 @@
880 # Required for Python to search this directory for module files
881
882-from models import *
883-from generator import *
884-from cpp_generator import *
885-from objc_generator import *
886+from .models import *
887+from .generator import *
888+from .cpp_generator import *
889+from .objc_generator import *
890
891-from generate_cpp_alternate_backend_dispatcher_header import *
892-from generate_cpp_backend_dispatcher_header import *
893-from generate_cpp_backend_dispatcher_implementation import *
894-from generate_cpp_frontend_dispatcher_header import *
895-from generate_cpp_frontend_dispatcher_implementation import *
896-from generate_cpp_protocol_types_header import *
897-from generate_cpp_protocol_types_implementation import *
898-from generate_js_backend_commands import *
899-from generate_objc_backend_dispatcher_header import *
900-from generate_objc_backend_dispatcher_implementation import *
901-from generate_objc_configuration_header import *
902-from generate_objc_configuration_implementation import *
903-from generate_objc_conversion_helpers import *
904-from generate_objc_frontend_dispatcher_implementation import *
905-from generate_objc_header import *
906-from generate_objc_internal_header import *
907-from generate_objc_protocol_types_implementation import *
908+from .generate_cpp_alternate_backend_dispatcher_header import *
909+from .generate_cpp_backend_dispatcher_header import *
910+from .generate_cpp_backend_dispatcher_implementation import *
911+from .generate_cpp_frontend_dispatcher_header import *
912+from .generate_cpp_frontend_dispatcher_implementation import *
913+from .generate_cpp_protocol_types_header import *
914+from .generate_cpp_protocol_types_implementation import *
915+from .generate_js_backend_commands import *
916+from .generate_objc_backend_dispatcher_header import *
917+from .generate_objc_backend_dispatcher_implementation import *
918+from .generate_objc_configuration_header import *
919+from .generate_objc_configuration_implementation import *
920+from .generate_objc_conversion_helpers import *
921+from .generate_objc_frontend_dispatcher_implementation import *
922+from .generate_objc_header import *
923+from .generate_objc_internal_header import *
924+from .generate_objc_protocol_types_implementation import *
925diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py b/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py
926index edd330da4..43c655b05 100644
927--- a/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py
928+++ b/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py
929@@ -28,8 +28,8 @@ import logging
930 import os.path
931 import re
932
933-from generator import ucfirst
934-from models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
935+from .generator import ucfirst
936+from .models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
937
938 log = logging.getLogger('global')
939
940@@ -56,11 +56,11 @@ class CppGenerator:
941 if isinstance(_type, ArrayType):
942 return 'getArray'
943 if isinstance(_type, PrimitiveType):
944- if _type.raw_name() is 'integer':
945+ if _type.raw_name() == 'integer':
946 return 'getInteger'
947- elif _type.raw_name() is 'number':
948+ elif _type.raw_name() == 'number':
949 return 'getDouble'
950- elif _type.raw_name() is 'any':
951+ elif _type.raw_name() == 'any':
952 return 'getValue'
953 else:
954 return 'get' + ucfirst(_type.raw_name())
955@@ -76,11 +76,11 @@ class CppGenerator:
956 if isinstance(_type, ArrayType):
957 return 'setArray'
958 if isinstance(_type, PrimitiveType):
959- if _type.raw_name() is 'integer':
960+ if _type.raw_name() == 'integer':
961 return 'setInteger'
962- elif _type.raw_name() is 'number':
963+ elif _type.raw_name() == 'number':
964 return 'setDouble'
965- elif _type.raw_name() is 'any':
966+ elif _type.raw_name() == 'any':
967 return 'setValue'
968 else:
969 return 'set' + ucfirst(_type.raw_name())
970@@ -95,7 +95,7 @@ class CppGenerator:
971 if isinstance(_type, ObjectType) and len(_type.members) == 0:
972 return 'Inspector::InspectorObject'
973 if isinstance(_type, ArrayType):
974- if _type.raw_name() is None: # Otherwise, fall through and use typedef'd name.
975+ if _type.raw_name() == None: # Otherwise, fall through and use typedef'd name.
976 return 'Inspector::Protocol::Array<%s>' % CppGenerator.cpp_protocol_type_for_type(_type.element_type)
977 if isinstance(_type, (ObjectType, AliasedType, EnumType, ArrayType)):
978 return 'Inspector::Protocol::%s::%s' % (_type.type_domain().domain_name, _type.raw_name())
979@@ -119,7 +119,7 @@ class CppGenerator:
980 _type = _type.primitive_type # Fall through to primitive.
981
982 # This handles the 'any' type and objects with defined properties.
983- if isinstance(_type, ObjectType) or _type.qualified_name() is 'object':
984+ if isinstance(_type, ObjectType) or _type.qualified_name() == 'object':
985 cpp_name = 'Inspector::InspectorObject'
986 if parameter.is_optional:
987 return 'const %s*' % cpp_name
988diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py
989index 375ce05ca..916277d31 100755
990--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py
991+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py
992@@ -30,9 +30,9 @@ import string
993 import re
994 from string import Template
995
996-from cpp_generator import CppGenerator
997-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
998-from generator import Generator
999+from .cpp_generator import CppGenerator
1000+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1001+from .generator import Generator
1002
1003 log = logging.getLogger('global')
1004
1005@@ -60,7 +60,7 @@ class CppAlternateBackendDispatcherHeaderGenerator(Generator):
1006 sections = []
1007 sections.append(self.generate_license())
1008 sections.append(Template(CppTemplates.AlternateDispatchersHeaderPrelude).substitute(None, **header_args))
1009- sections.append('\n'.join(filter(None, map(self._generate_handler_declarations_for_domain, domains))))
1010+ sections.append('\n'.join([_f for _f in map(self._generate_handler_declarations_for_domain, domains) if _f]))
1011 sections.append(Template(CppTemplates.AlternateDispatchersHeaderPostlude).substitute(None, **header_args))
1012 return '\n\n'.join(sections)
1013
1014diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
1015index 2e5ff7a6a..25bec9a22 100755
1016--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
1017+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py
1018@@ -30,10 +30,10 @@ import re
1019 import string
1020 from string import Template
1021
1022-from cpp_generator import CppGenerator
1023-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1024-from generator import Generator, ucfirst
1025-from models import EnumType
1026+from .cpp_generator import CppGenerator
1027+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1028+from .generator import Generator, ucfirst
1029+from .models import EnumType
1030
1031 log = logging.getLogger('global')
1032
1033@@ -46,7 +46,7 @@ class CppBackendDispatcherHeaderGenerator(Generator):
1034 return "InspectorBackendDispatchers.h"
1035
1036 def domains_to_generate(self):
1037- return filter(lambda domain: len(domain.commands) > 0, Generator.domains_to_generate(self))
1038+ return [domain for domain in Generator.domains_to_generate(self) if len(domain.commands) > 0]
1039
1040 def generate_output(self):
1041 headers = [
1042@@ -68,8 +68,8 @@ class CppBackendDispatcherHeaderGenerator(Generator):
1043 sections.append(self.generate_license())
1044 sections.append(Template(CppTemplates.HeaderPrelude).substitute(None, **header_args))
1045 sections.append(self._generate_alternate_handler_forward_declarations_for_domains(domains))
1046- sections.extend(map(self._generate_handler_declarations_for_domain, domains))
1047- sections.extend(map(self._generate_dispatcher_declarations_for_domain, domains))
1048+ sections.extend(list(map(self._generate_handler_declarations_for_domain, domains)))
1049+ sections.extend(list(map(self._generate_dispatcher_declarations_for_domain, domains)))
1050 sections.append(Template(CppTemplates.HeaderPostlude).substitute(None, **header_args))
1051 return "\n\n".join(sections)
1052
1053@@ -194,7 +194,7 @@ class CppBackendDispatcherHeaderGenerator(Generator):
1054 declarations = []
1055 if len(domain.commands) > 0:
1056 declarations.append('private:')
1057- declarations.extend(map(self._generate_dispatcher_declaration_for_command, domain.commands))
1058+ declarations.extend(list(map(self._generate_dispatcher_declaration_for_command, domain.commands)))
1059
1060 handler_args = {
1061 'classAndExportMacro': " ".join(classComponents),
1062diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
1063index 8f3df80ee..0c9b30e47 100755
1064--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
1065+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py
1066@@ -29,10 +29,10 @@ import logging
1067 import string
1068 from string import Template
1069
1070-from cpp_generator import CppGenerator
1071-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1072-from generator import Generator, ucfirst
1073-from models import ObjectType, ArrayType
1074+from .cpp_generator import CppGenerator
1075+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1076+from .generator import Generator, ucfirst
1077+from .models import ObjectType, ArrayType
1078
1079 log = logging.getLogger('global')
1080
1081@@ -45,7 +45,7 @@ class CppBackendDispatcherImplementationGenerator(Generator):
1082 return "InspectorBackendDispatchers.cpp"
1083
1084 def domains_to_generate(self):
1085- return filter(lambda domain: len(domain.commands) > 0, Generator.domains_to_generate(self))
1086+ return [domain for domain in Generator.domains_to_generate(self) if len(domain.commands) > 0]
1087
1088 def generate_output(self):
1089 secondary_headers = [
1090@@ -69,7 +69,7 @@ class CppBackendDispatcherImplementationGenerator(Generator):
1091 sections.append(self.generate_license())
1092 sections.append(Template(CppTemplates.ImplementationPrelude).substitute(None, **header_args))
1093 sections.append("\n".join(map(self._generate_handler_class_destructor_for_domain, self.domains_to_generate())))
1094- sections.extend(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate()))
1095+ sections.extend(list(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate())))
1096 sections.append(Template(CppTemplates.ImplementationPostlude).substitute(None, **header_args))
1097 return "\n\n".join(sections)
1098
1099diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
1100index 58a3cb925..40905d676 100755
1101--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
1102+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py
1103@@ -30,10 +30,10 @@ import re
1104 import string
1105 from string import Template
1106
1107-from cpp_generator import CppGenerator
1108-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1109-from generator import Generator, ucfirst
1110-from models import EnumType
1111+from .cpp_generator import CppGenerator
1112+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1113+from .generator import Generator, ucfirst
1114+from .models import EnumType
1115
1116 log = logging.getLogger('global')
1117
1118@@ -46,7 +46,7 @@ class CppFrontendDispatcherHeaderGenerator(Generator):
1119 return "InspectorFrontendDispatchers.h"
1120
1121 def domains_to_generate(self):
1122- return filter(lambda domain: len(domain.events) > 0, Generator.domains_to_generate(self))
1123+ return [domain for domain in Generator.domains_to_generate(self) if len(domain.events) > 0]
1124
1125 def generate_output(self):
1126 headers = [
1127@@ -63,7 +63,7 @@ class CppFrontendDispatcherHeaderGenerator(Generator):
1128 sections = []
1129 sections.append(self.generate_license())
1130 sections.append(Template(CppTemplates.HeaderPrelude).substitute(None, **header_args))
1131- sections.extend(map(self._generate_dispatcher_declarations_for_domain, self.domains_to_generate()))
1132+ sections.extend(list(map(self._generate_dispatcher_declarations_for_domain, self.domains_to_generate())))
1133 sections.append(Template(CppTemplates.HeaderPostlude).substitute(None, **header_args))
1134 return "\n\n".join(sections)
1135
1136diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
1137index ea46aaf26..132b1c67c 100755
1138--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
1139+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py
1140@@ -29,10 +29,10 @@ import logging
1141 import string
1142 from string import Template
1143
1144-from cpp_generator import CppGenerator
1145-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1146-from generator import Generator, ucfirst
1147-from models import ObjectType, ArrayType
1148+from .cpp_generator import CppGenerator
1149+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1150+from .generator import Generator, ucfirst
1151+from .models import ObjectType, ArrayType
1152
1153 log = logging.getLogger('global')
1154
1155@@ -45,7 +45,7 @@ class CppFrontendDispatcherImplementationGenerator(Generator):
1156 return "InspectorFrontendDispatchers.cpp"
1157
1158 def domains_to_generate(self):
1159- return filter(lambda domain: len(domain.events) > 0, Generator.domains_to_generate(self))
1160+ return [domain for domain in Generator.domains_to_generate(self) if len(domain.events) > 0]
1161
1162 def generate_output(self):
1163 secondary_headers = [
1164@@ -61,7 +61,7 @@ class CppFrontendDispatcherImplementationGenerator(Generator):
1165 sections = []
1166 sections.append(self.generate_license())
1167 sections.append(Template(CppTemplates.ImplementationPrelude).substitute(None, **header_args))
1168- sections.extend(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate()))
1169+ sections.extend(list(map(self._generate_dispatcher_implementations_for_domain, self.domains_to_generate())))
1170 sections.append(Template(CppTemplates.ImplementationPostlude).substitute(None, **header_args))
1171 return "\n\n".join(sections)
1172
1173diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
1174index 6753e2dcf..7bd4375df 100755
1175--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
1176+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py
1177@@ -30,10 +30,10 @@ import re
1178 import string
1179 from string import Template
1180
1181-from cpp_generator import CppGenerator
1182-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1183-from generator import Generator, ucfirst
1184-from models import EnumType, ObjectType, PrimitiveType, AliasedType, ArrayType, Frameworks
1185+from .cpp_generator import CppGenerator
1186+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1187+from .generator import Generator, ucfirst
1188+from .models import EnumType, ObjectType, PrimitiveType, AliasedType, ArrayType, Frameworks
1189
1190 log = logging.getLogger('global')
1191
1192@@ -80,8 +80,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
1193 ' return getEnumConstantValue(static_cast<int>(enumValue));',
1194 '}']))
1195
1196- builder_sections = map(self._generate_builders_for_domain, domains)
1197- sections.extend(filter(lambda section: len(section) > 0, builder_sections))
1198+ builder_sections = list(map(self._generate_builders_for_domain, domains))
1199+ sections.extend([section for section in builder_sections if len(section) > 0])
1200 sections.append(self._generate_forward_declarations_for_binding_traits())
1201 sections.append('} // namespace Protocol')
1202 sections.append(Template(CppTemplates.HeaderPostlude).substitute(None, **header_args))
1203@@ -96,8 +96,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
1204
1205 for domain in domains:
1206 declaration_types = [decl.type for decl in domain.type_declarations]
1207- object_types = filter(lambda _type: isinstance(_type, ObjectType), declaration_types)
1208- enum_types = filter(lambda _type: isinstance(_type, EnumType), declaration_types)
1209+ object_types = [_type for _type in declaration_types if isinstance(_type, ObjectType)]
1210+ enum_types = [_type for _type in declaration_types if isinstance(_type, EnumType)]
1211 if len(object_types) + len(enum_types) == 0:
1212 continue
1213
1214@@ -122,8 +122,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
1215 """ % '\n\n'.join(sections)
1216
1217 def _generate_typedefs(self, domains):
1218- sections = map(self._generate_typedefs_for_domain, domains)
1219- sections = filter(lambda text: len(text) > 0, sections)
1220+ sections = list(map(self._generate_typedefs_for_domain, domains))
1221+ sections = [text for text in sections if len(text) > 0]
1222
1223 if len(sections) == 0:
1224 return ''
1225@@ -133,8 +133,8 @@ class CppProtocolTypesHeaderGenerator(Generator):
1226 // End of typedefs.""" % '\n\n'.join(sections)
1227
1228 def _generate_typedefs_for_domain(self, domain):
1229- primitive_declarations = filter(lambda decl: isinstance(decl.type, AliasedType), domain.type_declarations)
1230- array_declarations = filter(lambda decl: isinstance(decl.type, ArrayType), domain.type_declarations)
1231+ primitive_declarations = [decl for decl in domain.type_declarations if isinstance(decl.type, AliasedType)]
1232+ array_declarations = [decl for decl in domain.type_declarations if isinstance(decl.type, ArrayType)]
1233 if len(primitive_declarations) == 0 and len(array_declarations) == 0:
1234 return ''
1235
1236@@ -170,7 +170,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
1237 elif isinstance(type_declaration.type, ObjectType):
1238 sections.append(self._generate_class_for_object_declaration(type_declaration, domain))
1239
1240- sections = filter(lambda section: len(section) > 0, sections)
1241+ sections = [section for section in sections if len(section) > 0]
1242 if len(sections) == 0:
1243 return ''
1244
1245@@ -184,9 +184,9 @@ class CppProtocolTypesHeaderGenerator(Generator):
1246 if len(type_declaration.type_members) == 0:
1247 return ''
1248
1249- enum_members = filter(lambda member: isinstance(member.type, EnumType) and member.type.is_anonymous, type_declaration.type_members)
1250- required_members = filter(lambda member: not member.is_optional, type_declaration.type_members)
1251- optional_members = filter(lambda member: member.is_optional, type_declaration.type_members)
1252+ enum_members = [member for member in type_declaration.type_members if isinstance(member.type, EnumType) and member.type.is_anonymous]
1253+ required_members = [member for member in type_declaration.type_members if not member.is_optional]
1254+ optional_members = [member for member in type_declaration.type_members if member.is_optional]
1255 object_name = type_declaration.type_name
1256
1257 lines = []
1258@@ -244,7 +244,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
1259 else:
1260 return ' ' + line
1261
1262- indented_lines = map(apply_indentation, self._generate_struct_for_enum_type(enum_member.member_name, enum_member.type))
1263+ indented_lines = list(map(apply_indentation, self._generate_struct_for_enum_type(enum_member.member_name, enum_member.type)))
1264 return '\n'.join(indented_lines)
1265
1266 def _generate_struct_for_enum_type(self, enum_name, enum_type):
1267@@ -258,7 +258,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
1268
1269 def _generate_builder_state_enum(self, type_declaration):
1270 lines = []
1271- required_members = filter(lambda member: not member.is_optional, type_declaration.type_members)
1272+ required_members = [member for member in type_declaration.type_members if not member.is_optional]
1273 enum_values = []
1274
1275 lines.append(' enum {')
1276@@ -323,7 +323,7 @@ class CppProtocolTypesHeaderGenerator(Generator):
1277 type_arguments = []
1278
1279 for domain in self.domains_to_generate():
1280- declarations_to_generate = filter(lambda decl: self.type_needs_shape_assertions(decl.type), domain.type_declarations)
1281+ declarations_to_generate = [decl for decl in domain.type_declarations if self.type_needs_shape_assertions(decl.type)]
1282
1283 for type_declaration in declarations_to_generate:
1284 for type_member in type_declaration.type_members:
1285diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
1286index 2c263b504..903278bfb 100755
1287--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
1288+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py
1289@@ -29,10 +29,10 @@ import logging
1290 import string
1291 from string import Template
1292
1293-from cpp_generator import CppGenerator
1294-from cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1295-from generator import Generator, ucfirst
1296-from models import AliasedType, ArrayType, EnumType, ObjectType
1297+from .cpp_generator import CppGenerator
1298+from .cpp_generator_templates import CppGeneratorTemplates as CppTemplates
1299+from .generator import Generator, ucfirst
1300+from .models import AliasedType, ArrayType, EnumType, ObjectType
1301
1302 log = logging.getLogger('global')
1303
1304@@ -61,8 +61,8 @@ class CppProtocolTypesImplementationGenerator(Generator):
1305 sections.append('namespace Protocol {')
1306 sections.append(self._generate_enum_mapping())
1307 sections.append(self._generate_open_field_names())
1308- builder_sections = map(self._generate_builders_for_domain, domains)
1309- sections.extend(filter(lambda section: len(section) > 0, builder_sections))
1310+ builder_sections = list(map(self._generate_builders_for_domain, domains))
1311+ sections.extend([section for section in builder_sections if len(section) > 0])
1312 sections.append('} // namespace Protocol')
1313 sections.append(Template(CppTemplates.ImplementationPostlude).substitute(None, **header_args))
1314
1315@@ -84,7 +84,7 @@ class CppProtocolTypesImplementationGenerator(Generator):
1316 def _generate_open_field_names(self):
1317 lines = []
1318 for domain in self.domains_to_generate():
1319- for type_declaration in filter(lambda decl: Generator.type_has_open_fields(decl.type), domain.type_declarations):
1320+ for type_declaration in [decl for decl in domain.type_declarations if Generator.type_has_open_fields(decl.type)]:
1321 for type_member in sorted(type_declaration.type_members, key=lambda member: member.member_name):
1322 field_name = '::'.join(['Inspector', 'Protocol', domain.domain_name, ucfirst(type_declaration.type_name), ucfirst(type_member.member_name)])
1323 lines.append('const char* %s = "%s";' % (field_name, type_member.member_name))
1324@@ -93,7 +93,7 @@ class CppProtocolTypesImplementationGenerator(Generator):
1325
1326 def _generate_builders_for_domain(self, domain):
1327 sections = []
1328- declarations_to_generate = filter(lambda decl: self.type_needs_shape_assertions(decl.type), domain.type_declarations)
1329+ declarations_to_generate = [decl for decl in domain.type_declarations if self.type_needs_shape_assertions(decl.type)]
1330
1331 for type_declaration in declarations_to_generate:
1332 for type_member in type_declaration.type_members:
1333@@ -114,8 +114,8 @@ class CppProtocolTypesImplementationGenerator(Generator):
1334 return Template(CppTemplates.ProtocolObjectRuntimeCast).substitute(None, **args)
1335
1336 def _generate_assertion_for_object_declaration(self, object_declaration):
1337- required_members = filter(lambda member: not member.is_optional, object_declaration.type_members)
1338- optional_members = filter(lambda member: member.is_optional, object_declaration.type_members)
1339+ required_members = [member for member in object_declaration.type_members if not member.is_optional]
1340+ optional_members = [member for member in object_declaration.type_members if member.is_optional]
1341 should_count_properties = not Generator.type_has_open_fields(object_declaration.type)
1342 lines = []
1343
1344diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py
1345index 3392c7845..bd8f33164 100755
1346--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py
1347+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_js_backend_commands.py
1348@@ -29,9 +29,9 @@ import logging
1349 import string
1350 from string import Template
1351
1352-from generator import Generator, ucfirst
1353-from generator_templates import GeneratorTemplates as Templates
1354-from models import EnumType
1355+from .generator import Generator, ucfirst
1356+from .generator_templates import GeneratorTemplates as Templates
1357+from .models import EnumType
1358
1359 log = logging.getLogger('global')
1360
1361@@ -45,15 +45,15 @@ class JSBackendCommandsGenerator(Generator):
1362
1363 def domains_to_generate(self):
1364 def should_generate_domain(domain):
1365- domain_enum_types = filter(lambda declaration: isinstance(declaration.type, EnumType), domain.type_declarations)
1366+ domain_enum_types = [declaration for declaration in domain.type_declarations if isinstance(declaration.type, EnumType)]
1367 return len(domain.commands) > 0 or len(domain.events) > 0 or len(domain_enum_types) > 0
1368
1369- return filter(should_generate_domain, Generator.domains_to_generate(self))
1370+ return list(filter(should_generate_domain, Generator.domains_to_generate(self)))
1371
1372 def generate_output(self):
1373 sections = []
1374 sections.append(self.generate_license())
1375- sections.extend(map(self.generate_domain, self.domains_to_generate()))
1376+ sections.extend(list(map(self.generate_domain, self.domains_to_generate())))
1377 return "\n\n".join(sections)
1378
1379 def generate_domain(self, domain):
1380@@ -64,7 +64,7 @@ class JSBackendCommandsGenerator(Generator):
1381
1382 lines.append('// %(domain)s.' % args)
1383
1384- has_async_commands = any(map(lambda command: command.is_async, domain.commands))
1385+ has_async_commands = any([command.is_async for command in domain.commands])
1386 if len(domain.events) > 0 or has_async_commands:
1387 lines.append('InspectorBackend.register%(domain)sDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "%(domain)s");' % args)
1388
1389diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py
1390index d56a0b178..809641d38 100755
1391--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py
1392+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py
1393@@ -30,11 +30,11 @@ import string
1394 import re
1395 from string import Template
1396
1397-from cpp_generator import CppGenerator
1398-from generator import Generator
1399-from models import Frameworks
1400-from objc_generator import ObjCGenerator
1401-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1402+from .cpp_generator import CppGenerator
1403+from .generator import Generator
1404+from .models import Frameworks
1405+from .objc_generator import ObjCGenerator
1406+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1407
1408 log = logging.getLogger('global')
1409
1410@@ -47,7 +47,7 @@ class ObjCBackendDispatcherHeaderGenerator(Generator):
1411 return '%sBackendDispatchers.h' % ObjCGenerator.OBJC_PREFIX
1412
1413 def domains_to_generate(self):
1414- return filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self))
1415+ return list(filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self)))
1416
1417 def generate_output(self):
1418 headers = [
1419@@ -65,7 +65,7 @@ class ObjCBackendDispatcherHeaderGenerator(Generator):
1420 sections = []
1421 sections.append(self.generate_license())
1422 sections.append(Template(ObjCTemplates.BackendDispatcherHeaderPrelude).substitute(None, **header_args))
1423- sections.extend(map(self._generate_objc_handler_declarations_for_domain, domains))
1424+ sections.extend(list(map(self._generate_objc_handler_declarations_for_domain, domains)))
1425 sections.append(Template(ObjCTemplates.BackendDispatcherHeaderPostlude).substitute(None, **header_args))
1426 return '\n\n'.join(sections)
1427
1428diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py
1429index 42afd99cf..d35d3f14a 100755
1430--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py
1431+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py
1432@@ -30,11 +30,11 @@ import string
1433 import re
1434 from string import Template
1435
1436-from cpp_generator import CppGenerator
1437-from generator import Generator
1438-from models import PrimitiveType, EnumType, AliasedType, Frameworks
1439-from objc_generator import ObjCTypeCategory, ObjCGenerator, join_type_and_name
1440-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1441+from .cpp_generator import CppGenerator
1442+from .generator import Generator
1443+from .models import PrimitiveType, EnumType, AliasedType, Frameworks
1444+from .objc_generator import ObjCTypeCategory, ObjCGenerator, join_type_and_name
1445+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1446
1447 log = logging.getLogger('global')
1448
1449@@ -47,7 +47,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
1450 return '%sBackendDispatchers.mm' % ObjCGenerator.OBJC_PREFIX
1451
1452 def domains_to_generate(self):
1453- return filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self))
1454+ return list(filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), Generator.domains_to_generate(self)))
1455
1456 def generate_output(self):
1457 secondary_headers = [
1458@@ -65,7 +65,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
1459 sections = []
1460 sections.append(self.generate_license())
1461 sections.append(Template(ObjCTemplates.BackendDispatcherImplementationPrelude).substitute(None, **header_args))
1462- sections.extend(map(self._generate_handler_implementation_for_domain, domains))
1463+ sections.extend(list(map(self._generate_handler_implementation_for_domain, domains)))
1464 sections.append(Template(ObjCTemplates.BackendDispatcherImplementationPostlude).substitute(None, **header_args))
1465 return '\n\n'.join(sections)
1466
1467@@ -112,7 +112,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
1468 if command.return_parameters:
1469 lines.append(' Ref<InspectorObject> resultObject = InspectorObject::create();')
1470
1471- required_pointer_parameters = filter(lambda parameter: not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), command.return_parameters)
1472+ required_pointer_parameters = [parameter for parameter in command.return_parameters if not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
1473 for parameter in required_pointer_parameters:
1474 var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
1475 lines.append(' THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(%s, @"%s");' % (var_name, var_name))
1476@@ -120,7 +120,7 @@ class ObjCConfigurationImplementationGenerator(Generator):
1477 if objc_array_class and objc_array_class.startswith(ObjCGenerator.OBJC_PREFIX):
1478 lines.append(' THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(%s, [%s class]);' % (var_name, objc_array_class))
1479
1480- optional_pointer_parameters = filter(lambda parameter: parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), command.return_parameters)
1481+ optional_pointer_parameters = [parameter for parameter in command.return_parameters if parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
1482 for parameter in optional_pointer_parameters:
1483 var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
1484 lines.append(' THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(%s, @"%s");' % (var_name, var_name))
1485diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py
1486index 9b93f37f6..00f3860c7 100755
1487--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py
1488+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py
1489@@ -29,9 +29,9 @@ import logging
1490 import string
1491 from string import Template
1492
1493-from generator import Generator
1494-from objc_generator import ObjCGenerator
1495-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1496+from .generator import Generator
1497+from .objc_generator import ObjCGenerator
1498+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1499
1500 log = logging.getLogger('global')
1501
1502diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py
1503index 735abbca3..2db503c0b 100755
1504--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py
1505+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py
1506@@ -29,9 +29,9 @@ import logging
1507 import string
1508 from string import Template
1509
1510-from generator import Generator
1511-from objc_generator import ObjCGenerator
1512-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1513+from .generator import Generator
1514+from .objc_generator import ObjCGenerator
1515+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1516
1517 log = logging.getLogger('global')
1518
1519diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py
1520index c31e991e3..7a23251b1 100755
1521--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py
1522+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py
1523@@ -29,10 +29,10 @@ import logging
1524 import string
1525 from string import Template
1526
1527-from generator import Generator
1528-from models import EnumType
1529-from objc_generator import ObjCGenerator
1530-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1531+from .generator import Generator
1532+from .models import EnumType
1533+from .objc_generator import ObjCGenerator
1534+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1535
1536 log = logging.getLogger('global')
1537
1538@@ -51,7 +51,7 @@ class ObjCConversionHelpersGenerator(Generator):
1539 return '%sEnumConversionHelpers.h' % ObjCGenerator.OBJC_PREFIX
1540
1541 def domains_to_generate(self):
1542- return filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self))
1543+ return list(filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self)))
1544
1545 def generate_output(self):
1546 headers = [
1547@@ -67,7 +67,7 @@ class ObjCConversionHelpersGenerator(Generator):
1548 sections.append(self.generate_license())
1549 sections.append(Template(ObjCTemplates.ConversionHelpersPrelude).substitute(None, **header_args))
1550 sections.append(Template(ObjCTemplates.ConversionHelpersStandard).substitute(None))
1551- sections.extend(map(self._generate_enum_conversion_functions, domains))
1552+ sections.extend(list(map(self._generate_enum_conversion_functions, domains)))
1553 sections.append(Template(ObjCTemplates.ConversionHelpersPostlude).substitute(None, **header_args))
1554 return '\n\n'.join(sections)
1555
1556diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py
1557index 0030ed5ee..101c09e9f 100755
1558--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py
1559+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py
1560@@ -29,10 +29,10 @@ import logging
1561 import string
1562 from string import Template
1563
1564-from cpp_generator import CppGenerator
1565-from generator import Generator, ucfirst
1566-from objc_generator import ObjCGenerator
1567-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1568+from .cpp_generator import CppGenerator
1569+from .generator import Generator, ucfirst
1570+from .objc_generator import ObjCGenerator
1571+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1572
1573 log = logging.getLogger('global')
1574
1575@@ -45,7 +45,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
1576 return '%sEventDispatchers.mm' % ObjCGenerator.OBJC_PREFIX
1577
1578 def domains_to_generate(self):
1579- return filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), Generator.domains_to_generate(self))
1580+ return list(filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), Generator.domains_to_generate(self)))
1581
1582 def generate_output(self):
1583 secondary_headers = [
1584@@ -62,7 +62,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
1585 sections = []
1586 sections.append(self.generate_license())
1587 sections.append(Template(ObjCTemplates.ImplementationPrelude).substitute(None, **header_args))
1588- sections.extend(map(self._generate_event_dispatcher_implementations, domains))
1589+ sections.extend(list(map(self._generate_event_dispatcher_implementations, domains)))
1590 sections.append(Template(ObjCTemplates.ImplementationPostlude).substitute(None, **header_args))
1591 return '\n\n'.join(sections)
1592
1593@@ -100,7 +100,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
1594 lines.append(' const FrontendRouter& router = _controller->frontendRouter();')
1595 lines.append('')
1596
1597- required_pointer_parameters = filter(lambda parameter: not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), event.event_parameters)
1598+ required_pointer_parameters = [parameter for parameter in event.event_parameters if not parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
1599 for parameter in required_pointer_parameters:
1600 var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
1601 lines.append(' THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(%s, @"%s");' % (var_name, var_name))
1602@@ -108,7 +108,7 @@ class ObjCFrontendDispatcherImplementationGenerator(Generator):
1603 if objc_array_class and objc_array_class.startswith(ObjCGenerator.OBJC_PREFIX):
1604 lines.append(' THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(%s, [%s class]);' % (var_name, objc_array_class))
1605
1606- optional_pointer_parameters = filter(lambda parameter: parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type), event.event_parameters)
1607+ optional_pointer_parameters = [parameter for parameter in event.event_parameters if parameter.is_optional and ObjCGenerator.is_type_objc_pointer_type(parameter.type)]
1608 for parameter in optional_pointer_parameters:
1609 var_name = ObjCGenerator.identifier_to_objc_identifier(parameter.parameter_name)
1610 lines.append(' THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(%s, @"%s");' % (var_name, var_name))
1611diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py
1612index 7e8e61030..1b0059a7a 100755
1613--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py
1614+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py
1615@@ -29,10 +29,10 @@ import logging
1616 import string
1617 from string import Template
1618
1619-from generator import Generator, ucfirst
1620-from models import ObjectType, EnumType
1621-from objc_generator import ObjCGenerator, join_type_and_name
1622-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1623+from .generator import Generator, ucfirst
1624+from .models import ObjectType, EnumType
1625+from .objc_generator import ObjCGenerator, join_type_and_name
1626+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1627
1628 log = logging.getLogger('global')
1629
1630@@ -60,9 +60,9 @@ class ObjCHeaderGenerator(Generator):
1631 }
1632
1633 domains = self.domains_to_generate()
1634- type_domains = filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), domains)
1635- command_domains = filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), domains)
1636- event_domains = filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains)
1637+ type_domains = list(filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), domains))
1638+ command_domains = list(filter(ObjCGenerator.should_generate_domain_command_handler_filter(self.model()), domains))
1639+ event_domains = list(filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains))
1640
1641 # FIXME: <https://webkit.org/b/138222> Web Inspector: Reduce unnecessary enums/types generated in ObjC Protocol Interfaces
1642 # Currently we generate enums/types for all types in the type_domains. For the built-in
1643@@ -72,11 +72,11 @@ class ObjCHeaderGenerator(Generator):
1644 sections = []
1645 sections.append(self.generate_license())
1646 sections.append(Template(ObjCTemplates.HeaderPrelude).substitute(None, **header_args))
1647- sections.append('\n'.join(filter(None, map(self._generate_forward_declarations, type_domains))))
1648- sections.append('\n'.join(filter(None, map(self._generate_enums, type_domains))))
1649- sections.append('\n'.join(filter(None, map(self._generate_types, type_domains))))
1650- sections.append('\n\n'.join(filter(None, map(self._generate_command_protocols, command_domains))))
1651- sections.append('\n\n'.join(filter(None, map(self._generate_event_interfaces, event_domains))))
1652+ sections.append('\n'.join([_f for _f in map(self._generate_forward_declarations, type_domains) if _f]))
1653+ sections.append('\n'.join([_f for _f in map(self._generate_enums, type_domains) if _f]))
1654+ sections.append('\n'.join([_f for _f in map(self._generate_types, type_domains) if _f]))
1655+ sections.append('\n\n'.join([_f for _f in map(self._generate_command_protocols, command_domains) if _f]))
1656+ sections.append('\n\n'.join([_f for _f in map(self._generate_event_interfaces, event_domains) if _f]))
1657 sections.append(Template(ObjCTemplates.HeaderPostlude).substitute(None))
1658 return '\n\n'.join(sections)
1659
1660@@ -156,8 +156,8 @@ class ObjCHeaderGenerator(Generator):
1661 objc_name = ObjCGenerator.objc_name_for_type(declaration.type)
1662 lines.append('__attribute__((visibility ("default")))')
1663 lines.append('@interface %s : %s' % (objc_name, ObjCGenerator.OBJC_JSON_OBJECT_BASE))
1664- required_members = filter(lambda member: not member.is_optional, declaration.type_members)
1665- optional_members = filter(lambda member: member.is_optional, declaration.type_members)
1666+ required_members = [member for member in declaration.type_members if not member.is_optional]
1667+ optional_members = [member for member in declaration.type_members if member.is_optional]
1668 if required_members:
1669 lines.append(self._generate_init_method_for_required_members(domain, declaration, required_members))
1670 for member in required_members:
1671diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py
1672index 40802ff17..f21b16222 100755
1673--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py
1674+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_internal_header.py
1675@@ -29,9 +29,9 @@ import logging
1676 import string
1677 from string import Template
1678
1679-from generator import Generator, ucfirst
1680-from objc_generator import ObjCGenerator
1681-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1682+from .generator import Generator, ucfirst
1683+from .objc_generator import ObjCGenerator
1684+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1685
1686 log = logging.getLogger('global')
1687
1688@@ -56,12 +56,12 @@ class ObjCInternalHeaderGenerator(Generator):
1689 }
1690
1691 domains = self.domains_to_generate()
1692- event_domains = filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains)
1693+ event_domains = list(filter(ObjCGenerator.should_generate_domain_event_dispatcher_filter(self.model()), domains))
1694
1695 sections = []
1696 sections.append(self.generate_license())
1697 sections.append(Template(ObjCTemplates.GenericHeaderPrelude).substitute(None, **header_args))
1698- sections.append('\n\n'.join(filter(None, map(self._generate_event_dispatcher_private_interfaces, event_domains))))
1699+ sections.append('\n\n'.join([_f for _f in map(self._generate_event_dispatcher_private_interfaces, event_domains) if _f]))
1700 sections.append(Template(ObjCTemplates.GenericHeaderPostlude).substitute(None, **header_args))
1701 return '\n\n'.join(sections)
1702
1703diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py
1704index 95b57f671..8a6aac035 100755
1705--- a/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py
1706+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py
1707@@ -29,10 +29,10 @@ import logging
1708 import string
1709 from string import Template
1710
1711-from generator import Generator, ucfirst
1712-from models import ObjectType
1713-from objc_generator import ObjCGenerator
1714-from objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1715+from .generator import Generator, ucfirst
1716+from .models import ObjectType
1717+from .objc_generator import ObjCGenerator
1718+from .objc_generator_templates import ObjCGeneratorTemplates as ObjCTemplates
1719
1720 log = logging.getLogger('global')
1721
1722@@ -51,7 +51,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
1723 return '%sTypes.mm' % ObjCGenerator.OBJC_PREFIX
1724
1725 def domains_to_generate(self):
1726- return filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self))
1727+ return list(filter(ObjCGenerator.should_generate_domain_types_filter(self.model()), Generator.domains_to_generate(self)))
1728
1729 def generate_output(self):
1730 secondary_headers = [
1731@@ -69,7 +69,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
1732 sections = []
1733 sections.append(self.generate_license())
1734 sections.append(Template(ObjCTemplates.ImplementationPrelude).substitute(None, **header_args))
1735- sections.extend(map(self.generate_type_implementations, domains))
1736+ sections.extend(list(map(self.generate_type_implementations, domains)))
1737 sections.append(Template(ObjCTemplates.ImplementationPostlude).substitute(None, **header_args))
1738 return '\n\n'.join(sections)
1739
1740@@ -84,7 +84,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
1741 def generate_type_implementation(self, domain, declaration):
1742 lines = []
1743 lines.append('@implementation %s' % ObjCGenerator.objc_name_for_type(declaration.type))
1744- required_members = filter(lambda member: not member.is_optional, declaration.type_members)
1745+ required_members = [member for member in declaration.type_members if not member.is_optional]
1746 if required_members:
1747 lines.append('')
1748 lines.append(self._generate_init_method_for_required_members(domain, declaration, required_members))
1749@@ -112,7 +112,7 @@ class ObjCProtocolTypesImplementationGenerator(Generator):
1750 lines.append(' return nil;')
1751 lines.append('')
1752
1753- required_pointer_members = filter(lambda member: ObjCGenerator.is_type_objc_pointer_type(member.type), required_members)
1754+ required_pointer_members = [member for member in required_members if ObjCGenerator.is_type_objc_pointer_type(member.type)]
1755 if required_pointer_members:
1756 for member in required_pointer_members:
1757 var_name = ObjCGenerator.identifier_to_objc_identifier(member.member_name)
1758diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/generator.py b/Source/JavaScriptCore/inspector/scripts/codegen/generator.py
1759index 4c8f1998e..0ed011136 100755
1760--- a/Source/JavaScriptCore/inspector/scripts/codegen/generator.py
1761+++ b/Source/JavaScriptCore/inspector/scripts/codegen/generator.py
1762@@ -29,8 +29,8 @@ import os.path
1763 import re
1764 from string import Template
1765
1766-from generator_templates import GeneratorTemplates as Templates
1767-from models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
1768+from .generator_templates import GeneratorTemplates as Templates
1769+from .models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
1770
1771 log = logging.getLogger('global')
1772
1773@@ -87,7 +87,7 @@ class Generator:
1774
1775 # These methods are overridden by subclasses.
1776 def non_supplemental_domains(self):
1777- return filter(lambda domain: not domain.is_supplemental, self.model().domains)
1778+ return [domain for domain in self.model().domains if not domain.is_supplemental]
1779
1780 def domains_to_generate(self):
1781 return self.non_supplemental_domains()
1782@@ -129,7 +129,7 @@ class Generator:
1783 # set of types will not be automatically regenerated on subsequent calls to
1784 # Generator.types_needing_shape_assertions().
1785 def calculate_types_requiring_shape_assertions(self, domains):
1786- domain_names = map(lambda domain: domain.domain_name, domains)
1787+ domain_names = [domain.domain_name for domain in domains]
1788 log.debug("> Calculating types that need shape assertions (eligible domains: %s)" % ", ".join(domain_names))
1789
1790 # Mutates the passed-in set; this simplifies checks to prevent infinite recursion.
1791@@ -185,7 +185,7 @@ class Generator:
1792 for _type in all_types:
1793 if not isinstance(_type, EnumType):
1794 continue
1795- map(self._assign_encoding_for_enum_value, _type.enum_values())
1796+ list(map(self._assign_encoding_for_enum_value, _type.enum_values()))
1797
1798 def _assign_encoding_for_enum_value(self, enum_value):
1799 if enum_value in self._enum_value_encodings:
1800@@ -219,7 +219,7 @@ class Generator:
1801 return match.group(1).upper()
1802
1803 # Split on hyphen, introduce camelcase, and force uppercasing of acronyms.
1804- subwords = map(ucfirst, enum_value.split('-'))
1805+ subwords = list(map(ucfirst, enum_value.split('-')))
1806 return re.sub(re.compile(regex, re.IGNORECASE), replaceCallback, "".join(subwords))
1807
1808 @staticmethod
1809diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/models.py b/Source/JavaScriptCore/inspector/scripts/codegen/models.py
1810index ec16a1291..426ab4b2b 100755
1811--- a/Source/JavaScriptCore/inspector/scripts/codegen/models.py
1812+++ b/Source/JavaScriptCore/inspector/scripts/codegen/models.py
1813@@ -35,7 +35,7 @@ def ucfirst(str):
1814
1815
1816 def find_duplicates(l):
1817- return [key for key, count in collections.Counter(l).items() if count > 1]
1818+ return [key for key, count in list(collections.Counter(l).items()) if count > 1]
1819
1820
1821 _FRAMEWORK_CONFIG_MAP = {
1822diff --git a/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py b/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py
1823index f6dd03cb5..00015dc2b 100755
1824--- a/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py
1825+++ b/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py
1826@@ -24,8 +24,8 @@
1827 # THE POSSIBILITY OF SUCH DAMAGE.
1828
1829 import logging
1830-from generator import Generator, ucfirst
1831-from models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
1832+from .generator import Generator, ucfirst
1833+from .models import PrimitiveType, ObjectType, ArrayType, EnumType, AliasedType, Frameworks
1834
1835 log = logging.getLogger('global')
1836
1837@@ -50,7 +50,7 @@ _OBJC_IDENTIFIER_RENAME_MAP = {
1838 'id': 'identifier', # Page.Frame.id, Runtime.ExecutionContextDescription.id, Debugger.BreakpointAction.id
1839 }
1840
1841-_OBJC_IDENTIFIER_REVERSE_RENAME_MAP = dict((v, k) for k, v in _OBJC_IDENTIFIER_RENAME_MAP.iteritems())
1842+_OBJC_IDENTIFIER_REVERSE_RENAME_MAP = dict((v, k) for k, v in list(_OBJC_IDENTIFIER_RENAME_MAP.items()))
1843
1844
1845 class ObjCTypeCategory:
1846@@ -62,11 +62,11 @@ class ObjCTypeCategory:
1847 @staticmethod
1848 def category_for_type(_type):
1849 if (isinstance(_type, PrimitiveType)):
1850- if _type.raw_name() is 'string':
1851+ if _type.raw_name() == 'string':
1852 return ObjCTypeCategory.String
1853 if _type.raw_name() in ['object', 'any']:
1854 return ObjCTypeCategory.Object
1855- if _type.raw_name() is 'array':
1856+ if _type.raw_name() == 'array':
1857 return ObjCTypeCategory.Array
1858 return ObjCTypeCategory.Simple
1859 if (isinstance(_type, ObjectType)):
1860@@ -192,15 +192,15 @@ class ObjCGenerator:
1861
1862 @staticmethod
1863 def objc_type_for_raw_name(raw_name):
1864- if raw_name is 'string':
1865+ if raw_name == 'string':
1866 return 'NSString *'
1867- if raw_name is 'array':
1868+ if raw_name == 'array':
1869 return 'NSArray *'
1870- if raw_name is 'integer':
1871+ if raw_name == 'integer':
1872 return 'int'
1873- if raw_name is 'number':
1874+ if raw_name == 'number':
1875 return 'double'
1876- if raw_name is 'boolean':
1877+ if raw_name == 'boolean':
1878 return 'BOOL'
1879 if raw_name in ['any', 'object']:
1880 return '%s *' % ObjCGenerator.OBJC_JSON_OBJECT_BASE
1881@@ -208,9 +208,9 @@ class ObjCGenerator:
1882
1883 @staticmethod
1884 def objc_class_for_raw_name(raw_name):
1885- if raw_name is 'string':
1886+ if raw_name == 'string':
1887 return 'NSString'
1888- if raw_name is 'array':
1889+ if raw_name == 'array':
1890 return 'NSArray'
1891 if raw_name in ['integer', 'number', 'boolean']:
1892 return 'NSNumber'
1893@@ -222,13 +222,13 @@ class ObjCGenerator:
1894
1895 @staticmethod
1896 def protocol_type_for_raw_name(raw_name):
1897- if raw_name is 'string':
1898+ if raw_name == 'string':
1899 return 'String'
1900- if raw_name is 'integer':
1901+ if raw_name == 'integer':
1902 return 'int'
1903- if raw_name is 'number':
1904+ if raw_name == 'number':
1905 return 'double'
1906- if raw_name is 'boolean':
1907+ if raw_name == 'boolean':
1908 return 'bool'
1909 if raw_name in ['any', 'object']:
1910 return 'InspectorObject'
1911@@ -370,11 +370,11 @@ class ObjCGenerator:
1912 objc_class = ObjCGenerator.objc_class_for_type(var_type.element_type)
1913 if protocol_type == 'Inspector::Protocol::Array<String>':
1914 return 'inspectorStringArrayArray(%s)' % var_name
1915- if protocol_type is 'String' and objc_class is 'NSString':
1916+ if protocol_type == 'String' and objc_class == 'NSString':
1917 return 'inspectorStringArray(%s)' % var_name
1918- if protocol_type is 'int' and objc_class is 'NSNumber':
1919+ if protocol_type == 'int' and objc_class == 'NSNumber':
1920 return 'inspectorIntegerArray(%s)' % var_name
1921- if protocol_type is 'double' and objc_class is 'NSNumber':
1922+ if protocol_type == 'double' and objc_class == 'NSNumber':
1923 return 'inspectorDoubleArray(%s)' % var_name
1924 return 'inspectorObjectArray(%s)' % var_name
1925
1926@@ -404,9 +404,9 @@ class ObjCGenerator:
1927 return '[[[%s alloc] initWithInspectorObject:%s] autorelease]' % (objc_class, var_name)
1928 if category is ObjCTypeCategory.Array:
1929 objc_class = ObjCGenerator.objc_class_for_type(var_type.element_type)
1930- if objc_class is 'NSString':
1931+ if objc_class == 'NSString':
1932 return 'objcStringArray(%s)' % var_name
1933- if objc_class is 'NSNumber': # FIXME: Integer or Double?
1934+ if objc_class == 'NSNumber': # FIXME: Integer or Double?
1935 return 'objcIntegerArray(%s)' % var_name
1936 return 'objcArray<%s>(%s)' % (objc_class, var_name)
1937
1938@@ -425,11 +425,11 @@ class ObjCGenerator:
1939 return sub_expression
1940 if category is ObjCTypeCategory.Array:
1941 objc_class = ObjCGenerator.objc_class_for_type(member.type.element_type)
1942- if objc_class is 'NSString':
1943+ if objc_class == 'NSString':
1944 return 'inspectorStringArray(%s)' % sub_expression
1945- if objc_class is 'NSNumber':
1946+ if objc_class == 'NSNumber':
1947 protocol_type = ObjCGenerator.protocol_type_for_type(member.type.element_type)
1948- if protocol_type is 'double':
1949+ if protocol_type == 'double':
1950 return 'inspectorDoubleArray(%s)' % sub_expression
1951 return 'inspectorIntegerArray(%s)' % sub_expression
1952 return 'inspectorObjectArray(%s)' % sub_expression
1953@@ -449,11 +449,11 @@ class ObjCGenerator:
1954 if category is ObjCTypeCategory.Array:
1955 protocol_type = ObjCGenerator.protocol_type_for_type(member.type.element_type)
1956 objc_class = ObjCGenerator.objc_class_for_type(member.type.element_type)
1957- if objc_class is 'NSString':
1958+ if objc_class == 'NSString':
1959 return 'objcStringArray(%s)' % sub_expression
1960- if objc_class is 'NSNumber':
1961+ if objc_class == 'NSNumber':
1962 protocol_type = ObjCGenerator.protocol_type_for_type(member.type.element_type)
1963- if protocol_type is 'double':
1964+ if protocol_type == 'double':
1965 return 'objcDoubleArray(%s)' % sub_expression
1966 return 'objcIntegerArray(%s)' % sub_expression
1967 return 'objcArray<%s>(%s)' % (objc_class, sub_expression)
1968@@ -470,17 +470,17 @@ class ObjCGenerator:
1969 _type = _type.aliased_type
1970 if (isinstance(_type, PrimitiveType)):
1971 raw_name = _type.raw_name()
1972- if raw_name is 'boolean':
1973+ if raw_name == 'boolean':
1974 return 'setBool'
1975- if raw_name is 'integer':
1976+ if raw_name == 'integer':
1977 return 'setInteger'
1978- if raw_name is 'number':
1979+ if raw_name == 'number':
1980 return 'setDouble'
1981- if raw_name is 'string':
1982+ if raw_name == 'string':
1983 return 'setString'
1984 if raw_name in ['any', 'object']:
1985 return 'setObject'
1986- if raw_name is 'array':
1987+ if raw_name == 'array':
1988 return 'setInspectorArray'
1989 return None
1990 if (isinstance(_type, EnumType)):
1991@@ -501,17 +501,17 @@ class ObjCGenerator:
1992 _type = _type.aliased_type
1993 if (isinstance(_type, PrimitiveType)):
1994 raw_name = _type.raw_name()
1995- if raw_name is 'boolean':
1996+ if raw_name == 'boolean':
1997 return 'boolForKey'
1998- if raw_name is 'integer':
1999+ if raw_name == 'integer':
2000 return 'integerForKey'
2001- if raw_name is 'number':
2002+ if raw_name == 'number':
2003 return 'doubleForKey'
2004- if raw_name is 'string':
2005+ if raw_name == 'string':
2006 return 'stringForKey'
2007 if raw_name in ['any', 'object']:
2008 return 'objectForKey'
2009- if raw_name is 'array':
2010+ if raw_name == 'array':
2011 return 'inspectorArrayForKey'
2012 return None
2013 if (isinstance(_type, EnumType)):
2014diff --git a/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py b/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
2015index a1987aa90..86cbd4934 100755
2016--- a/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
2017+++ b/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
2018@@ -48,7 +48,7 @@ try:
2019
2020 # When copying generator files to JavaScriptCore's private headers on Mac,
2021 # the codegen/ module directory is flattened. So, import directly.
2022-except ImportError, e:
2023+except ImportError as e:
2024 # log.error(e) # Uncomment this to debug early import errors.
2025 import models
2026 from models import *
2027diff --git a/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py b/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
2028index de32ef6c4..18fff7167 100644
2029--- a/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
2030+++ b/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
2031@@ -410,7 +410,7 @@ class InputsModel:
2032 self.inputs_by_name = {}
2033
2034 def enum_types(self):
2035- _enums = filter(lambda x: x.is_enum() or x.is_enum_class(), self.types)
2036+ _enums = [x for x in self.types if x.is_enum() or x.is_enum_class()]
2037 return sorted(_enums, key=lambda _enum: _enum.type_name())
2038
2039 def get_type_for_member(self, member):
2040@@ -424,7 +424,7 @@ class InputsModel:
2041 if not isinstance(json['types'], dict):
2042 raise ParseException("Malformed specification: types is not a dict of framework->type list")
2043
2044- for framework_name, type_list in json['types'].iteritems():
2045+ for framework_name, type_list in json['types'].items():
2046 if not isinstance(type_list, list):
2047 raise ParseException("Malformed specification: type list for framework %s is not a list" % framework_name)
2048
2049@@ -436,7 +436,7 @@ class InputsModel:
2050 if not isinstance(json['inputs'], dict):
2051 raise ParseException("Malformed specification: inputs is not a dict of framework->input list")
2052
2053- for framework_name, input_list in json['inputs'].iteritems():
2054+ for framework_name, input_list in json['inputs'].items():
2055 if not isinstance(input_list, list):
2056 raise ParseException("Malformed specification: input list for framework %s is not a list" % framework_name)
2057
2058@@ -597,8 +597,8 @@ class Generator:
2059 implementation_file.close()
2060
2061 def generate_header(self):
2062- enums_to_generate = filter(self.should_generate_item, self._model.enum_types())
2063- inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
2064+ enums_to_generate = list(filter(self.should_generate_item, self._model.enum_types()))
2065+ inputs_to_generate = list(filter(self.should_generate_item, self._model.inputs))
2066
2067 template_arguments = {
2068 'licenseBlock': self.generate_license(),
2069@@ -620,8 +620,8 @@ class Generator:
2070 return Template(Templates.HeaderSkeleton).substitute(template_arguments)
2071
2072 def generate_implementation(self):
2073- enums_to_generate = filter(self.should_generate_item, self._model.enum_types())
2074- inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
2075+ enums_to_generate = list(filter(self.should_generate_item, self._model.enum_types()))
2076+ inputs_to_generate = list(filter(self.should_generate_item, self._model.inputs))
2077
2078 template_arguments = {
2079 'licenseBlock': self.generate_license(),
2080@@ -680,7 +680,7 @@ class Generator:
2081 lines = []
2082
2083 decls_by_framework = {}
2084- frameworks = [Framework.fromString(s) for s in FRAMEWORK_CONFIG_MAP.keys() if s != Frameworks.Global.name]
2085+ frameworks = [Framework.fromString(s) for s in list(FRAMEWORK_CONFIG_MAP.keys()) if s != Frameworks.Global.name]
2086 for framework in frameworks:
2087 decls_by_framework[framework] = []
2088
2089@@ -808,7 +808,7 @@ class Generator:
2090 return Template(template).substitute(template_arguments)
2091
2092 def generate_for_each_macro(self):
2093- inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
2094+ inputs_to_generate = list(filter(self.should_generate_item, self._model.inputs))
2095
2096 macro_name = "%s_REPLAY_INPUT_NAMES_FOR_EACH" % self.setting('prefix').upper()
2097 lines = []
2098@@ -858,7 +858,7 @@ class Generator:
2099 }
2100 encodeLines.append(Template(encode_template).substitute(template_arguments))
2101
2102- for guard, guard_values in _type.guard_values_map.iteritems():
2103+ for guard, guard_values in _type.guard_values_map.items():
2104 guardedLines = []
2105 for guard_value in guard_values:
2106 template_arguments = {
2107@@ -880,7 +880,7 @@ class Generator:
2108 }
2109 decodeLines.append(Template(decode_template).substitute(template_arguments))
2110
2111- for guard, guard_values in _type.guard_values_map.iteritems():
2112+ for guard, guard_values in _type.guard_values_map.items():
2113 guardedLines = []
2114 for i, guard_value in enumerate(guard_values):
2115 template_arguments = {
2116@@ -999,7 +999,7 @@ def generate_from_specifications(input_filepaths=[], output_prefix="", output_di
2117 except ValueError as e:
2118 raise Exception("Error parsing valid JSON in file: " + input_filepath)
2119
2120- specifications = map(parse_json_from_file, input_filepaths)
2121+ specifications = list(map(parse_json_from_file, input_filepaths))
2122
2123 model = InputsModel()
2124 for spec in specifications:
2125@@ -1012,7 +1012,7 @@ def generate_from_specifications(input_filepaths=[], output_prefix="", output_di
2126
2127
2128 if __name__ == '__main__':
2129- allowed_framework_names = FRAMEWORK_CONFIG_MAP.keys()
2130+ allowed_framework_names = list(FRAMEWORK_CONFIG_MAP.keys())
2131
2132 cli_parser = optparse.OptionParser(usage="usage: %prog [options] <Inputs.json> [, <MoreInputs.json> ]")
2133 cli_parser.add_option("-o", "--outputDir", help="Directory where generated files should be written.")
2134diff --git a/Source/ThirdParty/ANGLE/generate_winrt_projects.py b/Source/ThirdParty/ANGLE/generate_winrt_projects.py
2135index e0e517772..5e18782c1 100644
2136--- a/Source/ThirdParty/ANGLE/generate_winrt_projects.py
2137+++ b/Source/ThirdParty/ANGLE/generate_winrt_projects.py
2138@@ -30,8 +30,8 @@ def generateProjects(generation_dir, build_winphone):
2139 gyp_cmd += ' -D angle_standalone=1'
2140 gyp_cmd += ' ' + os.path.join(script_dir, 'angle.gyp')
2141
2142- print 'Generating projects to ' + generation_dir + ' from gyp files...'
2143- print gyp_cmd
2144+ print('Generating projects to ' + generation_dir + ' from gyp files...')
2145+ print(gyp_cmd)
2146 sys.stdout.flush()
2147 os.system(gyp_cmd)
2148
2149diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py b/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
2150index cf039bfc2..951aa146e 100644
2151--- a/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
2152+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Float16ToFloat32.py
2153@@ -42,7 +42,7 @@ def convertOffset(i):
2154 else:
2155 return 1024
2156
2157-print """//
2158+print("""//
2159 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
2160 // Use of this source code is governed by a BSD-style license that can be
2161 // found in the LICENSE file.
2162@@ -52,27 +52,27 @@ print """//
2163
2164 namespace gl
2165 {
2166-"""
2167+""")
2168
2169-print "const static unsigned g_mantissa[2048] = {"
2170+print("const static unsigned g_mantissa[2048] = {")
2171 for i in range(0, 2048):
2172- print " %#010x," % convertMantissa(i)
2173-print "};\n"
2174+ print(" %#010x," % convertMantissa(i))
2175+print("};\n")
2176
2177-print "const static unsigned g_exponent[64] = {"
2178+print("const static unsigned g_exponent[64] = {")
2179 for i in range(0, 64):
2180- print " %#010x," % convertExponent(i)
2181-print "};\n"
2182+ print(" %#010x," % convertExponent(i))
2183+print("};\n")
2184
2185-print "const static unsigned g_offset[64] = {"
2186+print("const static unsigned g_offset[64] = {")
2187 for i in range(0, 64):
2188- print " %#010x," % convertOffset(i)
2189-print "};\n"
2190+ print(" %#010x," % convertOffset(i))
2191+print("};\n")
2192
2193-print """float float16ToFloat32(unsigned short h)
2194+print("""float float16ToFloat32(unsigned short h)
2195 {
2196 unsigned i32 = g_mantissa[g_offset[h >> 10] + (h & 0x3ff)] + g_exponent[h >> 10];
2197 return *(float*) &i32;
2198 }
2199 }
2200-"""
2201+""")
2202diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
2203index 5d64fbd23..e0be48b55 100644
2204--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
2205+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/generate_new_renderer.py
2206@@ -21,7 +21,7 @@ import re
2207 import string
2208
2209 if len(sys.argv) < 3:
2210- print('Usage: ' + sys.argv[0] + ' <renderer name> <renderer suffix>')
2211+ print(('Usage: ' + sys.argv[0] + ' <renderer name> <renderer suffix>'))
2212
2213 renderer_name = sys.argv[1]
2214 renderer_suffix = sys.argv[2]
2215diff --git a/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py b/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py
2216index 148444ca7..333d55590 100755
2217--- a/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py
2218+++ b/Source/ThirdParty/gtest/scripts/fuse_gtest_files.py
2219@@ -90,8 +90,8 @@ def VerifyFileExists(directory, relative_path):
2220 """
2221
2222 if not os.path.isfile(os.path.join(directory, relative_path)):
2223- print 'ERROR: Cannot find %s in directory %s.' % (relative_path,
2224- directory)
2225+ print('ERROR: Cannot find %s in directory %s.' % (relative_path,
2226+ directory))
2227 print ('Please either specify a valid project root directory '
2228 'or omit it on the command line.')
2229 sys.exit(1)
2230@@ -119,11 +119,11 @@ def VerifyOutputFile(output_dir, relative_path):
2231 # TODO(wan@google.com): The following user-interaction doesn't
2232 # work with automated processes. We should provide a way for the
2233 # Makefile to force overwriting the files.
2234- print ('%s already exists in directory %s - overwrite it? (y/N) ' %
2235- (relative_path, output_dir))
2236+ print(('%s already exists in directory %s - overwrite it? (y/N) ' %
2237+ (relative_path, output_dir)))
2238 answer = sys.stdin.readline().strip()
2239 if answer not in ['y', 'Y']:
2240- print 'ABORTED.'
2241+ print('ABORTED.')
2242 sys.exit(1)
2243
2244 # Makes sure the directory holding the output file exists; creates
2245@@ -242,7 +242,7 @@ def main():
2246 # fuse_gtest_files.py GTEST_ROOT_DIR OUTPUT_DIR
2247 FuseGTest(sys.argv[1], sys.argv[2])
2248 else:
2249- print __doc__
2250+ print(__doc__)
2251 sys.exit(1)
2252
2253
2254diff --git a/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py b/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py
2255index 8307134ad..748bcfeb4 100755
2256--- a/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py
2257+++ b/Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py
2258@@ -183,7 +183,7 @@ def Title(word):
2259 def OneTo(n):
2260 """Returns the list [1, 2, 3, ..., n]."""
2261
2262- return range(1, n + 1)
2263+ return list(range(1, n + 1))
2264
2265
2266 def Iter(n, format, sep=''):
2267@@ -305,13 +305,13 @@ def GenerateFile(path, content):
2268 """Given a file path and a content string, overwrites it with the
2269 given content."""
2270
2271- print 'Updating file %s . . .' % path
2272+ print('Updating file %s . . .' % path)
2273
2274 f = file(path, 'w+')
2275- print >>f, content,
2276+ print(content, end=' ', file=f)
2277 f.close()
2278
2279- print 'File %s has been updated.' % path
2280+ print('File %s has been updated.' % path)
2281
2282
2283 def GenerateHeader(n):
2284@@ -720,8 +720,8 @@ def _Main():
2285 unit test."""
2286
2287 if len(sys.argv) != 2:
2288- print __doc__
2289- print 'Author: ' + __author__
2290+ print(__doc__)
2291+ print('Author: ' + __author__)
2292 sys.exit(1)
2293
2294 n = int(sys.argv[1])
2295diff --git a/Source/ThirdParty/gtest/scripts/pump.py b/Source/ThirdParty/gtest/scripts/pump.py
2296index f15c1b6ce..92b70ecec 100755
2297--- a/Source/ThirdParty/gtest/scripts/pump.py
2298+++ b/Source/ThirdParty/gtest/scripts/pump.py
2299@@ -236,7 +236,7 @@ def ParseToken(lines, pos, regex, token_type):
2300 if m and not m.start():
2301 return MakeToken(lines, pos, pos + m.end(), token_type)
2302 else:
2303- print 'ERROR: %s expected at %s.' % (token_type, pos)
2304+ print('ERROR: %s expected at %s.' % (token_type, pos))
2305 sys.exit(1)
2306
2307
2308@@ -263,8 +263,8 @@ def SkipUntil(lines, pos, regex, token_type):
2309 if m:
2310 return pos + m.start()
2311 else:
2312- print ('ERROR: %s expected on line %s after column %s.' %
2313- (token_type, pos.line + 1, pos.column))
2314+ print(('ERROR: %s expected on line %s after column %s.' %
2315+ (token_type, pos.line + 1, pos.column)))
2316 sys.exit(1)
2317
2318
2319@@ -444,8 +444,8 @@ def PushFront(a_list, elem):
2320 def PopToken(a_list, token_type=None):
2321 token = PopFront(a_list)
2322 if token_type is not None and token.token_type != token_type:
2323- print 'ERROR: %s expected at %s' % (token_type, token.start)
2324- print 'ERROR: %s found instead' % (token,)
2325+ print('ERROR: %s expected at %s' % (token_type, token.start))
2326+ print('ERROR: %s found instead' % (token,))
2327 sys.exit(1)
2328
2329 return token
2330@@ -609,16 +609,16 @@ class Env:
2331 if identifier == var:
2332 return value
2333
2334- print 'ERROR: meta variable %s is undefined.' % (identifier,)
2335+ print('ERROR: meta variable %s is undefined.' % (identifier,))
2336 sys.exit(1)
2337
2338 def EvalExp(self, exp):
2339 try:
2340 result = eval(exp.python_exp)
2341- except Exception, e:
2342- print 'ERROR: caught exception %s: %s' % (e.__class__.__name__, e)
2343- print ('ERROR: failed to evaluate meta expression %s at %s' %
2344- (exp.python_exp, exp.token.start))
2345+ except Exception as e:
2346+ print('ERROR: caught exception %s: %s' % (e.__class__.__name__, e))
2347+ print(('ERROR: failed to evaluate meta expression %s at %s' %
2348+ (exp.python_exp, exp.token.start)))
2349 sys.exit(1)
2350 return result
2351
2352@@ -627,7 +627,7 @@ class Env:
2353 if identifier == var:
2354 return (lower, upper)
2355
2356- print 'ERROR: range %s is undefined.' % (identifier,)
2357+ print('ERROR: range %s is undefined.' % (identifier,))
2358 sys.exit(1)
2359
2360
2361@@ -687,8 +687,8 @@ def RunAtomicCode(env, node, output):
2362 elif isinstance(node, CodeNode):
2363 RunCode(env.Clone(), node, output)
2364 else:
2365- print 'BAD'
2366- print node
2367+ print('BAD')
2368+ print(node)
2369 sys.exit(1)
2370
2371
2372@@ -807,7 +807,7 @@ def BeautifyCode(string):
2373
2374 def main(argv):
2375 if len(argv) == 1:
2376- print __doc__
2377+ print(__doc__)
2378 sys.exit(1)
2379
2380 file_path = argv[-1]
2381@@ -820,7 +820,7 @@ def main(argv):
2382 else:
2383 output_file_path = '-'
2384 if output_file_path == '-':
2385- print output_str,
2386+ print(output_str, end=' ')
2387 else:
2388 output_file = file(output_file_path, 'w')
2389 output_file.write('// This file was GENERATED by command:\n')
2390diff --git a/Source/ThirdParty/gtest/scripts/upload.py b/Source/ThirdParty/gtest/scripts/upload.py
2391index 6e6f9a147..4890ea16d 100755
2392--- a/Source/ThirdParty/gtest/scripts/upload.py
2393+++ b/Source/ThirdParty/gtest/scripts/upload.py
2394@@ -31,7 +31,7 @@ against by using the '--rev' option.
2395 # This code is derived from appcfg.py in the App Engine SDK (open source),
2396 # and from ASPN recipe #146306.
2397
2398-import cookielib
2399+import http.cookiejar
2400 import getpass
2401 import logging
2402 import md5
2403@@ -42,9 +42,9 @@ import re
2404 import socket
2405 import subprocess
2406 import sys
2407-import urllib
2408-import urllib2
2409-import urlparse
2410+import urllib.request, urllib.parse, urllib.error
2411+import urllib.request, urllib.error, urllib.parse
2412+import urllib.parse
2413
2414 try:
2415 import readline
2416@@ -79,15 +79,15 @@ def GetEmail(prompt):
2417 last_email = last_email_file.readline().strip("\n")
2418 last_email_file.close()
2419 prompt += " [%s]" % last_email
2420- except IOError, e:
2421+ except IOError as e:
2422 pass
2423- email = raw_input(prompt + ": ").strip()
2424+ email = input(prompt + ": ").strip()
2425 if email:
2426 try:
2427 last_email_file = open(last_email_file_name, "w")
2428 last_email_file.write(email)
2429 last_email_file.close()
2430- except IOError, e:
2431+ except IOError as e:
2432 pass
2433 else:
2434 email = last_email
2435@@ -103,20 +103,20 @@ def StatusUpdate(msg):
2436 msg: The string to print.
2437 """
2438 if verbosity > 0:
2439- print msg
2440+ print(msg)
2441
2442
2443 def ErrorExit(msg):
2444 """Print an error message to stderr and exit."""
2445- print >>sys.stderr, msg
2446+ print(msg, file=sys.stderr)
2447 sys.exit(1)
2448
2449
2450-class ClientLoginError(urllib2.HTTPError):
2451+class ClientLoginError(urllib.error.HTTPError):
2452 """Raised to indicate there was an error authenticating with ClientLogin."""
2453
2454 def __init__(self, url, code, msg, headers, args):
2455- urllib2.HTTPError.__init__(self, url, code, msg, headers, None)
2456+ urllib.error.HTTPError.__init__(self, url, code, msg, headers, None)
2457 self.args = args
2458 self.reason = args["Error"]
2459
2460@@ -162,10 +162,10 @@ class AbstractRpcServer(object):
2461 def _CreateRequest(self, url, data=None):
2462 """Creates a new urllib request."""
2463 logging.debug("Creating request for: '%s' with payload:\n%s", url, data)
2464- req = urllib2.Request(url, data=data)
2465+ req = urllib.request.Request(url, data=data)
2466 if self.host_override:
2467 req.add_header("Host", self.host_override)
2468- for key, value in self.extra_headers.iteritems():
2469+ for key, value in self.extra_headers.items():
2470 req.add_header(key, value)
2471 return req
2472
2473@@ -189,7 +189,7 @@ class AbstractRpcServer(object):
2474 account_type = "HOSTED"
2475 req = self._CreateRequest(
2476 url="https://www.google.com/accounts/ClientLogin",
2477- data=urllib.urlencode({
2478+ data=urllib.parse.urlencode({
2479 "Email": email,
2480 "Passwd": password,
2481 "service": "ah",
2482@@ -203,7 +203,7 @@ class AbstractRpcServer(object):
2483 response_dict = dict(x.split("=")
2484 for x in response_body.split("\n") if x)
2485 return response_dict["Auth"]
2486- except urllib2.HTTPError, e:
2487+ except urllib.error.HTTPError as e:
2488 if e.code == 403:
2489 body = e.read()
2490 response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
2491@@ -225,14 +225,14 @@ class AbstractRpcServer(object):
2492 continue_location = "http://localhost/"
2493 args = {"continue": continue_location, "auth": auth_token}
2494 req = self._CreateRequest("http://%s/_ah/login?%s" %
2495- (self.host, urllib.urlencode(args)))
2496+ (self.host, urllib.parse.urlencode(args)))
2497 try:
2498 response = self.opener.open(req)
2499- except urllib2.HTTPError, e:
2500+ except urllib.error.HTTPError as e:
2501 response = e
2502 if (response.code != 302 or
2503 response.info()["location"] != continue_location):
2504- raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg,
2505+ raise urllib.error.HTTPError(req.get_full_url(), response.code, response.msg,
2506 response.headers, response.fp)
2507 self.authenticated = True
2508
2509@@ -255,34 +255,34 @@ class AbstractRpcServer(object):
2510 credentials = self.auth_function()
2511 try:
2512 auth_token = self._GetAuthToken(credentials[0], credentials[1])
2513- except ClientLoginError, e:
2514+ except ClientLoginError as e:
2515 if e.reason == "BadAuthentication":
2516- print >>sys.stderr, "Invalid username or password."
2517+ print("Invalid username or password.", file=sys.stderr)
2518 continue
2519 if e.reason == "CaptchaRequired":
2520- print >>sys.stderr, (
2521+ print((
2522 "Please go to\n"
2523 "https://www.google.com/accounts/DisplayUnlockCaptcha\n"
2524- "and verify you are a human. Then try again.")
2525+ "and verify you are a human. Then try again."), file=sys.stderr)
2526 break
2527 if e.reason == "NotVerified":
2528- print >>sys.stderr, "Account not verified."
2529+ print("Account not verified.", file=sys.stderr)
2530 break
2531 if e.reason == "TermsNotAgreed":
2532- print >>sys.stderr, "User has not agreed to TOS."
2533+ print("User has not agreed to TOS.", file=sys.stderr)
2534 break
2535 if e.reason == "AccountDeleted":
2536- print >>sys.stderr, "The user account has been deleted."
2537+ print("The user account has been deleted.", file=sys.stderr)
2538 break
2539 if e.reason == "AccountDisabled":
2540- print >>sys.stderr, "The user account has been disabled."
2541+ print("The user account has been disabled.", file=sys.stderr)
2542 break
2543 if e.reason == "ServiceDisabled":
2544- print >>sys.stderr, ("The user's access to the service has been "
2545- "disabled.")
2546+ print(("The user's access to the service has been "
2547+ "disabled."), file=sys.stderr)
2548 break
2549 if e.reason == "ServiceUnavailable":
2550- print >>sys.stderr, "The service is not available; try again later."
2551+ print("The service is not available; try again later.", file=sys.stderr)
2552 break
2553 raise
2554 self._GetAuthCookie(auth_token)
2555@@ -319,7 +319,7 @@ class AbstractRpcServer(object):
2556 args = dict(kwargs)
2557 url = "http://%s%s" % (self.host, request_path)
2558 if args:
2559- url += "?" + urllib.urlencode(args)
2560+ url += "?" + urllib.parse.urlencode(args)
2561 req = self._CreateRequest(url=url, data=payload)
2562 req.add_header("Content-Type", content_type)
2563 try:
2564@@ -327,7 +327,7 @@ class AbstractRpcServer(object):
2565 response = f.read()
2566 f.close()
2567 return response
2568- except urllib2.HTTPError, e:
2569+ except urllib.error.HTTPError as e:
2570 if tries > 3:
2571 raise
2572 elif e.code == 401:
2573@@ -357,35 +357,35 @@ class HttpRpcServer(AbstractRpcServer):
2574 Returns:
2575 A urllib2.OpenerDirector object.
2576 """
2577- opener = urllib2.OpenerDirector()
2578- opener.add_handler(urllib2.ProxyHandler())
2579- opener.add_handler(urllib2.UnknownHandler())
2580- opener.add_handler(urllib2.HTTPHandler())
2581- opener.add_handler(urllib2.HTTPDefaultErrorHandler())
2582- opener.add_handler(urllib2.HTTPSHandler())
2583+ opener = urllib.request.OpenerDirector()
2584+ opener.add_handler(urllib.request.ProxyHandler())
2585+ opener.add_handler(urllib.request.UnknownHandler())
2586+ opener.add_handler(urllib.request.HTTPHandler())
2587+ opener.add_handler(urllib.request.HTTPDefaultErrorHandler())
2588+ opener.add_handler(urllib.request.HTTPSHandler())
2589 opener.add_handler(urllib2.HTTPErrorProcessor())
2590 if self.save_cookies:
2591 self.cookie_file = os.path.expanduser("~/.codereview_upload_cookies")
2592- self.cookie_jar = cookielib.MozillaCookieJar(self.cookie_file)
2593+ self.cookie_jar = http.cookiejar.MozillaCookieJar(self.cookie_file)
2594 if os.path.exists(self.cookie_file):
2595 try:
2596 self.cookie_jar.load()
2597 self.authenticated = True
2598 StatusUpdate("Loaded authentication cookies from %s" %
2599 self.cookie_file)
2600- except (cookielib.LoadError, IOError):
2601+ except (http.cookiejar.LoadError, IOError):
2602 # Failed to load cookies - just ignore them.
2603 pass
2604 else:
2605 # Create an empty cookie file with mode 600
2606- fd = os.open(self.cookie_file, os.O_CREAT, 0600)
2607+ fd = os.open(self.cookie_file, os.O_CREAT, 0o600)
2608 os.close(fd)
2609 # Always chmod the cookie file
2610- os.chmod(self.cookie_file, 0600)
2611+ os.chmod(self.cookie_file, 0o600)
2612 else:
2613 # Don't save cookies across runs of update.py.
2614- self.cookie_jar = cookielib.CookieJar()
2615- opener.add_handler(urllib2.HTTPCookieProcessor(self.cookie_jar))
2616+ self.cookie_jar = http.cookiejar.CookieJar()
2617+ opener.add_handler(urllib.request.HTTPCookieProcessor(self.cookie_jar))
2618 return opener
2619
2620
2621@@ -560,7 +560,7 @@ def RunShellWithReturnCode(command, print_output=False,
2622 line = p.stdout.readline()
2623 if not line:
2624 break
2625- print line.strip("\n")
2626+ print(line.strip("\n"))
2627 output_array.append(line)
2628 output = "".join(output_array)
2629 else:
2630@@ -568,7 +568,7 @@ def RunShellWithReturnCode(command, print_output=False,
2631 p.wait()
2632 errout = p.stderr.read()
2633 if print_output and errout:
2634- print >>sys.stderr, errout
2635+ print(errout, file=sys.stderr)
2636 p.stdout.close()
2637 p.stderr.close()
2638 return output, p.returncode
2639@@ -614,11 +614,11 @@ class VersionControlSystem(object):
2640 """Show an "are you sure?" prompt if there are unknown files."""
2641 unknown_files = self.GetUnknownFiles()
2642 if unknown_files:
2643- print "The following files are not added to version control:"
2644+ print("The following files are not added to version control:")
2645 for line in unknown_files:
2646- print line
2647+ print(line)
2648 prompt = "Are you sure to continue?(y/N) "
2649- answer = raw_input(prompt).strip()
2650+ answer = input(prompt).strip()
2651 if answer != "y":
2652 ErrorExit("User aborted")
2653
2654@@ -670,13 +670,13 @@ class VersionControlSystem(object):
2655 else:
2656 type = "current"
2657 if len(content) > MAX_UPLOAD_SIZE:
2658- print ("Not uploading the %s file for %s because it's too large." %
2659- (type, filename))
2660+ print(("Not uploading the %s file for %s because it's too large." %
2661+ (type, filename)))
2662 file_too_large = True
2663 content = ""
2664 checksum = md5.new(content).hexdigest()
2665 if options.verbose > 0 and not file_too_large:
2666- print "Uploading %s file for %s" % (type, filename)
2667+ print("Uploading %s file for %s" % (type, filename))
2668 url = "/%d/upload_content/%d/%d" % (int(issue), int(patchset), file_id)
2669 form_fields = [("filename", filename),
2670 ("status", status),
2671@@ -698,7 +698,7 @@ class VersionControlSystem(object):
2672
2673 patches = dict()
2674 [patches.setdefault(v, k) for k, v in patch_list]
2675- for filename in patches.keys():
2676+ for filename in list(patches.keys()):
2677 base_content, new_content, is_binary, status = files[filename]
2678 file_id_str = patches.get(filename)
2679 if file_id_str.find("nobase") != -1:
2680@@ -755,8 +755,8 @@ class SubversionVCS(VersionControlSystem):
2681 words = line.split()
2682 if len(words) == 2 and words[0] == "URL:":
2683 url = words[1]
2684- scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
2685- username, netloc = urllib.splituser(netloc)
2686+ scheme, netloc, path, params, query, fragment = urllib.parse.urlparse(url)
2687+ username, netloc = urllib.parse.splituser(netloc)
2688 if username:
2689 logging.info("Removed username from base URL")
2690 if netloc.endswith("svn.python.org"):
2691@@ -774,12 +774,12 @@ class SubversionVCS(VersionControlSystem):
2692 logging.info("Guessed CollabNet base = %s", base)
2693 elif netloc.endswith(".googlecode.com"):
2694 path = path + "/"
2695- base = urlparse.urlunparse(("http", netloc, path, params,
2696+ base = urllib.parse.urlunparse(("http", netloc, path, params,
2697 query, fragment))
2698 logging.info("Guessed Google Code base = %s", base)
2699 else:
2700 path = path + "/"
2701- base = urlparse.urlunparse((scheme, netloc, path, params,
2702+ base = urllib.parse.urlunparse((scheme, netloc, path, params,
2703 query, fragment))
2704 logging.info("Guessed base = %s", base)
2705 return base
2706@@ -1187,8 +1187,8 @@ def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
2707 rv = []
2708 for patch in patches:
2709 if len(patch[1]) > MAX_UPLOAD_SIZE:
2710- print ("Not uploading the patch for " + patch[0] +
2711- " because the file is too large.")
2712+ print(("Not uploading the patch for " + patch[0] +
2713+ " because the file is too large."))
2714 continue
2715 form_fields = [("filename", patch[0])]
2716 if not options.download_base:
2717@@ -1196,7 +1196,7 @@ def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
2718 files = [("data", "data.diff", patch[1])]
2719 ctype, body = EncodeMultipartFormData(form_fields, files)
2720 url = "/%d/upload_patch/%d" % (int(issue), int(patchset))
2721- print "Uploading patch for " + patch[0]
2722+ print("Uploading patch for " + patch[0])
2723 response_body = rpc_server.Send(url, body, content_type=ctype)
2724 lines = response_body.splitlines()
2725 if not lines or lines[0] != "OK":
2726@@ -1223,7 +1223,8 @@ def GuessVCS(options):
2727 out, returncode = RunShellWithReturnCode(["hg", "root"])
2728 if returncode == 0:
2729 return MercurialVCS(options, out.strip())
2730- except OSError, (errno, message):
2731+ except OSError as xxx_todo_changeme:
2732+ (errno, message) = xxx_todo_changeme.args
2733 if errno != 2: # ENOENT -- they don't have hg installed.
2734 raise
2735
2736@@ -1239,7 +1240,8 @@ def GuessVCS(options):
2737 "--is-inside-work-tree"])
2738 if returncode == 0:
2739 return GitVCS(options)
2740- except OSError, (errno, message):
2741+ except OSError as xxx_todo_changeme1:
2742+ (errno, message) = xxx_todo_changeme1.args
2743 if errno != 2: # ENOENT -- they don't have git installed.
2744 raise
2745
2746@@ -1286,12 +1288,12 @@ def RealMain(argv, data=None):
2747 data = vcs.GenerateDiff(args)
2748 files = vcs.GetBaseFiles(data)
2749 if verbosity >= 1:
2750- print "Upload server:", options.server, "(change with -s/--server)"
2751+ print("Upload server:", options.server, "(change with -s/--server)")
2752 if options.issue:
2753 prompt = "Message describing this patch set: "
2754 else:
2755 prompt = "New issue subject: "
2756- message = options.message or raw_input(prompt).strip()
2757+ message = options.message or input(prompt).strip()
2758 if not message:
2759 ErrorExit("A non-empty message is required")
2760 rpc_server = GetRpcServer(options)
2761@@ -1324,7 +1326,7 @@ def RealMain(argv, data=None):
2762 # Send a hash of all the base file so the server can determine if a copy
2763 # already exists in an earlier patchset.
2764 base_hashes = ""
2765- for file, info in files.iteritems():
2766+ for file, info in files.items():
2767 if not info[0] is None:
2768 checksum = md5.new(info[0]).hexdigest()
2769 if base_hashes:
2770@@ -1338,7 +1340,7 @@ def RealMain(argv, data=None):
2771 if not options.download_base:
2772 form_fields.append(("content_upload", "1"))
2773 if len(data) > MAX_UPLOAD_SIZE:
2774- print "Patch is large, so uploading file patches separately."
2775+ print("Patch is large, so uploading file patches separately.")
2776 uploaded_diff_file = []
2777 form_fields.append(("separate_patches", "1"))
2778 else:
2779@@ -1378,7 +1380,7 @@ def main():
2780 try:
2781 RealMain(sys.argv)
2782 except KeyboardInterrupt:
2783- print
2784+ print()
2785 StatusUpdate("Interrupted.")
2786 sys.exit(1)
2787
2788diff --git a/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py b/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py
2789index c81918331..f36abe338 100755
2790--- a/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py
2791+++ b/Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py
2792@@ -145,7 +145,7 @@ class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
2793 msg = ('when %s%s, an assertion failure in "%s" %s cause a seg-fault.' %
2794 (BREAK_ON_FAILURE_ENV_VAR, env_var_value_msg, ' '.join(command),
2795 should_or_not))
2796- self.assert_(has_seg_fault == expect_seg_fault, msg)
2797+ self.assertTrue(has_seg_fault == expect_seg_fault, msg)
2798
2799 def testDefaultBehavior(self):
2800 """Tests the behavior of the default mode."""
2801diff --git a/Source/ThirdParty/gtest/test/gtest_color_test.py b/Source/ThirdParty/gtest/test/gtest_color_test.py
2802index d02a53ed8..b69ab0947 100755
2803--- a/Source/ThirdParty/gtest/test/gtest_color_test.py
2804+++ b/Source/ThirdParty/gtest/test/gtest_color_test.py
2805@@ -72,58 +72,58 @@ class GTestColorTest(gtest_test_utils.TestCase):
2806 """Tests the case when there's neither GTEST_COLOR nor --gtest_color."""
2807
2808 if not IS_WINDOWS:
2809- self.assert_(not UsesColor('dumb', None, None))
2810- self.assert_(not UsesColor('emacs', None, None))
2811- self.assert_(not UsesColor('xterm-mono', None, None))
2812- self.assert_(not UsesColor('unknown', None, None))
2813- self.assert_(not UsesColor(None, None, None))
2814- self.assert_(UsesColor('linux', None, None))
2815- self.assert_(UsesColor('cygwin', None, None))
2816- self.assert_(UsesColor('xterm', None, None))
2817- self.assert_(UsesColor('xterm-color', None, None))
2818- self.assert_(UsesColor('xterm-256color', None, None))
2819+ self.assertTrue(not UsesColor('dumb', None, None))
2820+ self.assertTrue(not UsesColor('emacs', None, None))
2821+ self.assertTrue(not UsesColor('xterm-mono', None, None))
2822+ self.assertTrue(not UsesColor('unknown', None, None))
2823+ self.assertTrue(not UsesColor(None, None, None))
2824+ self.assertTrue(UsesColor('linux', None, None))
2825+ self.assertTrue(UsesColor('cygwin', None, None))
2826+ self.assertTrue(UsesColor('xterm', None, None))
2827+ self.assertTrue(UsesColor('xterm-color', None, None))
2828+ self.assertTrue(UsesColor('xterm-256color', None, None))
2829
2830 def testFlagOnly(self):
2831 """Tests the case when there's --gtest_color but not GTEST_COLOR."""
2832
2833- self.assert_(not UsesColor('dumb', None, 'no'))
2834- self.assert_(not UsesColor('xterm-color', None, 'no'))
2835+ self.assertTrue(not UsesColor('dumb', None, 'no'))
2836+ self.assertTrue(not UsesColor('xterm-color', None, 'no'))
2837 if not IS_WINDOWS:
2838- self.assert_(not UsesColor('emacs', None, 'auto'))
2839- self.assert_(UsesColor('xterm', None, 'auto'))
2840- self.assert_(UsesColor('dumb', None, 'yes'))
2841- self.assert_(UsesColor('xterm', None, 'yes'))
2842+ self.assertTrue(not UsesColor('emacs', None, 'auto'))
2843+ self.assertTrue(UsesColor('xterm', None, 'auto'))
2844+ self.assertTrue(UsesColor('dumb', None, 'yes'))
2845+ self.assertTrue(UsesColor('xterm', None, 'yes'))
2846
2847 def testEnvVarOnly(self):
2848 """Tests the case when there's GTEST_COLOR but not --gtest_color."""
2849
2850- self.assert_(not UsesColor('dumb', 'no', None))
2851- self.assert_(not UsesColor('xterm-color', 'no', None))
2852+ self.assertTrue(not UsesColor('dumb', 'no', None))
2853+ self.assertTrue(not UsesColor('xterm-color', 'no', None))
2854 if not IS_WINDOWS:
2855- self.assert_(not UsesColor('dumb', 'auto', None))
2856- self.assert_(UsesColor('xterm-color', 'auto', None))
2857- self.assert_(UsesColor('dumb', 'yes', None))
2858- self.assert_(UsesColor('xterm-color', 'yes', None))
2859+ self.assertTrue(not UsesColor('dumb', 'auto', None))
2860+ self.assertTrue(UsesColor('xterm-color', 'auto', None))
2861+ self.assertTrue(UsesColor('dumb', 'yes', None))
2862+ self.assertTrue(UsesColor('xterm-color', 'yes', None))
2863
2864 def testEnvVarAndFlag(self):
2865 """Tests the case when there are both GTEST_COLOR and --gtest_color."""
2866
2867- self.assert_(not UsesColor('xterm-color', 'no', 'no'))
2868- self.assert_(UsesColor('dumb', 'no', 'yes'))
2869- self.assert_(UsesColor('xterm-color', 'no', 'auto'))
2870+ self.assertTrue(not UsesColor('xterm-color', 'no', 'no'))
2871+ self.assertTrue(UsesColor('dumb', 'no', 'yes'))
2872+ self.assertTrue(UsesColor('xterm-color', 'no', 'auto'))
2873
2874 def testAliasesOfYesAndNo(self):
2875 """Tests using aliases in specifying --gtest_color."""
2876
2877- self.assert_(UsesColor('dumb', None, 'true'))
2878- self.assert_(UsesColor('dumb', None, 'YES'))
2879- self.assert_(UsesColor('dumb', None, 'T'))
2880- self.assert_(UsesColor('dumb', None, '1'))
2881+ self.assertTrue(UsesColor('dumb', None, 'true'))
2882+ self.assertTrue(UsesColor('dumb', None, 'YES'))
2883+ self.assertTrue(UsesColor('dumb', None, 'T'))
2884+ self.assertTrue(UsesColor('dumb', None, '1'))
2885
2886- self.assert_(not UsesColor('xterm', None, 'f'))
2887- self.assert_(not UsesColor('xterm', None, 'false'))
2888- self.assert_(not UsesColor('xterm', None, '0'))
2889- self.assert_(not UsesColor('xterm', None, 'unknown'))
2890+ self.assertTrue(not UsesColor('xterm', None, 'f'))
2891+ self.assertTrue(not UsesColor('xterm', None, 'false'))
2892+ self.assertTrue(not UsesColor('xterm', None, '0'))
2893+ self.assertTrue(not UsesColor('xterm', None, 'unknown'))
2894
2895
2896 if __name__ == '__main__':
2897diff --git a/Source/ThirdParty/gtest/test/gtest_env_var_test.py b/Source/ThirdParty/gtest/test/gtest_env_var_test.py
2898index bcc0bfd55..868896831 100755
2899--- a/Source/ThirdParty/gtest/test/gtest_env_var_test.py
2900+++ b/Source/ThirdParty/gtest/test/gtest_env_var_test.py
2901@@ -47,8 +47,8 @@ environ = os.environ.copy()
2902
2903 def AssertEq(expected, actual):
2904 if expected != actual:
2905- print 'Expected: %s' % (expected,)
2906- print ' Actual: %s' % (actual,)
2907+ print('Expected: %s' % (expected,))
2908+ print(' Actual: %s' % (actual,))
2909 raise AssertionError
2910
2911
2912diff --git a/Source/ThirdParty/gtest/test/gtest_filter_unittest.py b/Source/ThirdParty/gtest/test/gtest_filter_unittest.py
2913index 0d1a77005..595b2fa33 100755
2914--- a/Source/ThirdParty/gtest/test/gtest_filter_unittest.py
2915+++ b/Source/ThirdParty/gtest/test/gtest_filter_unittest.py
2916@@ -231,10 +231,10 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
2917 """Asserts that two sets are equal."""
2918
2919 for elem in lhs:
2920- self.assert_(elem in rhs, '%s in %s' % (elem, rhs))
2921+ self.assertTrue(elem in rhs, '%s in %s' % (elem, rhs))
2922
2923 for elem in rhs:
2924- self.assert_(elem in lhs, '%s in %s' % (elem, lhs))
2925+ self.assertTrue(elem in lhs, '%s in %s' % (elem, lhs))
2926
2927 def AssertPartitionIsValid(self, set_var, list_of_sets):
2928 """Asserts that list_of_sets is a valid partition of set_var."""
2929@@ -575,13 +575,13 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
2930
2931 shard_status_file = os.path.join(gtest_test_utils.GetTempDir(),
2932 'shard_status_file')
2933- self.assert_(not os.path.exists(shard_status_file))
2934+ self.assertTrue(not os.path.exists(shard_status_file))
2935
2936 extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file}
2937 try:
2938 InvokeWithModifiedEnv(extra_env, RunAndReturnOutput)
2939 finally:
2940- self.assert_(os.path.exists(shard_status_file))
2941+ self.assertTrue(os.path.exists(shard_status_file))
2942 os.remove(shard_status_file)
2943
2944 def testShardStatusFileIsCreatedWithListTests(self):
2945@@ -589,7 +589,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
2946
2947 shard_status_file = os.path.join(gtest_test_utils.GetTempDir(),
2948 'shard_status_file2')
2949- self.assert_(not os.path.exists(shard_status_file))
2950+ self.assertTrue(not os.path.exists(shard_status_file))
2951
2952 extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file}
2953 try:
2954@@ -599,12 +599,12 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
2955 finally:
2956 # This assertion ensures that Google Test enumerated the tests as
2957 # opposed to running them.
2958- self.assert_('[==========]' not in output,
2959+ self.assertTrue('[==========]' not in output,
2960 'Unexpected output during test enumeration.\n'
2961 'Please ensure that LIST_TESTS_FLAG is assigned the\n'
2962 'correct flag value for listing Google Test tests.')
2963
2964- self.assert_(os.path.exists(shard_status_file))
2965+ self.assertTrue(os.path.exists(shard_status_file))
2966 os.remove(shard_status_file)
2967
2968 if SUPPORTS_DEATH_TESTS:
2969diff --git a/Source/ThirdParty/gtest/test/gtest_help_test.py b/Source/ThirdParty/gtest/test/gtest_help_test.py
2970index 3cb4c48e0..8aae487b4 100755
2971--- a/Source/ThirdParty/gtest/test/gtest_help_test.py
2972+++ b/Source/ThirdParty/gtest/test/gtest_help_test.py
2973@@ -107,17 +107,17 @@ class GTestHelpTest(gtest_test_utils.TestCase):
2974 """
2975
2976 exit_code, output = RunWithFlag(flag)
2977- self.assertEquals(0, exit_code)
2978- self.assert_(HELP_REGEX.search(output), output)
2979+ self.assertEqual(0, exit_code)
2980+ self.assertTrue(HELP_REGEX.search(output), output)
2981 if IS_WINDOWS:
2982- self.assert_(CATCH_EXCEPTIONS_FLAG in output, output)
2983+ self.assertTrue(CATCH_EXCEPTIONS_FLAG in output, output)
2984 else:
2985- self.assert_(CATCH_EXCEPTIONS_FLAG not in output, output)
2986+ self.assertTrue(CATCH_EXCEPTIONS_FLAG not in output, output)
2987
2988 if SUPPORTS_DEATH_TESTS and not IS_WINDOWS:
2989- self.assert_(DEATH_TEST_STYLE_FLAG in output, output)
2990+ self.assertTrue(DEATH_TEST_STYLE_FLAG in output, output)
2991 else:
2992- self.assert_(DEATH_TEST_STYLE_FLAG not in output, output)
2993+ self.assertTrue(DEATH_TEST_STYLE_FLAG not in output, output)
2994
2995 def TestNonHelpFlag(self, flag):
2996 """Verifies correct behavior when no help flag is specified.
2997@@ -130,8 +130,8 @@ class GTestHelpTest(gtest_test_utils.TestCase):
2998 """
2999
3000 exit_code, output = RunWithFlag(flag)
3001- self.assert_(exit_code != 0)
3002- self.assert_(not HELP_REGEX.search(output), output)
3003+ self.assertTrue(exit_code != 0)
3004+ self.assertTrue(not HELP_REGEX.search(output), output)
3005
3006 def testPrintsHelpWithFullFlag(self):
3007 self.TestHelpFlag('--help')
3008diff --git a/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py b/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py
3009index ce8c3ef05..1d3ce746c 100755
3010--- a/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py
3011+++ b/Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py
3012@@ -136,9 +136,9 @@ class GTestListTestsUnitTest(gtest_test_utils.TestCase):
3013 (LIST_TESTS_FLAG, flag_expression, ' '.join(args), output))
3014
3015 if expected_output is not None:
3016- self.assert_(output == expected_output, msg)
3017+ self.assertTrue(output == expected_output, msg)
3018 else:
3019- self.assert_(output != EXPECTED_OUTPUT_NO_FILTER, msg)
3020+ self.assertTrue(output != EXPECTED_OUTPUT_NO_FILTER, msg)
3021
3022 def testDefaultBehavior(self):
3023 """Tests the behavior of the default mode."""
3024diff --git a/Source/ThirdParty/gtest/test/gtest_shuffle_test.py b/Source/ThirdParty/gtest/test/gtest_shuffle_test.py
3025index 30d0303d1..e4902f09a 100755
3026--- a/Source/ThirdParty/gtest/test/gtest_shuffle_test.py
3027+++ b/Source/ThirdParty/gtest/test/gtest_shuffle_test.py
3028@@ -179,23 +179,23 @@ class GTestShuffleUnitTest(gtest_test_utils.TestCase):
3029 self.assertEqual(len(SHARDED_TESTS), len(SHUFFLED_SHARDED_TESTS))
3030
3031 def testShuffleChangesTestOrder(self):
3032- self.assert_(SHUFFLED_ALL_TESTS != ALL_TESTS, SHUFFLED_ALL_TESTS)
3033- self.assert_(SHUFFLED_ACTIVE_TESTS != ACTIVE_TESTS, SHUFFLED_ACTIVE_TESTS)
3034- self.assert_(SHUFFLED_FILTERED_TESTS != FILTERED_TESTS,
3035+ self.assertTrue(SHUFFLED_ALL_TESTS != ALL_TESTS, SHUFFLED_ALL_TESTS)
3036+ self.assertTrue(SHUFFLED_ACTIVE_TESTS != ACTIVE_TESTS, SHUFFLED_ACTIVE_TESTS)
3037+ self.assertTrue(SHUFFLED_FILTERED_TESTS != FILTERED_TESTS,
3038 SHUFFLED_FILTERED_TESTS)
3039- self.assert_(SHUFFLED_SHARDED_TESTS != SHARDED_TESTS,
3040+ self.assertTrue(SHUFFLED_SHARDED_TESTS != SHARDED_TESTS,
3041 SHUFFLED_SHARDED_TESTS)
3042
3043 def testShuffleChangesTestCaseOrder(self):
3044- self.assert_(GetTestCases(SHUFFLED_ALL_TESTS) != GetTestCases(ALL_TESTS),
3045+ self.assertTrue(GetTestCases(SHUFFLED_ALL_TESTS) != GetTestCases(ALL_TESTS),
3046 GetTestCases(SHUFFLED_ALL_TESTS))
3047- self.assert_(
3048+ self.assertTrue(
3049 GetTestCases(SHUFFLED_ACTIVE_TESTS) != GetTestCases(ACTIVE_TESTS),
3050 GetTestCases(SHUFFLED_ACTIVE_TESTS))
3051- self.assert_(
3052+ self.assertTrue(
3053 GetTestCases(SHUFFLED_FILTERED_TESTS) != GetTestCases(FILTERED_TESTS),
3054 GetTestCases(SHUFFLED_FILTERED_TESTS))
3055- self.assert_(
3056+ self.assertTrue(
3057 GetTestCases(SHUFFLED_SHARDED_TESTS) != GetTestCases(SHARDED_TESTS),
3058 GetTestCases(SHUFFLED_SHARDED_TESTS))
3059
3060@@ -215,29 +215,29 @@ class GTestShuffleUnitTest(gtest_test_utils.TestCase):
3061
3062 def testShuffleDoesNotCreateNewTest(self):
3063 for test in SHUFFLED_ALL_TESTS:
3064- self.assert_(test in ALL_TESTS, '%s is an invalid test' % (test,))
3065+ self.assertTrue(test in ALL_TESTS, '%s is an invalid test' % (test,))
3066 for test in SHUFFLED_ACTIVE_TESTS:
3067- self.assert_(test in ACTIVE_TESTS, '%s is an invalid test' % (test,))
3068+ self.assertTrue(test in ACTIVE_TESTS, '%s is an invalid test' % (test,))
3069 for test in SHUFFLED_FILTERED_TESTS:
3070- self.assert_(test in FILTERED_TESTS, '%s is an invalid test' % (test,))
3071+ self.assertTrue(test in FILTERED_TESTS, '%s is an invalid test' % (test,))
3072 for test in SHUFFLED_SHARDED_TESTS:
3073- self.assert_(test in SHARDED_TESTS, '%s is an invalid test' % (test,))
3074+ self.assertTrue(test in SHARDED_TESTS, '%s is an invalid test' % (test,))
3075
3076 def testShuffleIncludesAllTests(self):
3077 for test in ALL_TESTS:
3078- self.assert_(test in SHUFFLED_ALL_TESTS, '%s is missing' % (test,))
3079+ self.assertTrue(test in SHUFFLED_ALL_TESTS, '%s is missing' % (test,))
3080 for test in ACTIVE_TESTS:
3081- self.assert_(test in SHUFFLED_ACTIVE_TESTS, '%s is missing' % (test,))
3082+ self.assertTrue(test in SHUFFLED_ACTIVE_TESTS, '%s is missing' % (test,))
3083 for test in FILTERED_TESTS:
3084- self.assert_(test in SHUFFLED_FILTERED_TESTS, '%s is missing' % (test,))
3085+ self.assertTrue(test in SHUFFLED_FILTERED_TESTS, '%s is missing' % (test,))
3086 for test in SHARDED_TESTS:
3087- self.assert_(test in SHUFFLED_SHARDED_TESTS, '%s is missing' % (test,))
3088+ self.assertTrue(test in SHUFFLED_SHARDED_TESTS, '%s is missing' % (test,))
3089
3090 def testShuffleLeavesDeathTestsAtFront(self):
3091 non_death_test_found = False
3092 for test in SHUFFLED_ACTIVE_TESTS:
3093 if 'DeathTest.' in test:
3094- self.assert_(not non_death_test_found,
3095+ self.assertTrue(not non_death_test_found,
3096 '%s appears after a non-death test' % (test,))
3097 else:
3098 non_death_test_found = True
3099@@ -295,11 +295,11 @@ class GTestShuffleUnitTest(gtest_test_utils.TestCase):
3100 GetTestsForAllIterations(
3101 {}, [ShuffleFlag(), RandomSeedFlag(1), RepeatFlag(3)]))
3102
3103- self.assert_(tests_in_iteration1 != tests_in_iteration2,
3104+ self.assertTrue(tests_in_iteration1 != tests_in_iteration2,
3105 tests_in_iteration1)
3106- self.assert_(tests_in_iteration1 != tests_in_iteration3,
3107+ self.assertTrue(tests_in_iteration1 != tests_in_iteration3,
3108 tests_in_iteration1)
3109- self.assert_(tests_in_iteration2 != tests_in_iteration3,
3110+ self.assertTrue(tests_in_iteration2 != tests_in_iteration3,
3111 tests_in_iteration2)
3112
3113 def testShuffleShardedTestsPreservesPartition(self):
3114diff --git a/Source/ThirdParty/gtest/test/gtest_test_utils.py b/Source/ThirdParty/gtest/test/gtest_test_utils.py
3115index e0f5973e7..80a953ea1 100755
3116--- a/Source/ThirdParty/gtest/test/gtest_test_utils.py
3117+++ b/Source/ThirdParty/gtest/test/gtest_test_utils.py
3118@@ -167,7 +167,7 @@ def GetTestExecutablePath(executable_name, build_dir=None):
3119 # TODO(vladl@google.com): change mk_test.py to test.py after renaming
3120 # the file.
3121 'Please run mk_test.py -h for help.')
3122- print >> sys.stderr, message
3123+ print(message, file=sys.stderr)
3124 sys.exit(1)
3125
3126 return path
3127diff --git a/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py b/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py
3128index 5678ffeaf..318e6306c 100755
3129--- a/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py
3130+++ b/Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py
3131@@ -70,7 +70,7 @@ def SetEnvVar(env_var, value):
3132 def Run(command):
3133 """Runs a command; returns True/False if its exit code is/isn't 0."""
3134
3135- print 'Running "%s". . .' % ' '.join(command)
3136+ print('Running "%s". . .' % ' '.join(command))
3137 p = gtest_test_utils.Subprocess(command)
3138 return p.exited and p.exit_code == 0
3139
3140@@ -123,7 +123,7 @@ class ThrowOnFailureTest(gtest_test_utils.TestCase):
3141 'exit code.' %
3142 (THROW_ON_FAILURE, env_var_value_msg, ' '.join(command),
3143 should_or_not))
3144- self.assert_(failed == should_fail, msg)
3145+ self.assertTrue(failed == should_fail, msg)
3146
3147 def testDefaultBehavior(self):
3148 """Tests the behavior of the default mode."""
3149diff --git a/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py b/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py
3150index 6ae57eeed..435837009 100755
3151--- a/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py
3152+++ b/Source/ThirdParty/gtest/test/gtest_uninitialized_test.py
3153@@ -46,8 +46,8 @@ def Assert(condition):
3154
3155 def AssertEq(expected, actual):
3156 if expected != actual:
3157- print 'Expected: %s' % (expected,)
3158- print ' Actual: %s' % (actual,)
3159+ print('Expected: %s' % (expected,))
3160+ print(' Actual: %s' % (actual,))
3161 raise AssertionError
3162
3163
3164diff --git a/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py b/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py
3165index 0fe947f08..7281864c5 100755
3166--- a/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py
3167+++ b/Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py
3168@@ -100,8 +100,8 @@ class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
3169 command = [gtest_prog_path, "--gtest_output=xml:%s" % self.output_dir_]
3170 p = gtest_test_utils.Subprocess(command,
3171 working_dir=gtest_test_utils.GetTempDir())
3172- self.assert_(p.exited)
3173- self.assertEquals(0, p.exit_code)
3174+ self.assertTrue(p.exited)
3175+ self.assertEqual(0, p.exit_code)
3176
3177 # TODO(wan@google.com): libtool causes the built test binary to be
3178 # named lt-gtest_xml_outfiles_test_ instead of
3179@@ -112,7 +112,7 @@ class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
3180 output_file1 = os.path.join(self.output_dir_, output_file_name1)
3181 output_file_name2 = 'lt-' + output_file_name1
3182 output_file2 = os.path.join(self.output_dir_, output_file_name2)
3183- self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2),
3184+ self.assertTrue(os.path.isfile(output_file1) or os.path.isfile(output_file2),
3185 output_file1)
3186
3187 expected = minidom.parseString(expected_xml)
3188diff --git a/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py b/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py
3189index 6d44929ca..93b67532e 100755
3190--- a/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py
3191+++ b/Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py
3192@@ -145,16 +145,16 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
3193 "gtest_no_test_unittest")
3194 try:
3195 os.remove(output_file)
3196- except OSError, e:
3197+ except OSError as e:
3198 if e.errno != errno.ENOENT:
3199 raise
3200
3201 p = gtest_test_utils.Subprocess(
3202 [gtest_prog_path, "%s=xml" % GTEST_OUTPUT_FLAG],
3203 working_dir=gtest_test_utils.GetTempDir())
3204- self.assert_(p.exited)
3205- self.assertEquals(0, p.exit_code)
3206- self.assert_(os.path.isfile(output_file))
3207+ self.assertTrue(p.exited)
3208+ self.assertEqual(0, p.exit_code)
3209+ self.assertTrue(os.path.isfile(output_file))
3210
3211 def testSuppressedXmlOutput(self):
3212 """
3213@@ -174,16 +174,16 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
3214 "--shut_down_xml"]
3215 p = gtest_test_utils.Subprocess(command)
3216 if p.terminated_by_signal:
3217- self.assert_(False,
3218+ self.assertTrue(False,
3219 "%s was killed by signal %d" % (gtest_prog_name, p.signal))
3220 else:
3221- self.assert_(p.exited)
3222- self.assertEquals(1, p.exit_code,
3223+ self.assertTrue(p.exited)
3224+ self.assertEqual(1, p.exit_code,
3225 "'%s' exited with code %s, which doesn't match "
3226 "the expected exit code %s."
3227 % (command, p.exit_code, 1))
3228
3229- self.assert_(not os.path.isfile(xml_path))
3230+ self.assertTrue(not os.path.isfile(xml_path))
3231
3232
3233 def _TestXmlOutput(self, gtest_prog_name, expected_xml, expected_exit_code):
3234@@ -200,11 +200,11 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
3235 command = [gtest_prog_path, "%s=xml:%s" % (GTEST_OUTPUT_FLAG, xml_path)]
3236 p = gtest_test_utils.Subprocess(command)
3237 if p.terminated_by_signal:
3238- self.assert_(False,
3239+ self.assertTrue(False,
3240 "%s was killed by signal %d" % (gtest_prog_name, p.signal))
3241 else:
3242- self.assert_(p.exited)
3243- self.assertEquals(expected_exit_code, p.exit_code,
3244+ self.assertTrue(p.exited)
3245+ self.assertEqual(expected_exit_code, p.exit_code,
3246 "'%s' exited with code %s, which doesn't match "
3247 "the expected exit code %s."
3248 % (command, p.exit_code, expected_exit_code))
3249diff --git a/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py b/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py
3250index c83c3b7ea..2d6afb359 100755
3251--- a/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py
3252+++ b/Source/ThirdParty/gtest/test/gtest_xml_test_utils.py
3253@@ -67,37 +67,37 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
3254 """
3255
3256 if expected_node.nodeType == Node.CDATA_SECTION_NODE:
3257- self.assertEquals(Node.CDATA_SECTION_NODE, actual_node.nodeType)
3258- self.assertEquals(expected_node.nodeValue, actual_node.nodeValue)
3259+ self.assertEqual(Node.CDATA_SECTION_NODE, actual_node.nodeType)
3260+ self.assertEqual(expected_node.nodeValue, actual_node.nodeValue)
3261 return
3262
3263- self.assertEquals(Node.ELEMENT_NODE, actual_node.nodeType)
3264- self.assertEquals(Node.ELEMENT_NODE, expected_node.nodeType)
3265- self.assertEquals(expected_node.tagName, actual_node.tagName)
3266+ self.assertEqual(Node.ELEMENT_NODE, actual_node.nodeType)
3267+ self.assertEqual(Node.ELEMENT_NODE, expected_node.nodeType)
3268+ self.assertEqual(expected_node.tagName, actual_node.tagName)
3269
3270 expected_attributes = expected_node.attributes
3271 actual_attributes = actual_node .attributes
3272- self.assertEquals(
3273+ self.assertEqual(
3274 expected_attributes.length, actual_attributes.length,
3275 "attribute numbers differ in element " + actual_node.tagName)
3276 for i in range(expected_attributes.length):
3277 expected_attr = expected_attributes.item(i)
3278 actual_attr = actual_attributes.get(expected_attr.name)
3279- self.assert_(
3280+ self.assertTrue(
3281 actual_attr is not None,
3282 "expected attribute %s not found in element %s" %
3283 (expected_attr.name, actual_node.tagName))
3284- self.assertEquals(expected_attr.value, actual_attr.value,
3285+ self.assertEqual(expected_attr.value, actual_attr.value,
3286 " values of attribute %s in element %s differ" %
3287 (expected_attr.name, actual_node.tagName))
3288
3289 expected_children = self._GetChildren(expected_node)
3290 actual_children = self._GetChildren(actual_node)
3291- self.assertEquals(
3292+ self.assertEqual(
3293 len(expected_children), len(actual_children),
3294 "number of child elements differ in element " + actual_node.tagName)
3295- for child_id, child in expected_children.iteritems():
3296- self.assert_(child_id in actual_children,
3297+ for child_id, child in expected_children.items():
3298+ self.assertTrue(child_id in actual_children,
3299 '<%s> is not in <%s> (in element %s)' %
3300 (child_id, actual_children, actual_node.tagName))
3301 self.AssertEquivalentNodes(child, actual_children[child_id])
3302@@ -125,10 +125,10 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
3303 children = {}
3304 for child in element.childNodes:
3305 if child.nodeType == Node.ELEMENT_NODE:
3306- self.assert_(child.tagName in self.identifying_attribute,
3307+ self.assertTrue(child.tagName in self.identifying_attribute,
3308 "Encountered unknown element <%s>" % child.tagName)
3309 childID = child.getAttribute(self.identifying_attribute[child.tagName])
3310- self.assert_(childID not in children)
3311+ self.assertTrue(childID not in children)
3312 children[childID] = child
3313 elif child.nodeType in [Node.TEXT_NODE, Node.CDATA_SECTION_NODE]:
3314 if "detail" not in children:
3315diff --git a/Source/ThirdParty/gtest/test/run_tests_util.py b/Source/ThirdParty/gtest/test/run_tests_util.py
3316index 9e57931eb..1f4d33af2 100755
3317--- a/Source/ThirdParty/gtest/test/run_tests_util.py
3318+++ b/Source/ThirdParty/gtest/test/run_tests_util.py
3319@@ -159,8 +159,8 @@ def _GetConfigFromBuildDir(build_dir):
3320 if m:
3321 return m.group(1)
3322 else:
3323- print >>sys.stderr, ('%s is an invalid build directory that does not '
3324- 'correspond to any configuration.' % (build_dir,))
3325+ print(('%s is an invalid build directory that does not '
3326+ 'correspond to any configuration.' % (build_dir,)), file=sys.stderr)
3327 return ''
3328
3329
3330@@ -250,7 +250,7 @@ class TestRunner(object):
3331 # If this script is run on a Windows machine that has no association
3332 # between the .py extension and a python interpreter, simply passing
3333 # the script name into subprocess.Popen/os.spawn will not work.
3334- print 'Running %s . . .' % (test,)
3335+ print('Running %s . . .' % (test,))
3336 return self._Run([sys.executable, test])
3337
3338 finally:
3339@@ -308,7 +308,7 @@ class TestRunner(object):
3340 # A final list of build directories which will be searched for the test
3341 # binaries. First, add directories specified directly on the command
3342 # line.
3343- build_dirs = filter(self.os.path.isdir, normalized_args)
3344+ build_dirs = list(filter(self.os.path.isdir, normalized_args))
3345
3346 # Adds build directories specified via their build configurations using
3347 # the -c or -a options.
3348@@ -374,8 +374,8 @@ class TestRunner(object):
3349 config = _GetConfigFromBuildDir(directory)
3350 file_name = os.path.basename(test)
3351 if python_tests_to_skip and (config, file_name) in python_tests_to_skip:
3352- print ('NOTE: %s is skipped for configuration %s, as it does not '
3353- 'work there.' % (file_name, config))
3354+ print(('NOTE: %s is skipped for configuration %s, as it does not '
3355+ 'work there.' % (file_name, config)))
3356 else:
3357 python_test_pairs.append((directory, test))
3358
3359@@ -418,17 +418,17 @@ class TestRunner(object):
3360 failed = [(directory, test)
3361 for (directory, test, success) in results
3362 if not success]
3363- print
3364- print '%d tests run.' % len(results)
3365+ print()
3366+ print('%d tests run.' % len(results))
3367 if failed:
3368- print 'The following %d tests failed:' % len(failed)
3369+ print('The following %d tests failed:' % len(failed))
3370 for (directory, test) in failed:
3371- print '%s in %s' % (test, directory)
3372+ print('%s in %s' % (test, directory))
3373 return 1
3374 else:
3375- print 'All tests passed!'
3376+ print('All tests passed!')
3377 else: # No tests defined
3378- print 'Nothing to test - no tests specified!'
3379+ print('Nothing to test - no tests specified!')
3380
3381 return 0
3382
3383@@ -440,7 +440,7 @@ def ParseArgs(project_name, argv=None, help_callback=None):
3384 # required by optparse, even though they are unused.
3385 # pylint: disable-msg=W0613
3386 def PrintHelp(option, opt, value, parser):
3387- print HELP_MSG % {'proj': project_name}
3388+ print(HELP_MSG % {'proj': project_name})
3389 sys.exit(1)
3390
3391 parser = optparse.OptionParser()
3392diff --git a/Source/ThirdParty/gtest/test/run_tests_util_test.py b/Source/ThirdParty/gtest/test/run_tests_util_test.py
3393index 9c55726fd..dce27f3ae 100755
3394--- a/Source/ThirdParty/gtest/test/run_tests_util_test.py
3395+++ b/Source/ThirdParty/gtest/test/run_tests_util_test.py
3396@@ -144,7 +144,7 @@ class FakeOs(object):
3397 # pylint: disable-msg=C6409
3398 def listdir(self, path):
3399 assert self.path.isdir(path)
3400- return self.path.PathElement(path).iterkeys()
3401+ return iter(self.path.PathElement(path).keys())
3402
3403 def spawnv(self, wait, executable, *kargs):
3404 assert wait == FakeOs.P_WAIT
3405@@ -165,7 +165,7 @@ class GetTestsToRunTest(unittest.TestCase):
3406 def NormalizeBinaryTestPair(pair):
3407 """Normalizes path data in the (directory, binary_executable) pair."""
3408
3409- directory, executable = map(os.path.normpath, pair)
3410+ directory, executable = list(map(os.path.normpath, pair))
3411
3412 # On Windows and Cygwin, the test file names have the .exe extension, but
3413 # they can be invoked either by name or by name+extension. Our test must
3414@@ -174,8 +174,8 @@ class GetTestsToRunTest(unittest.TestCase):
3415 executable = re.sub(r'\.exe$', '', executable)
3416 return (directory, executable)
3417
3418- python_tests = sets.Set(map(NormalizePythonTestPair, results[0]))
3419- binary_tests = sets.Set(map(NormalizeBinaryTestPair, results[1]))
3420+ python_tests = sets.Set(list(map(NormalizePythonTestPair, results[0])))
3421+ binary_tests = sets.Set(list(map(NormalizeBinaryTestPair, results[1])))
3422 return (python_tests, binary_tests)
3423
3424 def AssertResultsEqual(self, results, expected):
3425@@ -472,7 +472,7 @@ class GetTestsToRunTest(unittest.TestCase):
3426 def testNonTestBinary(self):
3427 """Exercises GetTestsToRun with a non-test parameter."""
3428
3429- self.assert_(
3430+ self.assertTrue(
3431 not self.test_runner.GetTestsToRun(
3432 ['gtest_unittest_not_really'],
3433 '',
3434@@ -482,7 +482,7 @@ class GetTestsToRunTest(unittest.TestCase):
3435 def testNonExistingPythonTest(self):
3436 """Exercises GetTestsToRun with a non-existent Python test parameter."""
3437
3438- self.assert_(
3439+ self.assertTrue(
3440 not self.test_runner.GetTestsToRun(
3441 ['nonexistent_test.py'],
3442 '',
3443@@ -619,7 +619,7 @@ class ParseArgsTest(unittest.TestCase):
3444 def testNoOptions(self):
3445 options, args = run_tests_util.ParseArgs('gtest', argv=['script.py'])
3446 self.assertEqual(args, ['script.py'])
3447- self.assert_(options.configurations is None)
3448+ self.assertTrue(options.configurations is None)
3449 self.assertFalse(options.built_configurations)
3450
3451 def testOptionC(self):
3452@@ -638,7 +638,7 @@ class ParseArgsTest(unittest.TestCase):
3453 def testOptionB(self):
3454 options, args = run_tests_util.ParseArgs('gtest', argv=['script.py', '-b'])
3455 self.assertEqual(args, ['script.py'])
3456- self.assert_(options.configurations is None)
3457+ self.assertTrue(options.configurations is None)
3458 self.assertTrue(options.built_configurations)
3459
3460 def testOptionCAndOptionB(self):
3461diff --git a/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py b/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py
3462index 81de8c96a..ea24f964c 100644
3463--- a/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py
3464+++ b/Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py
3465@@ -54,7 +54,7 @@ import re
3466
3467 # Read the command line argument (the output directory for Version.h)
3468 if (len(sys.argv) < 3):
3469- print "Usage: versiongenerate.py input_dir output_dir"
3470+ print("Usage: versiongenerate.py input_dir output_dir")
3471 sys.exit(1)
3472 else:
3473 input_dir = sys.argv[1]
3474diff --git a/Source/WebCore/AVFoundationSupport.py b/Source/WebCore/AVFoundationSupport.py
3475index 7f13a8742..a3ab479ad 100644
3476--- a/Source/WebCore/AVFoundationSupport.py
3477+++ b/Source/WebCore/AVFoundationSupport.py
3478@@ -42,22 +42,22 @@ def fileContains(relativePath, regexp):
3479 return False
3480
3481
3482-print "/* Identifying AVFoundation Support */"
3483+print("/* Identifying AVFoundation Support */")
3484 if lookFor("/include/AVFoundationCF/AVCFBase.h"):
3485- print "#define HAVE_AVCF 1"
3486+ print("#define HAVE_AVCF 1")
3487 if lookFor("/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h"):
3488- print "#define HAVE_AVCF_LEGIBLE_OUTPUT 1"
3489+ print("#define HAVE_AVCF_LEGIBLE_OUTPUT 1")
3490 if lookFor("/include/AVFoundationCF/AVCFAssetResourceLoader.h"):
3491- print "#define HAVE_AVFOUNDATION_LOADER_DELEGATE 1"
3492+ print("#define HAVE_AVFOUNDATION_LOADER_DELEGATE 1")
3493 if lookFor("/include/AVFoundationCF/AVCFAsset.h"):
3494 regexp = re.compile("AVCFURLAssetIsPlayableExtendedMIMEType")
3495 if fileContains("/include/AVFoundationCF/AVCFAsset.h", regexp):
3496- print "#define HAVE_AVCFURL_PLAYABLE_MIMETYPE 1"
3497+ print("#define HAVE_AVCFURL_PLAYABLE_MIMETYPE 1")
3498 if lookFor("/include/QuartzCore/CACFLayer.h"):
3499 regexp = re.compile("CACFLayerSetContentsScale")
3500 if fileContains("/include/QuartzCore/CACFLayer.h", regexp):
3501- print "#define HAVE_CACFLAYER_SETCONTENTSSCALE 1"
3502+ print("#define HAVE_CACFLAYER_SETCONTENTSSCALE 1")
3503 if lookFor("/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h"):
3504 regexp = re.compile("kAVCFPlayerItemLegibleOutput_CallbacksVersion_2")
3505 if fileContains("/include/AVFoundationCF/AVCFPlayerItemLegibleOutput.h", regexp):
3506- print "#define HAVE_AVCFPLAYERITEM_CALLBACK_VERSION_2 1"
3507+ print("#define HAVE_AVCFPLAYERITEM_CALLBACK_VERSION_2 1")
3508diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt
3509index 56b32563a..feac0dbbb 100644
3510--- a/Source/WebCore/CMakeLists.txt
3511+++ b/Source/WebCore/CMakeLists.txt
3512@@ -3671,14 +3671,14 @@ set(WebCore_BUILTINS_SOURCES
3513 )
3514
3515 set(BUILTINS_GENERATOR_SCRIPTS
3516- ${JavaScriptCore_SCRIPTS_DIR}/builtins.py
3517- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generator.py
3518- ${JavaScriptCore_SCRIPTS_DIR}/builtins_model.py
3519- ${JavaScriptCore_SCRIPTS_DIR}/builtins_templates.py
3520- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_header.py
3521- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_combined_implementation.py
3522- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_header.py
3523- ${JavaScriptCore_SCRIPTS_DIR}/builtins_generate_separate_implementation.py
3524+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins.py
3525+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generator.py
3526+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_model.py
3527+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_templates.py
3528+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_header.py
3529+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_combined_implementation.py
3530+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_header.py
3531+ ${JavaScriptCore_SCRIPTS_DIR}/mybuiltins_generate_separate_implementation.py
3532 ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py
3533 ${JavaScriptCore_SCRIPTS_DIR}/lazywriter.py
3534 )
3535diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make
3536index 0f5a79fa4..83bf5f96a 100644
3537--- a/Source/WebCore/DerivedSources.make
3538+++ b/Source/WebCore/DerivedSources.make
3539@@ -1286,14 +1286,14 @@ WebCore_BUILTINS_SOURCES = \
3540 #
3541
3542 BUILTINS_GENERATOR_SCRIPTS = \
3543- $(JavaScriptCore_SCRIPTS_DIR)/builtins.py \
3544- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generator.py \
3545- $(JavaScriptCore_SCRIPTS_DIR)/builtins_model.py \
3546- $(JavaScriptCore_SCRIPTS_DIR)/builtins_templates.py \
3547- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_combined_header.py \
3548- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_combined_implementation.py \
3549- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_separate_header.py \
3550- $(JavaScriptCore_SCRIPTS_DIR)/builtins_generate_separate_implementation.py \
3551+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins.py \
3552+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generator.py \
3553+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_model.py \
3554+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_templates.py \
3555+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_combined_header.py \
3556+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_combined_implementation.py \
3557+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_separate_header.py \
3558+ $(JavaScriptCore_SCRIPTS_DIR)/mybuiltins_generate_separate_implementation.py \
3559 $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py \
3560 $(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py \
3561 #
3562diff --git a/Source/WebCore/platform/network/create-http-header-name-table b/Source/WebCore/platform/network/create-http-header-name-table
3563index 755d22e94..3dc57a568 100755
3564--- a/Source/WebCore/platform/network/create-http-header-name-table
3565+++ b/Source/WebCore/platform/network/create-http-header-name-table
3566@@ -41,7 +41,7 @@ input_file = open(input_path)
3567 http_header_name_to_id = { }
3568 http_header_names = []
3569
3570-for line in input_file.xreadlines():
3571+for line in input_file:
3572 http_header_name = line.strip()
3573 if not http_header_name or http_header_name[:2] == '//':
3574 continue
3575diff --git a/Source/WebInspectorUI/Scripts/jsmin.py b/Source/WebInspectorUI/Scripts/jsmin.py
3576index 372418b4d..2f9fddfce 100644
3577--- a/Source/WebInspectorUI/Scripts/jsmin.py
3578+++ b/Source/WebInspectorUI/Scripts/jsmin.py
3579@@ -23,17 +23,20 @@
3580 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
3581 # THE SOFTWARE.
3582
3583+# stolen from webkitgtk 2.26.2
3584
3585 import sys
3586 is_3 = sys.version_info >= (3, 0)
3587 if is_3:
3588 import io
3589+ python_text_type = str
3590 else:
3591 import StringIO
3592 try:
3593 import cStringIO
3594 except ImportError:
3595 cStringIO = None
3596+ python_text_type = basestring
3597
3598
3599 __all__ = ['jsmin', 'JavascriptMinify']
3600@@ -79,14 +82,18 @@ class JavascriptMinify(object):
3601 def write(char):
3602 # all of this is to support literal regular expressions.
3603 # sigh
3604- if char in 'return':
3605+ if str(char) in 'return':
3606 self.return_buf += char
3607 self.is_return = self.return_buf == 'return'
3608 self.outs.write(char)
3609 if self.is_return:
3610 self.return_buf = ''
3611
3612- read = self.ins.read
3613+ def read(n):
3614+ char = self.ins.read(n)
3615+ if not isinstance(char, python_text_type):
3616+ raise ValueError("ERROR: The script jsmin.py can only handle text input, but it received input of type %s" % type(char))
3617+ return char
3618
3619 space_strings = "abcdefghijklmnopqrstuvwxyz"\
3620 "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$\\"
3621@@ -118,8 +125,8 @@ class JavascriptMinify(object):
3622 write(previous)
3623 elif not previous:
3624 return
3625- elif previous >= '!':
3626- if previous in "'\"":
3627+ elif str(previous) >= "!":
3628+ if str(previous) in "'\"":
3629 in_quote = previous
3630 write(previous)
3631 previous_non_space = previous
3632@@ -166,7 +173,7 @@ class JavascriptMinify(object):
3633 if numslashes % 2 == 0:
3634 in_quote = ''
3635 write(''.join(quote_buf))
3636- elif next1 in '\r\n':
3637+ elif str(next1) in '\r\n':
3638 if previous_non_space in newlineend_strings \
3639 or previous_non_space > '~':
3640 while 1:
3641@@ -179,7 +186,7 @@ class JavascriptMinify(object):
3642 or next2 > '~' or next2 == '/':
3643 do_newline = True
3644 break
3645- elif next1 < '!' and not in_re:
3646+ elif str(next1) < '!' and not in_re:
3647 if (previous_non_space in space_strings \
3648 or previous_non_space > '~') \
3649 and (next2 in space_strings or next2 > '~'):
3650@@ -217,14 +224,14 @@ class JavascriptMinify(object):
3651 do_newline = False
3652
3653 write(next1)
3654- if not in_re and next1 in "'\"`":
3655+ if not in_re and str(next1) in "'\"`":
3656 in_quote = next1
3657 quote_buf = []
3658
3659 previous = next1
3660 next1 = next2
3661
3662- if previous >= '!':
3663+ if str(previous) >= '!':
3664 previous_non_space = previous
3665
3666 if previous == '\\':
3667diff --git a/Source/WebKit2/Scripts/generate-message-receiver.py b/Source/WebKit2/Scripts/generate-message-receiver.py
3668index 6413a8bf3..8702117f0 100644
3669--- a/Source/WebKit2/Scripts/generate-message-receiver.py
3670+++ b/Source/WebKit2/Scripts/generate-message-receiver.py
3671@@ -22,7 +22,7 @@
3672 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3673 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3674
3675-from __future__ import with_statement
3676+
3677 import sys
3678
3679 import webkit.messages
3680diff --git a/Source/WebKit2/Scripts/generate-messages-header.py b/Source/WebKit2/Scripts/generate-messages-header.py
3681index ad73a5283..b35ee7d51 100644
3682--- a/Source/WebKit2/Scripts/generate-messages-header.py
3683+++ b/Source/WebKit2/Scripts/generate-messages-header.py
3684@@ -22,7 +22,7 @@
3685 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3686 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3687
3688-from __future__ import with_statement
3689+
3690 import sys
3691
3692 import webkit.messages
3693diff --git a/Source/WebKit2/Scripts/webkit/messages_unittest.py b/Source/WebKit2/Scripts/webkit/messages_unittest.py
3694index 164199fc2..5f58e1919 100644
3695--- a/Source/WebKit2/Scripts/webkit/messages_unittest.py
3696+++ b/Source/WebKit2/Scripts/webkit/messages_unittest.py
3697@@ -24,7 +24,7 @@ import os
3698 import re
3699 import sys
3700 import unittest
3701-from StringIO import StringIO
3702+from io import StringIO
3703
3704 sys.path.append(os.path.dirname(os.path.dirname(__file__)))
3705 from webkit import messages
3706@@ -255,43 +255,43 @@ class MessagesTest(unittest.TestCase):
3707
3708 class ParsingTest(MessagesTest):
3709 def check_message(self, message, expected_message):
3710- self.assertEquals(message.name, expected_message['name'])
3711- self.assertEquals(len(message.parameters), len(expected_message['parameters']))
3712+ self.assertEqual(message.name, expected_message['name'])
3713+ self.assertEqual(len(message.parameters), len(expected_message['parameters']))
3714 for index, parameter in enumerate(message.parameters):
3715 expected_parameter = expected_message['parameters'][index]
3716- self.assertEquals(parameter.type, expected_parameter[0])
3717- self.assertEquals(parameter.name, expected_parameter[1])
3718+ self.assertEqual(parameter.type, expected_parameter[0])
3719+ self.assertEqual(parameter.name, expected_parameter[1])
3720 if len(expected_parameter) > 2:
3721- self.assertEquals(parameter.attributes, frozenset(expected_parameter[2]))
3722+ self.assertEqual(parameter.attributes, frozenset(expected_parameter[2]))
3723 for attribute in expected_parameter[2]:
3724 self.assertTrue(parameter.has_attribute(attribute))
3725 else:
3726- self.assertEquals(parameter.attributes, frozenset())
3727+ self.assertEqual(parameter.attributes, frozenset())
3728 if message.reply_parameters is not None:
3729 for index, parameter in enumerate(message.reply_parameters):
3730- self.assertEquals(parameter.type, expected_message['reply_parameters'][index][0])
3731- self.assertEquals(parameter.name, expected_message['reply_parameters'][index][1])
3732+ self.assertEqual(parameter.type, expected_message['reply_parameters'][index][0])
3733+ self.assertEqual(parameter.name, expected_message['reply_parameters'][index][1])
3734 else:
3735 self.assertFalse('reply_parameters' in expected_message)
3736- self.assertEquals(message.condition, expected_message['conditions'])
3737+ self.assertEqual(message.condition, expected_message['conditions'])
3738
3739 def test_receiver(self):
3740 """Receiver should be parsed as expected"""
3741- self.assertEquals(self.receiver.name, _expected_results['name'])
3742- self.assertEquals(self.receiver.condition, _expected_results['conditions'])
3743- self.assertEquals(len(self.receiver.messages), len(_expected_results['messages']))
3744+ self.assertEqual(self.receiver.name, _expected_results['name'])
3745+ self.assertEqual(self.receiver.condition, _expected_results['conditions'])
3746+ self.assertEqual(len(self.receiver.messages), len(_expected_results['messages']))
3747 for index, message in enumerate(self.receiver.messages):
3748 self.check_message(message, _expected_results['messages'][index])
3749
3750- self.assertEquals(self.legacy_receiver.name, _expected_results['name'])
3751- self.assertEquals(self.legacy_receiver.condition, _expected_results['conditions'])
3752- self.assertEquals(len(self.legacy_receiver.messages), len(_expected_results['messages']))
3753+ self.assertEqual(self.legacy_receiver.name, _expected_results['name'])
3754+ self.assertEqual(self.legacy_receiver.condition, _expected_results['conditions'])
3755+ self.assertEqual(len(self.legacy_receiver.messages), len(_expected_results['messages']))
3756 for index, message in enumerate(self.legacy_receiver.messages):
3757 self.check_message(message, _expected_results['messages'][index])
3758
3759- self.assertEquals(self.superclass_receiver.name, _expected_superclass_results['name'])
3760- self.assertEquals(self.superclass_receiver.superclass, _expected_superclass_results['superclass'])
3761- self.assertEquals(len(self.superclass_receiver.messages), len(_expected_superclass_results['messages']))
3762+ self.assertEqual(self.superclass_receiver.name, _expected_superclass_results['name'])
3763+ self.assertEqual(self.superclass_receiver.superclass, _expected_superclass_results['superclass'])
3764+ self.assertEqual(len(self.superclass_receiver.messages), len(_expected_superclass_results['messages']))
3765 for index, message in enumerate(self.superclass_receiver.messages):
3766 self.check_message(message, _expected_superclass_results['messages'][index])
3767
3768@@ -309,9 +309,9 @@ class GeneratedFileContentsTest(unittest.TestCase):
3769 expected_line_list = expected_file_contents.splitlines(False)
3770
3771 for index, actual_line in enumerate(actual_line_list):
3772- self.assertEquals(actual_line, expected_line_list[index])
3773+ self.assertEqual(actual_line, expected_line_list[index])
3774
3775- self.assertEquals(len(actual_line_list), len(expected_line_list))
3776+ self.assertEqual(len(actual_line_list), len(expected_line_list))
3777
3778 def assertHeaderEqual(self, input_messages_file_contents, expected_file_name):
3779 actual_file_contents = messages.generate_messages_header(StringIO(input_messages_file_contents))
3780@@ -344,11 +344,11 @@ class ReceiverImplementationTest(GeneratedFileContentsTest):
3781
3782 class UnsupportedPrecompilerDirectiveTest(unittest.TestCase):
3783 def test_error_at_else(self):
3784- with self.assertRaisesRegexp(Exception, r"ERROR: '#else.*' is not supported in the \*\.in files"):
3785+ with self.assertRaisesRegex(Exception, r"ERROR: '#else.*' is not supported in the \*\.in files"):
3786 messages.generate_message_handler(StringIO("asd\n#else bla\nfoo"))
3787
3788 def test_error_at_elif(self):
3789- with self.assertRaisesRegexp(Exception, r"ERROR: '#elif.*' is not supported in the \*\.in files"):
3790+ with self.assertRaisesRegex(Exception, r"ERROR: '#elif.*' is not supported in the \*\.in files"):
3791 messages.generate_message_handler(StringIO("asd\n#elif bla\nfoo"))
3792
3793
3794diff --git a/Source/cmake/WebKitCommon.cmake b/Source/cmake/WebKitCommon.cmake
3795index de4ac8f65..1ba7b58ea 100644
3796--- a/Source/cmake/WebKitCommon.cmake
3797+++ b/Source/cmake/WebKitCommon.cmake
3798@@ -25,9 +25,6 @@ if (NOT HAS_RUN_WEBKIT_COMMON)
3799 find_package(Perl 5.10.0 REQUIRED)
3800
3801 find_package(PythonInterp 2.7.0 REQUIRED)
3802- if (PYTHON_VERSION_MAJOR GREATER 2)
3803- message(FATAL_ERROR "Python 2 is required, but Python ${PYTHON_VERSION_MAJOR} was found.")
3804- endif ()
3805
3806 # We cannot check for RUBY_FOUND because it is set only when the full package is installed and
3807 # the only thing we need is the interpreter. Unlike Python, cmake does not provide a macro
3808diff --git a/Tools/jhbuild/jhbuildutils.py b/Tools/jhbuild/jhbuildutils.py
3809index c00160e7e..f4edc29a2 100644
3810--- a/Tools/jhbuild/jhbuildutils.py
3811+++ b/Tools/jhbuild/jhbuildutils.py
3812@@ -1,7 +1,7 @@
3813 import glob
3814 import os.path
3815 import sys
3816-import __builtin__
3817+import builtins
3818
3819 top_level_dir = None
3820
3821@@ -35,9 +35,9 @@ def enter_jhbuild_environment_if_available(platform):
3822 sys.path.insert(0, source_path)
3823
3824 # When loading jhbuild from the source checkout it fails if the SRCDIR, PKGDATADIR or DATADIR aren't present.
3825- __builtin__.__dict__['SRCDIR'] = source_path
3826- __builtin__.__dict__['PKGDATADIR'] = None
3827- __builtin__.__dict__['DATADIR'] = None
3828+ builtins.__dict__['SRCDIR'] = source_path
3829+ builtins.__dict__['PKGDATADIR'] = None
3830+ builtins.__dict__['DATADIR'] = None
3831
3832 # We don't know the Python version, so we just assume that we can safely take the first one in the list.
3833 site_packages_path = glob.glob(os.path.join(get_dependencies_path(platform), "Root", "lib", "*", "site-packages"))
3834@@ -49,7 +49,7 @@ def enter_jhbuild_environment_if_available(platform):
3835 import jhbuild.config
3836 from jhbuild.errors import FatalError
3837 config = jhbuild.config.Config(get_config_file_for_platform(platform), [])
3838- except FatalError, exception:
3839+ except FatalError as exception:
3840 sys.stderr.write('Could not load jhbuild config file: %s\n' % exception.args[0])
3841 return False
3842
3843--
38442.21.0
3845
diff --git a/recipes-qt/qt5/qtwebkit_git.bb b/recipes-qt/qt5/qtwebkit_git.bb
index 4655d9fd..a52ae76e 100644
--- a/recipes-qt/qt5/qtwebkit_git.bb
+++ b/recipes-qt/qt5/qtwebkit_git.bb
@@ -12,7 +12,6 @@ DEPENDS += "qtbase qtdeclarative icu ruby-native sqlite3 glib-2.0 libxslt gperf-
12# Patches from https://github.com/meta-qt5/qtwebkit/commits/b5.13 12# Patches from https://github.com/meta-qt5/qtwebkit/commits/b5.13
13# 5.13.meta-qt5.1 13# 5.13.meta-qt5.1
14SRC_URI += "\ 14SRC_URI += "\
15 file://0001-Port-build-to-python3.patch \
16 file://0002-Do-not-skip-build-for-cross-compile.patch \ 15 file://0002-Do-not-skip-build-for-cross-compile.patch \
17 file://0003-Fix-build-with-non-glibc-libc-on-musl.patch \ 16 file://0003-Fix-build-with-non-glibc-libc-on-musl.patch \
18 file://0004-Fix-build-bug-for-armv32-BE.patch \ 17 file://0004-Fix-build-bug-for-armv32-BE.patch \
@@ -81,6 +80,6 @@ PACKAGECONFIG[hyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,hyphen"
81# remove default ${PN}-examples* set in qt5.inc, because they conflicts with ${PN} from separate webkit-examples recipe 80# remove default ${PN}-examples* set in qt5.inc, because they conflicts with ${PN} from separate webkit-examples recipe
82PACKAGES_remove = "${PN}-examples" 81PACKAGES_remove = "${PN}-examples"
83 82
84QT_MODULE_BRANCH = "dev" 83QT_MODULE_BRANCH = "5.212"
85 84
86SRCREV = "ab1bd15209abaf7effc51dbc2f272c5681af7223" 85SRCREV = "10cd6a106e1c461c774ca166a67b8c835c755ef7"