Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: third_party/WebKit/Source/bindings/scripts/v8_interface.py

Issue 1381413003: [bindings] add support for integer-indexed @@iterator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # coding=utf-8 2 # coding=utf-8
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 argument = IdlArgument(interface.idl_name) 341 argument = IdlArgument(interface.idl_name)
342 argument.idl_type = idl_type 342 argument.idl_type = idl_type
343 argument.name = name 343 argument.name = name
344 argument.is_optional = is_optional 344 argument.is_optional = is_optional
345 if extended_attributes: 345 if extended_attributes:
346 argument.extended_attributes.update(extended_attributes) 346 argument.extended_attributes.update(extended_attributes)
347 return argument 347 return argument
348 348
349 # [Iterable], iterable<>, maplike<> and setlike<> 349 # [Iterable], iterable<>, maplike<> and setlike<>
350 iterator_method = None 350 iterator_method = None
351 has_array_iterator = False
352
351 # FIXME: support Iterable in partial interfaces. However, we don't 353 # FIXME: support Iterable in partial interfaces. However, we don't
352 # need to support iterator overloads between interface and 354 # need to support iterator overloads between interface and
353 # partial interface definitions. 355 # partial interface definitions.
354 # http://heycam.github.io/webidl/#idl-overloading 356 # http://heycam.github.io/webidl/#idl-overloading
355 if (not interface.is_partial 357 if (not interface.is_partial
356 and (interface.iterable or interface.maplike or interface.setlike 358 and (interface.iterable or interface.maplike or interface.setlike
357 or 'Iterable' in extended_attributes)): 359 or interface.has_indexed_elements or 'Iterable' in extended_attribu tes)):
358 360
359 used_extended_attributes = {} 361 used_extended_attributes = {}
360 362
361 if interface.iterable: 363 if interface.iterable:
362 used_extended_attributes.update(interface.iterable.extended_attribut es) 364 used_extended_attributes.update(interface.iterable.extended_attribut es)
363 elif interface.maplike: 365 elif interface.maplike:
364 used_extended_attributes.update(interface.maplike.extended_attribute s) 366 used_extended_attributes.update(interface.maplike.extended_attribute s)
365 elif interface.setlike: 367 elif interface.setlike:
366 used_extended_attributes.update(interface.setlike.extended_attribute s) 368 used_extended_attributes.update(interface.setlike.extended_attribute s)
367 369
(...skipping 12 matching lines...) Expand all
380 'CallWith': ['ScriptState', 'ThisValue'], 382 'CallWith': ['ScriptState', 'ThisValue'],
381 }) 383 })
382 384
383 def generated_iterator_method(name, implemented_as=None): 385 def generated_iterator_method(name, implemented_as=None):
384 return generated_method( 386 return generated_method(
385 return_type=IdlType('Iterator'), 387 return_type=IdlType('Iterator'),
386 name=name, 388 name=name,
387 extended_attributes=used_extended_attributes, 389 extended_attributes=used_extended_attributes,
388 implemented_as=implemented_as) 390 implemented_as=implemented_as)
389 391
390 iterator_method = generated_iterator_method('iterator', implemented_as=' iterator') 392 if (interface.iterable or interface.maplike or interface.setlike or 'Ite rable' in extended_attributes):
Jens Widell 2015/10/05 05:57:11 Minor nit: in Python you typically don't have pare
393 iterator_method = generated_iterator_method('iterator', implemented_ as='iterator')
394 elif interface.has_indexed_elements:
395 has_array_iterator = True
391 396
392 if interface.iterable or interface.maplike or interface.setlike: 397 if interface.iterable or interface.maplike or interface.setlike:
393 implicit_methods = [ 398 implicit_methods = [
394 generated_iterator_method('keys'), 399 generated_iterator_method('keys'),
395 generated_iterator_method('values'), 400 generated_iterator_method('values'),
396 generated_iterator_method('entries'), 401 generated_iterator_method('entries'),
397 402
398 # void forEach(Function callback, [Default=Undefined] optional a ny thisArg) 403 # void forEach(Function callback, [Default=Undefined] optional a ny thisArg)
399 generated_method(IdlType('void'), 'forEach', 404 generated_method(IdlType('void'), 'forEach',
400 arguments=[generated_argument(IdlType('Function '), 'callback'), 405 arguments=[generated_argument(IdlType('Function '), 'callback'),
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 558
554 context.update({ 559 context.update({
555 'conditionally_enabled_methods': conditionally_enabled_methods, 560 'conditionally_enabled_methods': conditionally_enabled_methods,
556 'custom_registration_methods': custom_registration_methods, 561 'custom_registration_methods': custom_registration_methods,
557 'has_origin_safe_method_setter': any( 562 'has_origin_safe_method_setter': any(
558 method['is_check_security_for_frame'] and not method['is_read_only'] 563 method['is_check_security_for_frame'] and not method['is_read_only']
559 for method in methods), 564 for method in methods),
560 'has_private_script': any(attribute['is_implemented_in_private_script'] for attribute in attributes) or 565 'has_private_script': any(attribute['is_implemented_in_private_script'] for attribute in attributes) or
561 any(method['is_implemented_in_private_script'] for method in methods ), 566 any(method['is_implemented_in_private_script'] for method in methods ),
562 'iterator_method': iterator_method, 567 'iterator_method': iterator_method,
568 'has_array_iterator': has_array_iterator,
563 'method_configuration_methods': method_configuration_methods, 569 'method_configuration_methods': method_configuration_methods,
564 'methods': methods, 570 'methods': methods,
565 }) 571 })
566 572
567 # Conditionally enabled members 573 # Conditionally enabled members
568 has_conditional_attributes_on_instance = any( 574 has_conditional_attributes_on_instance = any(
569 attribute['exposed_test'] and attribute['on_instance'] 575 attribute['exposed_test'] and attribute['on_instance']
570 for attribute in attributes) 576 for attribute in attributes)
571 has_conditional_attributes_on_prototype = any( 577 has_conditional_attributes_on_prototype = any(
572 attribute['exposed_test'] and attribute['on_prototype'] 578 attribute['exposed_test'] and attribute['on_prototype']
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 1373
1368 extended_attributes = deleter.extended_attributes 1374 extended_attributes = deleter.extended_attributes
1369 idl_type = deleter.idl_type 1375 idl_type = deleter.idl_type
1370 is_call_with_script_state = v8_utilities.has_extended_attribute_value(delete r, 'CallWith', 'ScriptState') 1376 is_call_with_script_state = v8_utilities.has_extended_attribute_value(delete r, 'CallWith', 'ScriptState')
1371 return { 1377 return {
1372 'is_call_with_script_state': is_call_with_script_state, 1378 'is_call_with_script_state': is_call_with_script_state,
1373 'is_custom': 'Custom' in extended_attributes, 1379 'is_custom': 'Custom' in extended_attributes,
1374 'is_raises_exception': 'RaisesException' in extended_attributes, 1380 'is_raises_exception': 'RaisesException' in extended_attributes,
1375 'name': cpp_name(deleter), 1381 'name': cpp_name(deleter),
1376 } 1382 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698