Index: third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_utilities.py b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
index a16af83fb5ad43296d59096660d78062b0e7f5b0..58bbb2d4fafc91992bc838cad10f795578c9d55e 100644 |
--- a/third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
+++ b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
@@ -35,7 +35,7 @@ import re |
from idl_types import IdlTypeBase |
import idl_types |
-from idl_definitions import Exposure, IdlInterface, IdlAttribute, IdlOperation |
+from idl_definitions import Exposure, IdlInterface, IdlAttribute |
from v8_globals import includes |
ACRONYMS = [ |
@@ -125,7 +125,7 @@ def scoped_name(interface, definition, base_name): |
if partial_interface_implemented_as: |
return '%s::%s' % (partial_interface_implemented_as, base_name) |
if (definition.is_static or |
- definition.name in ('Constructor', 'NamedConstructor')): |
+ definition.name in ('Constructor', 'NamedConstructor')): |
return '%s::%s' % (cpp_name(interface), base_name) |
return 'impl->%s' % base_name |
@@ -176,7 +176,7 @@ def activity_logging_world_check(member): |
if 'LogActivity' not in extended_attributes: |
return False |
if ('PerWorldBindings' not in extended_attributes and |
- 'LogAllWorlds' not in extended_attributes): |
+ 'LogAllWorlds' not in extended_attributes): |
return True |
return False |
@@ -421,10 +421,25 @@ def on_instance(interface, member): |
- [Unforgeable] members |
- regular members of [Global] or [PrimaryGlobal] interfaces |
""" |
- # TODO(yukishiino): Implement this function following the spec. |
if member.is_static: |
return False |
- return not on_prototype(interface, member) |
+ |
+ # TODO(yukishiino): Remove a hack for toString once we support |
+ # Symbol.toStringTag. |
+ if (interface.name == 'Window' and member.name == 'toString'): |
+ return False |
+ |
+ # TODO(yukishiino): Implement "interface object" and its [[Call]] method |
+ # in a better way. Then we can get rid of this hack. |
+ if is_constructor_attribute(member): |
+ return True |
+ |
+ if ('PrimaryGlobal' in interface.extended_attributes or |
+ 'Global' in interface.extended_attributes or |
+ 'Unforgeable' in member.extended_attributes or |
+ 'Unforgeable' in interface.extended_attributes): |
+ return True |
+ return False |
def on_prototype(interface, member): |
@@ -433,26 +448,29 @@ def on_prototype(interface, member): |
Most members are defined on the prototype object. Exceptions are as |
follows. |
- - constant members |
- static members (optional) |
- [Unforgeable] members |
- members of [Global] or [PrimaryGlobal] interfaces |
- named properties of [Global] or [PrimaryGlobal] interfaces |
""" |
- # TODO(yukishiino): Implement this function following the spec. |
- |
- # These members must not be placed on prototype chains. |
- if (is_constructor_attribute(member) or |
- member.is_static or |
- is_unforgeable(interface, member)): |
+ if member.is_static: |
return False |
- # TODO(yukishiino): We should handle [Global] and [PrimaryGlobal] instead of |
- # Window. |
- if (interface.name == 'Window'): |
- return (member.idl_type.name == 'EventHandler' or |
- type(member) == IdlOperation) |
+ # TODO(yukishiino): Remove a hack for toString once we support |
+ # Symbol.toStringTag. |
+ if (interface.name == 'Window' and member.name == 'toString'): |
+ return True |
+ |
+ # TODO(yukishiino): Implement "interface object" and its [[Call]] method |
+ # in a better way. Then we can get rid of this hack. |
+ if is_constructor_attribute(member): |
+ return False |
+ if ('PrimaryGlobal' in interface.extended_attributes or |
+ 'Global' in interface.extended_attributes or |
+ 'Unforgeable' in member.extended_attributes or |
+ 'Unforgeable' in interface.extended_attributes): |
+ return False |
return True |
@@ -462,10 +480,8 @@ def on_interface(interface, member): |
interface object. |
The following members must be defiend on an interface object. |
- - constant members |
- static members |
""" |
- # TODO(yukishiino): Implement this function following the spec. |
if member.is_static: |
return True |
return False |