1*4882a593SmuzhiyunFrom bf94b834e9beb4e7bc25dbc4c61f5e2db39e7cdc Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: James Hilliard <james.hilliard1@gmail.com> 3*4882a593SmuzhiyunDate: Fri, 4 Feb 2022 15:43:35 -0700 4*4882a593SmuzhiyunSubject: [PATCH] Add python3 build support 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunAdapted from: 7*4882a593Smuzhiyunhttps://github.com/archlinux/svntogit-packages/blob/6edf5f1aaea952d046aff89a2e0175258fe77361/trunk/qt5-webengine-chromium-python3.patch 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: James Hilliard <james.hilliard1@gmail.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun .../protobufs/binary_proto_generator.py | 8 +- 12*4882a593Smuzhiyun .../tracing/generate_trace_viewer_grd.py | 2 +- 13*4882a593Smuzhiyun chromium/mojo/public/tools/bindings/BUILD.gn | 2 + 14*4882a593Smuzhiyun .../tools/bindings/gen_data_files_list.py | 8 +- 15*4882a593Smuzhiyun .../generators/mojom_java_generator.py | 4 + 16*4882a593Smuzhiyun .../tools/mojom/mojom/generate/generator.py | 14 ++-- 17*4882a593Smuzhiyun .../tools/mojom/mojom/generate/module.py | 3 +- 18*4882a593Smuzhiyun .../mojom/mojom/generate/template_expander.py | 12 +-- 19*4882a593Smuzhiyun .../scripts/bind_gen/blink_v8_bridge.py | 6 +- 20*4882a593Smuzhiyun .../scripts/bind_gen/callback_interface.py | 2 +- 21*4882a593Smuzhiyun .../bindings/scripts/bind_gen/code_node.py | 10 +-- 22*4882a593Smuzhiyun .../bindings/scripts/bind_gen/codegen_expr.py | 15 ++-- 23*4882a593Smuzhiyun .../scripts/bind_gen/codegen_format.py | 2 +- 24*4882a593Smuzhiyun .../scripts/bind_gen/codegen_utils.py | 2 +- 25*4882a593Smuzhiyun .../bindings/scripts/bind_gen/dictionary.py | 2 +- 26*4882a593Smuzhiyun .../bindings/scripts/bind_gen/interface.py | 82 +++++++++++-------- 27*4882a593Smuzhiyun .../scripts/bind_gen/mako_renderer.py | 2 +- 28*4882a593Smuzhiyun .../bindings/scripts/bind_gen/style_format.py | 9 +- 29*4882a593Smuzhiyun .../bindings/scripts/bind_gen/task_queue.py | 5 +- 30*4882a593Smuzhiyun .../bindings/scripts/code_generator.py | 10 +++ 31*4882a593Smuzhiyun .../scripts/generate_origin_trial_features.py | 4 +- 32*4882a593Smuzhiyun .../bindings/scripts/idl_definitions.py | 8 +- 33*4882a593Smuzhiyun .../renderer/bindings/scripts/idl_reader.py | 4 +- 34*4882a593Smuzhiyun .../renderer/bindings/scripts/idl_types.py | 2 +- 35*4882a593Smuzhiyun .../renderer/bindings/scripts/utilities.py | 28 +++---- 36*4882a593Smuzhiyun .../renderer/bindings/scripts/v8_interface.py | 9 +- 37*4882a593Smuzhiyun .../renderer/bindings/scripts/v8_methods.py | 4 + 38*4882a593Smuzhiyun .../renderer/bindings/scripts/v8_utilities.py | 2 +- 39*4882a593Smuzhiyun .../scripts/web_idl/callback_interface.py | 12 +-- 40*4882a593Smuzhiyun .../bindings/scripts/web_idl/database.py | 2 +- 41*4882a593Smuzhiyun .../bindings/scripts/web_idl/exposure.py | 5 +- 42*4882a593Smuzhiyun .../bindings/scripts/web_idl/function_like.py | 28 +++---- 43*4882a593Smuzhiyun .../bindings/scripts/web_idl/idl_compiler.py | 21 ++--- 44*4882a593Smuzhiyun .../bindings/scripts/web_idl/interface.py | 45 +++++----- 45*4882a593Smuzhiyun .../bindings/scripts/web_idl/ir_builder.py | 29 ++++--- 46*4882a593Smuzhiyun .../bindings/scripts/web_idl/make_copy.py | 7 ++ 47*4882a593Smuzhiyun .../bindings/scripts/web_idl/namespace.py | 12 +-- 48*4882a593Smuzhiyun .../bindings/templates/dictionary_v8.cc.tmpl | 8 +- 49*4882a593Smuzhiyun .../scripts/core/css/make_style_shorthands.py | 23 +++--- 50*4882a593Smuzhiyun .../properties/make_css_property_instances.py | 4 +- 51*4882a593Smuzhiyun .../blink/renderer/build/scripts/gperf.py | 2 +- 52*4882a593Smuzhiyun .../blink/renderer/build/scripts/in_file.py | 2 +- 53*4882a593Smuzhiyun .../renderer/build/scripts/in_generator.py | 5 ++ 54*4882a593Smuzhiyun .../build/scripts/make_runtime_features.py | 2 +- 55*4882a593Smuzhiyun .../scripts/templates/element_factory.cc.tmpl | 4 +- 56*4882a593Smuzhiyun .../templates/element_type_helpers.cc.tmpl | 4 +- 57*4882a593Smuzhiyun .../templates/element_type_helpers.h.tmpl | 2 +- 58*4882a593Smuzhiyun .../build/scripts/templates/macros.tmpl | 4 +- 59*4882a593Smuzhiyun .../templates/make_qualified_names.h.tmpl | 4 +- 60*4882a593Smuzhiyun .../dawn/generator/generator_lib.py | 4 + 61*4882a593Smuzhiyun .../devtools-frontend/src/BUILD.gn | 2 + 62*4882a593Smuzhiyun .../scripts/build/build_inspector_overlay.py | 3 +- 63*4882a593Smuzhiyun .../build/build_release_applications.py | 9 +- 64*4882a593Smuzhiyun .../scripts/build/generate_devtools_grd.py | 4 +- 65*4882a593Smuzhiyun .../src/scripts/build/modular_build.py | 6 +- 66*4882a593Smuzhiyun chromium/third_party/jinja2/tests.py | 2 +- 67*4882a593Smuzhiyun chromium/tools/metrics/ukm/gen_builders.py | 5 +- 68*4882a593Smuzhiyun .../ui/ozone/generate_constructor_list.py | 13 ++- 69*4882a593Smuzhiyun .../ui/ozone/generate_ozone_platform_list.py | 26 ++++-- 70*4882a593Smuzhiyun 59 files changed, 331 insertions(+), 229 deletions(-) 71*4882a593Smuzhiyun 72*4882a593Smuzhiyundiff --git a/chromium/components/resources/protobufs/binary_proto_generator.py b/chromium/components/resources/protobufs/binary_proto_generator.py 73*4882a593Smuzhiyunindex 7422ead9697..16365515f26 100755 74*4882a593Smuzhiyun--- a/chromium/components/resources/protobufs/binary_proto_generator.py 75*4882a593Smuzhiyun+++ b/chromium/components/resources/protobufs/binary_proto_generator.py 76*4882a593Smuzhiyun@@ -7,7 +7,7 @@ 77*4882a593Smuzhiyun Converts a given ASCII proto into a binary resource. 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun """ 80*4882a593Smuzhiyun- 81*4882a593Smuzhiyun+from __future__ import print_function 82*4882a593Smuzhiyun import abc 83*4882a593Smuzhiyun import imp 84*4882a593Smuzhiyun import optparse 85*4882a593Smuzhiyun@@ -196,12 +196,12 @@ class BinaryProtoGenerator: 86*4882a593Smuzhiyun self._ImportProtoModules(opts.path) 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun if not self.VerifyArgs(opts): 89*4882a593Smuzhiyun- print "Wrong arguments" 90*4882a593Smuzhiyun+ print("Wrong arguments") 91*4882a593Smuzhiyun return 1 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun try: 94*4882a593Smuzhiyun self._GenerateBinaryProtos(opts) 95*4882a593Smuzhiyun except Exception as e: 96*4882a593Smuzhiyun- print "ERROR: Failed to render binary version of %s:\n %s\n%s" % ( 97*4882a593Smuzhiyun- opts.infile, str(e), traceback.format_exc()) 98*4882a593Smuzhiyun+ print("ERROR: Failed to render binary version of %s:\n %s\n%s" % 99*4882a593Smuzhiyun+ (opts.infile, str(e), traceback.format_exc())) 100*4882a593Smuzhiyun return 1 101*4882a593Smuzhiyundiff --git a/chromium/content/browser/tracing/generate_trace_viewer_grd.py b/chromium/content/browser/tracing/generate_trace_viewer_grd.py 102*4882a593Smuzhiyunindex 037f9497dc2..be393d21f90 100755 103*4882a593Smuzhiyun--- a/chromium/content/browser/tracing/generate_trace_viewer_grd.py 104*4882a593Smuzhiyun+++ b/chromium/content/browser/tracing/generate_trace_viewer_grd.py 105*4882a593Smuzhiyun@@ -74,7 +74,7 @@ def main(argv): 106*4882a593Smuzhiyun for filename in parsed_args.source_files: 107*4882a593Smuzhiyun add_file_to_grd(doc, os.path.basename(filename)) 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun- with open(parsed_args.output_filename, 'w') as output_file: 110*4882a593Smuzhiyun+ with open(parsed_args.output_filename, 'wb') as output_file: 111*4882a593Smuzhiyun output_file.write(doc.toxml(encoding='UTF-8')) 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun 114*4882a593Smuzhiyundiff --git a/chromium/mojo/public/tools/bindings/BUILD.gn b/chromium/mojo/public/tools/bindings/BUILD.gn 115*4882a593Smuzhiyunindex fc04b5dd0b1..708958e438b 100644 116*4882a593Smuzhiyun--- a/chromium/mojo/public/tools/bindings/BUILD.gn 117*4882a593Smuzhiyun+++ b/chromium/mojo/public/tools/bindings/BUILD.gn 118*4882a593Smuzhiyun@@ -2,9 +2,11 @@ 119*4882a593Smuzhiyun # Use of this source code is governed by a BSD-style license that can be 120*4882a593Smuzhiyun # found in the LICENSE file. 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun+import("//build/config/python.gni") 123*4882a593Smuzhiyun import("//mojo/public/tools/bindings/mojom.gni") 124*4882a593Smuzhiyun import("//third_party/jinja2/jinja2.gni") 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun+# TODO(crbug.com/1194274): Investigate nondeterminism in Py3 builds. 127*4882a593Smuzhiyun action("precompile_templates") { 128*4882a593Smuzhiyun sources = mojom_generator_sources 129*4882a593Smuzhiyun sources += [ 130*4882a593Smuzhiyundiff --git a/chromium/mojo/public/tools/bindings/gen_data_files_list.py b/chromium/mojo/public/tools/bindings/gen_data_files_list.py 131*4882a593Smuzhiyunindex 79c9e50efce..8b78d092418 100644 132*4882a593Smuzhiyun--- a/chromium/mojo/public/tools/bindings/gen_data_files_list.py 133*4882a593Smuzhiyun+++ b/chromium/mojo/public/tools/bindings/gen_data_files_list.py 134*4882a593Smuzhiyun@@ -18,7 +18,6 @@ import os 135*4882a593Smuzhiyun import re 136*4882a593Smuzhiyun import sys 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun-from cStringIO import StringIO 139*4882a593Smuzhiyun from optparse import OptionParser 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun sys.path.insert( 142*4882a593Smuzhiyun@@ -41,12 +40,9 @@ def main(): 143*4882a593Smuzhiyun pattern = re.compile(options.pattern) 144*4882a593Smuzhiyun files = [f for f in os.listdir(options.directory) if pattern.match(f)] 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun- stream = StringIO() 147*4882a593Smuzhiyun- for f in files: 148*4882a593Smuzhiyun- print(f, file=stream) 149*4882a593Smuzhiyun+ contents = '\n'.join(f for f in files) + '\n' 150*4882a593Smuzhiyun+ WriteFile(contents, options.output) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun- WriteFile(stream.getvalue(), options.output) 153*4882a593Smuzhiyun- stream.close() 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun if __name__ == '__main__': 156*4882a593Smuzhiyun sys.exit(main()) 157*4882a593Smuzhiyundiff --git a/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py b/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py 158*4882a593Smuzhiyunindex 96b2fdfae0c..00b9dccd00c 100644 159*4882a593Smuzhiyun--- a/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py 160*4882a593Smuzhiyun+++ b/chromium/mojo/public/tools/bindings/generators/mojom_java_generator.py 161*4882a593Smuzhiyun@@ -25,6 +25,10 @@ sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, 162*4882a593Smuzhiyun 'build', 'android', 'gyp')) 163*4882a593Smuzhiyun from util import build_utils 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun+# TODO(crbug.com/1174969): Remove this once Python2 is obsoleted. 166*4882a593Smuzhiyun+if sys.version_info.major != 2: 167*4882a593Smuzhiyun+ basestring = str 168*4882a593Smuzhiyun+ long = int 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun GENERATOR_PREFIX = 'java' 171*4882a593Smuzhiyun 172*4882a593Smuzhiyundiff --git a/chromium/mojo/public/tools/mojom/mojom/generate/generator.py b/chromium/mojo/public/tools/mojom/mojom/generate/generator.py 173*4882a593Smuzhiyunindex de62260a5c9..4a1c73fcf82 100644 174*4882a593Smuzhiyun--- a/chromium/mojo/public/tools/mojom/mojom/generate/generator.py 175*4882a593Smuzhiyun+++ b/chromium/mojo/public/tools/mojom/mojom/generate/generator.py 176*4882a593Smuzhiyun@@ -136,9 +136,14 @@ class Stylizer(object): 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun def WriteFile(contents, full_path): 179*4882a593Smuzhiyun # If |contents| is same with the file content, we skip updating. 180*4882a593Smuzhiyun+ if not isinstance(contents, bytes): 181*4882a593Smuzhiyun+ data = contents.encode('utf8') 182*4882a593Smuzhiyun+ else: 183*4882a593Smuzhiyun+ data = contents 184*4882a593Smuzhiyun+ 185*4882a593Smuzhiyun if os.path.isfile(full_path): 186*4882a593Smuzhiyun with open(full_path, 'rb') as destination_file: 187*4882a593Smuzhiyun- if destination_file.read() == contents: 188*4882a593Smuzhiyun+ if destination_file.read() == data: 189*4882a593Smuzhiyun return 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun # Make sure the containing directory exists. 192*4882a593Smuzhiyun@@ -146,11 +151,8 @@ def WriteFile(contents, full_path): 193*4882a593Smuzhiyun fileutil.EnsureDirectoryExists(full_dir) 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun # Dump the data to disk. 196*4882a593Smuzhiyun- with open(full_path, "wb") as f: 197*4882a593Smuzhiyun- if not isinstance(contents, bytes): 198*4882a593Smuzhiyun- f.write(contents.encode('utf-8')) 199*4882a593Smuzhiyun- else: 200*4882a593Smuzhiyun- f.write(contents) 201*4882a593Smuzhiyun+ with open(full_path, 'wb') as f: 202*4882a593Smuzhiyun+ f.write(data) 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun def AddComputedData(module): 206*4882a593Smuzhiyundiff --git a/chromium/mojo/public/tools/mojom/mojom/generate/module.py b/chromium/mojo/public/tools/mojom/mojom/generate/module.py 207*4882a593Smuzhiyunindex ebbc9b322ea..3d026429bbc 100644 208*4882a593Smuzhiyun--- a/chromium/mojo/public/tools/mojom/mojom/generate/module.py 209*4882a593Smuzhiyun+++ b/chromium/mojo/public/tools/mojom/mojom/generate/module.py 210*4882a593Smuzhiyun@@ -398,7 +398,8 @@ class Field(object): 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun class StructField(Field): 214*4882a593Smuzhiyun- pass 215*4882a593Smuzhiyun+ def __hash__(self): 216*4882a593Smuzhiyun+ return super(Field, self).__hash__() 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun class UnionField(Field): 220*4882a593Smuzhiyundiff --git a/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py b/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py 221*4882a593Smuzhiyunindex 7a300560246..8d9e26fb7f6 100644 222*4882a593Smuzhiyun--- a/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py 223*4882a593Smuzhiyun+++ b/chromium/mojo/public/tools/mojom/mojom/generate/template_expander.py 224*4882a593Smuzhiyun@@ -75,9 +75,9 @@ def PrecompileTemplates(generator_modules, output_dir): 225*4882a593Smuzhiyun os.path.dirname(module.__file__), generator.GetTemplatePrefix()) 226*4882a593Smuzhiyun ])) 227*4882a593Smuzhiyun jinja_env.filters.update(generator.GetFilters()) 228*4882a593Smuzhiyun- jinja_env.compile_templates( 229*4882a593Smuzhiyun- os.path.join(output_dir, "%s.zip" % generator.GetTemplatePrefix()), 230*4882a593Smuzhiyun- extensions=["tmpl"], 231*4882a593Smuzhiyun- zip="stored", 232*4882a593Smuzhiyun- py_compile=True, 233*4882a593Smuzhiyun- ignore_errors=False) 234*4882a593Smuzhiyun+ jinja_env.compile_templates(os.path.join( 235*4882a593Smuzhiyun+ output_dir, "%s.zip" % generator.GetTemplatePrefix()), 236*4882a593Smuzhiyun+ extensions=["tmpl"], 237*4882a593Smuzhiyun+ zip="stored", 238*4882a593Smuzhiyun+ py_compile=sys.version_info.major < 3, 239*4882a593Smuzhiyun+ ignore_errors=False) 240*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py 241*4882a593Smuzhiyunindex 3225ecca6e4..fc078d31b55 100644 242*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py 243*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py 244*4882a593Smuzhiyun@@ -344,7 +344,7 @@ def make_default_value_expr(idl_type, default_value): 245*4882a593Smuzhiyun """ 246*4882a593Smuzhiyun assert default_value.is_type_compatible_with(idl_type) 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun- class DefaultValueExpr: 249*4882a593Smuzhiyun+ class DefaultValueExpr(object): 250*4882a593Smuzhiyun _ALLOWED_SYMBOLS_IN_DEPS = ("isolate") 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun def __init__(self, initializer_expr, initializer_deps, 253*4882a593Smuzhiyun@@ -502,7 +502,7 @@ def make_v8_to_blink_value(blink_var_name, 254*4882a593Smuzhiyun assert isinstance(blink_var_name, str) 255*4882a593Smuzhiyun assert isinstance(v8_value_expr, str) 256*4882a593Smuzhiyun assert isinstance(idl_type, web_idl.IdlType) 257*4882a593Smuzhiyun- assert (argument_index is None or isinstance(argument_index, (int, long))) 258*4882a593Smuzhiyun+ assert (argument_index is None or isinstance(argument_index, int)) 259*4882a593Smuzhiyun assert (default_value is None 260*4882a593Smuzhiyun or isinstance(default_value, web_idl.LiteralConstant)) 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun@@ -622,7 +622,7 @@ def make_v8_to_blink_value_variadic(blink_var_name, v8_array, 263*4882a593Smuzhiyun """ 264*4882a593Smuzhiyun assert isinstance(blink_var_name, str) 265*4882a593Smuzhiyun assert isinstance(v8_array, str) 266*4882a593Smuzhiyun- assert isinstance(v8_array_start_index, (int, long)) 267*4882a593Smuzhiyun+ assert isinstance(v8_array_start_index, int) 268*4882a593Smuzhiyun assert isinstance(idl_type, web_idl.IdlType) 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun pattern = ("auto&& ${{{_1}}} = " 271*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py 272*4882a593Smuzhiyunindex 4a6df513068..8b51f23a409 100644 273*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py 274*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/callback_interface.py 275*4882a593Smuzhiyun@@ -177,7 +177,7 @@ def generate_callback_interface(callback_interface_identifier): 276*4882a593Smuzhiyun prop_install_mode=PropInstallMode.UNCONDITIONAL, 277*4882a593Smuzhiyun trampoline_var_name=None, 278*4882a593Smuzhiyun attribute_entries=[], 279*4882a593Smuzhiyun- constant_entries=filter(is_unconditional, constant_entries), 280*4882a593Smuzhiyun+ constant_entries=list(filter(is_unconditional, constant_entries)), 281*4882a593Smuzhiyun exposed_construct_entries=[], 282*4882a593Smuzhiyun operation_entries=[]) 283*4882a593Smuzhiyun (install_interface_template_decl, install_interface_template_def, 284*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py 285*4882a593Smuzhiyunindex 52972fefe20..e5ae9d9629e 100644 286*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py 287*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py 288*4882a593Smuzhiyun@@ -503,13 +503,13 @@ class CompositeNode(CodeNode): 289*4882a593Smuzhiyun gensym_kwargs = {} 290*4882a593Smuzhiyun template_vars = {} 291*4882a593Smuzhiyun for arg in args: 292*4882a593Smuzhiyun- assert isinstance(arg, (CodeNode, int, long, str)) 293*4882a593Smuzhiyun+ assert isinstance(arg, (CodeNode, int, str)) 294*4882a593Smuzhiyun gensym = CodeNode.gensym() 295*4882a593Smuzhiyun gensym_args.append("${{{}}}".format(gensym)) 296*4882a593Smuzhiyun template_vars[gensym] = arg 297*4882a593Smuzhiyun for key, value in kwargs.items(): 298*4882a593Smuzhiyun- assert isinstance(key, (int, long, str)) 299*4882a593Smuzhiyun- assert isinstance(value, (CodeNode, int, long, str)) 300*4882a593Smuzhiyun+ assert isinstance(key, (int, str)) 301*4882a593Smuzhiyun+ assert isinstance(value, (CodeNode, int, str)) 302*4882a593Smuzhiyun gensym = CodeNode.gensym() 303*4882a593Smuzhiyun gensym_kwargs[key] = "${{{}}}".format(gensym) 304*4882a593Smuzhiyun template_vars[gensym] = value 305*4882a593Smuzhiyun@@ -602,7 +602,7 @@ class ListNode(CodeNode): 306*4882a593Smuzhiyun def insert(self, index, node): 307*4882a593Smuzhiyun if node is None: 308*4882a593Smuzhiyun return 309*4882a593Smuzhiyun- assert isinstance(index, (int, long)) 310*4882a593Smuzhiyun+ assert isinstance(index, int) 311*4882a593Smuzhiyun assert isinstance(node, CodeNode) 312*4882a593Smuzhiyun assert node.outer is None and node.prev is None 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun@@ -721,7 +721,7 @@ class SymbolScopeNode(SequenceNode): 315*4882a593Smuzhiyun if not scope_chains: 316*4882a593Smuzhiyun return counts 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun- self_index = iter(scope_chains).next().index(self) 319*4882a593Smuzhiyun+ self_index = next(iter(scope_chains)).index(self) 320*4882a593Smuzhiyun scope_chains = map( 321*4882a593Smuzhiyun lambda scope_chain: scope_chain[self_index + 1:], scope_chains) 322*4882a593Smuzhiyun scope_to_likeliness = {} 323*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py 324*4882a593Smuzhiyunindex a229a6c71c9..5fa288dabf2 100644 325*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py 326*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_expr.py 327*4882a593Smuzhiyun@@ -109,7 +109,7 @@ def expr_and(terms): 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun if any(term.is_always_false for term in terms): 330*4882a593Smuzhiyun return _Expr(False) 331*4882a593Smuzhiyun- terms = filter(lambda x: not x.is_always_true, terms) 332*4882a593Smuzhiyun+ terms = list(filter(lambda x: not x.is_always_true, terms)) 333*4882a593Smuzhiyun if not terms: 334*4882a593Smuzhiyun return _Expr(True) 335*4882a593Smuzhiyun if len(terms) == 1: 336*4882a593Smuzhiyun@@ -124,7 +124,7 @@ def expr_or(terms): 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun if any(term.is_always_true for term in terms): 339*4882a593Smuzhiyun return _Expr(True) 340*4882a593Smuzhiyun- terms = filter(lambda x: not x.is_always_false, terms) 341*4882a593Smuzhiyun+ terms = list(filter(lambda x: not x.is_always_false, terms)) 342*4882a593Smuzhiyun if not terms: 343*4882a593Smuzhiyun return _Expr(False) 344*4882a593Smuzhiyun if len(terms) == 1: 345*4882a593Smuzhiyun@@ -222,7 +222,7 @@ def expr_from_exposure(exposure, 346*4882a593Smuzhiyun elif exposure.only_in_secure_contexts is False: 347*4882a593Smuzhiyun secure_context_term = _Expr(True) 348*4882a593Smuzhiyun else: 349*4882a593Smuzhiyun- terms = map(ref_enabled, exposure.only_in_secure_contexts) 350*4882a593Smuzhiyun+ terms = list(map(ref_enabled, exposure.only_in_secure_contexts)) 351*4882a593Smuzhiyun secure_context_term = expr_or( 352*4882a593Smuzhiyun [_Expr("${is_in_secure_context}"), 353*4882a593Smuzhiyun expr_not(expr_and(terms))]) 354*4882a593Smuzhiyun@@ -275,10 +275,11 @@ def expr_from_exposure(exposure, 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun # [ContextEnabled] 357*4882a593Smuzhiyun if exposure.context_enabled_features: 358*4882a593Smuzhiyun- terms = map( 359*4882a593Smuzhiyun- lambda feature: _Expr( 360*4882a593Smuzhiyun- "${{context_feature_settings}}->is{}Enabled()".format( 361*4882a593Smuzhiyun- feature)), exposure.context_enabled_features) 362*4882a593Smuzhiyun+ terms = list( 363*4882a593Smuzhiyun+ map( 364*4882a593Smuzhiyun+ lambda feature: _Expr( 365*4882a593Smuzhiyun+ "${{context_feature_settings}}->is{}Enabled()".format( 366*4882a593Smuzhiyun+ feature)), exposure.context_enabled_features)) 367*4882a593Smuzhiyun context_enabled_terms.append( 368*4882a593Smuzhiyun expr_and([_Expr("${context_feature_settings}"), 369*4882a593Smuzhiyun expr_or(terms)])) 370*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py 371*4882a593Smuzhiyunindex 87d26eec3ca..f3e9d38247e 100644 372*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py 373*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py 374*4882a593Smuzhiyun@@ -23,7 +23,7 @@ class _TemplateFormatter(string.Formatter): 375*4882a593Smuzhiyun self._template_formatter_indexing_count_ = 0 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun def get_value(self, key, args, kwargs): 378*4882a593Smuzhiyun- if isinstance(key, (int, long)): 379*4882a593Smuzhiyun+ if isinstance(key, int): 380*4882a593Smuzhiyun return args[key] 381*4882a593Smuzhiyun assert isinstance(key, str) 382*4882a593Smuzhiyun if not key: 383*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py 384*4882a593Smuzhiyunindex 2bcc4fed49a..e72282aa696 100644 385*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py 386*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py 387*4882a593Smuzhiyun@@ -116,4 +116,4 @@ def write_code_node_to_file(code_node, filepath): 388*4882a593Smuzhiyun # stderr=format_result.error_message)) 389*4882a593Smuzhiyun # 390*4882a593Smuzhiyun # web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents) 391*4882a593Smuzhiyun- web_idl.file_io.write_to_file_if_changed(filepath, rendered_text) 392*4882a593Smuzhiyun+ web_idl.file_io.write_to_file_if_changed(filepath, rendered_text.encode('utf-8')) 393*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py 394*4882a593Smuzhiyunindex b39f0100410..4d68202296b 100644 395*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py 396*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py 397*4882a593Smuzhiyun@@ -993,7 +993,7 @@ def make_dict_trace_func(cg_context): 398*4882a593Smuzhiyun _2 = _blink_member_name(member).value_var 399*4882a593Smuzhiyun return TextNode(_format(pattern, _1=_1, _2=_2)) 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun- body.extend(map(make_trace_member_node, own_members)) 402*4882a593Smuzhiyun+ body.extend(list(map(make_trace_member_node, own_members))) 403*4882a593Smuzhiyun body.append(TextNode("BaseClass::Trace(visitor);")) 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun return func_decl, func_def 406*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py 407*4882a593Smuzhiyunindex 10ff30656ad..bfdf7128aac 100644 408*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py 409*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py 410*4882a593Smuzhiyun@@ -582,7 +582,7 @@ def _make_blink_api_call(code_node, 411*4882a593Smuzhiyun overriding_args=None): 412*4882a593Smuzhiyun assert isinstance(code_node, SymbolScopeNode) 413*4882a593Smuzhiyun assert isinstance(cg_context, CodeGenContext) 414*4882a593Smuzhiyun- assert num_of_args is None or isinstance(num_of_args, (int, long)) 415*4882a593Smuzhiyun+ assert num_of_args is None or isinstance(num_of_args, int) 416*4882a593Smuzhiyun assert (overriding_args is None 417*4882a593Smuzhiyun or (isinstance(overriding_args, (list, tuple)) 418*4882a593Smuzhiyun and all(isinstance(arg, str) for arg in overriding_args))) 419*4882a593Smuzhiyun@@ -1196,8 +1196,10 @@ def make_overload_dispatcher(cg_context): 420*4882a593Smuzhiyun did_use_break = did_use_break or can_fail 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun conditional = expr_or( 423*4882a593Smuzhiyun- map(lambda item: expr_from_exposure(item.function_like.exposure), 424*4882a593Smuzhiyun- items)) 425*4882a593Smuzhiyun+ list( 426*4882a593Smuzhiyun+ map( 427*4882a593Smuzhiyun+ lambda item: expr_from_exposure(item.function_like.exposure 428*4882a593Smuzhiyun+ ), items))) 429*4882a593Smuzhiyun if not conditional.is_always_true: 430*4882a593Smuzhiyun node = CxxUnlikelyIfNode(cond=conditional, body=node) 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun@@ -4642,7 +4644,7 @@ class _PropEntryConstructorGroup(_PropEntryBase): 433*4882a593Smuzhiyun def __init__(self, is_context_dependent, exposure_conditional, world, 434*4882a593Smuzhiyun constructor_group, ctor_callback_name, ctor_func_length): 435*4882a593Smuzhiyun assert isinstance(ctor_callback_name, str) 436*4882a593Smuzhiyun- assert isinstance(ctor_func_length, (int, long)) 437*4882a593Smuzhiyun+ assert isinstance(ctor_func_length, int) 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun _PropEntryBase.__init__(self, is_context_dependent, 440*4882a593Smuzhiyun exposure_conditional, world, constructor_group) 441*4882a593Smuzhiyun@@ -4670,7 +4672,7 @@ class _PropEntryOperationGroup(_PropEntryBase): 442*4882a593Smuzhiyun op_func_length, 443*4882a593Smuzhiyun no_alloc_direct_callback_name=None): 444*4882a593Smuzhiyun assert isinstance(op_callback_name, str) 445*4882a593Smuzhiyun- assert isinstance(op_func_length, (int, long)) 446*4882a593Smuzhiyun+ assert isinstance(op_func_length, int) 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun _PropEntryBase.__init__(self, is_context_dependent, 449*4882a593Smuzhiyun exposure_conditional, world, operation_group) 450*4882a593Smuzhiyun@@ -5175,9 +5177,9 @@ def make_install_interface_template(cg_context, function_name, class_name, api_c 451*4882a593Smuzhiyun ]) 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun if class_like.identifier == "CSSStyleDeclaration": 454*4882a593Smuzhiyun- css_properties = filter( 455*4882a593Smuzhiyun- lambda attr: "CSSProperty" in attr.extended_attributes, 456*4882a593Smuzhiyun- class_like.attributes) 457*4882a593Smuzhiyun+ css_properties = list( 458*4882a593Smuzhiyun+ filter(lambda attr: "CSSProperty" in attr.extended_attributes, 459*4882a593Smuzhiyun+ class_like.attributes)) 460*4882a593Smuzhiyun if css_properties: 461*4882a593Smuzhiyun prop_name_list = "".join( 462*4882a593Smuzhiyun map(lambda attr: "\"{}\", ".format(attr.identifier), 463*4882a593Smuzhiyun@@ -5567,8 +5569,8 @@ ${instance_object} = ${v8_context}->Global()->GetPrototype().As<v8::Object>();\ 464*4882a593Smuzhiyun "V8DOMConfiguration::InstallConstants(${isolate}, " 465*4882a593Smuzhiyun "${interface_template}, ${prototype_template}, " 466*4882a593Smuzhiyun "kConstantCallbackTable, base::size(kConstantCallbackTable));") 467*4882a593Smuzhiyun- constant_callback_entries = filter(lambda entry: entry.const_callback_name, 468*4882a593Smuzhiyun- constant_entries) 469*4882a593Smuzhiyun+ constant_callback_entries = list(filter(lambda entry: entry.const_callback_name, 470*4882a593Smuzhiyun+ constant_entries)) 471*4882a593Smuzhiyun install_properties(table_name, constant_callback_entries, 472*4882a593Smuzhiyun _make_constant_callback_registration_table, 473*4882a593Smuzhiyun installer_call_text) 474*4882a593Smuzhiyun@@ -5584,8 +5586,8 @@ ${instance_object} = ${v8_context}->Global()->GetPrototype().As<v8::Object>();\ 475*4882a593Smuzhiyun "V8DOMConfiguration::InstallConstants(${isolate}, " 476*4882a593Smuzhiyun "${interface_template}, ${prototype_template}, " 477*4882a593Smuzhiyun "kConstantValueTable, base::size(kConstantValueTable));") 478*4882a593Smuzhiyun- constant_value_entries = filter( 479*4882a593Smuzhiyun- lambda entry: not entry.const_callback_name, constant_entries) 480*4882a593Smuzhiyun+ constant_value_entries = list(filter( 481*4882a593Smuzhiyun+ lambda entry: not entry.const_callback_name, constant_entries)) 482*4882a593Smuzhiyun install_properties(table_name, constant_value_entries, 483*4882a593Smuzhiyun _make_constant_value_registration_table, 484*4882a593Smuzhiyun installer_call_text) 485*4882a593Smuzhiyun@@ -6336,8 +6338,8 @@ def make_v8_context_snapshot_api(cg_context, component, attribute_entries, 486*4882a593Smuzhiyun assert isinstance(component, web_idl.Component) 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun derived_interfaces = cg_context.interface.deriveds 489*4882a593Smuzhiyun- derived_names = map(lambda interface: interface.identifier, 490*4882a593Smuzhiyun- derived_interfaces) 491*4882a593Smuzhiyun+ derived_names = list( 492*4882a593Smuzhiyun+ map(lambda interface: interface.identifier, derived_interfaces)) 493*4882a593Smuzhiyun derived_names.append(cg_context.interface.identifier) 494*4882a593Smuzhiyun if not ("Window" in derived_names or "HTMLDocument" in derived_names): 495*4882a593Smuzhiyun return None, None 496*4882a593Smuzhiyun@@ -6411,9 +6413,11 @@ def _make_v8_context_snapshot_get_reference_table_function( 497*4882a593Smuzhiyun collect_callbacks(named_properties_object_callback_defs) 498*4882a593Smuzhiyun collect_callbacks(cross_origin_property_callback_defs) 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun- entry_nodes = map( 501*4882a593Smuzhiyun- lambda name: TextNode("reinterpret_cast<intptr_t>({}),".format(name)), 502*4882a593Smuzhiyun- filter(None, callback_names)) 503*4882a593Smuzhiyun+ entry_nodes = list( 504*4882a593Smuzhiyun+ map( 505*4882a593Smuzhiyun+ lambda name: TextNode("reinterpret_cast<intptr_t>({}),".format(name 506*4882a593Smuzhiyun+ )), 507*4882a593Smuzhiyun+ filter(None, callback_names))) 508*4882a593Smuzhiyun table_node = ListNode([ 509*4882a593Smuzhiyun TextNode("using namespace ${class_name}Callbacks;"), 510*4882a593Smuzhiyun TextNode("static const intptr_t kReferenceTable[] = {"), 511*4882a593Smuzhiyun@@ -6451,10 +6455,11 @@ def _make_v8_context_snapshot_install_props_per_context_function( 512*4882a593Smuzhiyun class_name=None, 513*4882a593Smuzhiyun prop_install_mode=PropInstallMode.V8_CONTEXT_SNAPSHOT, 514*4882a593Smuzhiyun trampoline_var_name=None, 515*4882a593Smuzhiyun- attribute_entries=filter(selector, attribute_entries), 516*4882a593Smuzhiyun- constant_entries=filter(selector, constant_entries), 517*4882a593Smuzhiyun- exposed_construct_entries=filter(selector, exposed_construct_entries), 518*4882a593Smuzhiyun- operation_entries=filter(selector, operation_entries)) 519*4882a593Smuzhiyun+ attribute_entries=list(filter(selector, attribute_entries)), 520*4882a593Smuzhiyun+ constant_entries=list(filter(selector, constant_entries)), 521*4882a593Smuzhiyun+ exposed_construct_entries=list( 522*4882a593Smuzhiyun+ filter(selector, exposed_construct_entries)), 523*4882a593Smuzhiyun+ operation_entries=list(filter(selector, operation_entries))) 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun return func_decl, func_def 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun@@ -6810,11 +6815,11 @@ def generate_interface(interface_identifier): 528*4882a593Smuzhiyun class_name=impl_class_name, 529*4882a593Smuzhiyun prop_install_mode=PropInstallMode.UNCONDITIONAL, 530*4882a593Smuzhiyun trampoline_var_name=tp_install_unconditional_props, 531*4882a593Smuzhiyun- attribute_entries=filter(is_unconditional, attribute_entries), 532*4882a593Smuzhiyun- constant_entries=filter(is_unconditional, constant_entries), 533*4882a593Smuzhiyun- exposed_construct_entries=filter(is_unconditional, 534*4882a593Smuzhiyun- exposed_construct_entries), 535*4882a593Smuzhiyun- operation_entries=filter(is_unconditional, operation_entries)) 536*4882a593Smuzhiyun+ attribute_entries=list(filter(is_unconditional, attribute_entries)), 537*4882a593Smuzhiyun+ constant_entries=list(filter(is_unconditional, constant_entries)), 538*4882a593Smuzhiyun+ exposed_construct_entries=list( 539*4882a593Smuzhiyun+ filter(is_unconditional, exposed_construct_entries)), 540*4882a593Smuzhiyun+ operation_entries=list(filter(is_unconditional, operation_entries))) 541*4882a593Smuzhiyun (install_context_independent_props_decl, 542*4882a593Smuzhiyun install_context_independent_props_def, 543*4882a593Smuzhiyun install_context_independent_props_trampoline) = make_install_properties( 544*4882a593Smuzhiyun@@ -6823,11 +6828,14 @@ def generate_interface(interface_identifier): 545*4882a593Smuzhiyun class_name=impl_class_name, 546*4882a593Smuzhiyun prop_install_mode=PropInstallMode.CONTEXT_INDEPENDENT, 547*4882a593Smuzhiyun trampoline_var_name=tp_install_context_independent_props, 548*4882a593Smuzhiyun- attribute_entries=filter(is_context_independent, attribute_entries), 549*4882a593Smuzhiyun- constant_entries=filter(is_context_independent, constant_entries), 550*4882a593Smuzhiyun- exposed_construct_entries=filter(is_context_independent, 551*4882a593Smuzhiyun- exposed_construct_entries), 552*4882a593Smuzhiyun- operation_entries=filter(is_context_independent, operation_entries)) 553*4882a593Smuzhiyun+ attribute_entries=list( 554*4882a593Smuzhiyun+ filter(is_context_independent, attribute_entries)), 555*4882a593Smuzhiyun+ constant_entries=list(filter(is_context_independent, 556*4882a593Smuzhiyun+ constant_entries)), 557*4882a593Smuzhiyun+ exposed_construct_entries=list( 558*4882a593Smuzhiyun+ filter(is_context_independent, exposed_construct_entries)), 559*4882a593Smuzhiyun+ operation_entries=list( 560*4882a593Smuzhiyun+ filter(is_context_independent, operation_entries))) 561*4882a593Smuzhiyun (install_context_dependent_props_decl, install_context_dependent_props_def, 562*4882a593Smuzhiyun install_context_dependent_props_trampoline) = make_install_properties( 563*4882a593Smuzhiyun cg_context, 564*4882a593Smuzhiyun@@ -6835,11 +6843,13 @@ def generate_interface(interface_identifier): 565*4882a593Smuzhiyun class_name=impl_class_name, 566*4882a593Smuzhiyun prop_install_mode=PropInstallMode.CONTEXT_DEPENDENT, 567*4882a593Smuzhiyun trampoline_var_name=tp_install_context_dependent_props, 568*4882a593Smuzhiyun- attribute_entries=filter(is_context_dependent, attribute_entries), 569*4882a593Smuzhiyun- constant_entries=filter(is_context_dependent, constant_entries), 570*4882a593Smuzhiyun- exposed_construct_entries=filter(is_context_dependent, 571*4882a593Smuzhiyun- exposed_construct_entries), 572*4882a593Smuzhiyun- operation_entries=filter(is_context_dependent, operation_entries)) 573*4882a593Smuzhiyun+ attribute_entries=list(filter(is_context_dependent, 574*4882a593Smuzhiyun+ attribute_entries)), 575*4882a593Smuzhiyun+ constant_entries=list(filter(is_context_dependent, constant_entries)), 576*4882a593Smuzhiyun+ exposed_construct_entries=list( 577*4882a593Smuzhiyun+ filter(is_context_dependent, exposed_construct_entries)), 578*4882a593Smuzhiyun+ operation_entries=list(filter(is_context_dependent, 579*4882a593Smuzhiyun+ operation_entries))) 580*4882a593Smuzhiyun (install_interface_template_decl, install_interface_template_def, 581*4882a593Smuzhiyun install_interface_template_trampoline) = make_install_interface_template( 582*4882a593Smuzhiyun cg_context, 583*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py 584*4882a593Smuzhiyunindex b4c70553863..f3a2fcd772d 100644 585*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py 586*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/mako_renderer.py 587*4882a593Smuzhiyun@@ -105,7 +105,7 @@ class MakoRenderer(object): 588*4882a593Smuzhiyun on_error = self._caller_stack_on_error 589*4882a593Smuzhiyun if (len(current) <= len(on_error) 590*4882a593Smuzhiyun and all(current[i] == on_error[i] 591*4882a593Smuzhiyun- for i in xrange(len(current)))): 592*4882a593Smuzhiyun+ for i in range(len(current)))): 593*4882a593Smuzhiyun pass # Error happened in a deeper caller. 594*4882a593Smuzhiyun else: 595*4882a593Smuzhiyun self._caller_stack_on_error = list(self._caller_stack) 596*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py 597*4882a593Smuzhiyunindex dc3493cc394..017d3d47bb3 100644 598*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py 599*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py 600*4882a593Smuzhiyun@@ -70,8 +70,13 @@ def gn_format(contents, filename=None): 601*4882a593Smuzhiyun 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun def _invoke_format_command(command_line, filename, contents): 604*4882a593Smuzhiyun- proc = subprocess.Popen( 605*4882a593Smuzhiyun- command_line, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 606*4882a593Smuzhiyun+ kwargs = {} 607*4882a593Smuzhiyun+ if sys.version_info.major != 2: 608*4882a593Smuzhiyun+ kwargs['encoding'] = 'utf-8' 609*4882a593Smuzhiyun+ proc = subprocess.Popen(command_line, 610*4882a593Smuzhiyun+ stdin=subprocess.PIPE, 611*4882a593Smuzhiyun+ stdout=subprocess.PIPE, 612*4882a593Smuzhiyun+ **kwargs) 613*4882a593Smuzhiyun stdout_output, stderr_output = proc.communicate(input=contents) 614*4882a593Smuzhiyun exit_code = proc.wait() 615*4882a593Smuzhiyun 616*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py 617*4882a593Smuzhiyunindex 0d8f4c0f303..e666a9b668e 100644 618*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py 619*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/bind_gen/task_queue.py 620*4882a593Smuzhiyun@@ -2,6 +2,7 @@ 621*4882a593Smuzhiyun # Use of this source code is governed by a BSD-style license that can be 622*4882a593Smuzhiyun # found in the LICENSE file. 623*4882a593Smuzhiyun 624*4882a593Smuzhiyun+import functools 625*4882a593Smuzhiyun import multiprocessing 626*4882a593Smuzhiyun 627*4882a593Smuzhiyun from .package_initializer import package_initializer 628*4882a593Smuzhiyun@@ -76,7 +77,7 @@ class TaskQueue(object): 629*4882a593Smuzhiyun if not report_progress: 630*4882a593Smuzhiyun return 631*4882a593Smuzhiyun 632*4882a593Smuzhiyun- done_count = reduce( 633*4882a593Smuzhiyun+ done_count = functools.reduce( 634*4882a593Smuzhiyun lambda count, worker_task: count + bool(worker_task.ready()), 635*4882a593Smuzhiyun self._worker_tasks, 0) 636*4882a593Smuzhiyun report_progress(len(self._worker_tasks), done_count) 637*4882a593Smuzhiyun@@ -85,4 +86,4 @@ class TaskQueue(object): 638*4882a593Smuzhiyun def _task_queue_run_tasks(tasks): 639*4882a593Smuzhiyun for task in tasks: 640*4882a593Smuzhiyun func, args, kwargs = task 641*4882a593Smuzhiyun- apply(func, args, kwargs) 642*4882a593Smuzhiyun+ func(*args, **kwargs) 643*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py b/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py 644*4882a593Smuzhiyunindex e8280be7213..e49e6eb965e 100644 645*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py 646*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/code_generator.py 647*4882a593Smuzhiyun@@ -13,6 +13,7 @@ import re 648*4882a593Smuzhiyun import sys 649*4882a593Smuzhiyun 650*4882a593Smuzhiyun from idl_types import set_ancestors, IdlType 651*4882a593Smuzhiyun+from itertools import groupby 652*4882a593Smuzhiyun from v8_globals import includes 653*4882a593Smuzhiyun from v8_interface import constant_filters 654*4882a593Smuzhiyun from v8_types import set_component_dirs 655*4882a593Smuzhiyun@@ -43,6 +44,7 @@ TEMPLATES_DIR = os.path.normpath( 656*4882a593Smuzhiyun # after path[0] == invoking script dir 657*4882a593Smuzhiyun sys.path.insert(1, THIRD_PARTY_DIR) 658*4882a593Smuzhiyun import jinja2 659*4882a593Smuzhiyun+from jinja2.filters import make_attrgetter, environmentfilter 660*4882a593Smuzhiyun 661*4882a593Smuzhiyun 662*4882a593Smuzhiyun def generate_indented_conditional(code, conditional): 663*4882a593Smuzhiyun@@ -88,6 +90,13 @@ def runtime_enabled_if(code, name): 664*4882a593Smuzhiyun return generate_indented_conditional(code, function) 665*4882a593Smuzhiyun 666*4882a593Smuzhiyun 667*4882a593Smuzhiyun+@environmentfilter 668*4882a593Smuzhiyun+def do_stringify_key_group_by(environment, value, attribute): 669*4882a593Smuzhiyun+ expr = make_attrgetter(environment, attribute) 670*4882a593Smuzhiyun+ key = lambda item: '' if expr(item) is None else str(expr(item)) 671*4882a593Smuzhiyun+ return groupby(sorted(value, key=key), expr) 672*4882a593Smuzhiyun+ 673*4882a593Smuzhiyun+ 674*4882a593Smuzhiyun def initialize_jinja_env(cache_dir): 675*4882a593Smuzhiyun jinja_env = jinja2.Environment( 676*4882a593Smuzhiyun loader=jinja2.FileSystemLoader(TEMPLATES_DIR), 677*4882a593Smuzhiyun@@ -117,6 +126,7 @@ def initialize_jinja_env(cache_dir): 678*4882a593Smuzhiyun }) 679*4882a593Smuzhiyun jinja_env.filters.update(constant_filters()) 680*4882a593Smuzhiyun jinja_env.filters.update(method_filters()) 681*4882a593Smuzhiyun+ jinja_env.filters["stringifykeygroupby"] = do_stringify_key_group_by 682*4882a593Smuzhiyun return jinja_env 683*4882a593Smuzhiyun 684*4882a593Smuzhiyun 685*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py b/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py 686*4882a593Smuzhiyunindex 130004eae83..04c0fabcef2 100755 687*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py 688*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/generate_origin_trial_features.py 689*4882a593Smuzhiyun@@ -80,7 +80,7 @@ def read_idl_file(reader, idl_filename): 690*4882a593Smuzhiyun assert len(interfaces) == 1, ( 691*4882a593Smuzhiyun "Expected one interface in file %r, found %d" % 692*4882a593Smuzhiyun (idl_filename, len(interfaces))) 693*4882a593Smuzhiyun- return (interfaces.values()[0], includes) 694*4882a593Smuzhiyun+ return (list(interfaces.values())[0], includes) 695*4882a593Smuzhiyun 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun def interface_is_global(interface): 698*4882a593Smuzhiyun@@ -281,7 +281,7 @@ def main(): 699*4882a593Smuzhiyun 700*4882a593Smuzhiyun info_provider = create_component_info_provider( 701*4882a593Smuzhiyun os.path.normpath(options.info_dir), options.target_component) 702*4882a593Smuzhiyun- idl_filenames = map(str.strip, open(options.idl_files_list)) 703*4882a593Smuzhiyun+ idl_filenames = list(map(str.strip, open(options.idl_files_list))) 704*4882a593Smuzhiyun 705*4882a593Smuzhiyun generate_origin_trial_features(info_provider, options, idl_filenames) 706*4882a593Smuzhiyun return 0 707*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py b/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py 708*4882a593Smuzhiyunindex 14e6e9d3f87..b027818aef2 100644 709*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py 710*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/idl_definitions.py 711*4882a593Smuzhiyun@@ -394,7 +394,8 @@ class IdlInterface(object): 712*4882a593Smuzhiyun else: 713*4882a593Smuzhiyun raise ValueError('Unrecognized node class: %s' % child_class) 714*4882a593Smuzhiyun 715*4882a593Smuzhiyun- if len(filter(None, [self.iterable, self.maplike, self.setlike])) > 1: 716*4882a593Smuzhiyun+ if len(list(filter(None, 717*4882a593Smuzhiyun+ [self.iterable, self.maplike, self.setlike]))) > 1: 718*4882a593Smuzhiyun raise ValueError( 719*4882a593Smuzhiyun 'Interface can only have one of iterable<>, maplike<> and setlike<>.' 720*4882a593Smuzhiyun ) 721*4882a593Smuzhiyun@@ -512,6 +513,9 @@ class IdlAttribute(TypedObject): 722*4882a593Smuzhiyun def accept(self, visitor): 723*4882a593Smuzhiyun visitor.visit_attribute(self) 724*4882a593Smuzhiyun 725*4882a593Smuzhiyun+ def __lt__(self, other): 726*4882a593Smuzhiyun+ return self.name < other.name 727*4882a593Smuzhiyun+ 728*4882a593Smuzhiyun 729*4882a593Smuzhiyun ################################################################################ 730*4882a593Smuzhiyun # Constants 731*4882a593Smuzhiyun@@ -852,7 +856,7 @@ class IdlIncludes(object): 732*4882a593Smuzhiyun ################################################################################ 733*4882a593Smuzhiyun 734*4882a593Smuzhiyun 735*4882a593Smuzhiyun-class Exposure: 736*4882a593Smuzhiyun+class Exposure(object): 737*4882a593Smuzhiyun """An Exposure holds one Exposed or RuntimeEnabled condition. 738*4882a593Smuzhiyun Each exposure has two properties: exposed and runtime_enabled. 739*4882a593Smuzhiyun Exposure(e, r) corresponds to [Exposed(e r)]. Exposure(e) corresponds to 740*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py b/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py 741*4882a593Smuzhiyunindex 8d72865a6ca..b80eebdcd61 100644 742*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py 743*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/idl_reader.py 744*4882a593Smuzhiyun@@ -55,8 +55,8 @@ def validate_blink_idl_definitions(idl_filename, idl_file_basename, 745*4882a593Smuzhiyun definitions. There is no filename convention in this case. 746*4882a593Smuzhiyun - Otherwise, an IDL file is invalid. 747*4882a593Smuzhiyun """ 748*4882a593Smuzhiyun- targets = ( 749*4882a593Smuzhiyun- definitions.interfaces.values() + definitions.dictionaries.values()) 750*4882a593Smuzhiyun+ targets = (list(definitions.interfaces.values()) + 751*4882a593Smuzhiyun+ list(definitions.dictionaries.values())) 752*4882a593Smuzhiyun number_of_targets = len(targets) 753*4882a593Smuzhiyun if number_of_targets > 1: 754*4882a593Smuzhiyun raise Exception( 755*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py b/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py 756*4882a593Smuzhiyunindex cd4f0c3513b..ab95e9c0b08 100644 757*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py 758*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/idl_types.py 759*4882a593Smuzhiyun@@ -349,7 +349,7 @@ class IdlUnionType(IdlTypeBase): 760*4882a593Smuzhiyun return True 761*4882a593Smuzhiyun 762*4882a593Smuzhiyun def single_matching_member_type(self, predicate): 763*4882a593Smuzhiyun- matching_types = filter(predicate, self.flattened_member_types) 764*4882a593Smuzhiyun+ matching_types = list(filter(predicate, self.flattened_member_types)) 765*4882a593Smuzhiyun if len(matching_types) > 1: 766*4882a593Smuzhiyun raise ValueError('%s is ambiguous.' % self.name) 767*4882a593Smuzhiyun return matching_types[0] if matching_types else None 768*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/utilities.py b/chromium/third_party/blink/renderer/bindings/scripts/utilities.py 769*4882a593Smuzhiyunindex e1677ee7bd6..3c5006f064f 100644 770*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/utilities.py 771*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/utilities.py 772*4882a593Smuzhiyun@@ -196,8 +196,9 @@ class ComponentInfoProviderModules(ComponentInfoProvider): 773*4882a593Smuzhiyun 774*4882a593Smuzhiyun @property 775*4882a593Smuzhiyun def callback_functions(self): 776*4882a593Smuzhiyun- return dict(self._component_info_core['callback_functions'].items() + 777*4882a593Smuzhiyun- self._component_info_modules['callback_functions'].items()) 778*4882a593Smuzhiyun+ return dict( 779*4882a593Smuzhiyun+ list(self._component_info_core['callback_functions'].items()) + 780*4882a593Smuzhiyun+ list(self._component_info_modules['callback_functions'].items())) 781*4882a593Smuzhiyun 782*4882a593Smuzhiyun @property 783*4882a593Smuzhiyun def specifier_for_export(self): 784*4882a593Smuzhiyun@@ -209,8 +210,8 @@ class ComponentInfoProviderModules(ComponentInfoProvider): 785*4882a593Smuzhiyun 786*4882a593Smuzhiyun 787*4882a593Smuzhiyun def load_interfaces_info_overall_pickle(info_dir): 788*4882a593Smuzhiyun- with open(os.path.join(info_dir, 789*4882a593Smuzhiyun- 'interfaces_info.pickle')) as interface_info_file: 790*4882a593Smuzhiyun+ with open(os.path.join(info_dir, 'interfaces_info.pickle'), 791*4882a593Smuzhiyun+ mode='rb') as interface_info_file: 792*4882a593Smuzhiyun return pickle.load(interface_info_file) 793*4882a593Smuzhiyun 794*4882a593Smuzhiyun 795*4882a593Smuzhiyun@@ -236,23 +237,20 @@ def merge_dict_recursively(target, diff): 796*4882a593Smuzhiyun 797*4882a593Smuzhiyun def create_component_info_provider_core(info_dir): 798*4882a593Smuzhiyun interfaces_info = load_interfaces_info_overall_pickle(info_dir) 799*4882a593Smuzhiyun- with open( 800*4882a593Smuzhiyun- os.path.join(info_dir, 'core', 801*4882a593Smuzhiyun- 'component_info_core.pickle')) as component_info_file: 802*4882a593Smuzhiyun+ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'), 803*4882a593Smuzhiyun+ mode='rb') as component_info_file: 804*4882a593Smuzhiyun component_info = pickle.load(component_info_file) 805*4882a593Smuzhiyun return ComponentInfoProviderCore(interfaces_info, component_info) 806*4882a593Smuzhiyun 807*4882a593Smuzhiyun 808*4882a593Smuzhiyun def create_component_info_provider_modules(info_dir): 809*4882a593Smuzhiyun interfaces_info = load_interfaces_info_overall_pickle(info_dir) 810*4882a593Smuzhiyun- with open( 811*4882a593Smuzhiyun- os.path.join(info_dir, 'core', 812*4882a593Smuzhiyun- 'component_info_core.pickle')) as component_info_file: 813*4882a593Smuzhiyun+ with open(os.path.join(info_dir, 'core', 'component_info_core.pickle'), 814*4882a593Smuzhiyun+ mode='rb') as component_info_file: 815*4882a593Smuzhiyun component_info_core = pickle.load(component_info_file) 816*4882a593Smuzhiyun- with open( 817*4882a593Smuzhiyun- os.path.join( 818*4882a593Smuzhiyun- info_dir, 'modules', 819*4882a593Smuzhiyun- 'component_info_modules.pickle')) as component_info_file: 820*4882a593Smuzhiyun+ with open(os.path.join(info_dir, 'modules', 821*4882a593Smuzhiyun+ 'component_info_modules.pickle'), 822*4882a593Smuzhiyun+ mode='rb') as component_info_file: 823*4882a593Smuzhiyun component_info_modules = pickle.load(component_info_file) 824*4882a593Smuzhiyun return ComponentInfoProviderModules(interfaces_info, component_info_core, 825*4882a593Smuzhiyun component_info_modules) 826*4882a593Smuzhiyun@@ -356,7 +354,7 @@ def write_pickle_file(pickle_filename, data): 827*4882a593Smuzhiyun pickle_filename = abs(pickle_filename) 828*4882a593Smuzhiyun # If |data| is same with the file content, we skip updating. 829*4882a593Smuzhiyun if os.path.isfile(pickle_filename): 830*4882a593Smuzhiyun- with open(pickle_filename) as pickle_file: 831*4882a593Smuzhiyun+ with open(pickle_filename, 'rb') as pickle_file: 832*4882a593Smuzhiyun try: 833*4882a593Smuzhiyun if pickle.load(pickle_file) == data: 834*4882a593Smuzhiyun return 835*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py 836*4882a593Smuzhiyunindex a43260414db..a85b03abe75 100644 837*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py 838*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/v8_interface.py 839*4882a593Smuzhiyun@@ -189,7 +189,7 @@ def context_enabled_features(attributes): 840*4882a593Smuzhiyun return sorted([ 841*4882a593Smuzhiyun member for member in members 842*4882a593Smuzhiyun if member.get(KEY) and not member.get('exposed_test') 843*4882a593Smuzhiyun- ]) 844*4882a593Smuzhiyun+ ], key=lambda item: item['name']) 845*4882a593Smuzhiyun 846*4882a593Smuzhiyun def member_filter_by_name(members, name): 847*4882a593Smuzhiyun return [member for member in members if member[KEY] == name] 848*4882a593Smuzhiyun@@ -612,7 +612,8 @@ def interface_context(interface, interfaces, component_info): 849*4882a593Smuzhiyun sorted( 850*4882a593Smuzhiyun origin_trial_features(interface, context['constants'], 851*4882a593Smuzhiyun context['attributes'], context['methods']) + 852*4882a593Smuzhiyun- context_enabled_features(context['attributes'])), 853*4882a593Smuzhiyun+ context_enabled_features(context['attributes']), 854*4882a593Smuzhiyun+ key=lambda item: item['name']), 855*4882a593Smuzhiyun }) 856*4882a593Smuzhiyun if context['optional_features']: 857*4882a593Smuzhiyun includes.add('platform/bindings/v8_per_context_data.h') 858*4882a593Smuzhiyun@@ -1356,9 +1357,9 @@ def resolution_tests_methods(effective_overloads): 859*4882a593Smuzhiyun 860*4882a593Smuzhiyun # Extract argument and IDL type to simplify accessing these in each loop. 861*4882a593Smuzhiyun arguments = [method['arguments'][index] for method in methods] 862*4882a593Smuzhiyun- arguments_methods = zip(arguments, methods) 863*4882a593Smuzhiyun+ arguments_methods = list(zip(arguments, methods)) 864*4882a593Smuzhiyun idl_types = [argument['idl_type_object'] for argument in arguments] 865*4882a593Smuzhiyun- idl_types_methods = zip(idl_types, methods) 866*4882a593Smuzhiyun+ idl_types_methods = list(zip(idl_types, methods)) 867*4882a593Smuzhiyun 868*4882a593Smuzhiyun # We can’t do a single loop through all methods or simply sort them, because 869*4882a593Smuzhiyun # a method may be listed in multiple steps of the resolution algorithm, and 870*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py 871*4882a593Smuzhiyunindex 5f1f89a3def..6ee8a407798 100644 872*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py 873*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py 874*4882a593Smuzhiyun@@ -46,6 +46,10 @@ import v8_types 875*4882a593Smuzhiyun import v8_utilities 876*4882a593Smuzhiyun from v8_utilities import (has_extended_attribute_value, is_unforgeable) 877*4882a593Smuzhiyun 878*4882a593Smuzhiyun+# TODO: Remove this once Python2 is obsoleted. 879*4882a593Smuzhiyun+if sys.version_info.major != 2: 880*4882a593Smuzhiyun+ basestring = str 881*4882a593Smuzhiyun+ 882*4882a593Smuzhiyun 883*4882a593Smuzhiyun def method_is_visible(method, interface_is_partial): 884*4882a593Smuzhiyun if 'overloads' in method: 885*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py 886*4882a593Smuzhiyunindex 2ecd6923320..fcfc48371b1 100644 887*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py 888*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/v8_utilities.py 889*4882a593Smuzhiyun@@ -271,7 +271,7 @@ EXPOSED_WORKERS = set([ 890*4882a593Smuzhiyun ]) 891*4882a593Smuzhiyun 892*4882a593Smuzhiyun 893*4882a593Smuzhiyun-class ExposureSet: 894*4882a593Smuzhiyun+class ExposureSet(object): 895*4882a593Smuzhiyun """An ExposureSet is a collection of Exposure instructions.""" 896*4882a593Smuzhiyun 897*4882a593Smuzhiyun def __init__(self, exposures=None): 898*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py 899*4882a593Smuzhiyunindex 13fb7c7068d..b73b7710687 100644 900*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py 901*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/callback_interface.py 902*4882a593Smuzhiyun@@ -91,11 +91,13 @@ class CallbackInterface(UserDefinedType, WithExtendedAttributes, 903*4882a593Smuzhiyun for operation_ir in ir.operations 904*4882a593Smuzhiyun ]) 905*4882a593Smuzhiyun self._operation_groups = tuple([ 906*4882a593Smuzhiyun- OperationGroup( 907*4882a593Smuzhiyun- operation_group_ir, 908*4882a593Smuzhiyun- filter(lambda x: x.identifier == operation_group_ir.identifier, 909*4882a593Smuzhiyun- self._operations), 910*4882a593Smuzhiyun- owner=self) for operation_group_ir in ir.operation_groups 911*4882a593Smuzhiyun+ OperationGroup(operation_group_ir, 912*4882a593Smuzhiyun+ list( 913*4882a593Smuzhiyun+ filter( 914*4882a593Smuzhiyun+ lambda x: x.identifier == operation_group_ir 915*4882a593Smuzhiyun+ .identifier, self._operations)), 916*4882a593Smuzhiyun+ owner=self) 917*4882a593Smuzhiyun+ for operation_group_ir in ir.operation_groups 918*4882a593Smuzhiyun ]) 919*4882a593Smuzhiyun 920*4882a593Smuzhiyun @property 921*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py 922*4882a593Smuzhiyunindex c92cf48eb2a..f5d59129449 100644 923*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py 924*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/database.py 925*4882a593Smuzhiyun@@ -156,4 +156,4 @@ class Database(object): 926*4882a593Smuzhiyun return self._view_by_kind(Database._Kind.UNION) 927*4882a593Smuzhiyun 928*4882a593Smuzhiyun def _view_by_kind(self, kind): 929*4882a593Smuzhiyun- return self._impl.find_by_kind(kind).values() 930*4882a593Smuzhiyun+ return list(self._impl.find_by_kind(kind).values()) 931*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py 932*4882a593Smuzhiyunindex abaeef39c30..e36cf7439ae 100644 933*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py 934*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/exposure.py 935*4882a593Smuzhiyun@@ -8,8 +8,11 @@ from .runtime_enabled_features import RuntimeEnabledFeatures 936*4882a593Smuzhiyun class _Feature(str): 937*4882a593Smuzhiyun """Represents a runtime-enabled feature.""" 938*4882a593Smuzhiyun 939*4882a593Smuzhiyun+ def __new__(cls, value): 940*4882a593Smuzhiyun+ return str.__new__(cls, value) 941*4882a593Smuzhiyun+ 942*4882a593Smuzhiyun def __init__(self, value): 943*4882a593Smuzhiyun- str.__init__(self, value) 944*4882a593Smuzhiyun+ str.__init__(self) 945*4882a593Smuzhiyun self._is_context_dependent = ( 946*4882a593Smuzhiyun RuntimeEnabledFeatures.is_context_dependent(self)) 947*4882a593Smuzhiyun 948*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py 949*4882a593Smuzhiyunindex 648c70d803d..1712f19c672 100644 950*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py 951*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/function_like.py 952*4882a593Smuzhiyun@@ -71,8 +71,9 @@ class FunctionLike(WithIdentifier): 953*4882a593Smuzhiyun def num_of_required_arguments(self): 954*4882a593Smuzhiyun """Returns the number of required arguments.""" 955*4882a593Smuzhiyun return len( 956*4882a593Smuzhiyun- filter(lambda arg: not (arg.is_optional or arg.is_variadic), 957*4882a593Smuzhiyun- self.arguments)) 958*4882a593Smuzhiyun+ list( 959*4882a593Smuzhiyun+ filter(lambda arg: not (arg.is_optional or arg.is_variadic), 960*4882a593Smuzhiyun+ self.arguments))) 961*4882a593Smuzhiyun 962*4882a593Smuzhiyun 963*4882a593Smuzhiyun class OverloadGroup(WithIdentifier): 964*4882a593Smuzhiyun@@ -171,8 +172,7 @@ class OverloadGroup(WithIdentifier): 965*4882a593Smuzhiyun Returns the effective overload set. 966*4882a593Smuzhiyun https://heycam.github.io/webidl/#compute-the-effective-overload-set 967*4882a593Smuzhiyun """ 968*4882a593Smuzhiyun- assert argument_count is None or isinstance(argument_count, 969*4882a593Smuzhiyun- (int, long)) 970*4882a593Smuzhiyun+ assert argument_count is None or isinstance(argument_count, int) 971*4882a593Smuzhiyun 972*4882a593Smuzhiyun N = argument_count 973*4882a593Smuzhiyun S = [] 974*4882a593Smuzhiyun@@ -188,21 +188,21 @@ class OverloadGroup(WithIdentifier): 975*4882a593Smuzhiyun 976*4882a593Smuzhiyun S.append( 977*4882a593Smuzhiyun OverloadGroup.EffectiveOverloadItem( 978*4882a593Smuzhiyun- X, map(lambda arg: arg.idl_type, X.arguments), 979*4882a593Smuzhiyun- map(lambda arg: arg.optionality, X.arguments))) 980*4882a593Smuzhiyun+ X, list(map(lambda arg: arg.idl_type, X.arguments)), 981*4882a593Smuzhiyun+ list(map(lambda arg: arg.optionality, X.arguments)))) 982*4882a593Smuzhiyun 983*4882a593Smuzhiyun if X.is_variadic: 984*4882a593Smuzhiyun- for i in xrange(n, max(maxarg, N)): 985*4882a593Smuzhiyun- t = map(lambda arg: arg.idl_type, X.arguments) 986*4882a593Smuzhiyun- o = map(lambda arg: arg.optionality, X.arguments) 987*4882a593Smuzhiyun- for _ in xrange(n, i + 1): 988*4882a593Smuzhiyun+ for i in range(n, max(maxarg, N)): 989*4882a593Smuzhiyun+ t = list(map(lambda arg: arg.idl_type, X.arguments)) 990*4882a593Smuzhiyun+ o = list(map(lambda arg: arg.optionality, X.arguments)) 991*4882a593Smuzhiyun+ for _ in range(n, i + 1): 992*4882a593Smuzhiyun t.append(X.arguments[-1].idl_type) 993*4882a593Smuzhiyun o.append(X.arguments[-1].optionality) 994*4882a593Smuzhiyun S.append(OverloadGroup.EffectiveOverloadItem(X, t, o)) 995*4882a593Smuzhiyun 996*4882a593Smuzhiyun- t = map(lambda arg: arg.idl_type, X.arguments) 997*4882a593Smuzhiyun- o = map(lambda arg: arg.optionality, X.arguments) 998*4882a593Smuzhiyun- for i in xrange(n - 1, -1, -1): 999*4882a593Smuzhiyun+ t = list(map(lambda arg: arg.idl_type, X.arguments)) 1000*4882a593Smuzhiyun+ o = list(map(lambda arg: arg.optionality, X.arguments)) 1001*4882a593Smuzhiyun+ for i in range(n - 1, -1, -1): 1002*4882a593Smuzhiyun if X.arguments[i].optionality == IdlType.Optionality.REQUIRED: 1003*4882a593Smuzhiyun break 1004*4882a593Smuzhiyun S.append(OverloadGroup.EffectiveOverloadItem(X, t[:i], o[:i])) 1005*4882a593Smuzhiyun@@ -222,7 +222,7 @@ class OverloadGroup(WithIdentifier): 1006*4882a593Smuzhiyun for item in items) 1007*4882a593Smuzhiyun assert len(items) > 1 1008*4882a593Smuzhiyun 1009*4882a593Smuzhiyun- for index in xrange(len(items[0].type_list)): 1010*4882a593Smuzhiyun+ for index in range(len(items[0].type_list)): 1011*4882a593Smuzhiyun # Assume that the given items are valid, and we only need to test 1012*4882a593Smuzhiyun # the two types. 1013*4882a593Smuzhiyun if OverloadGroup.are_distinguishable_types( 1014*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py 1015*4882a593Smuzhiyunindex c5ee2bd8a3d..58315072480 100644 1016*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py 1017*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py 1018*4882a593Smuzhiyun@@ -149,8 +149,8 @@ class IdlCompiler(object): 1019*4882a593Smuzhiyun for old_ir in old_irs: 1020*4882a593Smuzhiyun new_ir = make_copy(old_ir) 1021*4882a593Smuzhiyun self._ir_map.add(new_ir) 1022*4882a593Smuzhiyun- new_ir.attributes = filter(not_disabled, new_ir.attributes) 1023*4882a593Smuzhiyun- new_ir.operations = filter(not_disabled, new_ir.operations) 1024*4882a593Smuzhiyun+ new_ir.attributes = list(filter(not_disabled, new_ir.attributes)) 1025*4882a593Smuzhiyun+ new_ir.operations = list(filter(not_disabled, new_ir.operations)) 1026*4882a593Smuzhiyun 1027*4882a593Smuzhiyun def _record_defined_in_partial_and_mixin(self): 1028*4882a593Smuzhiyun old_irs = self._ir_map.irs_of_kinds( 1029*4882a593Smuzhiyun@@ -231,7 +231,7 @@ class IdlCompiler(object): 1030*4882a593Smuzhiyun only_to_members_of_partial_or_mixin=False) 1031*4882a593Smuzhiyun propagate_to_exposure(propagate) 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyun- map(process_member_like, ir.iter_all_members()) 1034*4882a593Smuzhiyun+ list(map(process_member_like, ir.iter_all_members())) 1035*4882a593Smuzhiyun 1036*4882a593Smuzhiyun def process_member_like(ir): 1037*4882a593Smuzhiyun propagate = functools.partial(propagate_extattr, ir=ir) 1038*4882a593Smuzhiyun@@ -257,7 +257,7 @@ class IdlCompiler(object): 1039*4882a593Smuzhiyun 1040*4882a593Smuzhiyun self._ir_map.move_to_new_phase() 1041*4882a593Smuzhiyun 1042*4882a593Smuzhiyun- map(process_interface_like, old_irs) 1043*4882a593Smuzhiyun+ list(map(process_interface_like, old_irs)) 1044*4882a593Smuzhiyun 1045*4882a593Smuzhiyun def _determine_blink_headers(self): 1046*4882a593Smuzhiyun irs = self._ir_map.irs_of_kinds( 1047*4882a593Smuzhiyun@@ -422,9 +422,9 @@ class IdlCompiler(object): 1048*4882a593Smuzhiyun assert not new_interface.deriveds 1049*4882a593Smuzhiyun derived_set = identifier_to_derived_set.get( 1050*4882a593Smuzhiyun new_interface.identifier, set()) 1051*4882a593Smuzhiyun- new_interface.deriveds = map( 1052*4882a593Smuzhiyun- lambda id_: self._ref_to_idl_def_factory.create(id_), 1053*4882a593Smuzhiyun- sorted(derived_set)) 1054*4882a593Smuzhiyun+ new_interface.deriveds = list( 1055*4882a593Smuzhiyun+ map(lambda id_: self._ref_to_idl_def_factory.create(id_), 1056*4882a593Smuzhiyun+ sorted(derived_set))) 1057*4882a593Smuzhiyun 1058*4882a593Smuzhiyun def _supplement_missing_html_constructor_operation(self): 1059*4882a593Smuzhiyun # Temporary mitigation of misuse of [HTMLConstructor] 1060*4882a593Smuzhiyun@@ -553,7 +553,8 @@ class IdlCompiler(object): 1061*4882a593Smuzhiyun self._ir_map.add(new_ir) 1062*4882a593Smuzhiyun 1063*4882a593Smuzhiyun for group in new_ir.iter_all_overload_groups(): 1064*4882a593Smuzhiyun- exposures = map(lambda overload: overload.exposure, group) 1065*4882a593Smuzhiyun+ exposures = list(map(lambda overload: overload.exposure, 1066*4882a593Smuzhiyun+ group)) 1067*4882a593Smuzhiyun 1068*4882a593Smuzhiyun # [Exposed] 1069*4882a593Smuzhiyun if any(not exposure.global_names_and_features 1070*4882a593Smuzhiyun@@ -653,8 +654,8 @@ class IdlCompiler(object): 1071*4882a593Smuzhiyun constructs = set() 1072*4882a593Smuzhiyun for global_name in global_names: 1073*4882a593Smuzhiyun constructs.update(exposed_map.get(global_name, [])) 1074*4882a593Smuzhiyun- new_ir.exposed_constructs = map( 1075*4882a593Smuzhiyun- self._ref_to_idl_def_factory.create, sorted(constructs)) 1076*4882a593Smuzhiyun+ new_ir.exposed_constructs = list( 1077*4882a593Smuzhiyun+ map(self._ref_to_idl_def_factory.create, sorted(constructs))) 1078*4882a593Smuzhiyun 1079*4882a593Smuzhiyun assert not new_ir.legacy_window_aliases 1080*4882a593Smuzhiyun if new_ir.identifier != 'Window': 1081*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py 1082*4882a593Smuzhiyunindex 65d24e529d1..067ef2eb0b2 100644 1083*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py 1084*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/interface.py 1085*4882a593Smuzhiyun@@ -180,8 +180,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, 1086*4882a593Smuzhiyun self._constructor_groups = tuple([ 1087*4882a593Smuzhiyun ConstructorGroup( 1088*4882a593Smuzhiyun group_ir, 1089*4882a593Smuzhiyun- filter(lambda x: x.identifier == group_ir.identifier, 1090*4882a593Smuzhiyun- self._constructors), 1091*4882a593Smuzhiyun+ list( 1092*4882a593Smuzhiyun+ filter(lambda x: x.identifier == group_ir.identifier, 1093*4882a593Smuzhiyun+ self._constructors)), 1094*4882a593Smuzhiyun owner=self) for group_ir in ir.constructor_groups 1095*4882a593Smuzhiyun ]) 1096*4882a593Smuzhiyun assert len(self._constructor_groups) <= 1 1097*4882a593Smuzhiyun@@ -192,8 +193,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, 1098*4882a593Smuzhiyun self._named_constructor_groups = tuple([ 1099*4882a593Smuzhiyun ConstructorGroup( 1100*4882a593Smuzhiyun group_ir, 1101*4882a593Smuzhiyun- filter(lambda x: x.identifier == group_ir.identifier, 1102*4882a593Smuzhiyun- self._named_constructors), 1103*4882a593Smuzhiyun+ list( 1104*4882a593Smuzhiyun+ filter(lambda x: x.identifier == group_ir.identifier, 1105*4882a593Smuzhiyun+ self._named_constructors)), 1106*4882a593Smuzhiyun owner=self) for group_ir in ir.named_constructor_groups 1107*4882a593Smuzhiyun ]) 1108*4882a593Smuzhiyun self._operations = tuple([ 1109*4882a593Smuzhiyun@@ -203,22 +205,23 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, 1110*4882a593Smuzhiyun self._operation_groups = tuple([ 1111*4882a593Smuzhiyun OperationGroup( 1112*4882a593Smuzhiyun group_ir, 1113*4882a593Smuzhiyun- filter(lambda x: x.identifier == group_ir.identifier, 1114*4882a593Smuzhiyun- self._operations), 1115*4882a593Smuzhiyun+ list( 1116*4882a593Smuzhiyun+ filter(lambda x: x.identifier == group_ir.identifier, 1117*4882a593Smuzhiyun+ self._operations)), 1118*4882a593Smuzhiyun owner=self) for group_ir in ir.operation_groups 1119*4882a593Smuzhiyun ]) 1120*4882a593Smuzhiyun self._exposed_constructs = tuple(ir.exposed_constructs) 1121*4882a593Smuzhiyun self._legacy_window_aliases = tuple(ir.legacy_window_aliases) 1122*4882a593Smuzhiyun self._indexed_and_named_properties = None 1123*4882a593Smuzhiyun- indexed_and_named_property_operations = filter( 1124*4882a593Smuzhiyun- lambda x: x.is_indexed_or_named_property_operation, 1125*4882a593Smuzhiyun- self._operations) 1126*4882a593Smuzhiyun+ indexed_and_named_property_operations = list( 1127*4882a593Smuzhiyun+ filter(lambda x: x.is_indexed_or_named_property_operation, 1128*4882a593Smuzhiyun+ self._operations)) 1129*4882a593Smuzhiyun if indexed_and_named_property_operations: 1130*4882a593Smuzhiyun self._indexed_and_named_properties = IndexedAndNamedProperties( 1131*4882a593Smuzhiyun indexed_and_named_property_operations, owner=self) 1132*4882a593Smuzhiyun self._stringifier = None 1133*4882a593Smuzhiyun- stringifier_operation_irs = filter(lambda x: x.is_stringifier, 1134*4882a593Smuzhiyun- ir.operations) 1135*4882a593Smuzhiyun+ stringifier_operation_irs = list( 1136*4882a593Smuzhiyun+ filter(lambda x: x.is_stringifier, ir.operations)) 1137*4882a593Smuzhiyun if stringifier_operation_irs: 1138*4882a593Smuzhiyun assert len(stringifier_operation_irs) == 1 1139*4882a593Smuzhiyun op_ir = make_copy(stringifier_operation_irs[0]) 1140*4882a593Smuzhiyun@@ -231,8 +234,9 @@ class Interface(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, 1141*4882a593Smuzhiyun attribute = None 1142*4882a593Smuzhiyun if operation.stringifier_attribute: 1143*4882a593Smuzhiyun attr_id = operation.stringifier_attribute 1144*4882a593Smuzhiyun- attributes = filter(lambda x: x.identifier == attr_id, 1145*4882a593Smuzhiyun- self._attributes) 1146*4882a593Smuzhiyun+ attributes = list( 1147*4882a593Smuzhiyun+ filter(lambda x: x.identifier == attr_id, 1148*4882a593Smuzhiyun+ self._attributes)) 1149*4882a593Smuzhiyun assert len(attributes) == 1 1150*4882a593Smuzhiyun attribute = attributes[0] 1151*4882a593Smuzhiyun self._stringifier = Stringifier(operation, attribute, owner=self) 1152*4882a593Smuzhiyun@@ -578,8 +582,9 @@ class Iterable(WithDebugInfo): 1153*4882a593Smuzhiyun self._operation_groups = tuple([ 1154*4882a593Smuzhiyun OperationGroup( 1155*4882a593Smuzhiyun group_ir, 1156*4882a593Smuzhiyun- filter(lambda x: x.identifier == group_ir.identifier, 1157*4882a593Smuzhiyun- self._operations), 1158*4882a593Smuzhiyun+ list( 1159*4882a593Smuzhiyun+ filter(lambda x: x.identifier == group_ir.identifier, 1160*4882a593Smuzhiyun+ self._operations)), 1161*4882a593Smuzhiyun owner=owner) for group_ir in ir.operation_groups 1162*4882a593Smuzhiyun ]) 1163*4882a593Smuzhiyun 1164*4882a593Smuzhiyun@@ -666,8 +671,9 @@ class Maplike(WithDebugInfo): 1165*4882a593Smuzhiyun self._operation_groups = tuple([ 1166*4882a593Smuzhiyun OperationGroup( 1167*4882a593Smuzhiyun group_ir, 1168*4882a593Smuzhiyun- filter(lambda x: x.identifier == group_ir.identifier, 1169*4882a593Smuzhiyun- self._operations), 1170*4882a593Smuzhiyun+ list( 1171*4882a593Smuzhiyun+ filter(lambda x: x.identifier == group_ir.identifier, 1172*4882a593Smuzhiyun+ self._operations)), 1173*4882a593Smuzhiyun owner=owner) for group_ir in ir.operation_groups 1174*4882a593Smuzhiyun ]) 1175*4882a593Smuzhiyun 1176*4882a593Smuzhiyun@@ -755,8 +761,9 @@ class Setlike(WithDebugInfo): 1177*4882a593Smuzhiyun self._operation_groups = tuple([ 1178*4882a593Smuzhiyun OperationGroup( 1179*4882a593Smuzhiyun group_ir, 1180*4882a593Smuzhiyun- filter(lambda x: x.identifier == group_ir.identifier, 1181*4882a593Smuzhiyun- self._operations), 1182*4882a593Smuzhiyun+ list( 1183*4882a593Smuzhiyun+ filter(lambda x: x.identifier == group_ir.identifier, 1184*4882a593Smuzhiyun+ self._operations)), 1185*4882a593Smuzhiyun owner=owner) for group_ir in ir.operation_groups 1186*4882a593Smuzhiyun ]) 1187*4882a593Smuzhiyun 1188*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py 1189*4882a593Smuzhiyunindex e9aeff4ab82..d80554d603e 100644 1190*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py 1191*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/ir_builder.py 1192*4882a593Smuzhiyun@@ -2,6 +2,8 @@ 1193*4882a593Smuzhiyun # Use of this source code is governed by a BSD-style license that can be 1194*4882a593Smuzhiyun # found in the LICENSE file. 1195*4882a593Smuzhiyun 1196*4882a593Smuzhiyun+import sys 1197*4882a593Smuzhiyun+ 1198*4882a593Smuzhiyun from .argument import Argument 1199*4882a593Smuzhiyun from .ast_group import AstGroup 1200*4882a593Smuzhiyun from .attribute import Attribute 1201*4882a593Smuzhiyun@@ -30,6 +32,11 @@ from .operation import Operation 1202*4882a593Smuzhiyun from .typedef import Typedef 1203*4882a593Smuzhiyun 1204*4882a593Smuzhiyun 1205*4882a593Smuzhiyun+# TODO: Remove this once Python2 is obsoleted. 1206*4882a593Smuzhiyun+if sys.version_info.major != 2: 1207*4882a593Smuzhiyun+ long = int 1208*4882a593Smuzhiyun+ 1209*4882a593Smuzhiyun+ 1210*4882a593Smuzhiyun def load_and_register_idl_definitions(filepaths, register_ir, 1211*4882a593Smuzhiyun create_ref_to_idl_def, idl_type_factory): 1212*4882a593Smuzhiyun """ 1213*4882a593Smuzhiyun@@ -160,7 +167,7 @@ class _IRBuilder(object): 1214*4882a593Smuzhiyun child_nodes = list(node.GetChildren()) 1215*4882a593Smuzhiyun extended_attributes = self._take_extended_attributes(child_nodes) 1216*4882a593Smuzhiyun 1217*4882a593Smuzhiyun- members = map(self._build_interface_member, child_nodes) 1218*4882a593Smuzhiyun+ members = list(map(self._build_interface_member, child_nodes)) 1219*4882a593Smuzhiyun attributes = [] 1220*4882a593Smuzhiyun constants = [] 1221*4882a593Smuzhiyun operations = [] 1222*4882a593Smuzhiyun@@ -302,7 +309,7 @@ class _IRBuilder(object): 1223*4882a593Smuzhiyun child_nodes = list(node.GetChildren()) 1224*4882a593Smuzhiyun inherited = self._take_inheritance(child_nodes) 1225*4882a593Smuzhiyun extended_attributes = self._take_extended_attributes(child_nodes) 1226*4882a593Smuzhiyun- own_members = map(self._build_dictionary_member, child_nodes) 1227*4882a593Smuzhiyun+ own_members = list(map(self._build_dictionary_member, child_nodes)) 1228*4882a593Smuzhiyun 1229*4882a593Smuzhiyun return Dictionary.IR( 1230*4882a593Smuzhiyun identifier=Identifier(node.GetName()), 1231*4882a593Smuzhiyun@@ -336,7 +343,7 @@ class _IRBuilder(object): 1232*4882a593Smuzhiyun 1233*4882a593Smuzhiyun child_nodes = list(node.GetChildren()) 1234*4882a593Smuzhiyun extended_attributes = self._take_extended_attributes(child_nodes) 1235*4882a593Smuzhiyun- members = map(self._build_interface_member, child_nodes) 1236*4882a593Smuzhiyun+ members = list(map(self._build_interface_member, child_nodes)) 1237*4882a593Smuzhiyun constants = [] 1238*4882a593Smuzhiyun operations = [] 1239*4882a593Smuzhiyun for member in members: 1240*4882a593Smuzhiyun@@ -456,8 +463,8 @@ class _IRBuilder(object): 1241*4882a593Smuzhiyun assert len(child_nodes) == 1 1242*4882a593Smuzhiyun child = child_nodes[0] 1243*4882a593Smuzhiyun if child.GetClass() == 'Arguments': 1244*4882a593Smuzhiyun- arguments = map(build_extattr_argument, 1245*4882a593Smuzhiyun- child.GetChildren()) 1246*4882a593Smuzhiyun+ arguments = list( 1247*4882a593Smuzhiyun+ map(build_extattr_argument, child.GetChildren())) 1248*4882a593Smuzhiyun elif child.GetClass() == 'Call': 1249*4882a593Smuzhiyun assert len(child.GetChildren()) == 1 1250*4882a593Smuzhiyun grand_child = child.GetChildren()[0] 1251*4882a593Smuzhiyun@@ -486,7 +493,9 @@ class _IRBuilder(object): 1252*4882a593Smuzhiyun 1253*4882a593Smuzhiyun assert node.GetClass() == 'ExtAttributes' 1254*4882a593Smuzhiyun return ExtendedAttributes( 1255*4882a593Smuzhiyun- filter(None, map(build_extended_attribute, node.GetChildren()))) 1256*4882a593Smuzhiyun+ list( 1257*4882a593Smuzhiyun+ filter(None, map(build_extended_attribute, 1258*4882a593Smuzhiyun+ node.GetChildren())))) 1259*4882a593Smuzhiyun 1260*4882a593Smuzhiyun def _build_inheritance(self, node): 1261*4882a593Smuzhiyun assert node.GetClass() == 'Inherit' 1262*4882a593Smuzhiyun@@ -506,7 +515,7 @@ class _IRBuilder(object): 1263*4882a593Smuzhiyun 1264*4882a593Smuzhiyun def _build_iterable(self, node): 1265*4882a593Smuzhiyun assert node.GetClass() == 'Iterable' 1266*4882a593Smuzhiyun- types = map(self._build_type, node.GetChildren()) 1267*4882a593Smuzhiyun+ types = list(map(self._build_type, node.GetChildren())) 1268*4882a593Smuzhiyun assert len(types) == 1 or len(types) == 2 1269*4882a593Smuzhiyun if len(types) == 1: # value iterator 1270*4882a593Smuzhiyun key_type, value_type = (None, types[0]) 1271*4882a593Smuzhiyun@@ -584,7 +593,7 @@ class _IRBuilder(object): 1272*4882a593Smuzhiyun def _build_maplike(self, node, interface_identifier): 1273*4882a593Smuzhiyun assert node.GetClass() == 'Maplike' 1274*4882a593Smuzhiyun assert isinstance(interface_identifier, Identifier) 1275*4882a593Smuzhiyun- types = map(self._build_type, node.GetChildren()) 1276*4882a593Smuzhiyun+ types = list(map(self._build_type, node.GetChildren())) 1277*4882a593Smuzhiyun assert len(types) == 2 1278*4882a593Smuzhiyun key_type, value_type = types 1279*4882a593Smuzhiyun is_readonly = bool(node.GetProperty('READONLY')) 1280*4882a593Smuzhiyun@@ -676,7 +685,7 @@ class _IRBuilder(object): 1281*4882a593Smuzhiyun def _build_setlike(self, node, interface_identifier): 1282*4882a593Smuzhiyun assert node.GetClass() == 'Setlike' 1283*4882a593Smuzhiyun assert isinstance(interface_identifier, Identifier) 1284*4882a593Smuzhiyun- types = map(self._build_type, node.GetChildren()) 1285*4882a593Smuzhiyun+ types = list(map(self._build_type, node.GetChildren())) 1286*4882a593Smuzhiyun assert len(types) == 1 1287*4882a593Smuzhiyun value_type = types[0] 1288*4882a593Smuzhiyun is_readonly = bool(node.GetProperty('READONLY')) 1289*4882a593Smuzhiyun@@ -838,7 +847,7 @@ class _IRBuilder(object): 1290*4882a593Smuzhiyun 1291*4882a593Smuzhiyun def build_union_type(node, extended_attributes): 1292*4882a593Smuzhiyun return self._idl_type_factory.union_type( 1293*4882a593Smuzhiyun- member_types=map(self._build_type, node.GetChildren()), 1294*4882a593Smuzhiyun+ member_types=list(map(self._build_type, node.GetChildren())), 1295*4882a593Smuzhiyun is_optional=is_optional, 1296*4882a593Smuzhiyun extended_attributes=extended_attributes, 1297*4882a593Smuzhiyun debug_info=self._build_debug_info(node)) 1298*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py 1299*4882a593Smuzhiyunindex a7a2b11f3f0..2f6b61300ff 100644 1300*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py 1301*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/make_copy.py 1302*4882a593Smuzhiyun@@ -3,6 +3,13 @@ 1303*4882a593Smuzhiyun # found in the LICENSE file. 1304*4882a593Smuzhiyun 1305*4882a593Smuzhiyun 1306*4882a593Smuzhiyun+import sys 1307*4882a593Smuzhiyun+ 1308*4882a593Smuzhiyun+# TODO: Remove this once Python2 is obsoleted. 1309*4882a593Smuzhiyun+if sys.version_info.major != 2: 1310*4882a593Smuzhiyun+ long = int 1311*4882a593Smuzhiyun+ basestring = str 1312*4882a593Smuzhiyun+ 1313*4882a593Smuzhiyun def make_copy(obj, memo=None): 1314*4882a593Smuzhiyun """ 1315*4882a593Smuzhiyun Creates a copy of the given object, which should be an IR or part of IR. 1316*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py 1317*4882a593Smuzhiyunindex eeabef97cbe..bd7e98907f3 100644 1318*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py 1319*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/scripts/web_idl/namespace.py 1320*4882a593Smuzhiyun@@ -107,11 +107,13 @@ class Namespace(UserDefinedType, WithExtendedAttributes, WithCodeGeneratorInfo, 1321*4882a593Smuzhiyun for operation_ir in ir.operations 1322*4882a593Smuzhiyun ]) 1323*4882a593Smuzhiyun self._operation_groups = tuple([ 1324*4882a593Smuzhiyun- OperationGroup( 1325*4882a593Smuzhiyun- operation_group_ir, 1326*4882a593Smuzhiyun- filter(lambda x: x.identifier == operation_group_ir.identifier, 1327*4882a593Smuzhiyun- self._operations), 1328*4882a593Smuzhiyun- owner=self) for operation_group_ir in ir.operation_groups 1329*4882a593Smuzhiyun+ OperationGroup(operation_group_ir, 1330*4882a593Smuzhiyun+ list( 1331*4882a593Smuzhiyun+ filter( 1332*4882a593Smuzhiyun+ lambda x: x.identifier == operation_group_ir 1333*4882a593Smuzhiyun+ .identifier, self._operations)), 1334*4882a593Smuzhiyun+ owner=self) 1335*4882a593Smuzhiyun+ for operation_group_ir in ir.operation_groups 1336*4882a593Smuzhiyun ]) 1337*4882a593Smuzhiyun 1338*4882a593Smuzhiyun @property 1339*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl b/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl 1340*4882a593Smuzhiyunindex 0add9c45a38..dc910f6d227 100644 1341*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl 1342*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/bindings/templates/dictionary_v8.cc.tmpl 1343*4882a593Smuzhiyun@@ -59,9 +59,9 @@ void {{v8_class}}::ToImpl(v8::Isolate* isolate, v8::Local<v8::Value> v8_value, { 1344*4882a593Smuzhiyun DCHECK(executionContext); 1345*4882a593Smuzhiyun {% endif %}{# has_origin_trial_members #} 1346*4882a593Smuzhiyun {% endif %}{# members #} 1347*4882a593Smuzhiyun- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %} 1348*4882a593Smuzhiyun+ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %} 1349*4882a593Smuzhiyun {% filter origin_trial_enabled(origin_trial_test, "executionContext") %} 1350*4882a593Smuzhiyun- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %} 1351*4882a593Smuzhiyun+ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %} 1352*4882a593Smuzhiyun {% filter runtime_enabled(feature_name) %} 1353*4882a593Smuzhiyun {% for member in member_list %} 1354*4882a593Smuzhiyun v8::Local<v8::Value> {{member.v8_value}}; 1355*4882a593Smuzhiyun@@ -147,9 +147,9 @@ bool toV8{{cpp_class}}(const {{cpp_class}}* impl, v8::Local<v8::Object> dictiona 1356*4882a593Smuzhiyun DCHECK(executionContext); 1357*4882a593Smuzhiyun {% endif %}{# has_origin_trial_members #} 1358*4882a593Smuzhiyun {% endif %}{# members #} 1359*4882a593Smuzhiyun- {% for origin_trial_test, origin_trial_member_list in members | groupby('origin_trial_feature_name') %} 1360*4882a593Smuzhiyun+ {% for origin_trial_test, origin_trial_member_list in members | stringifykeygroupby('origin_trial_feature_name') %} 1361*4882a593Smuzhiyun {% filter origin_trial_enabled(origin_trial_test, "executionContext") %} 1362*4882a593Smuzhiyun- {% for feature_name, member_list in origin_trial_member_list | groupby('runtime_enabled_feature_name') %} 1363*4882a593Smuzhiyun+ {% for feature_name, member_list in origin_trial_member_list | stringifykeygroupby('runtime_enabled_feature_name') %} 1364*4882a593Smuzhiyun {% filter runtime_enabled(feature_name) %} 1365*4882a593Smuzhiyun {% for member in member_list %} 1366*4882a593Smuzhiyun v8::Local<v8::Value> {{member.v8_value}}; 1367*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py b/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py 1368*4882a593Smuzhiyunindex 1799cd5a153..5f43ffabc26 100755 1369*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py 1370*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py 1371*4882a593Smuzhiyun@@ -71,7 +71,7 @@ class Expansion(object): 1372*4882a593Smuzhiyun def enabled_longhands(self): 1373*4882a593Smuzhiyun include = lambda longhand: not longhand[ 1374*4882a593Smuzhiyun 'runtime_flag'] or self.is_enabled(longhand['runtime_flag']) 1375*4882a593Smuzhiyun- return filter(include, self._longhands) 1376*4882a593Smuzhiyun+ return list(filter(include, self._longhands)) 1377*4882a593Smuzhiyun 1378*4882a593Smuzhiyun @property 1379*4882a593Smuzhiyun def index(self): 1380*4882a593Smuzhiyun@@ -87,8 +87,9 @@ class Expansion(object): 1381*4882a593Smuzhiyun 1382*4882a593Smuzhiyun def create_expansions(longhands): 1383*4882a593Smuzhiyun flags = collect_runtime_flags(longhands) 1384*4882a593Smuzhiyun- expansions = map(lambda mask: Expansion(longhands, flags, mask), 1385*4882a593Smuzhiyun- range(1 << len(flags))) 1386*4882a593Smuzhiyun+ expansions = list( 1387*4882a593Smuzhiyun+ map(lambda mask: Expansion(longhands, flags, mask), 1388*4882a593Smuzhiyun+ range(1 << len(flags)))) 1389*4882a593Smuzhiyun assert len(expansions) > 0 1390*4882a593Smuzhiyun # We generate 2^N expansions for N flags, so enforce some limit. 1391*4882a593Smuzhiyun assert len(flags) <= 4, 'Too many runtime flags for a single shorthand' 1392*4882a593Smuzhiyun@@ -114,14 +115,14 @@ class StylePropertyShorthandWriter(json5_generator.Writer): 1393*4882a593Smuzhiyun 1394*4882a593Smuzhiyun self._longhand_dictionary = defaultdict(list) 1395*4882a593Smuzhiyun for property_ in json5_properties.shorthands: 1396*4882a593Smuzhiyun- property_['longhand_enum_keys'] = map(enum_key_for_css_property, 1397*4882a593Smuzhiyun- property_['longhands']) 1398*4882a593Smuzhiyun- property_['longhand_property_ids'] = map(id_for_css_property, 1399*4882a593Smuzhiyun- property_['longhands']) 1400*4882a593Smuzhiyun- 1401*4882a593Smuzhiyun- longhands = map( 1402*4882a593Smuzhiyun- lambda name: json5_properties.properties_by_name[name], 1403*4882a593Smuzhiyun- property_['longhands']) 1404*4882a593Smuzhiyun+ property_['longhand_enum_keys'] = list( 1405*4882a593Smuzhiyun+ map(enum_key_for_css_property, property_['longhands'])) 1406*4882a593Smuzhiyun+ property_['longhand_property_ids'] = list( 1407*4882a593Smuzhiyun+ map(id_for_css_property, property_['longhands'])) 1408*4882a593Smuzhiyun+ 1409*4882a593Smuzhiyun+ longhands = list( 1410*4882a593Smuzhiyun+ map(lambda name: json5_properties.properties_by_name[name], 1411*4882a593Smuzhiyun+ property_['longhands'])) 1412*4882a593Smuzhiyun property_['expansions'] = create_expansions(longhands) 1413*4882a593Smuzhiyun for longhand_enum_key in property_['longhand_enum_keys']: 1414*4882a593Smuzhiyun self._longhand_dictionary[longhand_enum_key].append(property_) 1415*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py b/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py 1416*4882a593Smuzhiyunindex 75030ac577e..f72aadee17d 100755 1417*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py 1418*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py 1419*4882a593Smuzhiyun@@ -42,8 +42,8 @@ class CSSPropertyInstancesWriter(json5_generator.Writer): 1420*4882a593Smuzhiyun aliases = self._css_properties.aliases 1421*4882a593Smuzhiyun 1422*4882a593Smuzhiyun # Lists of PropertyClassData. 1423*4882a593Smuzhiyun- self._property_classes_by_id = map(self.get_class, properties) 1424*4882a593Smuzhiyun- self._alias_classes_by_id = map(self.get_class, aliases) 1425*4882a593Smuzhiyun+ self._property_classes_by_id = list(map(self.get_class, properties)) 1426*4882a593Smuzhiyun+ self._alias_classes_by_id = list(map(self.get_class, aliases)) 1427*4882a593Smuzhiyun 1428*4882a593Smuzhiyun # Sort by enum value. 1429*4882a593Smuzhiyun self._property_classes_by_id.sort(key=lambda t: t.enum_value) 1430*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/gperf.py b/chromium/third_party/blink/renderer/build/scripts/gperf.py 1431*4882a593Smuzhiyunindex 5ee49056be4..db72660d471 100644 1432*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/gperf.py 1433*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/gperf.py 1434*4882a593Smuzhiyun@@ -95,7 +95,7 @@ def main(): 1435*4882a593Smuzhiyun 1436*4882a593Smuzhiyun open(args.output_file, 'wb').write( 1437*4882a593Smuzhiyun generate_gperf(gperf_path, 1438*4882a593Smuzhiyun- open(infile).read(), gperf_args)) 1439*4882a593Smuzhiyun+ open(infile).read(), gperf_args).encode('utf-8')) 1440*4882a593Smuzhiyun 1441*4882a593Smuzhiyun 1442*4882a593Smuzhiyun if __name__ == '__main__': 1443*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/in_file.py b/chromium/third_party/blink/renderer/build/scripts/in_file.py 1444*4882a593Smuzhiyunindex 28adc050f1e..58113483e57 100644 1445*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/in_file.py 1446*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/in_file.py 1447*4882a593Smuzhiyun@@ -66,7 +66,7 @@ class InFile(object): 1448*4882a593Smuzhiyun self._defaults = defaults 1449*4882a593Smuzhiyun self._valid_values = copy.deepcopy( 1450*4882a593Smuzhiyun valid_values if valid_values else {}) 1451*4882a593Smuzhiyun- self._parse(map(str.strip, lines)) 1452*4882a593Smuzhiyun+ self._parse(list(map(str.strip, lines))) 1453*4882a593Smuzhiyun 1454*4882a593Smuzhiyun @classmethod 1455*4882a593Smuzhiyun def load_from_files(self, file_paths, defaults, valid_values, 1456*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/in_generator.py b/chromium/third_party/blink/renderer/build/scripts/in_generator.py 1457*4882a593Smuzhiyunindex e46740a2e85..ab1981ad1e3 100644 1458*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/in_generator.py 1459*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/in_generator.py 1460*4882a593Smuzhiyun@@ -32,10 +32,15 @@ import os 1461*4882a593Smuzhiyun import os.path 1462*4882a593Smuzhiyun import shlex 1463*4882a593Smuzhiyun import shutil 1464*4882a593Smuzhiyun+import sys 1465*4882a593Smuzhiyun import optparse 1466*4882a593Smuzhiyun 1467*4882a593Smuzhiyun from in_file import InFile 1468*4882a593Smuzhiyun 1469*4882a593Smuzhiyun+# TODO: Remove this once Python2 is obsoleted. 1470*4882a593Smuzhiyun+if sys.version_info.major != 2: 1471*4882a593Smuzhiyun+ basestring = str 1472*4882a593Smuzhiyun+ 1473*4882a593Smuzhiyun 1474*4882a593Smuzhiyun ######################################################### 1475*4882a593Smuzhiyun # This is now deprecated - use json5_generator.py instead 1476*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py b/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py 1477*4882a593Smuzhiyunindex cafe8d94a8e..6925a4fa580 100755 1478*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py 1479*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/make_runtime_features.py 1480*4882a593Smuzhiyun@@ -138,7 +138,7 @@ class RuntimeFeatureWriter(BaseRuntimeFeatureWriter): 1481*4882a593Smuzhiyun except Exception: 1482*4882a593Smuzhiyun # If trouble unpickling, overwrite 1483*4882a593Smuzhiyun pass 1484*4882a593Smuzhiyun- with open(os.path.abspath(file_name), 'w') as pickle_file: 1485*4882a593Smuzhiyun+ with open(os.path.abspath(file_name), 'wb') as pickle_file: 1486*4882a593Smuzhiyun pickle.dump(features_map, pickle_file) 1487*4882a593Smuzhiyun 1488*4882a593Smuzhiyun def _template_inputs(self): 1489*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl 1490*4882a593Smuzhiyunindex dc3f44c5b10..3eefcf9f0ee 100644 1491*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl 1492*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/templates/element_factory.cc.tmpl 1493*4882a593Smuzhiyun@@ -26,7 +26,7 @@ using {{namespace}}FunctionMap = HashMap<AtomicString, {{namespace}}ConstructorF 1494*4882a593Smuzhiyun 1495*4882a593Smuzhiyun static {{namespace}}FunctionMap* g_{{namespace|lower}}_constructors = nullptr; 1496*4882a593Smuzhiyun 1497*4882a593Smuzhiyun-{% for tag in tags|sort if not tag.noConstructor %} 1498*4882a593Smuzhiyun+{% for tag in tags|sort(attribute='name') if not tag.noConstructor %} 1499*4882a593Smuzhiyun static {{namespace}}Element* {{namespace}}{{tag.name.to_upper_camel_case()}}Constructor( 1500*4882a593Smuzhiyun Document& document, const CreateElementFlags flags) { 1501*4882a593Smuzhiyun {% if tag.runtimeEnabled %} 1502*4882a593Smuzhiyun@@ -52,7 +52,7 @@ static void Create{{namespace}}FunctionMap() { 1503*4882a593Smuzhiyun // Empty array initializer lists are illegal [dcl.init.aggr] and will not 1504*4882a593Smuzhiyun // compile in MSVC. If tags list is empty, add check to skip this. 1505*4882a593Smuzhiyun static const Create{{namespace}}FunctionMapData data[] = { 1506*4882a593Smuzhiyun- {% for tag in tags|sort if not tag.noConstructor %} 1507*4882a593Smuzhiyun+ {% for tag in tags|sort(attribute='name') if not tag.noConstructor %} 1508*4882a593Smuzhiyun { {{cpp_namespace}}::{{tag|symbol}}Tag, {{namespace}}{{tag.name.to_upper_camel_case()}}Constructor }, 1509*4882a593Smuzhiyun {% endfor %} 1510*4882a593Smuzhiyun }; 1511*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl 1512*4882a593Smuzhiyunindex 9bfc489e048..5f86184e879 100644 1513*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl 1514*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.cc.tmpl 1515*4882a593Smuzhiyun@@ -22,7 +22,7 @@ HTMLTypeMap CreateHTMLTypeMap() { 1516*4882a593Smuzhiyun const char* name; 1517*4882a593Smuzhiyun HTMLElementType type; 1518*4882a593Smuzhiyun } kTags[] = { 1519*4882a593Smuzhiyun- {% for tag in tags|sort %} 1520*4882a593Smuzhiyun+ {% for tag in tags|sort(attribute='name') %} 1521*4882a593Smuzhiyun { "{{tag.name}}", HTMLElementType::k{{tag.js_interface}} }, 1522*4882a593Smuzhiyun {% endfor %} 1523*4882a593Smuzhiyun }; 1524*4882a593Smuzhiyun@@ -42,7 +42,7 @@ HTMLElementType htmlElementTypeForTag(const AtomicString& tagName, const Documen 1525*4882a593Smuzhiyun if (it == html_type_map.end()) 1526*4882a593Smuzhiyun return HTMLElementType::kHTMLUnknownElement; 1527*4882a593Smuzhiyun 1528*4882a593Smuzhiyun- {% for tag in tags|sort %} 1529*4882a593Smuzhiyun+ {% for tag in tags|sort(attribute='name') %} 1530*4882a593Smuzhiyun {% if tag.runtimeEnabled %} 1531*4882a593Smuzhiyun if (tagName == "{{tag.name}}") { 1532*4882a593Smuzhiyun if (!RuntimeEnabledFeatures::{{tag.runtimeEnabled}}Enabled(document->GetExecutionContext())) { 1533*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl 1534*4882a593Smuzhiyunindex 1b5297d52dc..edecc81d9d4 100644 1535*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl 1536*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/templates/element_type_helpers.h.tmpl 1537*4882a593Smuzhiyun@@ -15,7 +15,7 @@ namespace blink { 1538*4882a593Smuzhiyun class Document; 1539*4882a593Smuzhiyun 1540*4882a593Smuzhiyun // Type checking. 1541*4882a593Smuzhiyun-{% for tag in tags|sort if not tag.multipleTagNames and not tag.noTypeHelpers %} 1542*4882a593Smuzhiyun+{% for tag in tags|sort(attribute='name') if not tag.multipleTagNames and not tag.noTypeHelpers %} 1543*4882a593Smuzhiyun class {{tag.interface}}; 1544*4882a593Smuzhiyun template <> 1545*4882a593Smuzhiyun inline bool IsElementOfType<const {{tag.interface}}>(const Node& node) { 1546*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl 1547*4882a593Smuzhiyunindex 0244433af2e..dcdbb02a56c 100644 1548*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl 1549*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/templates/macros.tmpl 1550*4882a593Smuzhiyun@@ -25,7 +25,7 @@ 1551*4882a593Smuzhiyun 1552*4882a593Smuzhiyun 1553*4882a593Smuzhiyun {% macro trie_leaf(index, object, return_macro, lowercase_data) %} 1554*4882a593Smuzhiyun-{% set name, value = object.items()[0] %} 1555*4882a593Smuzhiyun+{% set name, value = (object.items()|list)[0] %} 1556*4882a593Smuzhiyun {% if name|length %} 1557*4882a593Smuzhiyun if ( 1558*4882a593Smuzhiyun {%- for c in name -%} 1559*4882a593Smuzhiyun@@ -45,7 +45,7 @@ return {{ return_macro(value) }}; 1560*4882a593Smuzhiyun 1561*4882a593Smuzhiyun 1562*4882a593Smuzhiyun {% macro trie_switch(trie, index, return_macro, lowercase_data) %} 1563*4882a593Smuzhiyun-{% if trie|length == 1 and trie.values()[0] is string %} 1564*4882a593Smuzhiyun+{% if trie|length == 1 and (trie.values()|list)[0] is string %} 1565*4882a593Smuzhiyun {{ trie_leaf(index, trie, return_macro, lowercase_data) -}} 1566*4882a593Smuzhiyun {% else %} 1567*4882a593Smuzhiyun {% if lowercase_data %} 1568*4882a593Smuzhiyundiff --git a/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl b/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl 1569*4882a593Smuzhiyunindex cb05c6c4315..bd5566b03e7 100644 1570*4882a593Smuzhiyun--- a/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl 1571*4882a593Smuzhiyun+++ b/chromium/third_party/blink/renderer/build/scripts/templates/make_qualified_names.h.tmpl 1572*4882a593Smuzhiyun@@ -24,12 +24,12 @@ namespace {{cpp_namespace}} { 1573*4882a593Smuzhiyun {{symbol_export}}extern const WTF::AtomicString& {{namespace_prefix}}NamespaceURI; 1574*4882a593Smuzhiyun 1575*4882a593Smuzhiyun // Tags 1576*4882a593Smuzhiyun-{% for tag in tags|sort %} 1577*4882a593Smuzhiyun+{% for tag in tags|sort(attribute='name') %} 1578*4882a593Smuzhiyun {{symbol_export}}extern const blink::{{namespace}}QualifiedName& {{tag|symbol}}Tag; 1579*4882a593Smuzhiyun {% endfor %} 1580*4882a593Smuzhiyun 1581*4882a593Smuzhiyun // Attributes 1582*4882a593Smuzhiyun-{% for attr in attrs|sort %} 1583*4882a593Smuzhiyun+{% for attr in attrs|sort(attribute='name') %} 1584*4882a593Smuzhiyun {{symbol_export}}extern const blink::QualifiedName& {{attr|symbol}}Attr; 1585*4882a593Smuzhiyun {% endfor %} 1586*4882a593Smuzhiyun 1587*4882a593Smuzhiyundiff --git a/chromium/third_party/dawn/generator/generator_lib.py b/chromium/third_party/dawn/generator/generator_lib.py 1588*4882a593Smuzhiyunindex 5e3734d7833..e3d46bd194f 100644 1589*4882a593Smuzhiyun--- a/chromium/third_party/dawn/generator/generator_lib.py 1590*4882a593Smuzhiyun+++ b/chromium/third_party/dawn/generator/generator_lib.py 1591*4882a593Smuzhiyun@@ -201,6 +201,10 @@ def _compute_python_dependencies(root_dir=None): 1592*4882a593Smuzhiyun 1593*4882a593Smuzhiyun paths = set() 1594*4882a593Smuzhiyun for path in module_paths: 1595*4882a593Smuzhiyun+ # Builtin/namespaced modules may return None for the file path. 1596*4882a593Smuzhiyun+ if not path: 1597*4882a593Smuzhiyun+ continue 1598*4882a593Smuzhiyun+ 1599*4882a593Smuzhiyun path = os.path.abspath(path) 1600*4882a593Smuzhiyun 1601*4882a593Smuzhiyun if not path.startswith(root_dir): 1602*4882a593Smuzhiyundiff --git a/chromium/third_party/devtools-frontend/src/BUILD.gn b/chromium/third_party/devtools-frontend/src/BUILD.gn 1603*4882a593Smuzhiyunindex cd488e88b60..ea1dc3d9a79 100644 1604*4882a593Smuzhiyun--- a/chromium/third_party/devtools-frontend/src/BUILD.gn 1605*4882a593Smuzhiyun+++ b/chromium/third_party/devtools-frontend/src/BUILD.gn 1606*4882a593Smuzhiyun@@ -2,6 +2,8 @@ 1607*4882a593Smuzhiyun # Use of this source code is governed by a BSD-style license that can be 1608*4882a593Smuzhiyun # found in the LICENSE file. 1609*4882a593Smuzhiyun 1610*4882a593Smuzhiyun+import("//build/config/python.gni") 1611*4882a593Smuzhiyun+ 1612*4882a593Smuzhiyun import("//third_party/blink/public/public_features.gni") 1613*4882a593Smuzhiyun import("./all_devtools_files.gni") 1614*4882a593Smuzhiyun import("./all_devtools_modules.gni") 1615*4882a593Smuzhiyundiff --git a/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py b/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py 1616*4882a593Smuzhiyunindex d6666e8b74f..0f7a661e632 100644 1617*4882a593Smuzhiyun--- a/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py 1618*4882a593Smuzhiyun+++ b/chromium/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py 1619*4882a593Smuzhiyun@@ -45,7 +45,8 @@ def rollup(input_path, output_path, filename, max_size, rollup_plugin): 1620*4882a593Smuzhiyun ['--format', 'iife', '-n', 'InspectorOverlay'] + ['--input', target] + 1621*4882a593Smuzhiyun ['--plugin', rollup_plugin], 1622*4882a593Smuzhiyun stdout=subprocess.PIPE, 1623*4882a593Smuzhiyun- stderr=subprocess.PIPE) 1624*4882a593Smuzhiyun+ stderr=subprocess.PIPE, 1625*4882a593Smuzhiyun+ text=True) 1626*4882a593Smuzhiyun out, error = rollup_process.communicate() 1627*4882a593Smuzhiyun if not out: 1628*4882a593Smuzhiyun raise Exception("rollup failed: " + error) 1629*4882a593Smuzhiyundiff --git a/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py b/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py 1630*4882a593Smuzhiyunindex fa8e73d34af..7d0b84b2171 100644 1631*4882a593Smuzhiyun--- a/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py 1632*4882a593Smuzhiyun+++ b/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py 1633*4882a593Smuzhiyun@@ -10,7 +10,7 @@ Builds applications in release mode: 1634*4882a593Smuzhiyun and the application loader into a single script. 1635*4882a593Smuzhiyun """ 1636*4882a593Smuzhiyun 1637*4882a593Smuzhiyun-from cStringIO import StringIO 1638*4882a593Smuzhiyun+from io import StringIO 1639*4882a593Smuzhiyun from os import path 1640*4882a593Smuzhiyun from os.path import join 1641*4882a593Smuzhiyun import copy 1642*4882a593Smuzhiyun@@ -145,8 +145,7 @@ class ReleaseBuilder(object): 1643*4882a593Smuzhiyun resource_content = read_file(path.join(self.application_dir, resource_name)) 1644*4882a593Smuzhiyun if not (resource_name.endswith('.html') 1645*4882a593Smuzhiyun or resource_name.endswith('md')): 1646*4882a593Smuzhiyun- resource_content += resource_source_url(resource_name).encode( 1647*4882a593Smuzhiyun- 'utf-8') 1648*4882a593Smuzhiyun+ resource_content += resource_source_url(resource_name) 1649*4882a593Smuzhiyun resource_content = resource_content.replace('\\', '\\\\') 1650*4882a593Smuzhiyun resource_content = resource_content.replace('\n', '\\n') 1651*4882a593Smuzhiyun resource_content = resource_content.replace('"', '\\"') 1652*4882a593Smuzhiyun@@ -173,7 +172,9 @@ class ReleaseBuilder(object): 1653*4882a593Smuzhiyun def _concatenate_application_script(self, output): 1654*4882a593Smuzhiyun output.write('Root.allDescriptors.push(...%s);' % self._release_module_descriptors()) 1655*4882a593Smuzhiyun if self.descriptors.extends: 1656*4882a593Smuzhiyun- output.write('Root.applicationDescriptor.modules.push(...%s);' % json.dumps(self.descriptors.application.values())) 1657*4882a593Smuzhiyun+ output.write( 1658*4882a593Smuzhiyun+ 'Root.applicationDescriptor.modules.push(...%s);' % 1659*4882a593Smuzhiyun+ json.dumps(list(self.descriptors.application.values()))) 1660*4882a593Smuzhiyun else: 1661*4882a593Smuzhiyun output.write('Root.applicationDescriptor = %s;' % self.descriptors.application_json()) 1662*4882a593Smuzhiyun 1663*4882a593Smuzhiyundiff --git a/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py b/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py 1664*4882a593Smuzhiyunindex be510c48d76..c6a59c90298 100644 1665*4882a593Smuzhiyun--- a/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py 1666*4882a593Smuzhiyun+++ b/chromium/third_party/devtools-frontend/src/scripts/build/generate_devtools_grd.py 1667*4882a593Smuzhiyun@@ -123,7 +123,7 @@ def main(argv): 1668*4882a593Smuzhiyun 1669*4882a593Smuzhiyun try: 1670*4882a593Smuzhiyun os.makedirs(path.join(output_directory, 'Images')) 1671*4882a593Smuzhiyun- except OSError, e: 1672*4882a593Smuzhiyun+ except OSError as e: 1673*4882a593Smuzhiyun if e.errno != errno.EEXIST: 1674*4882a593Smuzhiyun raise e 1675*4882a593Smuzhiyun 1676*4882a593Smuzhiyun@@ -147,7 +147,7 @@ def main(argv): 1677*4882a593Smuzhiyun shutil.copy(path.join(dirname, filename), path.join(output_directory, 'Images')) 1678*4882a593Smuzhiyun add_file_to_grd(doc, path.join('Images', filename)) 1679*4882a593Smuzhiyun 1680*4882a593Smuzhiyun- with open(parsed_args.output_filename, 'w') as output_file: 1681*4882a593Smuzhiyun+ with open(parsed_args.output_filename, 'wb') as output_file: 1682*4882a593Smuzhiyun output_file.write(doc.toxml(encoding='UTF-8')) 1683*4882a593Smuzhiyun 1684*4882a593Smuzhiyun 1685*4882a593Smuzhiyundiff --git a/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py b/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py 1686*4882a593Smuzhiyunindex 0ba695d3810..bb1da2f9f8d 100644 1687*4882a593Smuzhiyun--- a/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py 1688*4882a593Smuzhiyun+++ b/chromium/third_party/devtools-frontend/src/scripts/build/modular_build.py 1689*4882a593Smuzhiyun@@ -7,6 +7,8 @@ 1690*4882a593Smuzhiyun Utilities for the modular DevTools build. 1691*4882a593Smuzhiyun """ 1692*4882a593Smuzhiyun 1693*4882a593Smuzhiyun+from __future__ import print_function 1694*4882a593Smuzhiyun+ 1695*4882a593Smuzhiyun import collections 1696*4882a593Smuzhiyun from os import path 1697*4882a593Smuzhiyun import os 1698*4882a593Smuzhiyun@@ -40,7 +42,7 @@ def load_and_parse_json(filename): 1699*4882a593Smuzhiyun try: 1700*4882a593Smuzhiyun return json.loads(read_file(filename)) 1701*4882a593Smuzhiyun except: 1702*4882a593Smuzhiyun- print 'ERROR: Failed to parse %s' % filename 1703*4882a593Smuzhiyun+ print('ERROR: Failed to parse %s' % filename) 1704*4882a593Smuzhiyun raise 1705*4882a593Smuzhiyun 1706*4882a593Smuzhiyun class Descriptors: 1707*4882a593Smuzhiyun@@ -57,7 +59,7 @@ class Descriptors: 1708*4882a593Smuzhiyun 1709*4882a593Smuzhiyun def application_json(self): 1710*4882a593Smuzhiyun result = dict() 1711*4882a593Smuzhiyun- result['modules'] = self.application.values() 1712*4882a593Smuzhiyun+ result['modules'] = list(self.application.values()) 1713*4882a593Smuzhiyun return json.dumps(result) 1714*4882a593Smuzhiyun 1715*4882a593Smuzhiyun def all_compiled_files(self): 1716*4882a593Smuzhiyundiff --git a/chromium/third_party/jinja2/tests.py b/chromium/third_party/jinja2/tests.py 1717*4882a593Smuzhiyunindex 0adc3d4dbcb..b14f85ff148 100644 1718*4882a593Smuzhiyun--- a/chromium/third_party/jinja2/tests.py 1719*4882a593Smuzhiyun+++ b/chromium/third_party/jinja2/tests.py 1720*4882a593Smuzhiyun@@ -10,7 +10,7 @@ 1721*4882a593Smuzhiyun """ 1722*4882a593Smuzhiyun import operator 1723*4882a593Smuzhiyun import re 1724*4882a593Smuzhiyun-from collections import Mapping 1725*4882a593Smuzhiyun+from collections.abc import Mapping 1726*4882a593Smuzhiyun from jinja2.runtime import Undefined 1727*4882a593Smuzhiyun from jinja2._compat import text_type, string_types, integer_types 1728*4882a593Smuzhiyun import decimal 1729*4882a593Smuzhiyundiff --git a/chromium/tools/metrics/ukm/gen_builders.py b/chromium/tools/metrics/ukm/gen_builders.py 1730*4882a593Smuzhiyunindex f9f61d90a56..44e46fae8cc 100755 1731*4882a593Smuzhiyun--- a/chromium/tools/metrics/ukm/gen_builders.py 1732*4882a593Smuzhiyun+++ b/chromium/tools/metrics/ukm/gen_builders.py 1733*4882a593Smuzhiyun@@ -48,9 +48,10 @@ def ReadFilteredData(path): 1734*4882a593Smuzhiyun data = ukm_model.UKM_XML_TYPE.Parse(ukm_file.read()) 1735*4882a593Smuzhiyun event_tag = ukm_model._EVENT_TYPE.tag 1736*4882a593Smuzhiyun metric_tag = ukm_model._METRIC_TYPE.tag 1737*4882a593Smuzhiyun- data[event_tag] = filter(ukm_model.IsNotObsolete, data[event_tag]) 1738*4882a593Smuzhiyun+ data[event_tag] = list(filter(ukm_model.IsNotObsolete, data[event_tag])) 1739*4882a593Smuzhiyun for event in data[event_tag]: 1740*4882a593Smuzhiyun- event[metric_tag] = filter(ukm_model.IsNotObsolete, event[metric_tag]) 1741*4882a593Smuzhiyun+ event[metric_tag] = list( 1742*4882a593Smuzhiyun+ filter(ukm_model.IsNotObsolete, event[metric_tag])) 1743*4882a593Smuzhiyun return data 1744*4882a593Smuzhiyun 1745*4882a593Smuzhiyun 1746*4882a593Smuzhiyundiff --git a/chromium/ui/ozone/generate_constructor_list.py b/chromium/ui/ozone/generate_constructor_list.py 1747*4882a593Smuzhiyunindex 8d800636c97..04fa18e93df 100755 1748*4882a593Smuzhiyun--- a/chromium/ui/ozone/generate_constructor_list.py 1749*4882a593Smuzhiyun+++ b/chromium/ui/ozone/generate_constructor_list.py 1750*4882a593Smuzhiyun@@ -45,12 +45,15 @@ Example Output: ./ui/ozone/generate_constructor_list.py \ 1751*4882a593Smuzhiyun } // namespace ui 1752*4882a593Smuzhiyun """ 1753*4882a593Smuzhiyun 1754*4882a593Smuzhiyun+try: 1755*4882a593Smuzhiyun+ from StringIO import StringIO # for Python 2 1756*4882a593Smuzhiyun+except ImportError: 1757*4882a593Smuzhiyun+ from io import StringIO # for Python 3 1758*4882a593Smuzhiyun import optparse 1759*4882a593Smuzhiyun import os 1760*4882a593Smuzhiyun import collections 1761*4882a593Smuzhiyun import re 1762*4882a593Smuzhiyun import sys 1763*4882a593Smuzhiyun-import string 1764*4882a593Smuzhiyun 1765*4882a593Smuzhiyun 1766*4882a593Smuzhiyun def GetTypedefName(typename): 1767*4882a593Smuzhiyun@@ -68,7 +71,7 @@ def GetConstructorName(typename, platform): 1768*4882a593Smuzhiyun This is just "Create" + typename + platform. 1769*4882a593Smuzhiyun """ 1770*4882a593Smuzhiyun 1771*4882a593Smuzhiyun- return 'Create' + typename + string.capitalize(platform) 1772*4882a593Smuzhiyun+ return 'Create' + typename + platform.capitalize() 1773*4882a593Smuzhiyun 1774*4882a593Smuzhiyun 1775*4882a593Smuzhiyun def GenerateConstructorList(out, namespace, export, typenames, platforms, 1776*4882a593Smuzhiyun@@ -163,12 +166,14 @@ def main(argv): 1777*4882a593Smuzhiyun sys.exit(1) 1778*4882a593Smuzhiyun 1779*4882a593Smuzhiyun # Write to standard output or file specified by --output_cc. 1780*4882a593Smuzhiyun- out_cc = sys.stdout 1781*4882a593Smuzhiyun+ out_cc = getattr(sys.stdout, 'buffer', sys.stdout) 1782*4882a593Smuzhiyun if options.output_cc: 1783*4882a593Smuzhiyun out_cc = open(options.output_cc, 'wb') 1784*4882a593Smuzhiyun 1785*4882a593Smuzhiyun- GenerateConstructorList(out_cc, options.namespace, options.export, 1786*4882a593Smuzhiyun+ out_cc_str = StringIO() 1787*4882a593Smuzhiyun+ GenerateConstructorList(out_cc_str, options.namespace, options.export, 1788*4882a593Smuzhiyun typenames, platforms, includes, usings) 1789*4882a593Smuzhiyun+ out_cc.write(out_cc_str.getvalue().encode('utf-8')) 1790*4882a593Smuzhiyun 1791*4882a593Smuzhiyun if options.output_cc: 1792*4882a593Smuzhiyun out_cc.close() 1793*4882a593Smuzhiyundiff --git a/chromium/ui/ozone/generate_ozone_platform_list.py b/chromium/ui/ozone/generate_ozone_platform_list.py 1794*4882a593Smuzhiyunindex d47c398259b..2702b68b9bd 100755 1795*4882a593Smuzhiyun--- a/chromium/ui/ozone/generate_ozone_platform_list.py 1796*4882a593Smuzhiyun+++ b/chromium/ui/ozone/generate_ozone_platform_list.py 1797*4882a593Smuzhiyun@@ -49,12 +49,15 @@ Example Output: ./generate_ozone_platform_list.py --default wayland dri wayland 1798*4882a593Smuzhiyun 1799*4882a593Smuzhiyun """ 1800*4882a593Smuzhiyun 1801*4882a593Smuzhiyun+try: 1802*4882a593Smuzhiyun+ from StringIO import StringIO # for Python 2 1803*4882a593Smuzhiyun+except ImportError: 1804*4882a593Smuzhiyun+ from io import StringIO # for Python 3 1805*4882a593Smuzhiyun import optparse 1806*4882a593Smuzhiyun import os 1807*4882a593Smuzhiyun import collections 1808*4882a593Smuzhiyun import re 1809*4882a593Smuzhiyun import sys 1810*4882a593Smuzhiyun-import string 1811*4882a593Smuzhiyun 1812*4882a593Smuzhiyun 1813*4882a593Smuzhiyun def GetConstantName(name): 1814*4882a593Smuzhiyun@@ -63,7 +66,7 @@ def GetConstantName(name): 1815*4882a593Smuzhiyun We just capitalize the platform name and prepend "CreateOzonePlatform". 1816*4882a593Smuzhiyun """ 1817*4882a593Smuzhiyun 1818*4882a593Smuzhiyun- return 'kPlatform' + string.capitalize(name) 1819*4882a593Smuzhiyun+ return 'kPlatform' + name.capitalize() 1820*4882a593Smuzhiyun 1821*4882a593Smuzhiyun 1822*4882a593Smuzhiyun def GeneratePlatformListText(out, platforms): 1823*4882a593Smuzhiyun@@ -149,9 +152,9 @@ def main(argv): 1824*4882a593Smuzhiyun platforms.insert(0, options.default) 1825*4882a593Smuzhiyun 1826*4882a593Smuzhiyun # Write to standard output or file specified by --output_{cc,h}. 1827*4882a593Smuzhiyun- out_cc = sys.stdout 1828*4882a593Smuzhiyun- out_h = sys.stdout 1829*4882a593Smuzhiyun- out_txt = sys.stdout 1830*4882a593Smuzhiyun+ out_cc = getattr(sys.stdout, 'buffer', sys.stdout) 1831*4882a593Smuzhiyun+ out_h = getattr(sys.stdout, 'buffer', sys.stdout) 1832*4882a593Smuzhiyun+ out_txt = getattr(sys.stdout, 'buffer', sys.stdout) 1833*4882a593Smuzhiyun if options.output_cc: 1834*4882a593Smuzhiyun out_cc = open(options.output_cc, 'wb') 1835*4882a593Smuzhiyun if options.output_h: 1836*4882a593Smuzhiyun@@ -159,9 +162,16 @@ def main(argv): 1837*4882a593Smuzhiyun if options.output_txt: 1838*4882a593Smuzhiyun out_txt = open(options.output_txt, 'wb') 1839*4882a593Smuzhiyun 1840*4882a593Smuzhiyun- GeneratePlatformListText(out_txt, platforms) 1841*4882a593Smuzhiyun- GeneratePlatformListHeader(out_h, platforms) 1842*4882a593Smuzhiyun- GeneratePlatformListSource(out_cc, platforms) 1843*4882a593Smuzhiyun+ out_txt_str = StringIO() 1844*4882a593Smuzhiyun+ out_h_str = StringIO() 1845*4882a593Smuzhiyun+ out_cc_str = StringIO() 1846*4882a593Smuzhiyun+ 1847*4882a593Smuzhiyun+ GeneratePlatformListText(out_txt_str, platforms) 1848*4882a593Smuzhiyun+ out_txt.write(out_txt_str.getvalue().encode('utf-8')) 1849*4882a593Smuzhiyun+ GeneratePlatformListHeader(out_h_str, platforms) 1850*4882a593Smuzhiyun+ out_h.write(out_h_str.getvalue().encode('utf-8')) 1851*4882a593Smuzhiyun+ GeneratePlatformListSource(out_cc_str, platforms) 1852*4882a593Smuzhiyun+ out_cc.write(out_cc_str.getvalue().encode('utf-8')) 1853*4882a593Smuzhiyun 1854*4882a593Smuzhiyun if options.output_cc: 1855*4882a593Smuzhiyun out_cc.close() 1856*4882a593Smuzhiyun-- 1857*4882a593Smuzhiyun2.25.1 1858*4882a593Smuzhiyun 1859