Roll 50: Copied IDLs, PYTHON scripts from WebKit removed deleted files in WebCore
TBR=jacobr@google.com
Review-Url: https://codereview.chromium.org//2786203002 .
diff --git a/bindings/IDLExtendedAttributes.txt b/bindings/IDLExtendedAttributes.txt
index c88d15d..58e04ee 100644
--- a/bindings/IDLExtendedAttributes.txt
+++ b/bindings/IDLExtendedAttributes.txt
@@ -5,7 +5,7 @@
# If you would like to add a new extended attribute or value, please:
# (1) add the extended attribute or value to this file
# (2) add an explanation to the Blink IDL extended attributes document:
-# http://www.chromium.org/blink/webidl/blink-idl-extended-attributes
+# idl-extended-attributes.md (in this directory)
# (3) add appropriate test cases to run-bindings-tests
#
# The syntax of this file is as follows:
@@ -16,9 +16,7 @@
# - "Attr=X|Y|Z" means that Attr takes a required value, and the valid
# values are X, Y, and Z, and combinations thereof;
# e.g. [Attr=X], [Attr=Y], [Attr=X|Z].
-# The separator must be | or &, so [Attr=X&Z] is also valid; the
-# separator makes a difference for Conditional, but otherwise is simply
-# a style convention.
+# The separator must be | or &, so [Attr=X&Z] is also valid.
# - "Attr=|X|Y|Z" means that Attr takes an optional value, whose valid
# values (if present) are X, Y, and Z, and combinations thereof; e.g.
# [Attr], [Attr=X], [Attr=Y], [Attr=X|Z], [Attr=X|Y|Z], [Attr=X&Z].
@@ -33,12 +31,10 @@
# arbitrary, but that "X" is standard, e.g. [Attr=X], [Attr=Foo].
#
-ActiveDOMObject
CachedAttribute=*
CallWith=ExecutionContext|ScriptState|ScriptArguments|ActiveWindow|FirstWindow|ThisValue
-CheckSecurity=Frame|Node|Window
+CheckSecurity=Receiver|ReturnValue
Clamp
-Conditional=*
Constructor
# FIXME: remove [ConstructorCallWith=Document], as can instead use
# [ConstructorCallWith=ExecutionContext] + toDocument(executionContext)
@@ -71,13 +67,11 @@
DoNotCheckConstants
DoNotCheckSecurity=|Setter
DoNotCheckSignature
-DoNotExposeJSAccessors
EnforceRange
-ExposeJSAccessors
Exposed=*
+FlexibleArrayBufferView
GarbageCollected
Global=|*
-Immutable
ImplementedAs=*
ImplementedInPrivateScript
Iterable
@@ -94,6 +88,7 @@
NoInterfaceObject
NotEnumerable
OnlyExposedToPrivateScript
+OriginTrialEnabled=*
OverrideBuiltins
PartialInterfaceImplementedAs=*
PermissiveDictionaryConversion
@@ -116,9 +111,7 @@
SetWrapperReferenceTo=*
SetterCallWith=ExecutionContext|ScriptArguments|ActiveWindow|FirstWindow
TreatNullAs=NullString|EmptyString
-TreatReturnedNullStringAs=Null|Undefined
TreatUndefinedAs=NullString
-TypeChecking=Interface
URL
Unforgeable
Unscopeable
diff --git a/bindings/README b/bindings/README
deleted file mode 100644
index 630832e..0000000
--- a/bindings/README
+++ /dev/null
@@ -1,9 +0,0 @@
-This directory contains a copy of WebKit/WebCore IDL files.
-See the attached LICENSE-* files in this directory.
-
-Please do not modify the files here. They are periodically copied
-using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
-
-The current version corresponds to:
-URL: https://src.chromium.org/blink/branches/dart/2454_1
-Current revision: 202759
diff --git a/bindings/dart/gyp/scripts/build_dart_snapshot.py b/bindings/dart/gyp/scripts/build_dart_snapshot.py
index 4efc717..e9e677c 100755
--- a/bindings/dart/gyp/scripts/build_dart_snapshot.py
+++ b/bindings/dart/gyp/scripts/build_dart_snapshot.py
@@ -78,8 +78,9 @@
'python',
path(dartPath, 'runtime', 'tools', 'create_snapshot_bin.py'),
'--executable=%s' % path(genSnapshotBinPath),
+ '--snapshot_kind=core',
'--vm_output_bin=%s' % binaryVmIsolateSnapshotFile,
- '--output_bin=%s' % binaryIsolateSnapshotFile,
+ '--isolate_output_bin=%s' % binaryIsolateSnapshotFile,
'--script=%s' % snapshotScriptName,
]
command.extend(['--url_mapping=dart:%s,%s' % lib for lib in snapshottedLibs])
diff --git a/bindings/scripts/aggregate_generated_bindings.py b/bindings/scripts/aggregate_generated_bindings.py
index 05e9ffd..4b71743 100755
--- a/bindings/scripts/aggregate_generated_bindings.py
+++ b/bindings/scripts/aggregate_generated_bindings.py
@@ -55,20 +55,6 @@
from utilities import should_generate_impl_file_from_idl, get_file_contents, idl_filename_to_component, idl_filename_to_interface_name, read_idl_files_list_from_file
-# A regexp for finding Conditional attributes in interface definitions.
-CONDITIONAL_PATTERN = re.compile(
- r'\['
- r'[^\]]*'
- r'Conditional=([\_0-9a-zA-Z]*)'
- r'[^\]]*'
- r'\]\s*'
- r'((callback|partial)\s+)?'
- r'interface\s+'
- r'\w+\s*'
- r'(:\s*\w+\s*)?'
- r'{',
- re.MULTILINE)
-
COPYRIGHT_TEMPLATE = """/*
* THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
*
@@ -100,17 +86,8 @@
"""
-def extract_conditional(idl_contents):
- """Find [Conditional] interface extended attribute."""
-
- match = CONDITIONAL_PATTERN.search(idl_contents)
- if not match:
- return None
- return match.group(1)
-
-
def extract_meta_data(file_paths):
- """Extracts conditional and interface name from each IDL file."""
+ """Extracts interface name from each IDL file."""
meta_data_list = []
for file_path in file_paths:
@@ -129,7 +106,6 @@
interface_name = idl_filename_to_interface_name(file_path)
meta_data = {
- 'conditional': extract_conditional(idl_file_contents),
'name': interface_name,
}
meta_data_list.append(meta_data)
@@ -142,18 +118,9 @@
output = [COPYRIGHT_TEMPLATE,
'#define NO_IMPLICIT_ATOMICSTRING\n\n']
- # List all includes segmented by if and endif.
- prev_conditional = None
- files_meta_data_this_partition.sort(key=lambda e: e['conditional'])
+ # List all includes.
+ files_meta_data_this_partition.sort()
for meta_data in files_meta_data_this_partition:
- conditional = meta_data['conditional']
- if prev_conditional != conditional:
- if prev_conditional:
- output.append('#endif\n')
- if conditional:
- output.append('\n#if ENABLE(%s)\n' % conditional)
- prev_conditional = conditional
-
if aggregate_partial_interfaces:
cpp_filename = 'V8%sPartial.cpp' % meta_data['name']
else:
@@ -162,9 +129,6 @@
output.append('#include "bindings/%s/v8/%s"\n' %
(component_dir, cpp_filename))
- if prev_conditional:
- output.append('#endif\n')
-
return ''.join(output)
@@ -185,7 +149,8 @@
in_out_break_index = args.index('--')
output_file_names = args[in_out_break_index + 1:]
- idl_file_names = read_idl_files_list_from_file(input_file_name)
+ idl_file_names = read_idl_files_list_from_file(input_file_name,
+ is_gyp_format=True)
components = set([idl_filename_to_component(filename)
for filename in idl_file_names])
if len(components) != 1:
diff --git a/bindings/scripts/code_generator_v8.py b/bindings/scripts/code_generator_v8.py
index 4169c23..381d321 100644
--- a/bindings/scripts/code_generator_v8.py
+++ b/bindings/scripts/code_generator_v8.py
@@ -79,16 +79,26 @@
import v8_interface
import v8_types
import v8_union
-from v8_utilities import capitalize, cpp_name, conditional_string, v8_class_name
+from v8_utilities import capitalize, cpp_name, v8_class_name
from utilities import KNOWN_COMPONENTS, idl_filename_to_component, is_valid_component_dependency, is_testing_target
+def normalize_and_sort_includes(include_paths):
+ normalized_include_paths = []
+ for include_path in include_paths:
+ match = re.search(r'/gen/blink/(.*)$', posixpath.abspath(include_path))
+ if match:
+ include_path = match.group(1)
+ normalized_include_paths.append(include_path)
+ return sorted(normalized_include_paths)
+
+
def render_template(include_paths, header_template, cpp_template,
template_context, component=None):
template_context['code_generator'] = module_pyname
# Add includes for any dependencies
- template_context['header_includes'] = sorted(
+ template_context['header_includes'] = normalize_and_sort_includes(
template_context['header_includes'])
for include_path in include_paths:
@@ -97,7 +107,7 @@
assert is_valid_component_dependency(component, dependency)
includes.add(include_path)
- template_context['cpp_includes'] = sorted(includes)
+ template_context['cpp_includes'] = normalize_and_sort_includes(includes)
header_text = header_template.render(template_context)
cpp_text = cpp_template.render(template_context)
@@ -245,10 +255,9 @@
header_template_filename = 'interface.h'
cpp_template_filename = 'interface.cpp'
interface_context = v8_interface.interface_context
- header_template = self.jinja_env.get_template(header_template_filename)
- cpp_template = self.jinja_env.get_template(cpp_template_filename)
template_context = interface_context(interface)
+ includes.update(interface_info.get('cpp_includes', {}).get(component, set()))
if not interface.is_partial and not is_testing_target(full_path):
template_context['header_includes'].add(self.info_provider.include_path_for_export)
template_context['exported'] = self.info_provider.specifier_for_export
@@ -257,6 +266,9 @@
template_context['header_includes'].add('core/dom/DOMTypedArray.h')
elif interface_info['include_path']:
template_context['header_includes'].add(interface_info['include_path'])
+
+ header_template = self.jinja_env.get_template(header_template_filename)
+ cpp_template = self.jinja_env.get_template(cpp_template_filename)
header_text, cpp_text = render_template(
include_paths, header_template, cpp_template, template_context,
component)
@@ -370,7 +382,7 @@
additional_header_includes.append(
'bindings/core/v8/UnionTypesCore.h')
- template_context['header_includes'] = sorted(
+ template_context['header_includes'] = normalize_and_sort_includes(
template_context['header_includes'] + additional_header_includes)
header_text = header_template.render(template_context)
@@ -396,7 +408,6 @@
trim_blocks=True)
jinja_env.filters.update({
'blink_capitalize': capitalize,
- 'conditional': conditional_if_endif,
'exposed': exposed_if,
'runtime_enabled': runtime_enabled_if,
})
@@ -411,21 +422,11 @@
'%s}\n' % indent)
-# [Conditional]
-def conditional_if_endif(code, conditional_string):
- # Jinja2 filter to generate if/endif directive blocks
- if not conditional_string:
- return code
- return ('#if %s\n' % conditional_string +
- code +
- '#endif // %s\n' % conditional_string)
-
-
# [Exposed]
def exposed_if(code, exposed_test):
if not exposed_test:
return code
- return generate_indented_conditional(code, 'context && (%s)' % exposed_test)
+ return generate_indented_conditional(code, 'executionContext && (%s)' % exposed_test)
# [RuntimeEnabled]
diff --git a/bindings/scripts/collect_idls_into_json.py b/bindings/scripts/collect_idls_into_json.py
new file mode 100644
index 0000000..a03026f
--- /dev/null
+++ b/bindings/scripts/collect_idls_into_json.py
@@ -0,0 +1,432 @@
+#!/usr/bin/env python
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Usage: collect_idls_into_json.py path_file.txt json_file.json
+This script collects and organizes interface information and that information dumps into json file.
+"""
+
+import json
+import os
+import sys
+import utilities
+
+
+from blink_idl_parser import parse_file, BlinkIDLParser
+
+_INTERFACE = 'Interface'
+_IMPLEMENT = 'Implements'
+_PARTIAL = 'Partial'
+_NAME = 'Name'
+_TYPE = 'Type'
+_UNIONTYPE = 'UnionType'
+_ARRAY = 'Array'
+_ANY = 'Any'
+_SEQUENCE = 'Sequence'
+_PROP_VALUE = 'VALUE'
+_VALUE = 'Value'
+_PARENT = 'Parent'
+_FILEPATH = 'FilePath'
+_PROP_FILENAME = 'FILENAME'
+_PROP_READONLY = 'READONLY'
+_READONLY = 'Readonly'
+_PROP_STATIC = 'STATIC'
+_STATIC = 'Static'
+_CONSTS = 'Consts'
+_CONST = 'Const'
+_ATTRIBUTES = 'Attributes'
+_ATTRIBUTE = 'Attribute'
+_OPERATIONS = 'Operations'
+_OPERATION = 'Operation'
+_PROP_GETTER = 'GETTER'
+_NAMED_GETTER = '__getter__'
+_PROP_SETTER = 'SETTER'
+_NAMED_SETTER = '__setter__'
+_PROP_DELETER = 'DELETER'
+_NAMED_DELETER = '__deleter__'
+_ARGUMENTS = 'Arguments'
+_ARGUMENT = 'Argument'
+_EXTATTRIBUTES = 'ExtAttributes'
+_EXTATTRIBUTE = 'ExtAttribute'
+_INHERIT = 'Inherit'
+_PROP_REFERENCE = 'REFERENCE'
+_PARTIAL_FILEPATH = 'Partial_FilePaths'
+_MEMBERS = [_CONSTS, _ATTRIBUTES, _OPERATIONS]
+
+
+def get_definitions(paths):
+ """Returns a generator of IDL node.
+ Args:
+ paths: list of IDL file path
+ Returns:
+ a generator which yields IDL node objects
+ """
+ parser = BlinkIDLParser()
+ for path in paths:
+ definitions = parse_file(parser, path)
+ for definition in definitions.GetChildren():
+ yield definition
+
+
+def is_implements(definition):
+ """Returns True if class of |definition| is Implements, otherwise False.
+ Args:
+ definition: IDL node
+ Returns:
+ True if class of |definition| is Implements, otherwise False.
+ """
+ return definition.GetClass() == _IMPLEMENT
+
+
+def is_partial(definition):
+ """Returns True if |definition| is 'partial interface' class, otherwise False.
+ Args:
+ definition: IDL node
+ Return:
+ True if |definition| is 'partial interface' class, otherwise False.
+ """
+ return definition.GetClass() == _INTERFACE and definition.GetProperty(_PARTIAL)
+
+
+def get_filepath(interface_node):
+ """Returns relative path to the IDL in which |interface_node| is defined.
+ Args:
+ interface_node: IDL interface
+ Returns:
+ str which is |interface_node|'s file path
+ """
+ filename = interface_node.GetProperty(_PROP_FILENAME)
+ return os.path.relpath(filename)
+
+
+def get_const_node_list(interface_node):
+ """Returns a list of Const node.
+ Args:
+ interface_node: interface node
+ Returns:
+ A list of const node
+ """
+ return interface_node.GetListOf(_CONST)
+
+
+def get_const_type(const_node):
+ """Returns const's type.
+ Args:
+ const_node: const node
+ Returns:
+ str which is constant type.
+ """
+ return const_node.GetChildren()[0].GetName()
+
+
+def get_const_value(const_node):
+ """Returns const's value.
+ This function only supports primitive types.
+
+ Args:
+ const_node: const node
+ Returns:
+ str which is name of constant's value.
+ """
+ if const_node.GetChildren()[1].GetName():
+ return const_node.GetChildren()[1].GetName()
+ else:
+ for const_child in const_node.GetChildren():
+ if const_child.GetClass() == _VALUE and not const_child.GetName():
+ return const_child.GetProperty(_PROP_VALUE)
+ raise Exception('Constant value is empty')
+
+
+def const_node_to_dict(const_node):
+ """Returns dictionary of const's information.
+ Args:
+ const_node: const node
+ Returns:
+ dictionary of const's information
+ """
+ return {
+ _NAME: const_node.GetName(),
+ _TYPE: get_const_type(const_node),
+ _VALUE: get_const_value(const_node),
+ _EXTATTRIBUTES: [extattr_node_to_dict(extattr) for extattr in get_extattribute_node_list(const_node)],
+ }
+
+
+def get_attribute_node_list(interface_node):
+ """Returns list of Attribute if the interface have one.
+ Args:
+ interface_node: interface node
+ Returns:
+ list of attribute node
+ """
+ return interface_node.GetListOf(_ATTRIBUTE)
+
+
+def get_attribute_type(attribute_node):
+ """Returns type of attribute.
+ Args:
+ attribute_node: attribute node
+ Returns:
+ name of attribute's type
+ """
+ attr_type = attribute_node.GetOneOf(_TYPE).GetChildren()[0]
+ type_list = []
+ if attr_type.GetClass() == _UNIONTYPE:
+ union_member_list = attr_type.GetListOf(_TYPE)
+ for union_member in union_member_list:
+ for type_component in union_member.GetChildren():
+ if type_component.GetClass() == _ARRAY:
+ type_list[-1] += '[]'
+ elif type_component.GetClass() == _SEQUENCE:
+ for seq_type in type_component.GetOneOf(_TYPE).GetChildren():
+ type_list.append('<' + seq_type.GetName() + '>')
+ else:
+ type_list.append(type_component.GetName())
+ return type_list
+ elif attr_type.GetClass() == _SEQUENCE:
+ union_member_types = []
+ if attr_type.GetOneOf(_TYPE).GetChildren()[0].GetClass() == _UNIONTYPE:
+ for union_member in attr_type.GetOneOf(_TYPE).GetOneOf(_UNIONTYPE).GetListOf(_TYPE):
+ if len(union_member.GetChildren()) != 1:
+ raise Exception('Complex type in a union in a sequence is not yet supported')
+ type_component = union_member.GetChildren()[0]
+ union_member_types.append(type_component.GetName())
+ return '<' + str(union_member_types) + '>'
+ else:
+ for type_component in attr_type.GetOneOf(_TYPE).GetChildren():
+ if type_component.GetClass() == _SEQUENCE:
+ raise Exception('Sequence in another sequence is not yet supported')
+ else:
+ if type_component.GetClass() == _ARRAY:
+ type_list[-1] += []
+ else:
+ type_list.append(type_component.GetName())
+ return '<' + type_list[0] + '>'
+ elif attr_type.GetClass() == _ANY:
+ return _ANY
+ else:
+ for type_component in attribute_node.GetOneOf(_TYPE).GetChildren():
+ if type_component.GetClass() == _ARRAY:
+ type_list[-1] += '[]'
+ else:
+ type_list.append(type_component.GetName())
+ return type_list[0]
+
+
+get_operation_type = get_attribute_type
+get_argument_type = get_attribute_type
+
+
+def attribute_node_to_dict(attribute_node):
+ """Returns dictioary of attribute's information.
+ Args:
+ attribute_node: attribute node
+ Returns:
+ dictionary of attribute's information
+ """
+ return {
+ _NAME: attribute_node.GetName(),
+ _TYPE: get_attribute_type(attribute_node),
+ _EXTATTRIBUTES: [extattr_node_to_dict(extattr) for extattr in get_extattribute_node_list(attribute_node)],
+ _READONLY: attribute_node.GetProperty(_PROP_READONLY, default=False),
+ _STATIC: attribute_node.GetProperty(_PROP_STATIC, default=False),
+ }
+
+
+def get_operation_node_list(interface_node):
+ """Returns operations node list.
+ Args:
+ interface_node: interface node
+ Returns:
+ list of oparation node
+ """
+ return interface_node.GetListOf(_OPERATION)
+
+
+def get_argument_node_list(operation_node):
+ """Returns list of argument.
+ Args:
+ operation_node: operation node
+ Returns:
+ list of argument node
+ """
+ return operation_node.GetOneOf(_ARGUMENTS).GetListOf(_ARGUMENT)
+
+
+def argument_node_to_dict(argument_node):
+ """Returns dictionary of argument's information.
+ Args:
+ argument_node: argument node
+ Returns:
+ dictionary of argument's information
+ """
+ return {
+ _NAME: argument_node.GetName(),
+ _TYPE: get_argument_type(argument_node),
+ }
+
+
+def get_operation_name(operation_node):
+ """Returns openration's name.
+ Args:
+ operation_node: operation node
+ Returns:
+ name of operation
+ """
+ if operation_node.GetProperty(_PROP_GETTER):
+ return _NAMED_GETTER
+ elif operation_node.GetProperty(_PROP_SETTER):
+ return _NAMED_SETTER
+ elif operation_node.GetProperty(_PROP_DELETER):
+ return _NAMED_DELETER
+ else:
+ return operation_node.GetName()
+
+
+def operation_node_to_dict(operation_node):
+ """Returns dictionary of operation's information.
+ Args:
+ operation_node: operation node
+ Returns:
+ dictionary of operation's informantion
+ """
+ return {
+ _NAME: get_operation_name(operation_node),
+ _ARGUMENTS: [argument_node_to_dict(argument) for argument in get_argument_node_list(operation_node) if argument_node_to_dict(argument)],
+ _TYPE: get_operation_type(operation_node),
+ _EXTATTRIBUTES: [extattr_node_to_dict(extattr) for extattr in get_extattribute_node_list(operation_node)],
+ _STATIC: operation_node.GetProperty(_PROP_STATIC, default=False),
+ }
+
+
+def get_extattribute_node_list(node):
+ """Returns list of ExtAttribute.
+ Args:
+ node: IDL node
+ Returns:
+ list of ExtAttrbute
+ """
+ if node.GetOneOf(_EXTATTRIBUTES):
+ return node.GetOneOf(_EXTATTRIBUTES).GetListOf(_EXTATTRIBUTE)
+ else:
+ return []
+
+
+def extattr_node_to_dict(extattr):
+ """Returns dictionary of ExtAttribute's information.
+ Args:
+ extattr: ExtAttribute node
+ Returns:
+ dictionary of ExtAttribute's information
+ """
+ return {
+ _NAME: extattr.GetName(),
+ }
+
+
+def inherit_node_to_dict(interface_node):
+ """Returns a dictionary of inheritance information.
+ Args:
+ interface_node: interface node
+ Returns:
+ A dictioanry of inheritance information.
+ """
+ inherit = interface_node.GetOneOf(_INHERIT)
+ if inherit:
+ return {_PARENT: inherit.GetName()}
+ else:
+ return {_PARENT: None}
+
+
+def interface_node_to_dict(interface_node):
+ """Returns a dictioary of interface information.
+ Args:
+ interface_node: interface node
+ Returns:
+ A dictionary of the interface information.
+ """
+ return {
+ _NAME: interface_node.GetName(),
+ _FILEPATH: get_filepath(interface_node),
+ _CONSTS: [const_node_to_dict(const) for const in get_const_node_list(interface_node)],
+ _ATTRIBUTES: [attribute_node_to_dict(attr) for attr in get_attribute_node_list(interface_node) if attr],
+ _OPERATIONS: [operation_node_to_dict(operation) for operation in get_operation_node_list(interface_node) if operation],
+ _EXTATTRIBUTES: [extattr_node_to_dict(extattr) for extattr in get_extattribute_node_list(interface_node)],
+ _INHERIT: inherit_node_to_dict(interface_node)
+ }
+
+
+def merge_partial_dicts(interfaces_dict, partials_dict):
+ """Merges partial interface into non-partial interface.
+ Args:
+ interfaces_dict: A dict of the non-partial interfaces.
+ partial_dict: A dict of partial interfaces.
+ Returns:
+ A merged dictionary of |interface_dict| with |partial_dict|.
+ """
+ for interface_name, partial in partials_dict.iteritems():
+ interface = interfaces_dict.get(interface_name)
+ if not interface:
+ raise Exception('There is a partial interface, but the corresponding non-partial interface was not found.')
+ for member in _MEMBERS:
+ interface[member].extend(partial.get(member))
+ interface.setdefault(_PARTIAL_FILEPATH, []).append(partial[_FILEPATH])
+ return interfaces_dict
+
+
+def merge_implement_nodes(interfaces_dict, implement_node_list):
+ """Combines a dict of interface information with referenced interface information.
+ Args:
+ interfaces_dict: dict of interface information
+ implement_nodes: list of implemented interface node
+ Returns:
+ A dict of interface information combined with implements nodes.
+ """
+ for implement in implement_node_list:
+ reference = implement.GetProperty(_PROP_REFERENCE)
+ implement = implement.GetName()
+ if reference not in interfaces_dict.keys() or implement not in interfaces_dict.keys():
+ raise Exception('There is not corresponding implement or reference interface.')
+ for member in _MEMBERS:
+ interfaces_dict[implement][member].extend(interfaces_dict[reference].get(member))
+ return interfaces_dict
+
+
+def export_to_jsonfile(dictionary, json_file):
+ """Writes a Python dict into a JSON file.
+ Args:
+ dictioary: interface dictionary
+ json_file: json file for output
+ """
+ with open(json_file, 'w') as f:
+ json.dump(dictionary, f, sort_keys=True)
+
+
+def usage():
+ sys.stdout.write('Usage: collect_idls_into_json.py <path_file.txt> <output_file.json>\n')
+
+
+def main(args):
+ if len(args) != 2:
+ usage()
+ exit(1)
+ path_file = args[0]
+ json_file = args[1]
+ path_list = utilities.read_file_to_list(path_file)
+ implement_node_list = [definition
+ for definition in get_definitions(path_list)
+ if is_implements(definition)]
+ interfaces_dict = {definition.GetName(): interface_node_to_dict(definition)
+ for definition in get_definitions(path_list)
+ if not is_partial(definition)}
+ partials_dict = {definition.GetName(): interface_node_to_dict(definition)
+ for definition in get_definitions(path_list)
+ if is_partial(definition)}
+ dictionary = merge_partial_dicts(interfaces_dict, partials_dict)
+ interfaces_dict = merge_implement_nodes(interfaces_dict, implement_node_list)
+ export_to_jsonfile(dictionary, json_file)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/bindings/scripts/compute_interfaces_info_individual.py b/bindings/scripts/compute_interfaces_info_individual.py
index b052e14..26af9fe 100755
--- a/bindings/scripts/compute_interfaces_info_individual.py
+++ b/bindings/scripts/compute_interfaces_info_individual.py
@@ -47,12 +47,14 @@
import posixpath
import sys
+from idl_compiler import idl_filename_to_interface_name
from idl_definitions import Visitor
from idl_reader import IdlReader
-from utilities import get_file_contents, read_file_to_list, idl_filename_to_interface_name, idl_filename_to_component, write_pickle_file, get_interface_extended_attributes_from_idl, is_callback_interface_from_idl
+from utilities import get_file_contents, read_file_to_list, idl_filename_to_interface_name, idl_filename_to_component, write_pickle_file, get_interface_extended_attributes_from_idl, is_callback_interface_from_idl, merge_dict_recursively
module_path = os.path.dirname(__file__)
source_path = os.path.normpath(os.path.join(module_path, os.pardir, os.pardir))
+gen_path = os.path.join('gen', 'blink')
class IdlBadFilenameError(Exception):
@@ -84,9 +86,9 @@
# Computations
################################################################################
-def relative_dir_posix(idl_filename):
+def relative_dir_posix(idl_filename, base_path):
"""Returns relative path to the directory of idl_file in POSIX format."""
- relative_path_local = os.path.relpath(idl_filename, source_path)
+ relative_path_local = os.path.relpath(idl_filename, base_path)
relative_dir_local = os.path.dirname(relative_path_local)
return relative_dir_local.replace(os.path.sep, posixpath.sep)
@@ -97,11 +99,13 @@
POSIX format is used for consistency of output, so reference tests are
platform-independent.
"""
- relative_dir = relative_dir_posix(idl_filename)
+ if idl_filename.startswith(gen_path):
+ relative_dir = relative_dir_posix(idl_filename, gen_path)
+ else:
+ relative_dir = relative_dir_posix(idl_filename, source_path)
# IDL file basename is used even if only a partial interface file
- idl_file_basename, _ = os.path.splitext(os.path.basename(idl_filename))
- cpp_class_name = implemented_as or idl_file_basename
+ cpp_class_name = implemented_as or idl_filename_to_interface_name(idl_filename)
return posixpath.join(relative_dir, cpp_class_name + '.h')
@@ -130,6 +134,13 @@
if 'PutForwards' in attribute.extended_attributes))
+def get_unforgeable_attributes_from_definition(definition):
+ if 'Unforgeable' in definition.extended_attributes:
+ return sorted(definition.attributes)
+ return sorted(attribute for attribute in definition.attributes
+ if 'Unforgeable' in attribute.extended_attributes)
+
+
def collect_union_types_from_definitions(definitions):
"""Traverse definitions and collect all union types."""
class UnionTypeCollector(Visitor):
@@ -172,6 +183,34 @@
def collect_info(self, idl_filename):
"""Reads an idl file and collects information which is required by the
binding code generation."""
+ def collect_unforgeable_attributes(definition, idl_filename):
+ """Collects [Unforgeable] attributes so that we can define them on
+ sub-interfaces later. The resulting structure is as follows.
+ interfaces_info[interface_name] = {
+ 'unforgeable_attributes': {
+ 'core': [IdlAttribute, ...],
+ 'modules': [IdlAttribute, ...],
+ },
+ ...
+ }
+ """
+ interface_info = {}
+ unforgeable_attributes = get_unforgeable_attributes_from_definition(definition)
+ if not unforgeable_attributes:
+ return interface_info
+
+ if definition.is_partial:
+ interface_basename = idl_filename_to_interface_name(idl_filename)
+ # TODO(yukishiino): [PartialInterfaceImplementedAs] is treated
+ # in interface_dependency_resolver.transfer_extended_attributes.
+ # Come up with a better way to keep them consistent.
+ for attr in unforgeable_attributes:
+ attr.extended_attributes['PartialInterfaceImplementedAs'] = definition.extended_attributes.get('ImplementedAs', interface_basename)
+ component = idl_filename_to_component(idl_filename)
+ interface_info['unforgeable_attributes'] = {}
+ interface_info['unforgeable_attributes'][component] = unforgeable_attributes
+ return interface_info
+
definitions = self.reader.read_idl_file(idl_filename)
this_union_types = collect_union_types_from_definitions(definitions)
@@ -208,6 +247,15 @@
else:
return
+ if definition.name not in self.interfaces_info:
+ self.interfaces_info[definition.name] = {}
+
+ # Remember [Unforgeable] attributes.
+ if definitions.interfaces:
+ merge_dict_recursively(self.interfaces_info[definition.name],
+ collect_unforgeable_attributes(definition, idl_filename))
+
+ component = idl_filename_to_component(idl_filename)
extended_attributes = definition.extended_attributes
implemented_as = extended_attributes.get('ImplementedAs')
full_path = os.path.realpath(idl_filename)
@@ -219,10 +267,22 @@
if this_include_path:
partial_include_paths.append(this_include_path)
if this_union_types:
- component = idl_filename_to_component(idl_filename)
partial_include_paths.append(
'bindings/%s/v8/UnionTypes%s.h' % (component, component.capitalize()))
self.add_paths_to_partials_dict(definition.name, full_path, partial_include_paths)
+ # Collects C++ header paths which should be included from generated
+ # .cpp files. The resulting structure is as follows.
+ # interfaces_info[interface_name] = {
+ # 'cpp_includes': {
+ # 'core': set(['core/foo/Foo.h', ...]),
+ # 'modules': set(['modules/bar/Bar.h', ...]),
+ # },
+ # ...
+ # }
+ if this_include_path:
+ merge_dict_recursively(
+ self.interfaces_info[definition.name],
+ {'cpp_includes': {component: set([this_include_path])}})
return
# 'implements' statements can be included in either the file for the
@@ -244,9 +304,9 @@
# 'implements': http://crbug.com/360435
'is_legacy_treat_as_partial_interface': 'LegacyTreatAsPartialInterface' in extended_attributes,
'parent': definition.parent,
- 'relative_dir': relative_dir_posix(idl_filename),
+ 'relative_dir': relative_dir_posix(idl_filename, source_path),
})
- self.interfaces_info[definition.name] = interface_info
+ merge_dict_recursively(self.interfaces_info[definition.name], interface_info)
def get_info_as_dict(self):
"""Returns info packaged as a dict."""
diff --git a/bindings/scripts/compute_interfaces_info_overall.py b/bindings/scripts/compute_interfaces_info_overall.py
index 928a911..f038b76 100755
--- a/bindings/scripts/compute_interfaces_info_overall.py
+++ b/bindings/scripts/compute_interfaces_info_overall.py
@@ -86,13 +86,10 @@
import optparse
import sys
-from utilities import idl_filename_to_component, read_pickle_files, write_pickle_file
+from utilities import idl_filename_to_component, read_pickle_files, write_pickle_file, merge_dict_recursively
INHERITED_EXTENDED_ATTRIBUTES = set([
- 'ActiveDOMObject',
'DependentLifetime',
- 'DoNotExposeJSAccessors',
- 'ExposeJSAccessors',
'GarbageCollected',
'WillBeGarbageCollected',
])
@@ -208,8 +205,7 @@
Information is stored in global interfaces_info.
"""
for info in info_individuals:
- # No overlap between interface names, so ok to use dict.update
- interfaces_info.update(info['interfaces_info'])
+ merge_dict_recursively(interfaces_info, info['interfaces_info'])
# Interfaces in one component may have partial interfaces in
# another component. This is ok (not a layering violation), since
# partial interfaces are used to *extend* interfaces.
@@ -315,7 +311,6 @@
del interface_info['extended_attributes']
del interface_info['has_union_types']
del interface_info['is_legacy_treat_as_partial_interface']
- del interface_info['parent']
# Compute global_type_info to interfaces_info so that idl_compiler does
# not need to always calculate the info in __init__.
diff --git a/bindings/scripts/generate_event_interfaces.py b/bindings/scripts/generate_event_interfaces.py
index e6ed37e..6a2cc6a 100755
--- a/bindings/scripts/generate_event_interfaces.py
+++ b/bindings/scripts/generate_event_interfaces.py
@@ -48,7 +48,6 @@
from utilities import get_file_contents, read_file_to_list, write_file, get_interface_extended_attributes_from_idl
EXPORTED_EXTENDED_ATTRIBUTES = (
- 'Conditional',
'ImplementedAs',
'RuntimeEnabled',
)
diff --git a/bindings/scripts/generate_global_constructors.py b/bindings/scripts/generate_global_constructors.py
index 5ad7ff6..6965f9a 100755
--- a/bindings/scripts/generate_global_constructors.py
+++ b/bindings/scripts/generate_global_constructors.py
@@ -105,7 +105,7 @@
def generate_global_constructors_list(interface_name, extended_attributes):
extended_attributes_list = [
name + '=' + extended_attributes[name]
- for name in 'Conditional', 'RuntimeEnabled'
+ for name in 'RuntimeEnabled', 'OriginTrialEnabled'
if name in extended_attributes]
if extended_attributes_list:
extended_string = '[%s] ' % ', '.join(extended_attributes_list)
diff --git a/bindings/scripts/generate_idl_diff.py b/bindings/scripts/generate_idl_diff.py
new file mode 100644
index 0000000..ae98695
--- /dev/null
+++ b/bindings/scripts/generate_idl_diff.py
@@ -0,0 +1,184 @@
+#!/usr/bin/env python
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""generate_idl_diff.py is a script that generates a diff of two given IDL files.
+Usage: generate_idl_diff.py old_file.json new_file.json diff_file.json
+ old_file.json: An input json file including idl data of old Chrome version
+ new_file.json: An input json file including idl data of new Chrome version
+ diff_file.json: An output json file expressing a diff between old_file.json
+ and new_file.json
+"""
+
+import json
+import os
+import sys
+
+
+"""Data structure of input files of this script.
+The format of the json files is as follows. Each json file contains multiple
+"interface"s. Each "interface" contains 'ExtAttributes', 'Consts', 'Attributes'
+and 'Operations'. Each item in them are called a "member".
+ {'InterfaceName': {
+ 'ExtAttributes': [{'Name': '...'},
+ ...,
+ ],
+ 'Consts': [{'Type': '...',
+ 'Name': '...',
+ 'Value': '...'
+ },
+ ...,
+ ],
+ 'Attributes': [{'Type': '...',
+ 'Name': '...',
+ 'ExtAttributes':[{'Name': '...'},
+ ...,
+ ]
+ },
+ ...,
+ ],
+ 'Operations': [{'Type': '...',
+ 'Name': '...',
+ 'ExtAttributes': [{'Name': '...'},
+ ...,
+ ]
+ 'Arguments': [{'Type': '...',
+ 'Name': '...'},
+ ...,
+ ]
+ },
+ ...,
+ ],
+ 'Name': '...'
+ },
+ ...,
+ }
+"""
+
+
+EXTATTRIBUTES_AND_MEMBER_TYPES = ['ExtAttributes', 'Consts', 'Attributes', 'Operations']
+DIFF_INSENSITIVE_FIELDS = ['Name']
+DIFF_TAG = 'diff_tag'
+DIFF_TAG_ADDED = 'added'
+DIFF_TAG_DELETED = 'deleted'
+
+
+def load_json_file(filepath):
+ """Load a json file into a dictionary.
+ Args:
+ filepath: A json file path of a json file that we want to load
+ Returns:
+ An "interfaces" object loaded from the json file
+ """
+ with open(filepath, 'r') as f:
+ return json.load(f)
+
+
+def members_diff(old_interface, new_interface):
+ """Create a diff between two "interface" objects by adding annotations to
+ "member" objects that are not common in them.
+ Args:
+ old_interface: An "interface" object
+ new_interface: An "interface" object
+ Returns:
+ (annotated, is_changed) where
+ annotated: An annotated "interface" object
+ is_changed: True if two interfaces are not identical, otherwise False
+ """
+ annotated = {}
+ is_changed = False
+ for member_type in EXTATTRIBUTES_AND_MEMBER_TYPES:
+ annotated_members = []
+ unannotated_members = []
+ for member in new_interface[member_type]:
+ if member in old_interface[member_type]:
+ unannotated_members.append(member)
+ old_interface[member_type].remove(member)
+ else:
+ is_changed = True
+ member[DIFF_TAG] = DIFF_TAG_ADDED
+ annotated_members.append(member)
+ annotated[member_type] = annotated_members
+ annotated[member_type].extend(unannotated_members)
+ for member_type in EXTATTRIBUTES_AND_MEMBER_TYPES:
+ for member in old_interface[member_type]:
+ is_changed = True
+ member[DIFF_TAG] = DIFF_TAG_DELETED
+ annotated[member_type].extend(old_interface[member_type])
+ for field in DIFF_INSENSITIVE_FIELDS:
+ annotated[field] = old_interface[field]
+ return (annotated, is_changed)
+
+
+def annotate_all_members(interface, diff_tag):
+ """Add annotations to all "member" objects of |interface|.
+ Args:
+ interface: An "interface" object whose members should be annotated with
+ |diff_tag|.
+ diff_tag: DIFF_TAG_ADDED or DIFF_TAG_DELETED
+ Returns:
+ Annotated "interface" object
+ """
+ for member_type in EXTATTRIBUTES_AND_MEMBER_TYPES:
+ for member in interface[member_type]:
+ member[DIFF_TAG] = diff_tag
+ return interface
+
+
+def interfaces_diff(old_interfaces, new_interfaces):
+ """Compare two "interfaces" objects and create a diff between them by
+ adding annotations (DIFF_TAG_ADDED or DIFF_TAG_DELETED) to each member
+ and/or interface.
+ Args:
+ old_interfaces: An "interfaces" object
+ new_interfaces: An "interfaces" object
+ Returns:
+ An "interfaces" object representing diff between |old_interfaces| and
+ |new_interfaces|
+ """
+ annotated = {}
+ for interface_name, interface in new_interfaces.items():
+ if interface_name in old_interfaces:
+ annotated_interface, is_changed = members_diff(old_interfaces[interface_name], interface)
+ if is_changed:
+ annotated[interface_name] = annotated_interface
+ del old_interfaces[interface_name]
+ else:
+ interface = annotate_all_members(interface, DIFF_TAG_ADDED)
+ interface[DIFF_TAG] = DIFF_TAG_ADDED
+ annotated[interface_name] = interface
+ for interface_name, interface in old_interfaces.items():
+ interface = annotate_all_members(interface, DIFF_TAG_DELETED)
+ interface[DIFF_TAG] = DIFF_TAG_DELETED
+ annotated.update(old_interfaces)
+ return annotated
+
+
+def write_diff(diff, filepath):
+ """Write a diff dictionary to a json file.
+ Args:
+ diff: An "interfaces" object that represents a diff
+ filepath: An output file path
+ """
+ with open(filepath, 'w') as f:
+ json.dump(diff, f, indent=4)
+
+
+def main(argv):
+ if len(argv) != 3:
+ sys.stdout.write(
+ 'Usage: make_diff.py <old_file.json> <new_file.json> '
+ '<diff_file.json>\n')
+ exit(1)
+ old_json_file = argv[0]
+ new_json_file = argv[1]
+ output_file = argv[2]
+ old_interfaces = load_json_file(old_json_file)
+ new_interfaces = load_json_file(new_json_file)
+ diff = interfaces_diff(old_interfaces, new_interfaces)
+ write_diff(diff, output_file)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/bindings/scripts/generate_idl_diff_test.py b/bindings/scripts/generate_idl_diff_test.py
new file mode 100644
index 0000000..c301dce
--- /dev/null
+++ b/bindings/scripts/generate_idl_diff_test.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import generate_idl_diff
+import os
+import sys
+import unittest
+
+from generate_idl_diff import DIFF_TAG
+from generate_idl_diff import DIFF_TAG_DELETED
+from generate_idl_diff import DIFF_TAG_ADDED
+
+
+testdata_path = os.path.join(
+ os.path.dirname(os.path.realpath(__file__)), 'testdata')
+old_data_path = os.path.join(testdata_path, 'old_chrome.json')
+new_data_path = os.path.join(testdata_path, 'new_chrome.json')
+
+
+class TestGenerateIDLDiff(unittest.TestCase):
+
+ def setUp(self):
+ old = generate_idl_diff.load_json_file('old_chrome.json')
+ new = generate_idl_diff.load_json_file('new_chrome.json')
+ self.diff = generate_idl_diff.interfaces_diff(old, new)
+
+ def test_deleted_interface(self):
+ self.assertTrue('AnimationEffectReadOnly' in self.diff)
+ deleted_interface = self.diff.get('AnimationEffectReadOnly')
+ self.assertIsNotNone(deleted_interface)
+ self.assertEqual(deleted_interface.get(DIFF_TAG), DIFF_TAG_DELETED)
+
+ def test_added_interface(self):
+ self.assertTrue('AnimationEvent' in self.diff)
+ added_interface = self.diff.get('AnimationEvent')
+ self.assertIsNotNone(added_interface)
+ self.assertEqual(added_interface.get(DIFF_TAG), DIFF_TAG_ADDED)
+
+ def test_changed_interface(self):
+ self.assertTrue('ANGLEInstancedArrays' in self.diff)
+ changed_interface = self.diff.get('ANGLEInstancedArrays')
+ self.assertIsNotNone(changed_interface)
+ self.assertIsNone(changed_interface.get(DIFF_TAG))
+
+ def test_unchanged_interface(self):
+ self.assertFalse('AbstractWorker' in self.diff)
+
+ def test_unchanged_consts(self):
+ changed_interface = self.diff['ANGLEInstancedArrays']
+ members = changed_interface['Consts']
+ for member in members:
+ self.assertEqual(member['Name'], 'VERTEX_ATTRIB_ARRAY_DIVISOR')
+ self.assertEqual(member['Type'], 'unsigned long')
+ self.assertEqual(member['Value'], '0x88FE')
+
+ def test_changed_attribute(self):
+ changed_interface = self.diff['ANGLEInstancedArrays']
+ members = changed_interface['Attributes']
+ for member in members:
+ if member.get(DIFF_TAG) == DIFF_TAG_DELETED:
+ deleted = member
+ elif member.get(DIFF_TAG) == DIFF_TAG_ADDED:
+ added = member
+ else:
+ unchanged = member
+ self.assertEqual(deleted['Name'], 'animVal')
+ self.assertEqual(deleted['Type'], 'SVGAngle')
+ self.assertEqual(deleted['ExtAttributes'], [])
+ self.assertEqual(added['Name'], 'computedTiming')
+ self.assertEqual(added['Type'], 'ComputedTimingProperties')
+ self.assertEqual(added['ExtAttributes'], [{"Name": "maxChannelCount"}])
+ self.assertEqual(unchanged['Name'], 'timing')
+ self.assertEqual(unchanged['Type'], 'AnimationEffectTiming')
+ self.assertEqual(unchanged['ExtAttributes'], [])
+
+ def test_changed_operation(self):
+ changed_interface = self.diff['ANGLEInstancedArrays']
+ members = changed_interface['Operations']
+ deleted_arguments = [{"Type": "long", "Name": "primcount"}]
+ added_arguments = [{"Type": "unsigned long", "Name": "mode"}]
+ unchanged_arguments = [{"Type": "unsigned long", "Name": "mode"}]
+ for member in members:
+ if member.get(DIFF_TAG) == DIFF_TAG_DELETED:
+ deleted = member
+ elif member.get(DIFF_TAG) == DIFF_TAG_ADDED:
+ added = member
+ else:
+ unchanged = member
+ self.assertEqual(deleted['Name'], 'drawElementsInstancedANGLE')
+ self.assertEqual(deleted['Type'], 'void')
+ self.assertEqual(deleted['ExtAttributes'], [])
+ self.assertEqual(deleted['Arguments'], deleted_arguments)
+ self.assertEqual(added['Name'], 'drawElementsInstancedANGLE')
+ self.assertEqual(added['Type'], 'void')
+ self.assertEqual(added['ExtAttributes'], [])
+ self.assertEqual(added['Arguments'], added_arguments)
+ self.assertEqual(unchanged['Name'], 'drawArraysInstancedANGLE')
+ self.assertEqual(unchanged['Type'], 'void')
+ self.assertEqual(unchanged['ExtAttributes'], [])
+ self.assertEqual(unchanged['Arguments'], unchanged_arguments)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/bindings/scripts/generate_init_partial_interfaces.py b/bindings/scripts/generate_init_partial_interfaces.py
index 25a97f8..a604e57 100755
--- a/bindings/scripts/generate_init_partial_interfaces.py
+++ b/bindings/scripts/generate_init_partial_interfaces.py
@@ -23,8 +23,6 @@
"""
_INIT_PARTIAL_INTERFACE = """%s
-#include "config.h"
-
%s
namespace blink {
@@ -42,6 +40,7 @@
usage = 'Usage: %prog [options]'
parser = OptionParser(usage=usage)
parser.add_option('--idl-files-list', help="a text file containing the IDL file paths, so the command line doesn't exceed OS length limits.")
+ parser.add_option('--gyp-format-list', default=False, action='store_true', help="if specified, idl-files-list is newline separated. When unspecified, it's formatted as a Posix command line.")
parser.add_option('--write-file-only-if-changed', type='int', help='if true, do not write an output file if it would be identical to the existing one, which avoids unnecessary rebuilds in ninja')
parser.add_option('--output')
@@ -59,7 +58,7 @@
def main():
options = parse_options()
- idl_file_names = read_idl_files_list_from_file(options.idl_files_list)
+ idl_file_names = read_idl_files_list_from_file(options.idl_files_list, is_gyp_format=options.gyp_format_list)
meta_data_list = extract_meta_data(idl_file_names)
interface_names = ['V8%sPartial' % meta_data['name']
diff --git a/bindings/scripts/idl_compiler.py b/bindings/scripts/idl_compiler.py
index 7734def..baf2686 100755
--- a/bindings/scripts/idl_compiler.py
+++ b/bindings/scripts/idl_compiler.py
@@ -165,7 +165,8 @@
info_provider=info_provider,
only_if_changed=options.write_file_only_if_changed)
- idl_filenames = read_idl_files_list_from_file(input_filename)
+ idl_filenames = read_idl_files_list_from_file(input_filename,
+ is_gyp_format=True)
for idl_filename in idl_filenames:
idl_compiler.compile_file(idl_filename)
diff --git a/bindings/scripts/idl_definitions.py b/bindings/scripts/idl_definitions.py
index 59c0475..16a8290 100644
--- a/bindings/scripts/idl_definitions.py
+++ b/bindings/scripts/idl_definitions.py
@@ -286,6 +286,7 @@
self.serializer = None
self.stringifier = None
self.iterable = None
+ self.has_indexed_elements = False
self.maplike = None
self.setlike = None
self.original_interface = None
@@ -301,11 +302,17 @@
self.name = node.GetName()
self.idl_type = IdlType(self.name)
+ has_indexed_property_getter = False
+ has_integer_typed_length = False
+
children = node.GetChildren()
for child in children:
child_class = child.GetClass()
if child_class == 'Attribute':
- self.attributes.append(IdlAttribute(idl_name, child))
+ attr = IdlAttribute(idl_name, child)
+ if attr.idl_type.is_integer_type and attr.name == 'length':
+ has_integer_typed_length = True
+ self.attributes.append(attr)
elif child_class == 'Const':
self.constants.append(IdlConstant(idl_name, child))
elif child_class == 'ExtAttributes':
@@ -315,7 +322,10 @@
clear_constructor_attributes(extended_attributes)
self.extended_attributes = extended_attributes
elif child_class == 'Operation':
- self.operations.append(IdlOperation(idl_name, child))
+ op = IdlOperation(idl_name, child)
+ if 'getter' in op.specials and str(op.arguments[0].idl_type) == 'unsigned long':
+ has_indexed_property_getter = True
+ self.operations.append(op)
elif child_class == 'Inherit':
self.parent = child.GetName()
elif child_class == 'Serializer':
@@ -336,6 +346,9 @@
if len(filter(None, [self.iterable, self.maplike, self.setlike])) > 1:
raise ValueError('Interface can only have one of iterable<>, maplike<> and setlike<>.')
+ if has_integer_typed_length and has_indexed_property_getter:
+ self.has_indexed_elements = True
+
def accept(self, visitor):
visitor.visit_interface(self)
for attribute in self.attributes:
@@ -402,7 +415,11 @@
elif child_class == 'Const':
self.constants.append(IdlConstant(idl_name, child))
elif child_class == 'ExtAttributes':
- self.extended_attributes = ext_attributes_node_to_extended_attributes(idl_name, child)
+ extended_attributes = ext_attributes_node_to_extended_attributes(idl_name, child)
+ self.constructors, self.custom_constructors = (
+ extended_attributes_to_constructors(idl_name, extended_attributes))
+ clear_constructor_attributes(extended_attributes)
+ self.extended_attributes = extended_attributes
elif child_class == 'ExceptionOperation':
self.operations.append(IdlOperation.from_exception_operation_node(idl_name, child))
else:
diff --git a/bindings/scripts/interface_dependency_resolver.py b/bindings/scripts/interface_dependency_resolver.py
index 79b28ea..2fa6409 100644
--- a/bindings/scripts/interface_dependency_resolver.py
+++ b/bindings/scripts/interface_dependency_resolver.py
@@ -37,7 +37,7 @@
"""
import os.path
-from utilities import idl_filename_to_component, is_valid_component_dependency
+from utilities import idl_filename_to_component, is_valid_component_dependency, merge_dict_recursively
# The following extended attributes can be applied to a dependency interface,
# and are then applied to the individual members when merging.
@@ -45,9 +45,7 @@
# which changes the semantics and yields different code than the same extended
# attribute on the main interface.
DEPENDENCY_EXTENDED_ATTRIBUTES = frozenset([
- 'Conditional',
'RuntimeEnabled',
- 'TypeChecking',
])
@@ -119,6 +117,8 @@
interface_info['dependencies_other_component_full_paths'],
self.reader)
+ inherit_unforgeable_attributes(resolved_definitions, self.interfaces_info)
+
for referenced_interface_name in interface_info['referenced_interfaces']:
referenced_definitions = self.reader.read_idl_definitions(
self.interfaces_info[referenced_interface_name]['full_path'])
@@ -305,3 +305,42 @@
update_attributes(constant.extended_attributes, merged_extended_attributes)
for operation in dependency_interface.operations:
update_attributes(operation.extended_attributes, merged_extended_attributes)
+
+
+def inherit_unforgeable_attributes(resolved_definitions, interfaces_info):
+ """Inherits [Unforgeable] attributes and updates the arguments accordingly.
+
+ For each interface in |resolved_definitions|, collects all [Unforgeable]
+ attributes in ancestor interfaces in the same component and adds them to
+ the interface. 'referenced_interfaces' and 'cpp_includes' in
+ |interfaces_info| are updated accordingly.
+ """
+ def collect_unforgeable_attributes_in_ancestors(interface_name, component):
+ if not interface_name:
+ # unforgeable_attributes, referenced_interfaces, cpp_includes
+ return [], [], set()
+ interface = interfaces_info[interface_name]
+ unforgeable_attributes, referenced_interfaces, cpp_includes = collect_unforgeable_attributes_in_ancestors(interface.get('parent'), component)
+ this_unforgeable = interface.get('unforgeable_attributes', {}).get(component, [])
+ unforgeable_attributes.extend(this_unforgeable)
+ this_referenced = [attr.idl_type.base_type for attr in this_unforgeable
+ if attr.idl_type.base_type in
+ interface.get('referenced_interfaces', [])]
+ referenced_interfaces.extend(this_referenced)
+ cpp_includes.update(interface.get('cpp_includes', {}).get(component, {}))
+ return unforgeable_attributes, referenced_interfaces, cpp_includes
+
+ for component, definitions in resolved_definitions.iteritems():
+ for interface_name, interface in definitions.interfaces.iteritems():
+ interface_info = interfaces_info[interface_name]
+ inherited_unforgeable_attributes, referenced_interfaces, cpp_includes = collect_unforgeable_attributes_in_ancestors(interface_info.get('parent'), component)
+ # This loop may process the same interface many times, so it's
+ # possible that we're adding the same attributes twice or more.
+ # So check if there is a duplicate.
+ for attr in inherited_unforgeable_attributes:
+ if attr not in interface.attributes:
+ interface.attributes.append(attr)
+ referenced_interfaces.extend(interface_info.get('referenced_interfaces', []))
+ interface_info['referenced_interfaces'] = sorted(set(referenced_interfaces))
+ merge_dict_recursively(interface_info,
+ {'cpp_includes': {component: cpp_includes}})
diff --git a/bindings/scripts/print_idl_diff.py b/bindings/scripts/print_idl_diff.py
new file mode 100644
index 0000000..9a8deea
--- /dev/null
+++ b/bindings/scripts/print_idl_diff.py
@@ -0,0 +1,433 @@
+#!/usr/bin/env python
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Print a diff generated by generate_idl_diff.py.
+Before printing, sort the diff in the alphabetical order or the order of
+diffing tags.
+Usage: print_idl_diff.py diff_file.json order
+ diff.json:
+ Output of generate_idl_diff.py. The json file contains a dictionary
+ that represents a diff between two different Chromium versions. The
+ structure of the dictionary is like below.
+ order:
+ Specify how to sort. Either by "ALPHABET" or "TAG".
+"""
+
+from collections import OrderedDict
+import json
+import sys
+
+from generate_idl_diff import load_json_file
+from generate_idl_diff import EXTATTRIBUTES_AND_MEMBER_TYPES
+from generate_idl_diff import DIFF_TAG
+from generate_idl_diff import DIFF_TAG_ADDED
+from generate_idl_diff import DIFF_TAG_DELETED
+
+
+"""Refer to the explanation of generate_idl_diff.py's input files.
+The deffference between the input structure of generate_idl_diff.py and
+that of print_diff.py is whether diffing tags are included or not.
+ {'Interface': {
+ 'diff_tag': 'deleted'
+ 'ExtAttributes': [{'Name': '...'
+ 'diff_tag': 'deleted'},
+ ...,
+ ],
+ 'Consts': [{'Type': '...',
+ 'Name': '...',
+ 'Value': '...'
+ 'diff_tag': 'deleted'},
+ ...,
+ ],
+ 'Attributes': [{'Type': '...',
+ 'Name': '...',
+ 'ExtAttributes':[{'Name': '...'},
+ ...,
+ ]
+ 'diff_tag': 'deleted'},
+ ...,
+ ],
+ 'Operations': [{'Type': '...',
+ 'Name': '...',
+ 'ExtAttributes':[{'Name': '...'},
+ ...,
+ ],
+ 'Arguments': [{'Type': '...',
+ 'Name': '...'},
+ ...,
+ ]
+ 'diff_tag': 'deleted'},
+ ...,
+ ],
+ 'Name': '...'
+ },
+ {
+ 'ExtAttributes': [{'Name': '...'},
+ ...,
+ ],
+ 'Consts': [{'Type': '...',
+ 'Name': '...',
+ 'Value': '...'
+ 'diff_tag': 'added'},
+ ...,
+ ],
+ 'Attributes': [{'Type': '...',
+ 'Name': '...',
+ 'ExtAttributes':[{'Name': '...'},
+ ...,
+ ]},
+ ...,
+ ],
+ 'Operations': [{'Type': '...',
+ 'Name': '...',
+ 'ExtAttributes':[{'Name': '...'},
+ ...,
+ ],
+ 'Arguments': [{'Type': '...',
+ 'Name': '...'},
+ ...,
+ ]
+ 'diff_tag': 'deleted'},
+ ...,
+ ],
+ 'Name': '...'
+ },
+ ...,
+ }
+"""
+
+
+class Colorize(object):
+ """This class outputs a colored text to sys.stdout.
+ TODO(bashi): This class doesn't work on Windows. Provide a way to suppress
+ escape sequences.
+ """
+
+ BLACK = 30
+ RED = 31
+ GREEN = 32
+ YELLOW = 33
+ COLORS = (BLACK, RED, GREEN, YELLOW)
+
+ def __init__(self, out):
+ self.out = out
+
+ def reset_color(self):
+ """Reset text's color to default.
+ """
+ self.out.write('\033[0m')
+
+ def change_color(self, color):
+ """Change text's color by specifing arguments.
+ Args:
+ color: A new color to change. It should be one of |COLORS|.
+ """
+ if color in self.COLORS:
+ self.out.write('\033[' + str(color) + 'm')
+ else:
+ raise Exception('Unsupported color.')
+
+ def writeln(self, string):
+ """Print text with a line-break.
+ """
+ self.out.write(string + '\n')
+
+ def write(self, string):
+ """Print text without a line-break.
+ """
+ self.out.write(string)
+
+
+def sort_member_types(interface):
+ """Sort the members in the order of EXTATTRIBUTES_AND_MEMBER_TYPES.
+ Args:
+ interface: An "interface" object
+ Returns:
+ A sorted "interface" object
+ """
+ sorted_interface = OrderedDict()
+ for member_type in EXTATTRIBUTES_AND_MEMBER_TYPES:
+ sorted_interface[member_type] = interface.get(member_type)
+ sorted_interface[DIFF_TAG] = interface.get(DIFF_TAG)
+ return sorted_interface
+
+
+def group_by_tag(interface_or_member_list):
+ """Group members of |interface_or_member_list| by tags.
+ Args:
+ interface_or_member_list: A list of interface names or a list of "members"
+ Returns:
+ A tuple of (removed, added, unchanged) where
+ removed: A list of removed members
+ added: A list of added members
+ unspecified: A list of other members
+ """
+ removed = []
+ added = []
+ unspecified = []
+ for interface_or_member in interface_or_member_list:
+ if DIFF_TAG in interface_or_member:
+ if interface_or_member[DIFF_TAG] == DIFF_TAG_DELETED:
+ removed.append(interface_or_member)
+ elif interface_or_member[DIFF_TAG] == DIFF_TAG_ADDED:
+ added.append(interface_or_member)
+ else:
+ unspecified.append(interface_or_member)
+ return (removed, added, unspecified)
+
+
+def sort_interface_names_by_tags(interfaces):
+ """Sort interface names as follows.
+ [names of deleted "interface"s
+ -> names of added "interface"s
+ -> names of other "interface"s]
+ Args:
+ interfaces: "interface" objects.
+ Returns:
+ A list of sorted interface names
+ """
+ interface_list = interfaces.values()
+ removed, added, unspecified = group_by_tag(interface_list)
+ removed = map(lambda interface: interface['Name'], removed)
+ added = map(lambda interface: interface['Name'], added)
+ unspecified = map(lambda interface: interface['Name'], unspecified)
+ sorted_interface_names = removed + added + unspecified
+ return sorted_interface_names
+
+
+def sort_members_by_tags(interface):
+ """Sort members of a given interface in the order of diffing tags.
+ Args:
+ An "interface" object
+ Returns:
+ A sorted "interface" object
+ """
+ sorted_interface = OrderedDict()
+ if DIFF_TAG in interface:
+ return interface
+ for member_type in EXTATTRIBUTES_AND_MEMBER_TYPES:
+ member_list = interface[member_type]
+ removed, added, unspecified = group_by_tag(member_list)
+ sorted_interface[member_type] = removed + added + unspecified
+ return sorted_interface
+
+
+def sort_diff_by_tags(interfaces):
+ """Sort an "interfaces" object in the order of diffing tags.
+ Args:
+ An "interfaces" object loaded by load_json_data().
+ Returns:
+ A sorted "interfaces" object
+ """
+ sorted_interfaces = OrderedDict()
+ sorted_interface_names = sort_interface_names_by_tags(interfaces)
+ for interface_name in sorted_interface_names:
+ interface = sort_members_by_tags(interfaces[interface_name])
+ sorted_interfaces[interface_name] = sort_member_types(interface)
+ return sorted_interfaces
+
+
+def sort_members_in_alphabetical_order(interface):
+ """Sort a "members" object in the alphabetical order.
+ Args:
+ An "interface" object
+ Returns:
+ A sorted "interface" object
+ """
+ sorted_interface = OrderedDict()
+ for member_type in EXTATTRIBUTES_AND_MEMBER_TYPES:
+ sorted_members = sorted(interface[member_type],
+ key=lambda member: member['Name'])
+ sorted_interface[member_type] = sorted_members
+ return sorted_interface
+
+
+def sort_diff_in_alphabetical_order(interfaces):
+ """Sort an "interfaces" object in the alphabetical order.
+ Args:
+ An "interfaces" object.
+ Returns:
+ A sorted "interfaces" object
+ """
+ sorted_interfaces = OrderedDict()
+ for interface_name in sorted(interfaces.keys()):
+ interface = interfaces[interface_name]
+ sorted_interface = sort_members_in_alphabetical_order(interface)
+ sorted_interface[DIFF_TAG] = interface.get(DIFF_TAG)
+ sorted_interfaces[interface_name] = sorted_interface
+ return sorted_interfaces
+
+
+def print_member_with_color(member, out):
+ """Print the "member" with a colored text. '+' is added to an added
+ "member". '-' is added to a removed "member".
+ Args:
+ member: A "member" object
+ """
+ if DIFF_TAG in member:
+ if member[DIFF_TAG] == DIFF_TAG_DELETED:
+ out.change_color(Colorize.RED)
+ out.write('- ')
+ elif member[DIFF_TAG] == DIFF_TAG_ADDED:
+ out.change_color(Colorize.GREEN)
+ out.write('+ ')
+ else:
+ out.change_color(Colorize.BLACK)
+ out.write(' ')
+
+
+def print_extattributes(extattributes, out):
+ """Print extattributes in an "interface" object.
+ Args:
+ A list of "ExtAttributes" in the "interface" object
+ """
+ for extattribute in extattributes:
+ out.write(' ')
+ print_member_with_color(extattribute, out)
+ out.writeln(extattribute['Name'])
+
+
+def print_consts(consts, out):
+ """Print consts in an "interface" object.
+ Args:
+ A list of "Consts" of the "interface" object
+ """
+ for const in consts:
+ out.write(' ')
+ print_member_with_color(const, out)
+ out.write(str(const['Type']))
+ out.write(' ')
+ out.write(const['Name'])
+ out.write(' ')
+ out.writeln(const['Value'])
+
+
+def print_items(items, callback, out):
+ """Calls |callback| for each item in |items|, printing commas between
+ |callback| calls.
+ Args:
+ items: extattributes or arguments
+ """
+ count = 0
+ for item in items:
+ callback(item)
+ count += 1
+ if count < len(items):
+ out.write(', ')
+
+
+def print_extattributes_in_member(extattributes, out):
+ """Print extattributes in a "member" object.
+ Args:
+ A list of "ExtAttributes" in the "member" object
+ """
+ def callback(extattribute):
+ out.write(extattribute['Name'])
+
+ out.write('[')
+ print_items(extattributes, callback, out)
+ out.write(']')
+
+
+def print_attributes(attributes, out):
+ """Print attributes in an "interface" object.
+ Args:
+ A list of "Attributes" in the "interface" object
+ """
+ for attribute in attributes:
+ out.write(' ')
+ print_member_with_color(attribute, out)
+ if attribute['ExtAttributes']:
+ print_extattributes_in_member(attribute['ExtAttributes'], out)
+ out.write(str(attribute['Type']))
+ out.write(' ')
+ out.writeln(attribute['Name'])
+
+
+def print_arguments(arguments, out):
+ """Print arguments in a "members" object named "Operations".
+ Args: A list of "Arguments"
+ """
+ def callback(argument):
+ out.write(argument['Name'])
+
+ out.write('(')
+ print_items(arguments, callback, out)
+ out.writeln(')')
+
+
+def print_operations(operations, out):
+ """Print operations in a "member" object.
+ Args:
+ A list of "Operations"
+ """
+ for operation in operations:
+ out.write(' ')
+ print_member_with_color(operation, out)
+ if operation['ExtAttributes']:
+ print_extattributes_in_member(operation['ExtAttributes'], out)
+ out.write(str(operation['Type']))
+ out.write(' ')
+ if operation['Arguments']:
+ out.write(operation['Name'])
+ print_arguments(operation['Arguments'], out)
+ else:
+ out.writeln(operation['Name'])
+
+
+def print_diff(diff, out):
+ """Print the diff on a shell.
+ Args:
+ A sorted diff
+ """
+ for interface_name, interface in diff.iteritems():
+ print_member_with_color(interface, out)
+ out.change_color(Colorize.YELLOW)
+ out.write('[[')
+ out.write(interface_name)
+ out.writeln(']]')
+ out.reset_color()
+ for member_name, member in interface.iteritems():
+ if member_name == 'ExtAttributes':
+ out.writeln('ExtAttributes')
+ print_extattributes(member, out)
+ elif member_name == 'Consts':
+ out.writeln(' Consts')
+ print_consts(member, out)
+ elif member_name == 'Attributes':
+ out.writeln(' Attributes')
+ print_attributes(member, out)
+ elif member_name == 'Operations':
+ out.writeln(' Operations')
+ print_operations(member, out)
+ out.reset_color()
+
+
+def print_usage():
+ """Show usage."""
+ sys.stdout.write('Usage: print_diff.py <diff_file.json> <"TAG"|"ALPHABET">\n')
+
+
+def main(argv):
+ if len(argv) != 2:
+ print_usage()
+ exit(1)
+ json_data = argv[0]
+ order = argv[1]
+ diff = load_json_file(json_data)
+ if order == 'TAG':
+ sort_func = sort_diff_by_tags
+ elif order == 'ALPHABET':
+ sort_func = sort_diff_in_alphabetical_order
+ else:
+ print_usage()
+ exit(1)
+ sorted_diff = sort_func(diff)
+ out = Colorize(sys.stdout)
+ print_diff(sorted_diff, out)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/bindings/scripts/test_collect_idls_into_json.py b/bindings/scripts/test_collect_idls_into_json.py
new file mode 100644
index 0000000..49d6e55
--- /dev/null
+++ b/bindings/scripts/test_collect_idls_into_json.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+
+import unittest
+import collect_idls_into_json
+import utilities
+
+from blink_idl_parser import parse_file, BlinkIDLParser
+
+_FILE = 'Source/bindings/scripts/testdata/test_filepath.txt'
+_KEY_SET = set(['Operations', 'Name', 'FilePath', 'Inherit', 'Consts', 'ExtAttributes', 'Attributes'])
+_PARTIAL = {'Node': {'Operations': [], 'Name': 'Node', 'FilePath': 'Source/core/timing/WorkerGlobalScopePerformance.idl', 'Inherit': [], 'Consts': [], 'ExtAttributes': [], 'Attributes': [{'Static': False, 'Readonly': True, 'Type': 'WorkerPerformance', 'Name': 'performance', 'ExtAttributes': []}]}}
+
+
+class TestFunctions(unittest.TestCase):
+ def setUp(self):
+ parser = BlinkIDLParser()
+ path = utilities.read_file_to_list(_FILE)[0]
+ definitions = parse_file(parser, path)
+ self.definition = definitions.GetChildren()[0]
+
+ def test_get_definitions(self):
+ pathfile = utilities.read_file_to_list(_FILE)
+ for actual in collect_idls_into_json.get_definitions(pathfile):
+ self.assertEqual(actual.GetName(), self.definition.GetName())
+
+ def test_is_non_partial(self):
+ if self.definition.GetClass() == 'Interface' and not self.definition.GetProperty('Partial'):
+ self.assertTrue(collect_idls_into_json.is_non_partial(self.definition))
+ else:
+ self.assertFalse(collect_idls_into_json.is_non_partial(self.definition))
+
+ def test_is_partial(self):
+ if self.definition.GetClass() == 'Interface' and self.definition.GetProperty('Partial'):
+ self.assertTrue(collect_idls_into_json.is_partial(self.definition))
+ else:
+ self.assertFalse(collect_idls_into_json.is_partial(self.definition))
+
+ def test_get_filepaths(self):
+ filepath = collect_idls_into_json.get_filepath(self.definition)
+ self.assertTrue(filepath.startswith('Source'))
+ self.assertTrue(filepath.endswith('.idl'))
+
+ def test_const_node_to_dict(self):
+ const_member = set(['Name', 'Type', 'Value', 'ExtAttributes'])
+ for const in collect_idls_into_json.get_const_node_list(self.definition):
+ if const:
+ self.assertEqual(const.GetClass(), 'Const')
+ self.assertEqual(collect_idls_into_json.get_const_type(const), 'unsigned short')
+ self.assertEqual(collect_idls_into_json.get_const_value(const), '1')
+ self.assertTrue(const_member.issuperset(collect_idls_into_json.const_node_to_dict(const).keys()))
+ else:
+ self.assertEqual(const, None)
+
+ def test_attribute_node_to_dict(self):
+ attribute_member = set(['Name', 'Type', 'ExtAttributes', 'Readonly', 'Static'])
+ for attribute in collect_idls_into_json.get_attribute_node_list(self.definition):
+ if attribute:
+ self.assertEqual(attribute.GetClass(), 'Attribute')
+ self.assertEqual(attribute.GetName(), 'parentNode')
+ self.assertEqual(collect_idls_into_json.get_attribute_type(attribute), 'Node')
+ self.assertTrue(attribute_member.issuperset(collect_idls_into_json.attribute_node_to_dict(attribute).keys()))
+ else:
+ self.assertEqual(attribute, None)
+
+ def test_operation_node_to_dict(self):
+ operate_member = set(['Static', 'ExtAttributes', 'Type', 'Name', 'Arguments'])
+ argument_member = set(['Name', 'Type'])
+ for operation in collect_idls_into_json.get_operation_node_list(self.definition):
+ if operation:
+ self.assertEqual(operation.GetClass(), 'Operation')
+ self.assertEqual(operation.GetName(), 'appendChild')
+ self.assertEqual(collect_idls_into_json.get_operation_type(operation), 'Node')
+ self.assertTrue(operate_member.issuperset(collect_idls_into_json.operation_node_to_dict(operation).keys()))
+ for argument in collect_idls_into_json.get_argument_node_list(operation):
+ if argument:
+ self.assertEqual(argument.GetClass(), 'Argument')
+ self.assertEqual(argument.GetName(), 'newChild')
+ self.assertEqual(collect_idls_into_json.get_argument_type(argument), 'Node')
+ self.assertTrue(argument_member.issuperset(collect_idls_into_json.argument_node_to_dict(argument).keys()))
+ else:
+ self.assertEqual(argument, None)
+ else:
+ self.assertEqual(operation, None)
+
+ def test_extattribute_node_to_dict(self):
+ for extattr in collect_idls_into_json.get_extattribute_node_list(self.definition):
+ if extattr:
+ self.assertEqual(extattr.GetClass(), 'ExtAttribute')
+ self.assertEqual(extattr.GetName(), 'CustomToV8')
+ self.assertEqual(collect_idls_into_json.extattr_node_to_dict(extattr).keys(), ['Name'])
+ self.assertEqual(collect_idls_into_json.extattr_node_to_dict(extattr).values(), ['CustomToV8'])
+ else:
+ self.assertEqual(extattr, None)
+
+ def test_inherit_node_to_dict(self):
+ inherit = collect_idls_into_json.inherit_node_to_dict(self.definition)
+ if inherit:
+ self.assertEqual(inherit.keys(), ['Parent'])
+ self.assertEqual(inherit.values(), ['EventTarget'])
+ else:
+ self.assertEqual(inherit, [])
+
+ def test_interface_node_to_dict(self):
+ self.assertTrue(_KEY_SET.issuperset(collect_idls_into_json.interface_node_to_dict(self.definition)))
+
+ def test_merge_partial_dicts(self):
+ key_name = self.definition.GetName()
+ self.assertEqual(collect_idls_into_json.merge_partial_dicts({key_name: collect_idls_into_json.interface_node_to_dict(self.definition)}, _PARTIAL)[key_name]['Partial_FilePaths'], ['Source/core/timing/WorkerGlobalScopePerformance.idl'])
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/bindings/scripts/testdata/test_interface.idl b/bindings/scripts/testdata/test_interface.idl
new file mode 100644
index 0000000..74ff3ba
--- /dev/null
+++ b/bindings/scripts/testdata/test_interface.idl
@@ -0,0 +1,9 @@
+[
+ CustomToV8
+ ] interface Node : EventTarget {
+ [Reflect]const unsigned short ELEMENT_NODE = 1;
+ [Clamp]attribute Node parentNode;
+ [Custom] Node appendChild(Node newChild);
+};
+
+
diff --git a/bindings/scripts/utilities.py b/bindings/scripts/utilities.py
index 8bd8555..2370887 100644
--- a/bindings/scripts/utilities.py
+++ b/bindings/scripts/utilities.py
@@ -10,6 +10,7 @@
import os
import cPickle as pickle
import re
+import shlex
import string
import subprocess
@@ -182,6 +183,26 @@
return pickle.load(interface_info_file)
+def merge_dict_recursively(target, diff):
+ """Merges two dicts into one.
+ |target| will be updated with |diff|. Part of |diff| may be re-used in
+ |target|.
+ """
+ for key, value in diff.iteritems():
+ if key not in target:
+ target[key] = value
+ elif type(value) == dict:
+ merge_dict_recursively(target[key], value)
+ elif type(value) == list:
+ target[key].extend(value)
+ elif type(value) == set:
+ target[key].update(value)
+ else:
+ # Testing IDLs want to overwrite the values. Production code
+ # doesn't need any overwriting.
+ target[key] = value
+
+
def create_component_info_provider_core(info_dir):
interfaces_info = load_interfaces_info_overall_pickle(info_dir)
with open(os.path.join(info_dir, 'core', 'ComponentInfoCore.pickle')) as component_info_file:
@@ -238,11 +259,19 @@
return idl_file_names
-def read_idl_files_list_from_file(filename):
- """Similar to read_file_to_list, but also resolves cygpath."""
+def read_idl_files_list_from_file(filename, is_gyp_format):
+ """Similar to read_file_to_list, but also resolves cygpath.
+
+ If is_gyp_format is True, the file is treated as a newline-separated list
+ with no quoting or escaping. When False, the file is interpreted as a
+ Posix-style quoted and space-separated list."""
with open(filename) as input_file:
- file_names = sorted([os.path.realpath(line.rstrip('\n'))
- for line in input_file])
+ if is_gyp_format:
+ file_names = sorted([os.path.realpath(line.rstrip('\n'))
+ for line in input_file])
+ else:
+ file_names = sorted(shlex.split(input_file))
+
idl_file_names = [file_name for file_name in file_names
if not file_name.startswith('/cygdrive')]
cygdrive_names = [file_name for file_name in file_names
diff --git a/bindings/scripts/v8_attributes.py b/bindings/scripts/v8_attributes.py
index b1f72a0..2987967 100644
--- a/bindings/scripts/v8_attributes.py
+++ b/bindings/scripts/v8_attributes.py
@@ -55,16 +55,18 @@
# [CheckSecurity]
is_do_not_check_security = 'DoNotCheckSecurity' in extended_attributes
- is_check_security_for_frame = (
- has_extended_attribute_value(interface, 'CheckSecurity', 'Frame') and
+ is_check_security_for_receiver = (
+ has_extended_attribute_value(interface, 'CheckSecurity', 'Receiver') and
not is_do_not_check_security)
- is_check_security_for_node = (
- has_extended_attribute_value(attribute, 'CheckSecurity', 'Node'))
- is_check_security_for_window = (
- has_extended_attribute_value(interface, 'CheckSecurity', 'Window') and
- not is_do_not_check_security)
- if is_check_security_for_frame or is_check_security_for_node or is_check_security_for_window:
+ is_check_security_for_return_value = (
+ has_extended_attribute_value(attribute, 'CheckSecurity', 'ReturnValue'))
+ if is_check_security_for_receiver or is_check_security_for_return_value:
includes.add('bindings/core/v8/BindingSecurity.h')
+ # [Constructor]
+ # TODO(yukishiino): Constructors are much like methods although constructors
+ # are not methods. Constructors must be data-type properties, and we can
+ # support them as a kind of methods.
+ constructor_type = idl_type.constructor_type_name if is_constructor_attribute(attribute) else None
# [CustomElementCallbacks], [Reflect]
is_custom_element_callbacks = 'CustomElementCallbacks' in extended_attributes
is_reflect = 'Reflect' in extended_attributes
@@ -92,6 +94,13 @@
if cached_attribute_validation_method or keep_alive_for_gc:
includes.add('bindings/core/v8/V8HiddenValue.h')
+ if 'RuntimeEnabled' in extended_attributes:
+ includes.add('platform/RuntimeEnabledFeatures.h')
+
+ if 'OriginTrialEnabled' in extended_attributes:
+ includes.add('core/inspector/ConsoleMessage.h')
+ includes.add('core/origin_trials/OriginTrials.h')
+
context = {
'access_control_list': access_control_list(interface, attribute),
'activity_logging_world_list_for_getter': v8_utilities.activity_logging_world_list(attribute, 'Getter'), # [ActivityLogging]
@@ -99,9 +108,7 @@
'activity_logging_world_check': v8_utilities.activity_logging_world_check(attribute), # [ActivityLogging]
'argument_cpp_type': idl_type.cpp_type_args(used_as_rvalue_type=True),
'cached_attribute_validation_method': cached_attribute_validation_method,
- 'conditional_string': v8_utilities.conditional_string(attribute),
- 'constructor_type': idl_type.constructor_type_name
- if is_constructor_attribute(attribute) else None,
+ 'constructor_type': constructor_type,
'cpp_name': cpp_name(attribute),
'cpp_type': idl_type.cpp_type,
'cpp_type_initializer': idl_type.cpp_type_initializer,
@@ -113,13 +120,14 @@
'has_custom_setter': has_custom_setter(attribute),
'has_setter': has_setter(attribute),
'idl_type': str(idl_type), # need trailing [] on array for Dictionary::ConversionContext::setConversionType
+ 'is_origin_trial_enabled': v8_utilities.origin_trial_enabled_function(attribute) or v8_utilities.origin_trial_enabled_function(interface), # [OriginTrialEnabled]
'is_call_with_execution_context': has_extended_attribute_value(attribute, 'CallWith', 'ExecutionContext'),
'is_call_with_script_state': has_extended_attribute_value(attribute, 'CallWith', 'ScriptState'),
- 'is_check_security_for_frame': is_check_security_for_frame,
- 'is_check_security_for_node': is_check_security_for_node,
- 'is_check_security_for_window': is_check_security_for_window,
+ 'is_check_security_for_receiver': is_check_security_for_receiver,
+ 'is_check_security_for_return_value': is_check_security_for_return_value,
'is_custom_element_callbacks': is_custom_element_callbacks,
- 'is_expose_js_accessors': is_expose_js_accessors(interface, attribute),
+ # TODO(yukishiino): Make all DOM attributes accessor-type properties.
+ 'is_data_type_property': constructor_type or interface.name == 'Window' or interface.name == 'Location',
'is_getter_raises_exception': # [RaisesException]
'RaisesException' in extended_attributes and
extended_attributes['RaisesException'] in (None, 'Getter'),
@@ -141,6 +149,9 @@
'on_instance': v8_utilities.on_instance(interface, attribute),
'on_interface': v8_utilities.on_interface(interface, attribute),
'on_prototype': v8_utilities.on_prototype(interface, attribute),
+ 'origin_trial_enabled': v8_utilities.origin_trial_enabled_function(attribute), # [OriginTrialEnabled]
+ 'origin_trial_enabled_per_interface': v8_utilities.origin_trial_enabled_function(interface), # [OriginTrialEnabled]
+ 'origin_trial_name': extended_attributes.get('OriginTrialEnabled'), # [OriginTrialEnabled]
'use_output_parameter_for_result': idl_type.use_output_parameter_for_result,
'measure_as': v8_utilities.measure_as(attribute, interface), # [MeasureAs]
'name': attribute.name,
@@ -337,7 +348,7 @@
is_setter_raises_exception = (
'RaisesException' in extended_attributes and
extended_attributes['RaisesException'] in [None, 'Setter'])
- # [TypeChecking=Interface] / [LegacyInterfaceTypeChecking]
+ # [LegacyInterfaceTypeChecking]
has_type_checking_interface = (
not is_legacy_interface_type_checking(interface, attribute) and
idl_type.is_wrapper_type)
@@ -489,43 +500,6 @@
extended_attributes['Custom'] in [None, 'Setter'])
-# [ExposeJSAccessors]
-def is_expose_js_accessors(interface, attribute):
- # Default behavior
- is_accessor = True
-
- if ('ExposeJSAccessors' in interface.extended_attributes and
- 'DoNotExposeJSAccessors' in interface.extended_attributes):
- raise Exception('Both of ExposeJSAccessors and DoNotExposeJSAccessors are specified at a time in an interface: ' + interface.name)
- if 'ExposeJSAccessors' in interface.extended_attributes:
- is_accessor = True
- if 'DoNotExposeJSAccessors' in interface.extended_attributes:
- is_accessor = False
-
- # Note that ExposeJSAccessors and DoNotExposeJSAccessors are more powerful
- # than 'static', [Unforgeable] and [OverrideBuiltins].
- if ('ExposeJSAccessors' in attribute.extended_attributes and
- 'DoNotExposeJSAccessors' in attribute.extended_attributes):
- raise Exception('Both of ExposeJSAccessors and DoNotExposeJSAccessors are specified at a time on an attribute: ' + attribute.name + ' in an interface: ' + interface.name)
- if 'ExposeJSAccessors' in attribute.extended_attributes:
- return True
- if 'DoNotExposeJSAccessors' in attribute.extended_attributes:
- return False
-
- # These attributes must not be accessors on prototype chains.
- if (is_constructor_attribute(attribute) or
- attribute.is_static or
- is_unforgeable(interface, attribute) or
- 'OverrideBuiltins' in interface.extended_attributes):
- return False
-
- # The members of Window interface must be placed on the instance object.
- if interface.name == 'Window':
- return False
-
- return is_accessor
-
-
################################################################################
# Constructors
################################################################################
@@ -541,7 +515,7 @@
def update_constructor_attribute_context(interface, attribute, context):
- context['needs_constructor_getter_callback'] = context['measure_as'] or context['deprecate_as']
+ context['needs_constructor_getter_callback'] = context['measure_as'] or context['deprecate_as'] or context['origin_trial_name']
# When the attribute name is the same as the interface name, do not generate
# callback functions for each attribute and use
# {{cpp_class}}ConstructorAttributeSetterCallback. Otherwise, generate
diff --git a/bindings/scripts/v8_callback_interface.py b/bindings/scripts/v8_callback_interface.py
index 8ceeb9a..682cb55 100644
--- a/bindings/scripts/v8_callback_interface.py
+++ b/bindings/scripts/v8_callback_interface.py
@@ -63,7 +63,8 @@
return 'void'
# Callbacks use raw pointers, so raw_type=True
raw_cpp_type = idl_type.cpp_type_args(raw_type=True)
- if raw_cpp_type.startswith(('Vector', 'HeapVector', 'WillBeHeapVector')):
+ # Pass containers and dictionaries to callback method by const reference rather than by value
+ if raw_cpp_type.startswith(('Vector', 'HeapVector', 'WillBeHeapVector')) or idl_type.is_dictionary:
return 'const %s&' % raw_cpp_type
return raw_cpp_type
@@ -74,7 +75,6 @@
includes.clear()
includes.update(CALLBACK_INTERFACE_CPP_INCLUDES)
return {
- 'conditional_string': v8_utilities.conditional_string(callback_interface),
'cpp_class': callback_interface.name,
'v8_class': v8_utilities.v8_class_name(callback_interface),
'header_includes': set(CALLBACK_INTERFACE_H_INCLUDES),
diff --git a/bindings/scripts/v8_dictionary.py b/bindings/scripts/v8_dictionary.py
index 36129b5..dde7e1c 100644
--- a/bindings/scripts/v8_dictionary.py
+++ b/bindings/scripts/v8_dictionary.py
@@ -60,6 +60,9 @@
'members': [member_context(dictionary, member)
for member in sorted(dictionary.members,
key=operator.attrgetter('name'))],
+ 'required_member_names': sorted([member.name
+ for member in dictionary.members
+ if member.is_required]),
'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion' in dictionary.extended_attributes,
'v8_class': v8_types.v8_type(cpp_class),
'v8_original_class': v8_types.v8_type(dictionary.name),
@@ -99,6 +102,7 @@
cpp_default_value, v8_default_value = default_values()
cpp_name = v8_utilities.cpp_name(member)
+ is_deprecated_dictionary = unwrapped_idl_type.name == 'Dictionary'
return {
'cpp_default_value': cpp_default_value,
@@ -113,11 +117,12 @@
'enum_values': unwrapped_idl_type.enum_values,
'has_method_name': has_method_name_for_dictionary_member(member),
'idl_type': idl_type.base_type,
- 'is_interface_type': idl_type.is_interface_type and not idl_type.is_dictionary,
+ 'is_interface_type': idl_type.is_interface_type and not (idl_type.is_dictionary_type or is_deprecated_dictionary),
'is_nullable': idl_type.is_nullable,
- 'is_object': unwrapped_idl_type.name == 'Object',
+ 'is_object': unwrapped_idl_type.name == 'Object' or is_deprecated_dictionary,
'is_required': member.is_required,
'name': member.name,
+ 'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(member), # [RuntimeEnabled]
'setter_name': setter_name_for_dictionary_member(member),
'null_setter_name': null_setter_name_for_dictionary_member(member),
'v8_default_value': v8_default_value,
@@ -177,6 +182,8 @@
return '!m_%s.isNull()' % cpp_name
elif idl_type.name in ['Any', 'Object']:
return '!(m_{0}.isEmpty() || m_{0}.isNull() || m_{0}.isUndefined())'.format(cpp_name)
+ elif idl_type.name == 'Dictionary':
+ return '!m_%s.isUndefinedOrNull()' % cpp_name
else:
return 'm_%s' % cpp_name
diff --git a/bindings/scripts/v8_interface.py b/bindings/scripts/v8_interface.py
index 406fee3..35edaee 100644
--- a/bindings/scripts/v8_interface.py
+++ b/bindings/scripts/v8_interface.py
@@ -46,7 +46,7 @@
import v8_types
from v8_types import cpp_ptr_type, cpp_template_type
import v8_utilities
-from v8_utilities import (cpp_name_or_partial, capitalize, conditional_string, cpp_name, gc_type,
+from v8_utilities import (origin_trial_enabled_function, cpp_name_or_partial, capitalize, cpp_name, gc_type,
has_extended_attribute_value, runtime_enabled_function_name,
extended_attribute_value_as_list, is_legacy_interface_type_checking)
@@ -63,10 +63,7 @@
'bindings/core/v8/ExceptionState.h',
'bindings/core/v8/V8DOMConfiguration.h',
'bindings/core/v8/V8ObjectConstructor.h',
- 'core/dom/ContextFeatures.h',
'core/dom/Document.h',
- 'platform/RuntimeEnabledFeatures.h',
- 'platform/TraceEvent.h',
'wtf/GetPtr.h',
'wtf/RefPtr.h',
])
@@ -96,7 +93,8 @@
is_array_buffer_or_view = interface.idl_type.is_array_buffer_or_view
is_typed_array_type = interface.idl_type.is_typed_array
if is_array_buffer_or_view:
- includes.add('bindings/core/v8/V8ArrayBuffer.h')
+ includes.update(('bindings/core/v8/V8ArrayBuffer.h',
+ 'bindings/core/v8/V8SharedArrayBuffer.h'))
if interface.name == 'ArrayBufferView':
includes.update((
'bindings/core/v8/V8Int8Array.h',
@@ -110,9 +108,6 @@
'bindings/core/v8/V8Float64Array.h',
'bindings/core/v8/V8DataView.h'))
- # [ActiveDOMObject]
- is_active_dom_object = 'ActiveDOMObject' in extended_attributes
-
# [CheckSecurity]
is_check_security = 'CheckSecurity' in extended_attributes
if is_check_security:
@@ -121,10 +116,9 @@
# [DependentLifetime]
is_dependent_lifetime = 'DependentLifetime' in extended_attributes
- # [MeasureAs]
- is_measure_as = 'MeasureAs' in extended_attributes
- if is_measure_as:
- includes.add('core/frame/UseCounter.h')
+ # [PrimaryGlobal] and [Global]
+ is_global = ('PrimaryGlobal' in extended_attributes or
+ 'Global' in extended_attributes)
# [SetWrapperReferenceFrom]
set_wrapper_reference_from = extended_attributes.get('SetWrapperReferenceFrom')
@@ -162,8 +156,14 @@
cpp_class_name_or_partial = cpp_name_or_partial(interface)
v8_class_name_or_partial = v8_utilities.v8_class_name_or_partial(interface)
+ if 'RuntimeEnabled' in extended_attributes:
+ includes.add('platform/RuntimeEnabledFeatures.h')
+
+ if 'OriginTrialEnabled' in extended_attributes:
+ includes.add('core/inspector/ConsoleMessage.h')
+ includes.add('core/origin_trials/OriginTrials.h')
+
context = {
- 'conditional_string': conditional_string(interface), # [Conditional]
'cpp_class': cpp_class_name,
'cpp_class_or_partial': cpp_class_name_or_partial,
'event_target_inheritance': 'InheritFromEventTarget' if is_event_target else 'NotInheritFromEventTarget',
@@ -177,20 +177,17 @@
'has_visit_dom_wrapper': has_visit_dom_wrapper,
'header_includes': header_includes,
'interface_name': interface.name,
- 'is_active_dom_object': is_active_dom_object,
'is_array_buffer_or_view': is_array_buffer_or_view,
'is_check_security': is_check_security,
'is_event_target': is_event_target,
'is_exception': interface.is_exception,
+ 'is_global': is_global,
'is_node': inherits_interface(interface.name, 'Node'),
'is_partial': interface.is_partial,
'is_typed_array_type': is_typed_array_type,
- 'lifetime': 'Dependent'
- if (has_visit_dom_wrapper or
- is_active_dom_object or
- is_dependent_lifetime)
- else 'Independent',
+ 'lifetime': 'Dependent' if (has_visit_dom_wrapper or is_dependent_lifetime) else 'Independent',
'measure_as': v8_utilities.measure_as(interface, None), # [MeasureAs]
+ 'origin_trial_name': v8_utilities.origin_trial_name(interface),
'parent_interface': parent_interface,
'pass_cpp_type': cpp_template_type(
cpp_ptr_type('PassRefPtr', 'RawPtr', this_gc_type),
@@ -225,11 +222,14 @@
if constructors or custom_constructors or named_constructor:
if interface.is_partial:
raise Exception('[Constructor] and [NamedConstructor] MUST NOT be'
- ' specified on partial interface definitions:'
+ ' specified on partial interface definitions: '
'%s' % interface.name)
includes.add('bindings/core/v8/V8ObjectConstructor.h')
includes.add('core/frame/LocalDOMWindow.h')
+ elif 'Measure' in extended_attributes or 'MeasureAs' in extended_attributes:
+ raise Exception('[Measure] or [MeasureAs] specified for interface without a constructor: '
+ '%s' % interface.name)
# [Unscopeable] attributes and methods
unscopeables = []
@@ -253,15 +253,18 @@
constants = [constant_context(constant, interface) for constant in interface.constants]
special_getter_constants = []
- runtime_enabled_constants = []
+ runtime_enabled_constants = dict()
constant_configuration_constants = []
for constant in constants:
- if constant['measure_as'] or constant['deprecate_as']:
+ if constant['measure_as'] or constant['deprecate_as'] or constant['origin_trial_name']:
special_getter_constants.append(constant)
continue
- if constant['runtime_enabled_function']:
- runtime_enabled_constants.append(constant)
+ runtime_enabled_function = constant['runtime_enabled_function']
+ if runtime_enabled_function:
+ if runtime_enabled_function not in runtime_enabled_constants:
+ runtime_enabled_constants[runtime_enabled_function] = []
+ runtime_enabled_constants[runtime_enabled_function].append(constant)
continue
constant_configuration_constants.append(constant)
@@ -273,7 +276,7 @@
'has_constant_configuration': any(
not constant['runtime_enabled_function']
for constant in constants),
- 'runtime_enabled_constants': runtime_enabled_constants,
+ 'runtime_enabled_constants': sorted(runtime_enabled_constants.iteritems()),
'special_getter_constants': special_getter_constants,
})
@@ -288,18 +291,19 @@
context.update({
'attributes': attributes,
'has_accessor_configuration': any(
- attribute['is_expose_js_accessors'] and
- not (attribute['is_static'] or
+ not (attribute['exposed_test'] or
attribute['runtime_enabled_function']) and
+ not attribute['is_data_type_property'] and
attribute['should_be_exposed_to_script']
for attribute in attributes),
'has_attribute_configuration': any(
- not (attribute['is_expose_js_accessors'] or
- attribute['is_static'] or
- attribute['runtime_enabled_function'])
- and attribute['should_be_exposed_to_script']
- for attribute in attributes),
+ not (attribute['exposed_test'] or
+ attribute['runtime_enabled_function']) and
+ attribute['is_data_type_property'] and
+ attribute['should_be_exposed_to_script']
+ for attribute in attributes),
'has_constructor_attributes': any(attribute['constructor_type'] for attribute in attributes),
+ 'needs_constructor_setter_callback': any(attribute['constructor_type'] == attribute['name'] for attribute in attributes),
'has_replaceable_attributes': any(attribute['is_replaceable'] for attribute in attributes),
})
@@ -344,13 +348,15 @@
# [Iterable], iterable<>, maplike<> and setlike<>
iterator_method = None
+ has_array_iterator = False
+
# FIXME: support Iterable in partial interfaces. However, we don't
# need to support iterator overloads between interface and
# partial interface definitions.
# http://heycam.github.io/webidl/#idl-overloading
if (not interface.is_partial
and (interface.iterable or interface.maplike or interface.setlike
- or 'Iterable' in extended_attributes)):
+ or interface.has_indexed_elements or 'Iterable' in extended_attributes)):
used_extended_attributes = {}
@@ -383,7 +389,10 @@
extended_attributes=used_extended_attributes,
implemented_as=implemented_as)
- iterator_method = generated_iterator_method('iterator', implemented_as='iterator')
+ if interface.iterable or interface.maplike or interface.setlike or 'Iterable' in extended_attributes:
+ iterator_method = generated_iterator_method('iterator', implemented_as='iterator')
+ elif interface.has_indexed_elements:
+ has_array_iterator = True
if interface.iterable or interface.maplike or interface.setlike:
implicit_methods = [
@@ -550,12 +559,13 @@
context.update({
'conditionally_enabled_methods': conditionally_enabled_methods,
'custom_registration_methods': custom_registration_methods,
- 'has_origin_safe_method_setter': any(
- method['is_check_security_for_frame'] and not method['is_read_only']
+ 'has_origin_safe_method_setter': is_global and any(
+ method['is_check_security_for_receiver'] and not method['is_unforgeable']
for method in methods),
'has_private_script': any(attribute['is_implemented_in_private_script'] for attribute in attributes) or
any(method['is_implemented_in_private_script'] for method in methods),
'iterator_method': iterator_method,
+ 'has_array_iterator': has_array_iterator,
'method_configuration_methods': method_configuration_methods,
'methods': methods,
})
@@ -583,22 +593,34 @@
'named_property_setter': property_setter(interface.named_property_setter, interface),
'named_property_deleter': property_deleter(interface.named_property_deleter),
})
+ context.update({
+ 'has_named_properties_object': is_global and context['named_property_getter'],
+ })
return context
-# [DeprecateAs], [Reflect], [RuntimeEnabled]
+# [DeprecateAs], [OriginTrialEnabled], [Reflect], [RuntimeEnabled]
def constant_context(constant, interface):
extended_attributes = constant.extended_attributes
+
+ if 'OriginTrialEnabled' in extended_attributes:
+ includes.add('core/inspector/ConsoleMessage.h')
+ includes.add('core/origin_trials/OriginTrials.h')
+
return {
'cpp_class': extended_attributes.get('PartialInterfaceImplementedAs'),
'deprecate_as': v8_utilities.deprecate_as(constant), # [DeprecateAs]
'idl_type': constant.idl_type.name,
+ 'is_origin_trial_enabled': v8_utilities.origin_trial_enabled_function(constant) or v8_utilities.origin_trial_enabled_function(interface), # [OriginTrialEnabled]
'measure_as': v8_utilities.measure_as(constant, interface), # [MeasureAs]
'name': constant.name,
+ 'origin_trial_enabled': v8_utilities.origin_trial_enabled_function(constant), # [OriginTrialEnabled]
+ 'origin_trial_enabled_per_interface': v8_utilities.origin_trial_enabled_function(interface), # [OriginTrialEnabled]
+ 'origin_trial_name': extended_attributes.get('OriginTrialEnabled'), # [OriginTrialEnabled]
# FIXME: use 'reflected_name' as correct 'name'
'reflected_name': extended_attributes.get('Reflect', constant.name),
- 'runtime_enabled_function': runtime_enabled_function_name(constant),
+ 'runtime_enabled_function': runtime_enabled_function_name(constant), # [RuntimeEnabled]
'value': constant.value,
}
@@ -890,7 +912,14 @@
"""
# Only applicable “If there is more than one entry”
assert len(entries) > 1
- type_lists = [tuple(idl_type.name for idl_type in entry[1])
+
+ def typename_without_nullable(idl_type):
+ if idl_type.is_nullable:
+ return idl_type.inner_type.name
+ return idl_type.name
+
+ type_lists = [tuple(typename_without_nullable(idl_type)
+ for idl_type in entry[1])
for entry in entries]
type_list_length = len(type_lists[0])
# Only applicable for entries that “[have] a given type list length”
@@ -1195,9 +1224,12 @@
is_constructor_raises_exception = \
interface.extended_attributes.get('RaisesException') == 'Constructor'
+ argument_contexts = [
+ v8_methods.argument_context(interface, constructor, argument, index)
+ for index, argument in enumerate(constructor.arguments)]
+
return {
- 'arguments': [v8_methods.argument_context(interface, constructor, argument, index)
- for index, argument in enumerate(constructor.arguments)],
+ 'arguments': argument_contexts,
'cpp_type': cpp_template_type(
cpp_ptr_type('RefPtr', 'RawPtr', gc_type(interface)),
cpp_name(interface)),
@@ -1208,6 +1240,9 @@
any(argument for argument in constructor.arguments
if argument.idl_type.name == 'SerializedScriptValue' or
argument.idl_type.v8_conversion_needs_exception_state),
+ 'has_optional_argument_without_default_value':
+ any(True for argument_context in argument_contexts
+ if argument_context['is_optional_without_default_value']),
'is_call_with_document':
# [ConstructorCallWith=Document]
has_extended_attribute_value(interface,
@@ -1330,7 +1365,7 @@
is_call_with_script_state = v8_utilities.has_extended_attribute_value(setter, 'CallWith', 'ScriptState')
is_raises_exception = 'RaisesException' in extended_attributes
- # [TypeChecking=Interface] / [LegacyInterfaceTypeChecking]
+ # [LegacyInterfaceTypeChecking]
has_type_checking_interface = (
not is_legacy_interface_type_checking(interface, setter) and
idl_type.is_wrapper_type)
diff --git a/bindings/scripts/v8_methods.py b/bindings/scripts/v8_methods.py
index 7db6e4e..a3d4232 100644
--- a/bindings/scripts/v8_methods.py
+++ b/bindings/scripts/v8_methods.py
@@ -48,8 +48,6 @@
CUSTOM_REGISTRATION_EXTENDED_ATTRIBUTES = frozenset([
'DoNotCheckSecurity',
'DoNotCheckSignature',
- 'NotEnumerable',
- 'Unforgeable',
])
@@ -75,13 +73,6 @@
this_cpp_value = cpp_value(interface, method, len(arguments))
- def function_template():
- if is_static:
- return 'functionTemplate'
- if is_unforgeable(interface, method):
- return 'instanceTemplate'
- return 'prototypeTemplate'
-
is_implemented_in_private_script = 'ImplementedInPrivateScript' in extended_attributes
if is_implemented_in_private_script:
includes.add('bindings/core/v8/PrivateScriptRunner.h')
@@ -93,29 +84,27 @@
is_call_with_script_arguments = has_extended_attribute_value(method, 'CallWith', 'ScriptArguments')
if is_call_with_script_arguments:
- includes.update(['bindings/core/v8/ScriptCallStackFactory.h',
+ includes.update(['bindings/core/v8/ScriptCallStack.h',
'core/inspector/ScriptArguments.h'])
is_call_with_script_state = has_extended_attribute_value(method, 'CallWith', 'ScriptState')
is_call_with_this_value = has_extended_attribute_value(method, 'CallWith', 'ThisValue')
if is_call_with_script_state or is_call_with_this_value:
includes.add('bindings/core/v8/ScriptState.h')
- is_check_security_for_node = 'CheckSecurity' in extended_attributes
- if is_check_security_for_node:
+
+ # [CheckSecurity]
+ is_do_not_check_security = 'DoNotCheckSecurity' in extended_attributes
+ is_check_security_for_receiver = (
+ has_extended_attribute_value(interface, 'CheckSecurity', 'Receiver') and
+ not is_do_not_check_security)
+ is_check_security_for_return_value = (
+ has_extended_attribute_value(method, 'CheckSecurity', 'ReturnValue'))
+ if is_check_security_for_receiver or is_check_security_for_return_value:
includes.add('bindings/core/v8/BindingSecurity.h')
+
is_custom_element_callbacks = 'CustomElementCallbacks' in extended_attributes
if is_custom_element_callbacks:
includes.add('core/dom/custom/CustomElementProcessingStack.h')
- is_do_not_check_security = 'DoNotCheckSecurity' in extended_attributes
-
- is_check_security_for_frame = (
- has_extended_attribute_value(interface, 'CheckSecurity', 'Frame') and
- not is_do_not_check_security)
-
- is_check_security_for_window = (
- has_extended_attribute_value(interface, 'CheckSecurity', 'Window') and
- not is_do_not_check_security)
-
is_raises_exception = 'RaisesException' in extended_attributes
is_custom_call_prologue = has_extended_attribute_value(method, 'Custom', 'CallPrologue')
is_custom_call_epilogue = has_extended_attribute_value(method, 'Custom', 'CallEpilogue')
@@ -124,17 +113,27 @@
includes.add('bindings/core/v8/SerializedScriptValueFactory.h')
includes.add('core/dom/DOMArrayBuffer.h')
includes.add('core/dom/MessagePort.h')
+ includes.add('core/frame/ImageBitmap.h')
if 'LenientThis' in extended_attributes:
raise Exception('[LenientThis] is not supported for operations.')
+ if 'RuntimeEnabled' in extended_attributes:
+ includes.add('platform/RuntimeEnabledFeatures.h')
+
+ if 'OriginTrialEnabled' in extended_attributes:
+ includes.add('core/inspector/ConsoleMessage.h')
+ includes.add('core/origin_trials/OriginTrials.h')
+
+ argument_contexts = [
+ argument_context(interface, method, argument, index, is_visible=is_visible)
+ for index, argument in enumerate(arguments)]
+
return {
'activity_logging_world_list': v8_utilities.activity_logging_world_list(method), # [ActivityLogging]
- 'arguments': [argument_context(interface, method, argument, index, is_visible=is_visible)
- for index, argument in enumerate(arguments)],
+ 'arguments': argument_contexts,
'argument_declarations_for_private_script':
argument_declarations_for_private_script(interface, method),
- 'conditional_string': v8_utilities.conditional_string(method),
'cpp_type': (v8_types.cpp_template_type('Nullable', idl_type.cpp_type)
if idl_type.is_explicit_nullable else idl_type.cpp_type),
'cpp_value': this_cpp_value,
@@ -144,27 +143,28 @@
extended_attributes.iterkeys()),
'deprecate_as': v8_utilities.deprecate_as(method), # [DeprecateAs]
'exposed_test': v8_utilities.exposed(method, interface), # [Exposed]
- 'function_template': function_template(),
+ # TODO(yukishiino): Retire has_custom_registration flag. Should be
+ # replaced with V8DOMConfiguration::PropertyLocationConfiguration.
'has_custom_registration':
- is_static or
- is_unforgeable(interface, method) or
v8_utilities.has_extended_attribute(
method, CUSTOM_REGISTRATION_EXTENDED_ATTRIBUTES),
'has_exception_state':
is_raises_exception or
- is_check_security_for_frame or
- is_check_security_for_window or
+ is_check_security_for_receiver or
any(argument for argument in arguments
if (argument.idl_type.name == 'SerializedScriptValue' or
argument_conversion_needs_exception_state(method, argument))),
+ 'has_optional_argument_without_default_value':
+ any(True for argument_context in argument_contexts
+ if argument_context['is_optional_without_default_value']),
'idl_type': idl_type.base_type,
+ 'is_origin_trial_enabled': v8_utilities.origin_trial_enabled_function(method) or v8_utilities.origin_trial_enabled_function(interface), # [OriginTrialEnabled]
'is_call_with_execution_context': has_extended_attribute_value(method, 'CallWith', 'ExecutionContext'),
'is_call_with_script_arguments': is_call_with_script_arguments,
'is_call_with_script_state': is_call_with_script_state,
'is_call_with_this_value': is_call_with_this_value,
- 'is_check_security_for_frame': is_check_security_for_frame,
- 'is_check_security_for_node': is_check_security_for_node,
- 'is_check_security_for_window': is_check_security_for_window,
+ 'is_check_security_for_receiver': is_check_security_for_receiver,
+ 'is_check_security_for_return_value': is_check_security_for_return_value,
'is_custom': 'Custom' in extended_attributes and
not (is_custom_call_prologue or is_custom_call_epilogue),
'is_custom_call_prologue': is_custom_call_prologue,
@@ -179,8 +179,8 @@
'is_per_world_bindings': 'PerWorldBindings' in extended_attributes,
'is_post_message': is_post_message,
'is_raises_exception': is_raises_exception,
- 'is_read_only': is_unforgeable(interface, method),
'is_static': is_static,
+ 'is_unforgeable': is_unforgeable(interface, method),
'is_variadic': arguments and arguments[-1].is_variadic,
'measure_as': v8_utilities.measure_as(method, interface), # [MeasureAs]
'name': name,
@@ -195,13 +195,14 @@
'on_interface': v8_utilities.on_interface(interface, method),
'on_prototype': v8_utilities.on_prototype(interface, method),
'only_exposed_to_private_script': is_only_exposed_to_private_script,
+ 'origin_trial_enabled': v8_utilities.origin_trial_enabled_function(method), # [OriginTrialEnabled]
+ 'origin_trial_enabled_per_interface': v8_utilities.origin_trial_enabled_function(interface), # [OriginTrialEnabled]
'private_script_v8_value_to_local_cpp_value': idl_type.v8_value_to_local_cpp_value(
extended_attributes, 'v8Value', 'cppValue', isolate='scriptState->isolate()', bailout_return_value='false'),
'property_attributes': property_attributes(interface, method),
'returns_promise': method.returns_promise,
'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(method), # [RuntimeEnabled]
'should_be_exposed_to_script': not (is_implemented_in_private_script and is_only_exposed_to_private_script),
- 'signature': 'v8::Local<v8::Signature>()' if is_static or 'DoNotCheckSignature' in extended_attributes else 'defaultSignature',
'use_output_parameter_for_result': idl_type.use_output_parameter_for_result,
'use_local_result': use_local_result(method),
'v8_set_return_value': v8_set_return_value(interface.name, method, this_cpp_value),
@@ -219,21 +220,21 @@
this_cpp_value = cpp_value(interface, method, index)
is_variadic_wrapper_type = argument.is_variadic and idl_type.is_wrapper_type
- # [TypeChecking=Interface] / [LegacyInterfaceTypeChecking]
+ # [LegacyInterfaceTypeChecking]
has_type_checking_interface = (
not is_legacy_interface_type_checking(interface, method) and
idl_type.is_wrapper_type)
if ('ImplementedInPrivateScript' in extended_attributes and
- not idl_type.is_wrapper_type and
- not idl_type.is_basic_type):
+ not idl_type.is_wrapper_type and
+ not idl_type.is_basic_type):
raise Exception('Private scripts supports only primitive types and DOM wrappers.')
set_default_value = argument.set_default_value
this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attributes,
raw_type=True,
used_as_variadic_argument=argument.is_variadic)
- return {
+ context = {
'cpp_type': (
v8_types.cpp_template_type('Nullable', this_cpp_type)
if idl_type.is_explicit_nullable and not argument.is_variadic
@@ -270,6 +271,14 @@
'v8_set_return_value_for_main_world': v8_set_return_value(interface.name, method, this_cpp_value, for_main_world=True),
'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(method, argument, index),
}
+ context.update({
+ 'is_optional_without_default_value':
+ context['is_optional'] and
+ not context['has_default'] and
+ not context['is_dictionary'] and
+ not context['is_callback_interface'],
+ })
+ return context
def argument_declarations_for_private_script(interface, method):
@@ -314,8 +323,8 @@
# static member functions, which for instance members (non-static members)
# take *impl as their first argument
if ('PartialInterfaceImplementedAs' in method.extended_attributes and
- not 'ImplementedInPrivateScript' in method.extended_attributes and
- not method.is_static):
+ 'ImplementedInPrivateScript' not in method.extended_attributes and
+ not method.is_static):
cpp_arguments.append('*impl')
cpp_arguments.extend(cpp_argument(argument) for argument in arguments)
@@ -323,8 +332,8 @@
if method.idl_type.name != 'void':
cpp_arguments.append('&result')
elif ('RaisesException' in method.extended_attributes or
- (method.is_constructor and
- has_extended_attribute_value(interface, 'RaisesException', 'Constructor'))):
+ (method.is_constructor and
+ has_extended_attribute_value(interface, 'RaisesException', 'Constructor'))):
cpp_arguments.append('exceptionState')
# If a method returns an IDL dictionary or union type, the return value is
@@ -354,8 +363,8 @@
return None
if ('ImplementedInPrivateScript' in extended_attributes and
- not idl_type.is_wrapper_type and
- not idl_type.is_basic_type):
+ not idl_type.is_wrapper_type and
+ not idl_type.is_basic_type):
raise Exception('Private scripts supports only primitive types and DOM wrappers.')
release = False
@@ -412,7 +421,7 @@
# Auxiliary functions
################################################################################
-# [NotEnumerable]
+# [NotEnumerable], [Unforgeable]
def property_attributes(interface, method):
extended_attributes = method.extended_attributes
property_attributes_list = []
@@ -420,8 +429,7 @@
property_attributes_list.append('v8::DontEnum')
if is_unforgeable(interface, method):
property_attributes_list.append('v8::ReadOnly')
- if property_attributes_list:
- property_attributes_list.insert(0, 'v8::DontDelete')
+ property_attributes_list.append('v8::DontDelete')
return property_attributes_list
diff --git a/bindings/scripts/v8_types.py b/bindings/scripts/v8_types.py
index f5c92bc..04739d2 100644
--- a/bindings/scripts/v8_types.py
+++ b/bindings/scripts/v8_types.py
@@ -70,8 +70,10 @@
'ArrayBuffer',
'ArrayBufferView',
'DataView',
+ 'SharedArrayBuffer',
]))
+
IdlType.is_array_buffer_or_view = property(
lambda self: self.base_type in ARRAY_BUFFER_AND_VIEW_TYPES)
@@ -182,8 +184,10 @@
return 'String'
return 'V8StringResource<%s>' % string_mode()
- if idl_type.is_array_buffer_or_view and raw_type:
- return idl_type.implemented_as + '*'
+ if idl_type.base_type == 'ArrayBufferView' and 'FlexibleArrayBufferView' in extended_attributes:
+ return 'FlexibleArrayBufferView'
+ if idl_type.base_type in TYPED_ARRAY_TYPES and 'FlexibleArrayBufferView' in extended_attributes:
+ return 'Flexible' + idl_type.base_type + 'View'
if idl_type.is_interface_type:
implemented_as_class = idl_type.implemented_as
if raw_type or (used_as_rvalue_type and idl_type.is_garbage_collected):
@@ -341,6 +345,8 @@
INCLUDES_FOR_TYPE = {
'object': set(),
+ 'ArrayBufferView': set(['bindings/core/v8/V8ArrayBufferView.h',
+ 'core/dom/FlexibleArrayBufferView.h']),
'Dictionary': set(['bindings/core/v8/Dictionary.h']),
'EventHandler': set(['bindings/core/v8/V8AbstractEventListener.h',
'bindings/core/v8/V8EventListenerList.h']),
@@ -374,6 +380,10 @@
base_idl_type = idl_type.base_type
if base_idl_type in INCLUDES_FOR_TYPE:
return INCLUDES_FOR_TYPE[base_idl_type]
+ if idl_type.base_type in TYPED_ARRAY_TYPES:
+ return INCLUDES_FOR_TYPE['ArrayBufferView'].union(
+ set(['bindings/%s/v8/V8%s.h' % (component_dir[base_idl_type], base_idl_type)])
+ )
if idl_type.is_basic_type:
return set()
if base_idl_type.endswith('ConstructorConstructor'):
@@ -497,9 +507,10 @@
# Interface types
'Dictionary': 'Dictionary({v8_value}, {isolate}, exceptionState)',
'EventTarget': 'toEventTarget({isolate}, {v8_value})',
+ 'FlexibleArrayBufferView': 'toFlexibleArrayBufferView({isolate}, {v8_value}, {variable_name}, allocateFlexibleArrayBufferViewStorage({v8_value}))',
'NodeFilter': 'toNodeFilter({v8_value}, info.Holder(), ScriptState::current({isolate}))',
'Promise': 'ScriptPromise::cast(ScriptState::current({isolate}), {v8_value})',
- 'SerializedScriptValue': 'SerializedScriptValueFactory::instance().create({isolate}, {v8_value}, 0, 0, exceptionState)',
+ 'SerializedScriptValue': 'SerializedScriptValueFactory::instance().create({isolate}, {v8_value}, nullptr, nullptr, nullptr, exceptionState)',
'ScriptValue': 'ScriptValue(ScriptState::current({isolate}), {v8_value})',
'Window': 'toDOMWindow({isolate}, {v8_value})',
'XPathNSResolver': 'toXPathNSResolver(ScriptState::current({isolate}), {v8_value})',
@@ -550,6 +561,11 @@
idl_type = idl_type.preprocessed_type
base_idl_type = idl_type.as_union_type.name if idl_type.is_union_type else idl_type.base_type
+ if 'FlexibleArrayBufferView' in extended_attributes:
+ if base_idl_type not in TYPED_ARRAY_TYPES.union(set(['ArrayBufferView'])):
+ raise "Unrecognized base type for extended attribute 'FlexibleArrayBufferView': %s" % (idl_type.base_type)
+ base_idl_type = 'FlexibleArrayBufferView'
+
if idl_type.is_integer_type:
configuration = 'NormalConversion'
if 'EnforceRange' in extended_attributes:
@@ -567,9 +583,10 @@
cpp_expression_format = (
'{v8_value}->Is{idl_type}() ? '
'V8{idl_type}::toImpl(v8::Local<v8::{idl_type}>::Cast({v8_value})) : 0')
+ elif idl_type.is_union_type:
+ nullable = 'UnionTypeConversionMode::Nullable' if idl_type.includes_nullable_type else 'UnionTypeConversionMode::NotNullable'
+ cpp_expression_format = 'V8{idl_type}::toImpl({isolate}, {v8_value}, {variable_name}, %s, exceptionState)' % nullable
elif idl_type.use_output_parameter_for_result:
- if idl_type.includes_nullable_type:
- base_idl_type = idl_type.cpp_type + 'OrNull'
cpp_expression_format = 'V8{idl_type}::toImpl({isolate}, {v8_value}, {variable_name}, exceptionState)'
else:
cpp_expression_format = (
@@ -646,6 +663,10 @@
return {
'error_message': 'no V8 -> C++ conversion for IDL type: %s' % idl_type.name
}
+ elif 'FlexibleArrayBufferView' in extended_attributes:
+ if idl_type.base_type not in TYPED_ARRAY_TYPES.union(set(['ArrayBufferView'])):
+ raise "Unrecognized base type for extended attribute 'FlexibleArrayBufferView': %s" % (idl_type.base_type)
+ set_expression = cpp_value
else:
assign_expression = cpp_value
@@ -749,14 +770,7 @@
if idl_type.is_string_type:
if idl_type.is_nullable:
return 'StringOrNull'
- if 'TreatReturnedNullStringAs' not in extended_attributes:
- return base_idl_type
- treat_returned_null_string_as = extended_attributes['TreatReturnedNullStringAs']
- if treat_returned_null_string_as == 'Null':
- return 'StringOrNull'
- if treat_returned_null_string_as == 'Undefined':
- return 'StringOrUndefined'
- raise 'Unrecognized TreatReturnedNullStringAs value: "%s"' % treat_returned_null_string_as
+ return base_idl_type
if idl_type.is_basic_type or base_idl_type == 'ScriptValue':
return base_idl_type
# Generic dictionary type
@@ -780,9 +794,7 @@
'DOMString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
'ByteString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
'USVString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
- # [TreatReturnedNullStringAs]
'StringOrNull': 'v8SetReturnValueStringOrNull(info, {cpp_value}, info.GetIsolate())',
- 'StringOrUndefined': 'v8SetReturnValueStringOrUndefined(info, {cpp_value}, info.GetIsolate())',
'void': '',
# No special v8SetReturnValue* function (set value directly)
'float': 'v8SetReturnValue(info, {cpp_value})',
@@ -869,9 +881,7 @@
'double': 'v8::Number::New({isolate}, {cpp_value})',
'unrestricted double': 'v8::Number::New({isolate}, {cpp_value})',
'void': 'v8Undefined()',
- # [TreatReturnedNullStringAs]
'StringOrNull': '{cpp_value}.isNull() ? v8::Local<v8::Value>(v8::Null({isolate})) : v8String({isolate}, {cpp_value})',
- 'StringOrUndefined': '{cpp_value}.isNull() ? v8Undefined() : v8String({isolate}, {cpp_value})',
# Special cases
'Dictionary': '{cpp_value}.v8Value()',
'EventHandler': '{cpp_value} ? v8::Local<v8::Value>(V8AbstractEventListener::cast({cpp_value})->getListenerObject(impl->executionContext())) : v8::Local<v8::Value>(v8::Null({isolate}))',
diff --git a/bindings/scripts/v8_union.py b/bindings/scripts/v8_union.py
index 1b94261..fa22cdb 100644
--- a/bindings/scripts/v8_union.py
+++ b/bindings/scripts/v8_union.py
@@ -25,11 +25,14 @@
cpp_includes = set()
header_forward_decls = set()
+header_includes = set()
def union_context(union_types, interfaces_info):
cpp_includes.clear()
header_forward_decls.clear()
+ header_includes.clear()
+ header_includes.update(UNION_H_INCLUDES)
# For container classes we strip nullable wrappers. For example,
# both (A or B)? and (A? or B) will become AOrB. This should be OK
@@ -37,26 +40,21 @@
# distinguishing (A or B)? and (A? or B) doesn't make sense.
container_cpp_types = set()
union_types_for_containers = set()
- nullable_cpp_types = set()
for union_type in union_types:
cpp_type = union_type.cpp_type
if cpp_type not in container_cpp_types:
union_types_for_containers.add(union_type)
container_cpp_types.add(cpp_type)
- if union_type.includes_nullable_type:
- nullable_cpp_types.add(cpp_type)
union_types_for_containers = sorted(union_types_for_containers,
key=lambda union_type: union_type.cpp_type)
- nullable_cpp_types = sorted(nullable_cpp_types)
return {
'containers': [container_context(union_type, interfaces_info)
for union_type in union_types_for_containers],
'cpp_includes': sorted(cpp_includes - UNION_CPP_INCLUDES_BLACKLIST),
'header_forward_decls': sorted(header_forward_decls),
- 'header_includes': sorted(UNION_H_INCLUDES),
- 'nullable_cpp_types': nullable_cpp_types,
+ 'header_includes': sorted(header_includes),
}
@@ -72,6 +70,7 @@
dictionary_type = None
interface_types = []
numeric_type = None
+ object_type = None
string_type = None
for member in union_type.member_types:
context = member_context(member, interfaces_info)
@@ -84,8 +83,7 @@
if array_buffer_view_type:
raise Exception('%s is ambiguous.' % union_type.name)
array_buffer_view_type = context
- # FIXME: Remove generic Dictionary special casing.
- elif member.is_dictionary or member.base_type == 'Dictionary':
+ elif member.is_dictionary:
if dictionary_type:
raise Exception('%s is ambiguous.' % union_type.name)
dictionary_type = context
@@ -93,6 +91,11 @@
if array_or_sequence_type:
raise Exception('%s is ambiguous.' % union_type.name)
array_or_sequence_type = context
+ # "Dictionary" is an object, rather than an IDL dictionary.
+ elif member.base_type == 'Dictionary':
+ if object_type:
+ raise Exception('%s is ambiguous.' % union_type.name)
+ object_type = context
elif member.is_interface_type:
interface_types.append(context)
elif member is union_type.boolean_member_type:
@@ -122,17 +125,37 @@
'interface_types': interface_types,
'members': members,
'numeric_type': numeric_type,
+ 'object_type': object_type,
'string_type': string_type,
'type_string': str(union_type),
}
-def member_context(member, interfaces_info):
- cpp_includes.update(member.includes_for_type())
- interface_info = interfaces_info.get(member.name, None)
+def _update_includes_and_forward_decls(member, interface_info):
if interface_info:
- cpp_includes.update(interface_info.get('dependencies_include_paths', []))
- header_forward_decls.add(member.implemented_as)
+ cpp_includes.update(interface_info.get(
+ 'dependencies_include_paths', []))
+ # TODO(bashi): Workaround for http://crbug.com/524424
+ # Avoid using forward declaration for IDL dictionaries so that they
+ # aren't imcomplete types in UnionTypes.h. This enables an IDL
+ # dictionary to have a union type which has an IDL dictionary. e.g.
+ # dictionary DictA { (boolean or DictB) member; }
+ # Note that this doesn't cover all cases. We still can't use an IDL
+ # dictionary in a union type when the dictionary contains a union type.
+ # e.g.
+ # void foo((DOMString or DictA) arg); // won't compile
+ if member.is_dictionary:
+ header_includes.update(member.includes_for_type())
+ else:
+ cpp_includes.update(member.includes_for_type())
+ header_forward_decls.add(member.implemented_as)
+ else:
+ cpp_includes.update(member.includes_for_type())
+
+
+def member_context(member, interfaces_info):
+ interface_info = interfaces_info.get(member.name, None)
+ _update_includes_and_forward_decls(member, interface_info)
if member.is_nullable:
member = member.inner_type
return {
diff --git a/bindings/scripts/v8_utilities.py b/bindings/scripts/v8_utilities.py
index 1cd44ab..1e8733a 100644
--- a/bindings/scripts/v8_utilities.py
+++ b/bindings/scripts/v8_utilities.py
@@ -35,7 +35,7 @@
from idl_types import IdlTypeBase
import idl_types
-from idl_definitions import Exposure, IdlInterface
+from idl_definitions import Exposure, IdlInterface, IdlAttribute
from v8_globals import includes
ACRONYMS = [
@@ -125,7 +125,7 @@
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 @@
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
@@ -186,7 +186,7 @@
'ScriptState': 'scriptState',
'ExecutionContext': 'executionContext',
'ScriptArguments': 'scriptArguments.release()',
- 'ActiveWindow': 'callingDOMWindow(info.GetIsolate())',
+ 'ActiveWindow': 'currentDOMWindow(info.GetIsolate())',
'FirstWindow': 'enteredDOMWindow(info.GetIsolate())',
'Document': 'document',
'ThisValue': 'ScriptValue(scriptState, info.This())',
@@ -211,24 +211,11 @@
if extended_attribute_value_contains(call_with_values, value)]
-# [Conditional]
-DELIMITER_TO_OPERATOR = {
- '|': '||',
- ',': '&&',
-}
-
-
-def conditional_string(definition_or_member):
- extended_attributes = definition_or_member.extended_attributes
- if 'Conditional' not in extended_attributes:
- return None
- return 'ENABLE(%s)' % extended_attributes['Conditional']
-
-
# [Constructor], [NamedConstructor]
def is_constructor_attribute(member):
# TODO(yukishiino): replace this with [Constructor] and [NamedConstructor] extended attribute
- return member.idl_type.name.endswith('Constructor')
+ return (type(member) == IdlAttribute and
+ member.idl_type.name.endswith('Constructor'))
# [DeprecateAs]
@@ -236,7 +223,7 @@
extended_attributes = member.extended_attributes
if 'DeprecateAs' not in extended_attributes:
return None
- includes.add('core/frame/UseCounter.h')
+ includes.add('core/frame/Deprecation.h')
return extended_attributes['DeprecateAs']
@@ -248,6 +235,7 @@
'SharedWorker': 'isSharedWorkerGlobalScope',
'Window': 'isDocument',
'Worker': 'isWorkerGlobalScope',
+ 'Worklet': 'isWorkletGlobalScope',
}
@@ -291,7 +279,7 @@
@staticmethod
def _code(exposure):
- exposed = ('context->%s()' %
+ exposed = ('executionContext->%s()' %
EXPOSED_EXECUTION_CONTEXT_METHOD[exposure.exposed])
if exposure.runtime_enabled is not None:
runtime_enabled = ('RuntimeEnabledFeatures::%sEnabled()' %
@@ -379,6 +367,29 @@
return None
+def runtime_feature_name(definition_or_member):
+ extended_attributes = definition_or_member.extended_attributes
+ if 'RuntimeEnabled' not in extended_attributes:
+ return None
+ return extended_attributes['RuntimeEnabled']
+
+
+def is_origin_trial_enabled(definition_or_member):
+ return 'OriginTrialEnabled' in definition_or_member.extended_attributes
+
+
+def origin_trial_name(definition_or_member):
+ return definition_or_member.extended_attributes['OriginTrialEnabled'] if is_origin_trial_enabled(definition_or_member) else None
+
+
+def origin_trial_enabled_function(definition_or_member):
+ trial_name = origin_trial_name(definition_or_member)
+ feature_name = runtime_feature_name(definition_or_member)
+ if not feature_name or not trial_name:
+ return
+ return 'OriginTrials::%sEnabled' % uncapitalize(feature_name)
+
+
# [RuntimeEnabled]
def runtime_enabled_function_name(definition_or_member):
"""Returns the name of the RuntimeEnabledFeatures function.
@@ -387,10 +398,16 @@
Given extended attribute RuntimeEnabled=FeatureName, return:
RuntimeEnabledFeatures::{featureName}Enabled
"""
- extended_attributes = definition_or_member.extended_attributes
- if 'RuntimeEnabled' not in extended_attributes:
- return None
- feature_name = extended_attributes['RuntimeEnabled']
+ feature_name = runtime_feature_name(definition_or_member)
+
+ # If an origin trial is on the method/attribute, it overrides the runtime
+ # enabled status. For now, we are unconditionally installing these
+ # attributes/methods, so we are acting as though the runtime enabled
+ # function doesn't exist. (It is checked in the generated OriginTrials
+ # function, instead)
+ trial_name = origin_trial_name(definition_or_member)
+ if not feature_name or trial_name:
+ return
return 'RuntimeEnabledFeatures::%sEnabled' % uncapitalize(feature_name)
@@ -401,17 +418,13 @@
not member.is_static)
-# [TypeChecking=Interface] / [LegacyInterfaceTypeChecking]
+# [LegacyInterfaceTypeChecking]
def is_legacy_interface_type_checking(interface, member):
- if not ('TypeChecking' in interface.extended_attributes or
- 'TypeChecking' in member.extended_attributes):
- return True
- if 'LegacyInterfaceTypeChecking' in member.extended_attributes:
- return True
- return False
+ return ('LegacyInterfaceTypeChecking' in interface.extended_attributes or
+ 'LegacyInterfaceTypeChecking' in member.extended_attributes)
-# [Unforgeable], [Global], [PrimaryGlobal] and [DoNotExposeJSAccessors]
+# [Unforgeable], [Global], [PrimaryGlobal]
def on_instance(interface, member):
"""Returns True if the interface's member needs to be defined on every
instance object.
@@ -419,60 +432,57 @@
The following members must be defiend on an instance object.
- [Unforgeable] members
- regular members of [Global] or [PrimaryGlobal] interfaces
- - members on which [DoNotExposeJSAccessors] is specified
"""
- # TODO(yukishiino): Implement this function following the spec.
- return not on_prototype(interface, member)
+ if member.is_static:
+ return False
+
+ # 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
-# [ExposeJSAccessors]
def on_prototype(interface, member):
"""Returns True if the interface's member needs to be defined on the
prototype object.
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
- However, if [ExposeJSAccessors] is specified, the member is defined on the
- prototype object.
"""
- # TODO(yukishiino): Implement this function following the spec.
+ if member.is_static:
+ return False
- if ('ExposeJSAccessors' in interface.extended_attributes and
- 'DoNotExposeJSAccessors' in interface.extended_attributes):
- raise Exception('Both of ExposeJSAccessors and DoNotExposeJSAccessors are specified at a time in an interface: ' + interface.name)
- if ('ExposeJSAccessors' in member.extended_attributes and
- 'DoNotExposeJSAccessors' in member.extended_attributes):
- raise Exception('Both of ExposeJSAccessors and DoNotExposeJSAccessors are specified at a time on a member: ' + member.name + ' in an interface: ' + interface.name)
-
- # Note that ExposeJSAccessors and DoNotExposeJSAccessors are more powerful
- # than 'static', [Unforgeable] and [OverrideBuiltins].
- if 'ExposeJSAccessors' in member.extended_attributes:
+ # TODO(yukishiino): Remove a hack for toString once we support
+ # Symbol.toStringTag.
+ if (interface.name == 'Window' and member.name == 'toString'):
return True
- if 'DoNotExposeJSAccessors' in member.extended_attributes:
+
+ # 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
- # These members must not be placed on prototype chains.
- if (is_constructor_attribute(member) or
- member.is_static or
- is_unforgeable(interface, member) or
- 'OverrideBuiltins' in interface.extended_attributes):
+ 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
-
- # TODO(yukishiino): We should handle [Global] and [PrimaryGlobal] instead of
- # Window.
- if (interface.name == 'Window'):
- return member.idl_type.name == 'EventHandler'
-
- if 'ExposeJSAccessors' in interface.extended_attributes:
- return True
- if 'DoNotExposeJSAccessors' in interface.extended_attributes:
- return False
-
return True
@@ -482,10 +492,10 @@
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
diff --git a/bindings/tests/idls/core/SVGTestInterface.idl b/bindings/tests/idls/core/SVGTestInterface.idl
index 6c7511e..81e8997 100644
--- a/bindings/tests/idls/core/SVGTestInterface.idl
+++ b/bindings/tests/idls/core/SVGTestInterface.idl
@@ -35,5 +35,4 @@
DependentLifetime,
] interface SVGTestInterface {
[Reflect] attribute DOMString type; // Test SVGNames namespace
- // [Immutable] attribute SVGPoint immutablePoint; // [Immutable] is a nop
};
diff --git a/bindings/tests/idls/core/TestDictionary.idl b/bindings/tests/idls/core/TestDictionary.idl
index d135101..0ac0a68 100644
--- a/bindings/tests/idls/core/TestDictionary.idl
+++ b/bindings/tests/idls/core/TestDictionary.idl
@@ -36,4 +36,6 @@
Uint8Array uint8ArrayMember;
EventTarget eventTargetMember;
any anyMember = null;
+ Dictionary dictionaryMember;
+ [RuntimeEnabled=runtimeFeature] boolean runtimeMember;
};
diff --git a/bindings/tests/idls/core/TestException.idl b/bindings/tests/idls/core/TestException.idl
index a62191c..0c918b4 100644
--- a/bindings/tests/idls/core/TestException.idl
+++ b/bindings/tests/idls/core/TestException.idl
@@ -27,6 +27,7 @@
*/
[
+ Constructor(unsigned short argument),
DoNotCheckConstants,
] exception TestException {
readonly attribute unsigned short readonlyUnsignedShortAttribute;
diff --git a/bindings/tests/idls/core/TestIntegerIndexed.idl b/bindings/tests/idls/core/TestIntegerIndexed.idl
new file mode 100644
index 0000000..ddc9d20
--- /dev/null
+++ b/bindings/tests/idls/core/TestIntegerIndexed.idl
@@ -0,0 +1,16 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+interface TestIntegerIndexed {
+ [Custom] getter boolean (unsigned long index);
+ [Custom] setter boolean (unsigned long index, Node value);
+ [Custom] deleter boolean (unsigned long index);
+ attribute short length;
+
+ [Custom=(PropertyGetter,PropertyEnumerator,PropertyQuery)] getter Node (DOMString name);
+ [Custom] setter Node (DOMString name, Node value);
+ [Custom] deleter boolean (DOMString name);
+
+ void voidMethodDocument(Document document);
+};
diff --git a/bindings/tests/idls/core/TestIntegerIndexedGlobal.idl b/bindings/tests/idls/core/TestIntegerIndexedGlobal.idl
new file mode 100644
index 0000000..8937125
--- /dev/null
+++ b/bindings/tests/idls/core/TestIntegerIndexedGlobal.idl
@@ -0,0 +1,17 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[Global]
+interface TestIntegerIndexedGlobal {
+ [Custom] getter boolean (unsigned long index);
+ [Custom] setter boolean (unsigned long index, Node value);
+ [Custom] deleter boolean (unsigned long index);
+ attribute unsigned long long length;
+
+ [Custom=(PropertyGetter,PropertyEnumerator,PropertyQuery)] getter Node (DOMString name);
+ [Custom] setter Node (DOMString name, Node value);
+ [Custom] deleter boolean (DOMString name);
+
+ void voidMethodDocument(Document document);
+};
diff --git a/bindings/tests/idls/core/TestIntegerIndexedPrimaryGlobal.idl b/bindings/tests/idls/core/TestIntegerIndexedPrimaryGlobal.idl
new file mode 100644
index 0000000..b9c760a
--- /dev/null
+++ b/bindings/tests/idls/core/TestIntegerIndexedPrimaryGlobal.idl
@@ -0,0 +1,17 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[PrimaryGlobal]
+interface TestIntegerIndexedPrimaryGlobal {
+ [Custom] getter boolean (unsigned long index);
+ [Custom] setter boolean (unsigned long index, Node value);
+ [Custom] deleter boolean (unsigned long index);
+ attribute byte length;
+
+ [Custom=(PropertyGetter,PropertyEnumerator,PropertyQuery)] getter Node (DOMString name);
+ [Custom] setter Node (DOMString name, Node value);
+ [Custom] deleter boolean (DOMString name);
+
+ void voidMethodDocument(Document document);
+};
diff --git a/bindings/tests/idls/core/TestInterface.idl b/bindings/tests/idls/core/TestInterface.idl
index 69a51cd..58c1e12 100644
--- a/bindings/tests/idls/core/TestInterface.idl
+++ b/bindings/tests/idls/core/TestInterface.idl
@@ -32,21 +32,18 @@
// Also used as a target by TestObject
[
- ActiveDOMObject,
- Conditional=CONDITION,
+ DependentLifetime,
Custom=LegacyCallAsFunction,
DoNotCheckConstants,
ImplementedAs=TestInterfaceImplementation,
Iterable,
- Measure,
+ OriginTrialEnabled=OriginTrialFeatureName,
RuntimeEnabled=FeatureName,
SetWrapperReferenceTo(TestInterface referencedName),
- TypeChecking=Interface,
Exposed=(Worker,Window),
] interface TestInterface : TestInterfaceEmpty {
// members needed to test [ImplementedAs], as this affect attribute
- // configuration and method configuration, and [TypeChecking]
- // constants also needed for [DoNotCheckConstants]
+ // configuration and method configuration
const unsigned long UNSIGNED_LONG = 0;
[Reflect=CONST_CPP] const short CONST_JAVASCRIPT = 1;
@@ -60,8 +57,13 @@
attribute unrestricted float unrestrictedFloatAttribute;
attribute TestEnum testEnumAttribute;
attribute DOMStringOrDouble stringOrDoubleAttribute;
+ [RuntimeEnabled=FeatureName] attribute long conditionalLongAttribute;
+ [RuntimeEnabled=FeatureName] readonly attribute long conditionalReadOnlyLongAttribute;
static attribute DOMString staticStringAttribute;
static attribute TestInterface staticReturnDOMWrapperAttribute;
+ static readonly attribute DOMString staticReadOnlyStringAttribute;
+ static readonly attribute TestInterface staticReadOnlyReturnDOMWrapperAttribute;
+ [RuntimeEnabled=FeatureName] static readonly attribute long staticConditionalReadOnlyLongAttribute;
[LegacyInterfaceTypeChecking] attribute TestInterfaceEmpty legacyInterfaceTypeCheckingAttribute;
void voidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
diff --git a/bindings/tests/idls/core/TestInterface2.idl b/bindings/tests/idls/core/TestInterface2.idl
index 02de68e..18ab03f 100644
--- a/bindings/tests/idls/core/TestInterface2.idl
+++ b/bindings/tests/idls/core/TestInterface2.idl
@@ -35,7 +35,7 @@
[
Constructor,
- DependentLifetime, // Covered by [ActiveDOMObject]
+ DependentLifetime, // Covered by [DependentLifetime]
SetWrapperReferenceFrom=ownerNode, // Conflicts with [SetWrapperReferenceTo]
// Note that Exposed(Arguments) has no effect on bindings-tests. It is
// processed in generate_global_constructors.py.
@@ -46,12 +46,12 @@
// Indexed property operations with an identifier
[RaisesException] getter TestInterfaceEmpty item(unsigned long index);
- [RaisesException, TypeChecking=Interface] setter TestInterfaceEmpty setItem(unsigned long index, TestInterfaceEmpty value);
+ [RaisesException] setter TestInterfaceEmpty setItem(unsigned long index, TestInterfaceEmpty value);
[RaisesException] deleter boolean deleteItem(unsigned long index);
// Named property operations with an identifier
[RaisesException] getter TestInterfaceEmpty namedItem(DOMString name);
- [RaisesException, TypeChecking=Interface] setter TestInterfaceEmpty setNamedItem(DOMString name, TestInterfaceEmpty? value);
+ [RaisesException] setter TestInterfaceEmpty setNamedItem(DOMString name, TestInterfaceEmpty? value);
[RaisesException] deleter boolean deleteNamedItem(DOMString name);
stringifier DOMString stringifierMethod();
diff --git a/bindings/tests/idls/core/TestInterfaceAccessors.idl b/bindings/tests/idls/core/TestInterfaceAccessors.idl
deleted file mode 100644
index e6c4636..0000000
--- a/bindings/tests/idls/core/TestInterfaceAccessors.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// An interface for testing (DoNot)ExposeJSAccessors extended attributes.
-
-[
- ExposeJSAccessors,
-] interface TestInterfaceAccessors : TestInterfaceEmpty {
- attribute long noExposeJSAccessorAttribute;
- [ExposeJSAccessors] attribute long exposeJSAccessorAttribute;
- [DoNotExposeJSAccessors] attribute long doNotExposeJSAccessorAttribute;
-};
diff --git a/bindings/tests/idls/core/TestInterfaceCheckSecurity.idl b/bindings/tests/idls/core/TestInterfaceCheckSecurity.idl
index 56ead63..5aaf41d 100644
--- a/bindings/tests/idls/core/TestInterfaceCheckSecurity.idl
+++ b/bindings/tests/idls/core/TestInterfaceCheckSecurity.idl
@@ -27,7 +27,8 @@
*/
[
- CheckSecurity=Frame,
+ CheckSecurity=Receiver,
+ Global,
] interface TestInterfaceCheckSecurity {
readonly attribute long readonlyLongAttribute;
attribute long longAttribute;
@@ -37,7 +38,6 @@
[DoNotCheckSecurity] readonly attribute long doNotCheckSecurityReadonlyLongAttribute; // Separate read only attribute to check attribute configuration
[DoNotCheckSecurity=Setter] attribute long doNotCheckSecurityOnSetterLongAttribute;
[DoNotCheckSecurity, Replaceable] readonly attribute long doNotCheckSecurityReplaceableReadonlyLongAttribute;
- [DoNotCheckSecurity, Replaceable, ExposeJSAccessors] readonly attribute long doNotCheckSecurityReplaceableReadonlyLongAccessor;
[DoNotCheckSecurity] void doNotCheckSecurityVoidMethod();
[DoNotCheckSecurity, DoNotCheckSignature] void doNotCheckSecurityDoNotCheckSignatureVoidMethod();
diff --git a/bindings/tests/idls/core/TestInterfaceNamedConstructor.idl b/bindings/tests/idls/core/TestInterfaceNamedConstructor.idl
index bc8a06b..1185fab 100644
--- a/bindings/tests/idls/core/TestInterfaceNamedConstructor.idl
+++ b/bindings/tests/idls/core/TestInterfaceNamedConstructor.idl
@@ -27,7 +27,7 @@
*/
[
- ActiveDOMObject,
+ DependentLifetime,
NamedConstructor=Audio(
DOMString stringArg,
[Default=Undefined] optional boolean defaultUndefinedOptionalBooleanArg,
diff --git a/bindings/tests/idls/core/TestInterfaceOwnProperties.idl b/bindings/tests/idls/core/TestInterfaceOwnProperties.idl
deleted file mode 100644
index 940024a..0000000
--- a/bindings/tests/idls/core/TestInterfaceOwnProperties.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// An interface for testing (DoNot)ExposeJSAccessors extended attributes.
-
-[
- DoNotExposeJSAccessors,
-] interface TestInterfaceOwnProperties : TestInterfaceEmpty {
- attribute long noExposeJSAccessorAttribute;
- [ExposeJSAccessors] attribute long exposeJSAccessorAttribute;
- [DoNotExposeJSAccessors] attribute long doNotExposeJSAccessorAttribute;
-};
diff --git a/bindings/tests/idls/core/TestInterfaceOwnPropertiesDerived.idl b/bindings/tests/idls/core/TestInterfaceOwnPropertiesDerived.idl
deleted file mode 100644
index 86f47b6..0000000
--- a/bindings/tests/idls/core/TestInterfaceOwnPropertiesDerived.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// An interface for testing (DoNot)ExposeJSAccessors extended attributes.
-
-interface TestInterfaceOwnPropertiesDerived : TestInterfaceOwnProperties {
- attribute long noExposeJSAccessorAttribute;
- [ExposeJSAccessors] attribute long exposeJSAccessorAttribute;
- [DoNotExposeJSAccessors] attribute long doNotExposeJSAccessorAttribute;
-};
diff --git a/bindings/tests/idls/core/TestObject.idl b/bindings/tests/idls/core/TestObject.idl
index 97a9ab9..4e37b82 100644
--- a/bindings/tests/idls/core/TestObject.idl
+++ b/bindings/tests/idls/core/TestObject.idl
@@ -42,7 +42,6 @@
const unsigned short CONST_VALUE_4 = 4;
const unsigned short CONST_VALUE_8 = 8;
const short CONST_VALUE_9 = -1;
- const DOMString CONST_VALUE_10 = "my constant string";
const unsigned short CONST_VALUE_11 = 0xffffffff;
const unsigned short CONST_VALUE_12 = 0x01;
const unsigned short CONST_VALUE_13 = 0X20;
@@ -63,7 +62,16 @@
// Extended attributes
[DeprecateAs=Constant] const short DEPRECATED_CONSTANT = 1;
[MeasureAs=Constant] const short MEASURED_CONSTANT = 1;
- [RuntimeEnabled=FeatureName] const short FEATURE_ENABLED_CONST = 1;
+ [RuntimeEnabled=FeatureName1] const short FEATURE1_ENABLED_CONST1 = 1;
+ [RuntimeEnabled=FeatureName1] const short FEATURE1_ENABLED_CONST2 = 2;
+ [RuntimeEnabled=FeatureName2] const short FEATURE2_ENABLED_CONST1 = 3;
+ [RuntimeEnabled=FeatureName2] const short FEATURE2_ENABLED_CONST2 = 4;
+ [RuntimeEnabled=FeatureName3] const short FEATURE3_ENABLED_CONST1 = 5;
+ [RuntimeEnabled=FeatureName1, OriginTrialEnabled=FeatureName1] const short FEATURE1_RUNTIME_AND_EXPERIMENT_ENABLED_CONST1 = 1;
+ [RuntimeEnabled=FeatureName1, OriginTrialEnabled=FeatureName1] const short FEATURE1_RUNTIME_AND_EXPERIMENT_ENABLED_CONST2 = 2;
+ [RuntimeEnabled=FeatureName2, OriginTrialEnabled=FeatureName2] const short FEATURE2_RUNTIME_AND_EXPERIMENT_ENABLED_CONST1 = 3;
+ [RuntimeEnabled=FeatureName2, OriginTrialEnabled=FeatureName2] const short FEATURE2_RUNTIME_AND_EXPERIMENT_ENABLED_CONST2 = 4;
+ [RuntimeEnabled=FeatureName3, OriginTrialEnabled=FeatureName3] const short FEATURE3_RUNTIME_AND_EXPERIMENT_ENABLED_CONST1 = 5;
[Reflect=CONST_IMPL] const short CONST_JAVASCRIPT = 1;
stringifier attribute DOMString stringifierAttribute;
@@ -174,8 +182,7 @@
[CallWith=ExecutionContext] attribute any callWithExecutionContextAnyAttribute;
[CallWith=ScriptState] attribute any callWithScriptStateAnyAttribute;
[CallWith=(ExecutionContext,ScriptState)] attribute any callWithExecutionContextAndScriptStateAnyAttribute;
- [CheckSecurity=Node] readonly attribute Document checkSecurityForNodeReadonlyDocumentAttribute; // All uses are read only
- [Conditional=CONDITION] attribute long conditionalLongAttribute;
+ [CheckSecurity=ReturnValue] readonly attribute Document checkSecurityForNodeReadonlyDocumentAttribute; // All uses are read only
// Constructors: FIXME: replace suffix with [ConstructorAttribute]
attribute TestInterfaceEmptyConstructor testInterfaceEmptyConstructorAttribute;
[DeprecateAs=deprecatedTestInterfaceEmptyConstructorAttribute] attribute TestInterfaceEmptyConstructor testInterfaceEmptyConstructorAttribute;
@@ -184,11 +191,10 @@
[Custom=Getter] attribute long customGetterLongAttribute;
[Custom=Getter] readonly attribute object customGetterReadonlyObjectAttribute;
[Custom=Setter] attribute long customSetterLongAttribute;
- [Conditional=CONDITION, Custom] attribute long customLongAttribute;
[CustomElementCallbacks] readonly attribute long customElementsCallbacksReadonlyLongAttribute;
[DeprecateAs=LongAttribute] attribute long deprecatedLongAttribute;
[EnforceRange] attribute long enforceRangeLongAttribute;
- [ExposeJSAccessors] attribute long exposeJSAccessorsLongAttribute;
+ [OriginTrialEnabled=FeatureName, RuntimeEnabled=FeatureName] attribute long experimentRuntimeEnabledLongAttribute;
[ImplementedAs=implementedAsName] attribute long implementedAsLongAttribute;
[Custom, ImplementedAs=implementedAsNameWithCustom] attribute long customImplementedAsLongAttribute;
[Custom=Getter, ImplementedAs=implementedAsNameWithCustomGetter] attribute long customGetterImplementedAsLongAttribute;
@@ -205,7 +211,7 @@
[PutForwards=hrefCallWith] readonly attribute TestNode locationWithCallWith;
[PutForwards=hrefByteString] readonly attribute TestNode locationByteString;
[PerWorldBindings, PutForwards=href] readonly attribute TestNode locationWithPerWorldBindings;
- [TypeChecking=Interface, PutForwards=href] readonly attribute TestNode locationTypeCheckingInterface;
+ [PutForwards=href, LegacyInterfaceTypeChecking] readonly attribute TestNode locationLegacyInterfaceTypeChecking;
[PutForwards=attr1] readonly attribute TestInterfaceGarbageCollected locationGarbageCollected;
[PutForwards=attr1] readonly attribute TestInterfaceWillBeGarbageCollected locationWillBeGarbageCollected;
[RaisesException] attribute long raisesExceptionLongAttribute;
@@ -238,30 +244,22 @@
[Reflect, ReflectOnly=("empty","missing","invalid","a-normal"), ReflectEmpty="empty", ReflectMissing="missing", ReflectInvalid="invalid"] readonly attribute DOMString limitedWithEmptyMissingInvalidAttribute;
[Replaceable] readonly attribute long replaceableReadonlyLongAttribute;
- [Replaceable, ExposeJSAccessors] readonly attribute long replaceableReadonlyLongAccessor;
[PutForwards=href] readonly attribute TestNode locationPutForwards;
[RuntimeEnabled=FeatureName] attribute long runtimeEnabledLongAttribute;
- [Conditional=CONDITION, RuntimeEnabled=FeatureName] attribute long conditionalRuntimeEnabledLongAttribute;
[SetterCallWith=(ActiveWindow,FirstWindow)] attribute DOMString setterCallWithActiveWindowAndFirstWindowStringAttribute;
[SetterCallWith=ExecutionContext] attribute DOMString setterCallWithExecutionContextStringAttribute;
[TreatNullAs=EmptyString] attribute DOMString treatNullAsEmptyStringStringAttribute;
[TreatNullAs=NullString] attribute DOMString treatNullAsNullStringStringAttribute;
- [TreatReturnedNullStringAs=Null] attribute DOMString treatReturnedNullStringAsNullStringAttribute;
- [TreatReturnedNullStringAs=Undefined] attribute DOMString treatReturnedNullStringAsUndefinedStringAttribute;
- [TreatReturnedNullStringAs=Undefined, CachedAttribute=isStringDirty] attribute DOMString cachedTreatReturnedNullStringAsUndefinedStringAttribute;
- [TreatReturnedNullStringAs=Null] attribute ByteString treatReturnedNullStringAsNullByteStringAttribute;
- [TreatReturnedNullStringAs=Undefined] attribute ByteString treatReturnedNullStringAsUndefinedByteStringAttribute;
- [TreatReturnedNullStringAs=Null] attribute USVString treatReturnedNullStringAsNullUSVStringAttribute;
- [TreatReturnedNullStringAs=Undefined] attribute USVString treatReturnedNullStringAsUndefinedUSVStringAttribute;
- [TypeChecking=Interface] attribute float typeCheckingInterfaceFloatAttribute; // nop for non-interface types
- [TypeChecking=Interface] attribute TestInterface typeCheckingInterfaceTestInterfaceAttribute;
- [TypeChecking=Interface] attribute TestInterface? typeCheckingInterfaceTestInterfaceOrNullAttribute;
+ [LegacyInterfaceTypeChecking] attribute float legacyInterfaceTypeCheckingFloatAttribute; // nop for non-interface types
+ [LegacyInterfaceTypeChecking] attribute TestInterface legacyInterfaceTypeCheckingTestInterfaceAttribute;
+ [LegacyInterfaceTypeChecking] attribute TestInterface? legacyInterfaceTypeCheckingTestInterfaceOrNullAttribute;
[Reflect, URL] attribute DOMString urlStringAttribute;
[Reflect=reflectUrlAttribute, URL] attribute DOMString urlStringAttribute;
[Unforgeable] attribute long unforgeableLongAttribute;
[Measure] attribute long measuredLongAttribute;
[SameObject] attribute TestInterface sameObjectAttribute;
[Unscopeable] attribute long unscopeableLongAttribute;
+ [Unscopeable, OriginTrialEnabled=FeatureName, RuntimeEnabled=FeatureName] attribute long unscopeableExperimentEnabledLongAttribute;
[Unscopeable, RuntimeEnabled=FeatureName] attribute long unscopeableRuntimeEnabledLongAttribute;
[Unscopeable] void unscopeableVoidMethod();
[Unscopeable, RuntimeEnabled=FeatureName] void unscopeableRuntimeEnabledVoidMethod();
@@ -341,6 +339,8 @@
void voidMethodArrayBufferArg(ArrayBuffer arrayBufferArg);
void voidMethodArrayBufferOrNullArg(ArrayBuffer? arrayBufferArg);
void voidMethodArrayBufferViewArg(ArrayBufferView arrayBufferViewArg);
+ void voidMethodFlexibleArrayBufferViewArg([FlexibleArrayBufferView] ArrayBufferView arrayBufferViewArg);
+ void voidMethodFlexibleArrayBufferViewTypedArg([FlexibleArrayBufferView] Float32Array typedArrayBufferViewArg);
void voidMethodFloat32ArrayArg(Float32Array float32ArrayArg);
void voidMethodInt32ArrayArg(Int32Array int32ArrayArg);
void voidMethodUint8ArrayArg(Uint8Array uint8ArrayArg);
@@ -515,16 +515,21 @@
[CallWith=ActiveWindow] void callWithActiveWindow();
[CallWith=(ActiveWindow,FirstWindow)] void callWithActiveWindowScriptWindow();
[CallWith=ThisValue] void callWithThisValue();
- [CheckSecurity=Node] void checkSecurityForNodeVoidMethod();
- [Conditional=CONDITION] void conditionalConditionVoidMethod();
- [Conditional=CONDITION] static void conditionalConditionStaticVoidMethod();
+ [CheckSecurity=ReturnValue] void checkSecurityForNodeVoidMethod();
[Custom] void customVoidMethod();
[Custom=CallPrologue] void customCallPrologueVoidMethod();
[Custom=CallEpilogue] void customCallEpilogueVoidMethod();
- [Conditional=CONDITION, Custom] void conditionalConditionCustomVoidMethod();
[CustomElementCallbacks] void customElementCallbacksVoidMethod();
[DeprecateAs=voidMethod] void deprecatedVoidMethod();
[DoNotCheckSignature] void doNotCheckSignatureVoidMethod();
+ [OriginTrialEnabled=FeatureName, RuntimeEnabled=FeatureName1] void experimentEnabledVoidMethod();
+ [PerWorldBindings, OriginTrialEnabled=FeatureName, RuntimeEnabled=FeatureName1] void perWorldBindingsExperimentEnabledVoidMethod();
+ [OriginTrialEnabled=FeatureName, RuntimeEnabled=FeatureName1] void experimentEnabledOverloadedVoidMethod(DOMString stringArg);
+ [OriginTrialEnabled=FeatureName, RuntimeEnabled=FeatureName1] void experimentEnabledOverloadedVoidMethod(long longArg);
+ [OriginTrialEnabled=FeatureName1, RuntimeEnabled=FeatureName1] void partiallyExperimentEnabledOverloadedVoidMethod(DOMString stringArg);
+ [OriginTrialEnabled=FeatureName2, RuntimeEnabled=FeatureName1] void partiallyExperimentEnabledOverloadedVoidMethod(TestInterface testInterfaceArg);
+ void partiallyExperimentEnabledOverloadedVoidMethod(long longArg, DOMString stringArg);
+ [OriginTrialEnabled=FeatureName3] void partiallyExperimentEnabledOverloadedVoidMethod(long longArg, DOMString stringArg, TestInterface testInterfaceArg);
[ImplementedAs=implementedAsMethodName] void implementedAsVoidMethod();
[MeasureAs=TestFeature] void measureAsVoidMethod();
[Measure] void measureMethod();
@@ -566,19 +571,12 @@
[RuntimeEnabled=FeatureName2] void partiallyRuntimeEnabledOverloadedVoidMethod(TestInterface testInterfaceArg);
void partiallyRuntimeEnabledOverloadedVoidMethod(long longArg, DOMString stringArg);
[RuntimeEnabled=FeatureName3] void partiallyRuntimeEnabledOverloadedVoidMethod(long longArg, DOMString stringArg, TestInterface testInterfaceArg);
- [TreatReturnedNullStringAs=Null] DOMString treatReturnedNullStringAsNullStringMethod();
- [TreatReturnedNullStringAs=Undefined] DOMString treatReturnedNullStringAsUndefinedStringMethod();
- [TreatReturnedNullStringAs=Null] ByteString treatReturnedNullStringAsNullByteStringMethod();
- [TreatReturnedNullStringAs=Undefined] ByteString treatReturnedNullStringAsUndefinedByteStringMethod();
- [TreatReturnedNullStringAs=Null] USVString treatReturnedNullStringAsNullUSVStringMethod();
- [TreatReturnedNullStringAs=Undefined] USVString treatReturnedNullStringAsUndefinedUSVStringMethod();
- [TypeChecking=Interface] void typeCheckingInterfaceVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
- [TypeChecking=Interface] void typeCheckingInterfaceVoidMethodTestInterfaceEmptyVariadicArg(TestInterfaceEmpty... testInterfaceEmptyArg);
+ [LegacyInterfaceTypeChecking] void legacyInterfaceTypeCheckingVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
+ [LegacyInterfaceTypeChecking] void legacyInterfaceTypeCheckingVoidMethodTestInterfaceEmptyVariadicArg(TestInterfaceEmpty... testInterfaceEmptyArg);
// Avoid redundant type checking
- [TypeChecking=Interface] void useToImpl4ArgumentsCheckingIfPossibleWithOptionalArg(Node node1, optional Node node2);
- [TypeChecking=Interface] void useToImpl4ArgumentsCheckingIfPossibleWithNullableArg(Node node1, Node? node2);
- [TypeChecking=Interface] void useToImpl4ArgumentsCheckingIfPossibleWithUndefinedArg(Node node1, [Default=Undefined] optional Node node2);
- void typeCheckingUnrestrictedVoidMethodFloatArgDoubleArg(float floatArg, double doubleArg);
+ void useToImpl4ArgumentsCheckingIfPossibleWithOptionalArg(Node node1, optional Node node2);
+ void useToImpl4ArgumentsCheckingIfPossibleWithNullableArg(Node node1, Node? node2);
+ void useToImpl4ArgumentsCheckingIfPossibleWithUndefinedArg(Node node1, [Default=Undefined] optional Node node2);
[Unforgeable] void unforgeableVoidMethod();
void voidMethodTestInterfaceGarbageCollectedSequenceArg(sequence<TestInterfaceGarbageCollected> testInterfaceGarbageCollectedSequenceArg);
void voidMethodTestInterfaceGarbageCollectedArrayArg(TestInterfaceGarbageCollected[] testInterfaceGarbageCollectedArrayArg);
diff --git a/bindings/tests/idls/core/TestPartialInterface.idl b/bindings/tests/idls/core/TestPartialInterface.idl
index 2981f87..0bc42ac 100644
--- a/bindings/tests/idls/core/TestPartialInterface.idl
+++ b/bindings/tests/idls/core/TestPartialInterface.idl
@@ -37,10 +37,10 @@
callback PartialCallbackType = void (PartialString value);
[
- Conditional=PARTIAL_CONDITION,
RuntimeEnabled=PartialFeatureName,
] partial interface TestInterface {
const unsigned short PARTIAL_UNSIGNED_SHORT = 0;
+ const double PARTIAL_DOUBLE = 3.14;
attribute long partialLongAttribute;
static attribute long partialStaticLongAttribute;
diff --git a/bindings/tests/idls/core/TestPartialInterface4.idl b/bindings/tests/idls/core/TestPartialInterface4.idl
deleted file mode 100644
index fcdbd80..0000000
--- a/bindings/tests/idls/core/TestPartialInterface4.idl
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- Conditional=FOO,
- TypeChecking=Interface,
-] partial interface TestInterface3 {
- [Conditional=BAR] static void voidMethodDocument(Document document, double d);
-};
diff --git a/bindings/tests/idls/core/TestSpecialOperations.idl b/bindings/tests/idls/core/TestSpecialOperations.idl
index 0f3c2de..73c7c13 100644
--- a/bindings/tests/idls/core/TestSpecialOperations.idl
+++ b/bindings/tests/idls/core/TestSpecialOperations.idl
@@ -5,8 +5,8 @@
[
OverrideBuiltins,
] interface TestSpecialOperations {
- // [ImplementedAs], [TypeChecking=Interface], union return, nullability
+ // [ImplementedAs], union return, nullability
// [OverrideBuiltins] affects named property operations
[ImplementedAs=getItem] getter (Node or NodeList) namedItem(DOMString name);
- [TypeChecking=Interface] setter Node (DOMString name, Node? value);
+ setter Node (DOMString name, Node? value);
};
diff --git a/bindings/tests/idls/core/TestTypedefs.idl b/bindings/tests/idls/core/TestTypedefs.idl
index 996f1c1..9f3006e 100644
--- a/bindings/tests/idls/core/TestTypedefs.idl
+++ b/bindings/tests/idls/core/TestTypedefs.idl
@@ -48,6 +48,7 @@
] interface TestTypedefs {
attribute ULongLong uLongLongAttribute;
attribute T tAttribute;
+ attribute DOMStringOrDouble? domStringOrDoubleOrNullAttribute;
void voidMethodArrayOfLongsArg(optional ArrayOfLongs arrayOfLongsArg);
diff --git a/bindings/tests/idls/modules/TestInterface5.idl b/bindings/tests/idls/modules/TestInterface5.idl
index d08b7cb..7179186 100644
--- a/bindings/tests/idls/modules/TestInterface5.idl
+++ b/bindings/tests/idls/modules/TestInterface5.idl
@@ -34,19 +34,16 @@
enum TestEnumModules { "EnumModulesValue1", "EnumModulesValue2" };
[
- ActiveDOMObject,
- Conditional=CONDITION,
+ DependentLifetime,
Custom=LegacyCallAsFunction,
DoNotCheckConstants,
ImplementedAs=TestInterface5Implementation,
RuntimeEnabled=FeatureName,
SetWrapperReferenceTo(TestInterface5 referencedName),
- TypeChecking=Interface,
Exposed=(Worker,Window),
] interface TestInterface5 : TestInterfaceEmpty {
// members needed to test [ImplementedAs], as this affect attribute
- // configuration and method configuration, and [TypeChecking]
- // constants also needed for [DoNotCheckConstants]
+ // configuration and method configuration
const unsigned long UNSIGNED_LONG = 0;
[Reflect=CONST_CPP] const short CONST_JAVASCRIPT = 1;
@@ -96,4 +93,3 @@
iterable<any>;
};
-
diff --git a/core/README b/core/README
deleted file mode 100644
index 630832e..0000000
--- a/core/README
+++ /dev/null
@@ -1,9 +0,0 @@
-This directory contains a copy of WebKit/WebCore IDL files.
-See the attached LICENSE-* files in this directory.
-
-Please do not modify the files here. They are periodically copied
-using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
-
-The current version corresponds to:
-URL: https://src.chromium.org/blink/branches/dart/2454_1
-Current revision: 202759
diff --git a/core/animation/Animation.idl b/core/animation/Animation.idl
index 76ef6bb..34099ba 100644
--- a/core/animation/Animation.idl
+++ b/core/animation/Animation.idl
@@ -33,7 +33,7 @@
enum AnimationPlayState { "idle", "pending", "running", "paused", "finished" };
[
- ActiveDOMObject,
+ DependentLifetime,
NoInterfaceObject,
] interface Animation : EventTarget {
// TODO(dstockwell): Add timeline property.
@@ -43,14 +43,13 @@
[Measure] attribute double playbackRate;
[Measure] readonly attribute AnimationPlayState playState;
[Measure, RaisesException] void finish();
- [Measure] void play();
- [Measure] void pause();
- [Measure] void reverse();
- [RuntimeEnabled=WebAnimationsAPI] attribute double startClip;
- [RuntimeEnabled=WebAnimationsAPI] attribute double endClip;
-
+ [Measure, RaisesException] void play();
+ [Measure, RaisesException] void pause();
+ [Measure, RaisesException] void reverse();
+ [Measure] attribute DOMString id;
[Measure] void cancel();
[Measure] attribute EventHandler onfinish;
+ [Measure] attribute EventHandler oncancel;
[RuntimeEnabled=WebAnimationsAPI, CallWith=ScriptState] readonly attribute Promise<Animation> finished;
[RuntimeEnabled=WebAnimationsAPI, CallWith=ScriptState] readonly attribute Promise<Animation> ready;
};
diff --git a/core/animation/AnimationEffectReadOnly.idl b/core/animation/AnimationEffectReadOnly.idl
index 06540d1..8011f9c 100644
--- a/core/animation/AnimationEffectReadOnly.idl
+++ b/core/animation/AnimationEffectReadOnly.idl
@@ -32,7 +32,7 @@
[
RuntimeEnabled=WebAnimationsAPI,
- WillBeGarbageCollected,
+ GarbageCollected,
ImplementedAs=AnimationEffect,
] interface AnimationEffectReadOnly {
readonly attribute AnimationEffectTiming timing;
diff --git a/core/animation/AnimationEffectTiming.idl b/core/animation/AnimationEffectTiming.idl
index 59a395e..70d016f 100644
--- a/core/animation/AnimationEffectTiming.idl
+++ b/core/animation/AnimationEffectTiming.idl
@@ -7,7 +7,7 @@
[
RuntimeEnabled=WebAnimationsAPI,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface AnimationEffectTiming {
attribute double delay;
attribute double endDelay;
diff --git a/core/animation/AnimationTimeline.idl b/core/animation/AnimationTimeline.idl
index 81f4238..772b2e6 100644
--- a/core/animation/AnimationTimeline.idl
+++ b/core/animation/AnimationTimeline.idl
@@ -9,7 +9,7 @@
[
RuntimeEnabled=WebAnimationsAPI,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface AnimationTimeline {
attribute double? currentTime;
attribute double playbackRate;
diff --git a/core/animation/EffectModel.idl b/core/animation/EffectModel.idl
index 38c7185..6393414 100644
--- a/core/animation/EffectModel.idl
+++ b/core/animation/EffectModel.idl
@@ -10,6 +10,6 @@
[
RuntimeEnabled=WebAnimationsAPI,
NoInterfaceObject,
- WillBeGarbageCollected
+ GarbageCollected
] interface EffectModel {
};
diff --git a/core/animation/ElementAnimation.idl b/core/animation/ElementAnimation.idl
index 7129e4d..a6ac513 100644
--- a/core/animation/ElementAnimation.idl
+++ b/core/animation/ElementAnimation.idl
@@ -37,8 +37,8 @@
partial interface Element {
// FIXME: Union types with dictionary type members doesn't work (yet).
- // Animation animate((EffectModel or sequence<Dictionary>)? effect, optional (double or KeyframeEffectOptions) timing);
- [Measure, RaisesException] Animation animate((EffectModel or sequence<Dictionary>)? effect, optional double timing);
- [Measure, RaisesException] Animation animate((EffectModel or sequence<Dictionary>)? effect, KeyframeEffectOptions timing);
+ // Animation animate((EffectModel or sequence<Dictionary> or Dictionary)? effect, optional (double or KeyframeEffectOptions) timing);
+ [Measure, RaisesException] Animation animate((EffectModel or sequence<Dictionary> or Dictionary)? effect, optional double timing);
+ [Measure, RaisesException] Animation animate((EffectModel or sequence<Dictionary> or Dictionary)? effect, KeyframeEffectOptions timing);
[RuntimeEnabled=WebAnimationsAPI] sequence<Animation> getAnimations();
};
diff --git a/core/animation/KeyframeEffect.idl b/core/animation/KeyframeEffect.idl
index 0235507..5ec493d 100644
--- a/core/animation/KeyframeEffect.idl
+++ b/core/animation/KeyframeEffect.idl
@@ -32,10 +32,9 @@
[
// TODO(dstockwell): the third argument should be "optional (unrestricted double or KeyframeEffectOptions) timing".
- Constructor(Element? target, sequence<Dictionary> keyframes, optional unrestricted double timing),
- Constructor(Element? target, sequence<Dictionary> keyframes, KeyframeEffectOptions timing),
+ Constructor(Element? target, (EffectModel or sequence<Dictionary> or Dictionary)? effect, optional unrestricted double timing),
+ Constructor(Element? target, (EffectModel or sequence<Dictionary> or Dictionary)? effect, KeyframeEffectOptions timing),
RaisesException=Constructor,
RuntimeEnabled=WebAnimationsAPI,
- TypeChecking=Interface,
] interface KeyframeEffect : AnimationEffectReadOnly {
};
diff --git a/core/animation/KeyframeEffectOptions.idl b/core/animation/KeyframeEffectOptions.idl
index 9585948..fbf78ad 100644
--- a/core/animation/KeyframeEffectOptions.idl
+++ b/core/animation/KeyframeEffectOptions.idl
@@ -2,20 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// https://w3c.github.io/web-animations/#the-animationeffecttimingproperties-dictionary
+// https://w3c.github.io/web-animations/#the-keyframeeffectoptions-dictionary
-// TODO(dstockwell): Rename this to AnimationEffectTimingProperties.
+enum FillMode { "none", "forwards", "backwards", "both", "auto" };
+enum PlaybackDirection { "normal", "reverse", "alternate", "alternate-reverse" };
+
dictionary KeyframeEffectOptions {
double delay = 0;
double endDelay = 0;
- // TODO(dstockwell): The fill type should be FillMode.
- DOMString fill = "auto";
+ FillMode fill = "auto";
double iterationStart = 0.0;
unrestricted double iterations = 1.0;
(unrestricted double or DOMString) duration = "auto";
// TODO(dstockwell): There is no playbackRate member in the spec.
double playbackRate = 1.0;
- // TODO(dstockwell): The direction type should be PlaybackDirection.
- DOMString direction = "normal";
+ PlaybackDirection direction = "normal";
DOMString easing = "linear";
+ DOMString id = "";
};
diff --git a/core/clipboard/DataTransfer.idl b/core/clipboard/DataTransfer.idl
index 3b5e1b4..5b22118 100644
--- a/core/clipboard/DataTransfer.idl
+++ b/core/clipboard/DataTransfer.idl
@@ -36,7 +36,7 @@
[SameObject] readonly attribute DataTransferItemList items;
- [RaisesException] void setDragImage(Element image, long x, long y);
+ void setDragImage(Element image, long x, long y);
/* old interface */
[SameObject] readonly attribute DOMString[] types;
diff --git a/core/clipboard/DataTransferItemList.idl b/core/clipboard/DataTransferItemList.idl
index 4349174..8a3e6c8 100644
--- a/core/clipboard/DataTransferItemList.idl
+++ b/core/clipboard/DataTransferItemList.idl
@@ -31,7 +31,6 @@
// https://html.spec.whatwg.org/#the-datatransferitemlist-interface
[
- TypeChecking=Interface,
GarbageCollected,
] interface DataTransferItemList {
readonly attribute unsigned long length;
diff --git a/core/css/CSS.idl b/core/css/CSS.idl
index 7e5e2e0..185541c 100644
--- a/core/css/CSS.idl
+++ b/core/css/CSS.idl
@@ -35,4 +35,5 @@
] interface CSS {
static boolean supports(DOMString property, DOMString value);
static boolean supports(DOMString conditionText);
+ static DOMString escape(DOMString ident);
};
diff --git a/core/css/CSSFontFaceRule.idl b/core/css/CSSFontFaceRule.idl
index 6d2ece7..cc71dcd 100644
--- a/core/css/CSSFontFaceRule.idl
+++ b/core/css/CSSFontFaceRule.idl
@@ -27,5 +27,5 @@
// TODO(philipj): Implement the interface from CSS Fonts.
interface CSSFontFaceRule : CSSRule {
- readonly attribute CSSStyleDeclaration style;
+ [Measure] readonly attribute CSSStyleDeclaration style;
};
diff --git a/core/css/CSSNamespaceRule.idl b/core/css/CSSNamespaceRule.idl
new file mode 100644
index 0000000..d48fc9a
--- /dev/null
+++ b/core/css/CSSNamespaceRule.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+
+// http://dev.w3.org/csswg/cssom-1/#the-cssnamespacerule-interface
+
+interface CSSNamespaceRule : CSSRule {
+
+ readonly attribute DOMString namespaceURI;
+ readonly attribute DOMString prefix;
+};
diff --git a/core/css/CSSRule.idl b/core/css/CSSRule.idl
index 894ef34..a064711 100644
--- a/core/css/CSSRule.idl
+++ b/core/css/CSSRule.idl
@@ -32,8 +32,7 @@
const unsigned short PAGE_RULE = 6;
// TODO(philipj): Implement CSSMarginRule.
// const unsigned short MARGIN_RULE = 9;
- // TODO(philipj): Implement CSSNamespaceRule. crbug.com/389549
- // const unsigned short NAMESPACE_RULE = 10;
+ const unsigned short NAMESPACE_RULE = 10;
readonly attribute unsigned short type;
attribute DOMString cssText;
readonly attribute CSSRule? parentRule;
diff --git a/core/css/CSSStyleDeclaration.idl b/core/css/CSSStyleDeclaration.idl
index 24fdfbb..b109bb0 100644
--- a/core/css/CSSStyleDeclaration.idl
+++ b/core/css/CSSStyleDeclaration.idl
@@ -24,22 +24,19 @@
DependentLifetime,
WillBeGarbageCollected
] interface CSSStyleDeclaration {
- // TODO(philipj): cssText should not be nullable.
- [RaisesException=Setter] attribute DOMString? cssText;
+ [RaisesException=Setter] attribute DOMString cssText;
readonly attribute unsigned long length;
getter DOMString item(unsigned long index);
- // TODO(philipj): All DOMString? return types in this interface should be
- // just DOMString (not nullable).
- DOMString? getPropertyValue(DOMString property);
- DOMString? getPropertyPriority(DOMString property);
+ DOMString getPropertyValue(DOMString property);
+ DOMString getPropertyPriority(DOMString property);
// TODO(philipj): The value and priority arguments should have
// [TreatNullAs=EmptyString] and should not be nullable.
[RaisesException] void setProperty(DOMString property, DOMString? value, optional DOMString? priority = null);
// void setPropertyValue(DOMString property, [TreatNullAs=EmptyString] DOMString value);
// void setPropertyPriority(DOMString property, [TreatNullAs=EmptyString] DOMString priority);
- [RaisesException] DOMString? removeProperty(DOMString property);
+ [RaisesException] DOMString removeProperty(DOMString property);
readonly attribute CSSRule? parentRule;
- // [TreatNullAs=EmptyString] attribute DOMString cssFloat;
+ [RaisesException=Setter, TreatNullAs=EmptyString] attribute DOMString cssFloat;
// The camel-cased and dashed attribute getters have custom bindings.
// http://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-camel-cased-attribute
diff --git a/core/css/CSSStyleRule.idl b/core/css/CSSStyleRule.idl
index c1b2908..52503b8 100644
--- a/core/css/CSSStyleRule.idl
+++ b/core/css/CSSStyleRule.idl
@@ -22,6 +22,5 @@
interface CSSStyleRule : CSSRule {
attribute DOMString selectorText;
- // TODO(philipj): style should have [PutForwards=cssText].
- [SameObject] readonly attribute CSSStyleDeclaration style;
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
};
diff --git a/core/css/FontFace.idl b/core/css/FontFace.idl
index 37e45c4..527e800 100644
--- a/core/css/FontFace.idl
+++ b/core/css/FontFace.idl
@@ -39,10 +39,11 @@
// TODO(philipj): This interface should be [Exposed=Window,Worker].
[
- ActiveDOMObject,
+ DependentLifetime,
// FIXME: This should be (DOMString or BinaryData), where BinaryData is typedef of (ArrayBuffer or ArrayBufferView)
Constructor(DOMString family, (DOMString or ArrayBuffer or ArrayBufferView) source, optional FontFaceDescriptors descriptors),
ConstructorCallWith=ExecutionContext,
+ MeasureAs=FontFaceConstructor,
WillBeGarbageCollected,
] interface FontFace {
[RaisesException=Setter, SetterCallWith=ExecutionContext] attribute DOMString family;
diff --git a/core/css/FontFaceSet.idl b/core/css/FontFaceSet.idl
index 50525e5..9f7480e 100644
--- a/core/css/FontFaceSet.idl
+++ b/core/css/FontFaceSet.idl
@@ -35,19 +35,12 @@
// TODO(philipj): This interface should be [Exposed=Window,Worker] and should
// have a constructor, and thus not have [NoInterfaceObject].
[
- ActiveDOMObject,
+ DependentLifetime,
SetWrapperReferenceFrom=document,
NoInterfaceObject,
] interface FontFaceSet : EventTarget {
- // TODO(ksakamoto): Make FontFaceSet Set-like. crbug.com/392075
- // setlike<FontFace>;
- void forEach(FontFaceSetForEachCallback callback, optional any thisArg);
- [RaisesException] boolean has(FontFace fontFace);
+ setlike<FontFace>;
readonly attribute unsigned long size;
- // TODO(philipj): add() should return the FontFaceSet.
- [RaisesException] void add(FontFace fontFace);
- [RaisesException, ImplementedAs=remove] boolean delete(FontFace fontFace);
- void clear();
// events for when loading state changes
attribute EventHandler onloading;
diff --git a/core/css/FontFaceSetForEachCallback.idl b/core/css/FontFaceSetForEachCallback.idl
deleted file mode 100644
index ac6c771..0000000
--- a/core/css/FontFaceSetForEachCallback.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// TODO(ksakamoto): Remove this interface when FontFaceSet is made Set-like.
-// crbug.com/392075
-callback interface FontFaceSetForEachCallback {
- [CallWith=ThisValue] boolean handleItem(FontFace fontFace, FontFace fontFaceAgain, FontFaceSet set);
- boolean handleItem(FontFace fontFace, FontFace fontFaceAgain, FontFaceSet set);
-};
diff --git a/core/css/MediaQueryList.idl b/core/css/MediaQueryList.idl
index 7c1a4af..f1906be 100644
--- a/core/css/MediaQueryList.idl
+++ b/core/css/MediaQueryList.idl
@@ -20,7 +20,7 @@
// http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface
[
- ActiveDOMObject,
+ DependentLifetime,
] interface MediaQueryList : EventTarget {
readonly attribute DOMString media;
readonly attribute boolean matches;
diff --git a/core/css/WebKitCSSMatrix.idl b/core/css/WebKitCSSMatrix.idl
index b224c07..b43ec06 100644
--- a/core/css/WebKitCSSMatrix.idl
+++ b/core/css/WebKitCSSMatrix.idl
@@ -60,47 +60,46 @@
[RaisesException] void setMatrixValue([Default=Undefined] optional DOMString string);
// Multiply this matrix by secondMatrix, on the right (result = this * secondMatrix)
- [Immutable] WebKitCSSMatrix multiply([Default=Undefined] optional WebKitCSSMatrix secondMatrix);
+ [LegacyInterfaceTypeChecking] WebKitCSSMatrix multiply([Default=Undefined] optional WebKitCSSMatrix secondMatrix);
// Return the inverse of this matrix. Throw an exception if the matrix is not invertible
- [Immutable, RaisesException] WebKitCSSMatrix inverse();
+ [RaisesException] WebKitCSSMatrix inverse();
// Return this matrix translated by the passed values.
// Passing a NaN will use a value of 0. This allows the 3D form to used for 2D operations
- [Immutable] WebKitCSSMatrix translate([Default=Undefined] optional unrestricted double x,
- [Default=Undefined] optional unrestricted double y,
- [Default=Undefined] optional unrestricted double z);
+ WebKitCSSMatrix translate([Default=Undefined] optional unrestricted double x,
+ [Default=Undefined] optional unrestricted double y,
+ [Default=Undefined] optional unrestricted double z);
// Returns this matrix scaled by the passed values.
// Passing scaleX or scaleZ as NaN uses a value of 1, but passing scaleY of NaN
// makes it the same as scaleX. This allows the 3D form to used for 2D operations
- [Immutable] WebKitCSSMatrix scale([Default=Undefined] optional unrestricted double scaleX,
- [Default=Undefined] optional unrestricted double scaleY,
- [Default=Undefined] optional unrestricted double scaleZ);
+ WebKitCSSMatrix scale([Default=Undefined] optional unrestricted double scaleX,
+ [Default=Undefined] optional unrestricted double scaleY,
+ [Default=Undefined] optional unrestricted double scaleZ);
// Returns this matrix rotated by the passed values.
// If rotY and rotZ are NaN, rotate about Z (rotX=0, rotateY=0, rotateZ=rotX).
// Otherwise use a rotation value of 0 for any passed NaN.
- [Immutable] WebKitCSSMatrix rotate([Default=Undefined] optional unrestricted double rotX,
- [Default=Undefined] optional unrestricted double rotY,
- [Default=Undefined] optional unrestricted double rotZ);
+ WebKitCSSMatrix rotate([Default=Undefined] optional unrestricted double rotX,
+ [Default=Undefined] optional unrestricted double rotY,
+ [Default=Undefined] optional unrestricted double rotZ);
// Returns this matrix rotated about the passed axis by the passed angle.
// Passing a NaN will use a value of 0. If the axis is (0,0,0) use a value
// of (0,0,1).
- [Immutable] WebKitCSSMatrix rotateAxisAngle([Default=Undefined] optional unrestricted double x,
- [Default=Undefined] optional unrestricted double y,
- [Default=Undefined] optional unrestricted double z,
- [Default=Undefined] optional unrestricted double angle);
+ WebKitCSSMatrix rotateAxisAngle([Default=Undefined] optional unrestricted double x,
+ [Default=Undefined] optional unrestricted double y,
+ [Default=Undefined] optional unrestricted double z,
+ [Default=Undefined] optional unrestricted double angle);
// Returns this matrix skewed along the X axis by the passed values.
// Passing a NaN will use a value of 0.
- [Immutable] WebKitCSSMatrix skewX([Default=Undefined] optional unrestricted double angle);
+ WebKitCSSMatrix skewX([Default=Undefined] optional unrestricted double angle);
// Returns this matrix skewed along the Y axis by the passed values.
// Passing a NaN will use a value of 0.
- [Immutable] WebKitCSSMatrix skewY([Default=Undefined] optional unrestricted double angle);
+ WebKitCSSMatrix skewY([Default=Undefined] optional unrestricted double angle);
[NotEnumerable] stringifier;
};
-
diff --git a/core/css/cssom/CalcDictionary.idl b/core/css/cssom/CalcDictionary.idl
new file mode 100644
index 0000000..2f925c3
--- /dev/null
+++ b/core/css/cssom/CalcDictionary.idl
@@ -0,0 +1,17 @@
+dictionary CalcDictionary {
+ double? px = null;
+ double? percent = null;
+ double? em = null;
+ double? ex = null;
+ double? ch = null;
+ double? rem = null;
+ double? vw = null;
+ double? vh = null;
+ double? vmin = null;
+ double? vmax = null;
+ double? cm = null;
+ double? mm = null;
+ double? in = null;
+ double? pc = null;
+ double? pt = null;
+};
diff --git a/core/css/cssom/CalcLength.idl b/core/css/cssom/CalcLength.idl
new file mode 100644
index 0000000..79b2d2c
--- /dev/null
+++ b/core/css/cssom/CalcLength.idl
@@ -0,0 +1,23 @@
+[
+ Constructor(LengthValue length),
+ Constructor(CalcDictionary calcDictionary),
+ ImplementedAs=StyleCalcLength,
+ RaisesException=Constructor,
+ RuntimeEnabled=CSSTypedOM
+] interface CalcLength : LengthValue {
+ readonly attribute double? px;
+ readonly attribute double? percent;
+ readonly attribute double? em;
+ readonly attribute double? ex;
+ readonly attribute double? ch;
+ readonly attribute double? rem;
+ readonly attribute double? vw;
+ readonly attribute double? vh;
+ readonly attribute double? vmin;
+ readonly attribute double? vmax;
+ readonly attribute double? cm;
+ readonly attribute double? mm;
+ readonly attribute double? in;
+ readonly attribute double? pc;
+ readonly attribute double? pt;
+};
diff --git a/core/css/cssom/KeywordValue.idl b/core/css/cssom/KeywordValue.idl
new file mode 100644
index 0000000..8b7f660
--- /dev/null
+++ b/core/css/cssom/KeywordValue.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(DOMString keyword),
+ RuntimeEnabled=CSSTypedOM,
+ RaisesException=Constructor
+] interface KeywordValue : StyleValue {
+ readonly attribute DOMString keywordValue;
+};
diff --git a/core/css/cssom/LengthValue.idl b/core/css/cssom/LengthValue.idl
new file mode 100644
index 0000000..611425d
--- /dev/null
+++ b/core/css/cssom/LengthValue.idl
@@ -0,0 +1,20 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+enum LengthType {
+ "px", "percent", "em", "ex", "ch", "rem", "vw", "vh", "vmin", "vmax", "cm", "mm", "in", "pc", "pt"
+};
+
+[
+ RuntimeEnabled=CSSTypedOM
+] interface LengthValue : StyleValue {
+ [RaisesException, NewObject] LengthValue add(LengthValue other);
+ [RaisesException, NewObject] LengthValue subtract(LengthValue other);
+ [RaisesException, NewObject] LengthValue multiply(double value);
+ [RaisesException, NewObject] LengthValue divide(double value);
+
+ [RaisesException, NewObject] static LengthValue parse(DOMString cssString);
+ [RaisesException, NewObject] static LengthValue fromValue(double value, LengthType type);
+ [RaisesException, NewObject] static LengthValue fromDictionary(CalcDictionary dictionary);
+};
diff --git a/core/css/cssom/Matrix.idl b/core/css/cssom/Matrix.idl
new file mode 100644
index 0000000..92b12a8
--- /dev/null
+++ b/core/css/cssom/Matrix.idl
@@ -0,0 +1,36 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(double a, double b, double c, double d, double e, double f),
+ Constructor(double m11, double m12, double m13, double m14,
+ double m21, double m22, double m23, double m24,
+ double m31, double m32, double m33, double m34,
+ double m41, double m42, double m43, double m44),
+ ImplementedAs=MatrixTransformComponent,
+ RuntimeEnabled=CSSTypedOM
+] interface Matrix : TransformComponent {
+ readonly attribute double a;
+ readonly attribute double b;
+ readonly attribute double c;
+ readonly attribute double d;
+ readonly attribute double e;
+ readonly attribute double f;
+ readonly attribute double m11;
+ readonly attribute double m12;
+ readonly attribute double m13;
+ readonly attribute double m14;
+ readonly attribute double m21;
+ readonly attribute double m22;
+ readonly attribute double m23;
+ readonly attribute double m24;
+ readonly attribute double m31;
+ readonly attribute double m32;
+ readonly attribute double m33;
+ readonly attribute double m34;
+ readonly attribute double m41;
+ readonly attribute double m42;
+ readonly attribute double m43;
+ readonly attribute double m44;
+};
diff --git a/core/css/cssom/NumberValue.idl b/core/css/cssom/NumberValue.idl
new file mode 100644
index 0000000..06bc109
--- /dev/null
+++ b/core/css/cssom/NumberValue.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(double value),
+ RuntimeEnabled=CSSTypedOM
+] interface NumberValue : StyleValue {
+ readonly attribute double value;
+};
diff --git a/core/css/cssom/Perspective.idl b/core/css/cssom/Perspective.idl
new file mode 100644
index 0000000..6baedaa
--- /dev/null
+++ b/core/css/cssom/Perspective.idl
@@ -0,0 +1,12 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(LengthValue length),
+ ImplementedAs=PerspectiveTransformComponent,
+ RuntimeEnabled=CSSTypedOM,
+ RaisesException=Constructor
+] interface Perspective : TransformComponent {
+ readonly attribute LengthValue length;
+};
diff --git a/core/css/cssom/PositionValue.idl b/core/css/cssom/PositionValue.idl
new file mode 100644
index 0000000..5e405ec
--- /dev/null
+++ b/core/css/cssom/PositionValue.idl
@@ -0,0 +1,11 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(LengthValue x, LengthValue y),
+ RuntimeEnabled=CSSTypedOM
+] interface PositionValue : StyleValue {
+ readonly attribute LengthValue x;
+ readonly attribute LengthValue y;
+};
diff --git a/core/css/cssom/Rotation.idl b/core/css/cssom/Rotation.idl
new file mode 100644
index 0000000..7a81cdb
--- /dev/null
+++ b/core/css/cssom/Rotation.idl
@@ -0,0 +1,15 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(double angle),
+ Constructor(double angle, double x, double y, double z),
+ ImplementedAs=RotationTransformComponent,
+ RuntimeEnabled=CSSTypedOM
+] interface Rotation : TransformComponent {
+ readonly attribute double angle;
+ readonly attribute double x;
+ readonly attribute double y;
+ readonly attribute double z;
+};
diff --git a/core/css/cssom/Scale.idl b/core/css/cssom/Scale.idl
new file mode 100644
index 0000000..22ec20d
--- /dev/null
+++ b/core/css/cssom/Scale.idl
@@ -0,0 +1,14 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(double x, double y),
+ Constructor(double x, double y, double z),
+ ImplementedAs=ScaleTransformComponent,
+ RuntimeEnabled=CSSTypedOM
+] interface Scale : TransformComponent {
+ readonly attribute double x;
+ readonly attribute double y;
+ readonly attribute double z;
+};
diff --git a/core/css/cssom/SimpleLength.idl b/core/css/cssom/SimpleLength.idl
new file mode 100644
index 0000000..07c0b49
--- /dev/null
+++ b/core/css/cssom/SimpleLength.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(double value, DOMString type),
+ RaisesException=Constructor,
+ RuntimeEnabled=CSSTypedOM
+] interface SimpleLength : LengthValue {
+ [EnforceRange] attribute double value;
+ [ImplementedAs=unit] readonly attribute LengthType type;
+};
diff --git a/core/css/cssom/Skew.idl b/core/css/cssom/Skew.idl
new file mode 100644
index 0000000..5755f2b
--- /dev/null
+++ b/core/css/cssom/Skew.idl
@@ -0,0 +1,12 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(double ax, double ay),
+ ImplementedAs=SkewTransformComponent,
+ RuntimeEnabled=CSSTypedOM
+] interface Skew : TransformComponent {
+ readonly attribute double ax;
+ readonly attribute double ay;
+};
diff --git a/core/css/cssom/StylePropertyMap.idl b/core/css/cssom/StylePropertyMap.idl
new file mode 100644
index 0000000..17d3945
--- /dev/null
+++ b/core/css/cssom/StylePropertyMap.idl
@@ -0,0 +1,17 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ RuntimeEnabled=CSSTypedOM,
+ GarbageCollected
+] interface StylePropertyMap {
+ [RaisesException] void append(DOMString property, (StyleValue or sequence<StyleValue> or DOMString) value);
+ [RaisesException, ImplementedAs=remove] void delete(DOMString property);
+ StyleValue? get(DOMString property);
+ sequence<StyleValue> getAll(DOMString property);
+ boolean has(DOMString property);
+ [RaisesException] void set(DOMString property, (StyleValue or sequence<StyleValue> or DOMString) value);
+ iterable<DOMString, (StyleValue or sequence<StyleValue>)>;
+ sequence<DOMString> getProperties();
+};
diff --git a/core/css/cssom/StyleValue.idl b/core/css/cssom/StyleValue.idl
new file mode 100644
index 0000000..85b809d
--- /dev/null
+++ b/core/css/cssom/StyleValue.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ RuntimeEnabled=CSSTypedOM,
+ GarbageCollected
+] interface StyleValue {
+ readonly attribute DOMString cssString;
+ // static (StyleValue or sequence<StyleValue>)? parse(DOMString property, DOMString cssText);
+ [CallWith=ScriptState] static object? parse(DOMString property, DOMString cssText);
+};
diff --git a/core/css/cssom/TransformComponent.idl b/core/css/cssom/TransformComponent.idl
new file mode 100644
index 0000000..f8da462
--- /dev/null
+++ b/core/css/cssom/TransformComponent.idl
@@ -0,0 +1,12 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ RuntimeEnabled=CSSTypedOM,
+ GarbageCollected
+] interface TransformComponent {
+ readonly attribute DOMString cssString;
+ boolean is2DComponent();
+ [NewObject] Matrix asMatrix();
+};
diff --git a/core/css/cssom/TransformValue.idl b/core/css/cssom/TransformValue.idl
new file mode 100644
index 0000000..2168f5f
--- /dev/null
+++ b/core/css/cssom/TransformValue.idl
@@ -0,0 +1,12 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(),
+ Constructor(sequence<TransformComponent> transformComponents),
+ RuntimeEnabled=CSSTypedOM
+] interface TransformValue : StyleValue {
+ iterable<TransformComponent>;
+ boolean is2D();
+};
diff --git a/core/css/cssom/Translation.idl b/core/css/cssom/Translation.idl
new file mode 100644
index 0000000..464b7cd
--- /dev/null
+++ b/core/css/cssom/Translation.idl
@@ -0,0 +1,15 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor(LengthValue x, LengthValue y),
+ Constructor(LengthValue x, LengthValue y, LengthValue z),
+ ImplementedAs=TranslationTransformComponent,
+ RaisesException=Constructor,
+ RuntimeEnabled=CSSTypedOM
+] interface Translation : TransformComponent {
+ readonly attribute LengthValue x;
+ readonly attribute LengthValue y;
+ readonly attribute LengthValue z;
+};
diff --git a/core/dom/ChildNode.idl b/core/dom/ChildNode.idl
index 0b0168e..8c2f9f3 100644
--- a/core/dom/ChildNode.idl
+++ b/core/dom/ChildNode.idl
@@ -26,8 +26,9 @@
LegacyTreatAsPartialInterface,
NoInterfaceObject, // Always used on target of 'implements'
] interface ChildNode {
- [Unscopeable, RaisesException, CustomElementCallbacks, RuntimeEnabled=DOMConvenienceAPI] void before((Node or DOMString) ... nodes);
- [Unscopeable, RaisesException, CustomElementCallbacks, RuntimeEnabled=DOMConvenienceAPI] void after((Node or DOMString)... nodes);
- [Unscopeable, RaisesException, CustomElementCallbacks, RuntimeEnabled=DOMConvenienceAPI] void replaceWith((Node or DOMString)... nodes);
- [Unscopeable, RaisesException, CustomElementCallbacks] void remove();
+ // [Unscopeable] void before((Node or DOMString)... nodes);
+ // [Unscopeable] void after((Node or DOMString)... nodes);
+ // [Unscopeable] void replaceWith((Node or DOMString)... nodes);
+ // TODO(philipj): remove() should be [Unscopeable]. crbug.com/462916
+ [RaisesException, CustomElementCallbacks] void remove();
};
diff --git a/core/dom/DOMException.idl b/core/dom/DOMException.idl
index c4e8919..a2f4571 100644
--- a/core/dom/DOMException.idl
+++ b/core/dom/DOMException.idl
@@ -26,7 +26,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// Web IDL exceptions are defined in prose rather than IDL.
+// http://heycam.github.io/webidl/#idl-exceptions
+// http://heycam.github.io/webidl/#es-DOMException
+
[
+ Constructor(optional DOMString message = "", optional DOMString name = "Error"),
Exposed=(Window,Worker),
DoNotCheckConstants,
GarbageCollected,
@@ -77,4 +82,3 @@
const unsigned short INVALID_NODE_TYPE_ERR = 24;
const unsigned short DATA_CLONE_ERR = 25;
};
-
diff --git a/core/dom/DOMImplementation.idl b/core/dom/DOMImplementation.idl
index 6ed29bb..b058f29 100644
--- a/core/dom/DOMImplementation.idl
+++ b/core/dom/DOMImplementation.idl
@@ -22,7 +22,6 @@
[
SetWrapperReferenceFrom=document,
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface DOMImplementation {
[NewObject, RaisesException] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);
diff --git a/core/dom/DOMSettableTokenList.idl b/core/dom/DOMSettableTokenList.idl
deleted file mode 100644
index b62d903..0000000
--- a/core/dom/DOMSettableTokenList.idl
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// https://dom.spec.whatwg.org/#interface-domsettabletokenlist
-
-interface DOMSettableTokenList : DOMTokenList {
- attribute DOMString value;
-
- // FIXME: This getter is not in the spec.
- [ImplementedAs=item] getter DOMString? (unsigned long index);
-};
diff --git a/core/dom/DOMTokenList.idl b/core/dom/DOMTokenList.idl
index 1293203..e49a183 100644
--- a/core/dom/DOMTokenList.idl
+++ b/core/dom/DOMTokenList.idl
@@ -34,7 +34,13 @@
[RaisesException, CustomElementCallbacks] void add(DOMString... tokens);
[RaisesException, CustomElementCallbacks] void remove(DOMString... tokens);
[RaisesException, CustomElementCallbacks] boolean toggle(DOMString token, optional boolean force);
+ [RaisesException, CustomElementCallbacks] boolean supports(DOMString token);
+ attribute DOMString value;
// FIXME: stringifier should be enumerable.
[NotEnumerable] stringifier;
iterable<DOMString>;
+
+
+ // FIXME: This getter is not in the spec.
+ [ImplementedAs=item] getter DOMString? (unsigned long index);
};
diff --git a/core/dom/DataView.idl b/core/dom/DataView.idl
index 3e957df..876a0a8 100644
--- a/core/dom/DataView.idl
+++ b/core/dom/DataView.idl
@@ -27,6 +27,5 @@
[
ImplementedAs=DOMDataView,
- TypeChecking=Interface,
] interface DataView : ArrayBufferView {
};
diff --git a/core/dom/Document.idl b/core/dom/Document.idl
index 5b4d664..aafcdaf 100644
--- a/core/dom/Document.idl
+++ b/core/dom/Document.idl
@@ -35,10 +35,12 @@
// FIXME: documentURI should not be nullable.
[ImplementedAs=url] readonly attribute DOMString? documentURI;
readonly attribute DOMString origin;
+ [RuntimeEnabled=suborigins] readonly attribute DOMString suborigin;
readonly attribute DOMString compatMode;
readonly attribute DOMString characterSet;
- [MeasureAs=DocumentInputEncoding, ImplementedAs=characterSet] readonly attribute DOMString inputEncoding; // legacy alias of .characterSet
+ [ImplementedAs=characterSet] readonly attribute DOMString charset; // legacy alias of .characterSet
+ [ImplementedAs=characterSet] readonly attribute DOMString inputEncoding; // legacy alias of .characterSet
readonly attribute DOMString contentType;
readonly attribute DocumentType? doctype;
@@ -54,19 +56,19 @@
[NewObject] Comment createComment(DOMString data);
[NewObject, RaisesException] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
- [NewObject, CustomElementCallbacks, RaisesException, TypeChecking=Interface] Node importNode(Node node, optional boolean deep = false);
- [RaisesException, CustomElementCallbacks, TypeChecking=Interface] Node adoptNode(Node node);
+ [NewObject, CustomElementCallbacks, RaisesException] Node importNode(Node node, optional boolean deep = false);
+ [RaisesException, CustomElementCallbacks] Node adoptNode(Node node);
[NewObject, RaisesException, MeasureAs=DocumentCreateAttribute] Attr createAttribute(DOMString localName);
[NewObject, RaisesException, MeasureAs=DocumentCreateAttributeNS] Attr createAttributeNS(DOMString? namespaceURI, DOMString qualifiedName);
- [NewObject, RaisesException] Event createEvent(DOMString eventType);
+ [NewObject, RaisesException, CallWith=ExecutionContext] Event createEvent(DOMString eventType);
[NewObject] Range createRange();
// NodeFilter.SHOW_ALL = 0xFFFFFFFF
- [NewObject, RaisesException, TypeChecking=Interface] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
- [NewObject, RaisesException, TypeChecking=Interface] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
+ [NewObject] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
+ [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
// FIXME: CDATASection has been removed from the spec. crbug.com/437205
[RaisesException, MeasureAs=DocumentCreateCDATASection] CDATASection createCDATASection(DOMString data);
@@ -80,19 +82,23 @@
// https://html.spec.whatwg.org/#the-document-object
// resource metadata management
+
+ // Inheritance of [Unforgeable] attributes is not supported. So we have to
+ // define the same unforgeable attributes in derived interfaces as well.
+ // See that HTMLDocument and XMLDocument redefine 'location' attribute.
+ // Keep all the definitions consistent.
+ // TODO(yukishiino): Support inheritance of attributes defined on instance.
[PutForwards=href, Unforgeable] readonly attribute Location? location;
[RaisesException=Setter] attribute DOMString domain;
readonly attribute DOMString referrer;
- // FIXME: cookie should not have [TreatNullAs=NullString].
- [TreatNullAs=NullString, RaisesException] attribute DOMString cookie;
+ [RaisesException] attribute DOMString cookie;
readonly attribute DOMString lastModified;
readonly attribute DocumentReadyState readyState;
// DOM tree accessors
- // FIXME: title and dir should not have [TreatNullAs=NullString].
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString title;
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString dir;
- [RaisesException=Setter, CustomElementCallbacks, PerWorldBindings, TypeChecking=Interface] attribute HTMLElement? body;
+ [CustomElementCallbacks] attribute DOMString title;
+ [CustomElementCallbacks] attribute DOMString dir;
+ [RaisesException=Setter, CustomElementCallbacks, PerWorldBindings] attribute HTMLElement? body;
readonly attribute HTMLHeadElement? head;
[SameObject] readonly attribute HTMLCollection images;
[SameObject] readonly attribute HTMLCollection embeds;
@@ -107,15 +113,14 @@
// FIXME: There are two open() methods in the spec.
[Custom, CustomElementCallbacks, RaisesException] void open();
[RaisesException] void close();
- [CallWith=ActiveWindow, CustomElementCallbacks, RaisesException] void write(DOMString... text);
- [CallWith=ActiveWindow, CustomElementCallbacks, RaisesException] void writeln(DOMString... text);
+ [CallWith=FirstWindow, CustomElementCallbacks, RaisesException] void write(DOMString... text);
+ [CallWith=FirstWindow, CustomElementCallbacks, RaisesException] void writeln(DOMString... text);
// user interaction
[ImplementedAs=domWindow] readonly attribute Window? defaultView;
readonly attribute Element? activeElement;
boolean hasFocus();
- // FIXME: designMode should not have [TreatNullAs=NullString].
- [TreatNullAs=NullString, CustomElementCallbacks, MeasureAs=DocumentDesignMode] attribute DOMString designMode;
+ [CustomElementCallbacks, MeasureAs=DocumentDesignMode] attribute DOMString designMode;
[CustomElementCallbacks, RaisesException] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = "");
[RaisesException] boolean queryCommandEnabled(DOMString commandId);
[RaisesException] boolean queryCommandIndeterm(DOMString commandId);
@@ -162,25 +167,19 @@
// Touch Events
// http://rawgit.com/w3c/touch-events/v1-errata/touchevents.html#extensions-to-the-document-interface
// FIXME: The arguments should not be optional.
- [RuntimeEnabled=Touch, Measure] Touch createTouch([Default=Undefined] optional Window window,
- [Default=Undefined] optional EventTarget target,
- [Default=Undefined] optional long identifier,
- [Default=Undefined] optional unrestricted double pageX,
- [Default=Undefined] optional unrestricted double pageY,
- [Default=Undefined] optional unrestricted double screenX,
- [Default=Undefined] optional unrestricted double screenY,
- [Default=Undefined] optional unrestricted double radiusX,
- [Default=Undefined] optional unrestricted double radiusY,
- [Default=Undefined] optional unrestricted float rotationAngle,
- [Default=Undefined] optional unrestricted float force);
+ [RuntimeEnabled=Touch, Measure, LegacyInterfaceTypeChecking] Touch createTouch([Default=Undefined] optional Window window,
+ [Default=Undefined] optional EventTarget target,
+ [Default=Undefined] optional long identifier,
+ [Default=Undefined] optional unrestricted double pageX,
+ [Default=Undefined] optional unrestricted double pageY,
+ [Default=Undefined] optional unrestricted double screenX,
+ [Default=Undefined] optional unrestricted double screenY,
+ [Default=Undefined] optional unrestricted double radiusX,
+ [Default=Undefined] optional unrestricted double radiusY,
+ [Default=Undefined] optional unrestricted float rotationAngle,
+ [Default=Undefined] optional unrestricted float force);
[RuntimeEnabled=Touch] TouchList createTouchList(Touch... touches);
- // FIXME: The spec doesn't define these event handler attributes.
- [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
-
// Custom Elements
// http://w3c.github.io/webcomponents/spec/custom/#extensions-to-document-interface-to-register
// FIXME: The registerElement return type should be Function.
@@ -196,10 +195,7 @@
readonly attribute VisibilityState visibilityState;
// Non-standard APIs
- [MeasureAs=DocumentCharset] readonly attribute DOMString charset;
- [MeasureAs=DocumentDefaultCharset, TreatReturnedNullStringAs=Undefined] readonly attribute DOMString defaultCharset;
[MeasureAs=DocumentCaretRangeFromPoint] Range caretRangeFromPoint([Default=Undefined] optional long x, [Default=Undefined] optional long y);
- [CallWith=ScriptState, DeprecateAs=DocumentGetCSSCanvasContext] any getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
// Deprecated prefixed page visibility API.
// TODO(davidben): This is a property so attaching a deprecation warning results in false positives when outputting
diff --git a/core/dom/Element.idl b/core/dom/Element.idl
index 2d0574c..a516e09 100644
--- a/core/dom/Element.idl
+++ b/core/dom/Element.idl
@@ -18,11 +18,14 @@
* Boston, MA 02110-1301, USA.
*/
+// See
+// https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY
+// for details.
+enum NativeScrollBehavior { "disable-native-scroll", "perform-before-native-scroll", "perform-after-native-scroll" };
+
// https://dom.spec.whatwg.org/#interface-element
-[
- TypeChecking=Interface,
-] interface Element : Node {
+interface Element : Node {
readonly attribute DOMString? namespaceURI;
readonly attribute DOMString? prefix;
readonly attribute DOMString localName;
@@ -30,7 +33,7 @@
[Reflect] attribute DOMString id;
[Reflect=class] attribute DOMString className;
- [SameObject, PerWorldBindings] readonly attribute DOMTokenList classList;
+ [SameObject, PerWorldBindings, PutForwards=value] readonly attribute DOMTokenList classList;
[MeasureAs=HasAttributes] boolean hasAttributes();
[SameObject, PerWorldBindings, ImplementedAs=attributesForBindings] readonly attribute NamedNodeMap attributes;
@@ -65,9 +68,11 @@
// Shadow DOM
// http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-element-interface
[RaisesException, CallWith=ScriptState, MeasureAs=ElementCreateShadowRoot] ShadowRoot createShadowRoot();
- [RuntimeEnabled=CreateShadowRootWithParameter, RaisesException, CallWith=ScriptState, MeasureAs=ElementCreateShadowRoot] ShadowRoot createShadowRoot(ShadowRootInit shadowRootInitDict);
+ [RuntimeEnabled=ShadowDOMV1, RaisesException, CallWith=ScriptState, MeasureAs=ElementAttachShadow] ShadowRoot attachShadow(ShadowRootInit shadowRootInitDict);
NodeList getDestinationInsertionPoints();
- [PerWorldBindings] readonly attribute ShadowRoot? shadowRoot;
+ [PerWorldBindings, ImplementedAs=openShadowRoot] readonly attribute ShadowRoot? shadowRoot;
+ [RuntimeEnabled=ShadowDOMV1, Reflect] attribute DOMString slot;
+ [RuntimeEnabled=ShadowDOMV1, ImplementedAs=assignedSlotForBinding] readonly attribute HTMLSlotElement assignedSlot;
// Pointer Lock
// https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#extensions-to-the-element-interface
@@ -95,13 +100,10 @@
readonly attribute long clientLeft;
readonly attribute long clientWidth;
readonly attribute long clientHeight;
- // http://dev.w3.org/csswg/cssom-view/#extensions-to-the-htmlelement-interface
- // FIXME: offset* should only be on HTMLElement.
- [MeasureAs=ElementOffsetParent, PerWorldBindings] readonly attribute Element? offsetParent;
- [MeasureAs=ElementOffsetTop] readonly attribute long offsetTop;
- [MeasureAs=ElementOffsetLeft] readonly attribute long offsetLeft;
- [MeasureAs=ElementOffsetWidth] readonly attribute long offsetWidth;
- [MeasureAs=ElementOffsetHeight] readonly attribute long offsetHeight;
+
+ // Scroll Customization API. See crbug.com/410974 for details.
+ [RuntimeEnabled=ScrollCustomization] void setApplyScroll(ScrollStateCallback scrollStateCallback, NativeScrollBehavior nativeScrollBehavior);
+ [RuntimeEnabled=ScrollCustomization] void setDistributeScroll(ScrollStateCallback scrollStateCallback, NativeScrollBehavior nativeScrollBehavior);
// Non-standard APIs
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=19962
@@ -123,10 +125,6 @@
attribute EventHandler onpaste;
attribute EventHandler onsearch;
attribute EventHandler onselectstart;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
attribute EventHandler onwheel;
};
diff --git a/core/dom/FrameRequestCallback.idl b/core/dom/FrameRequestCallback.idl
index b65b637..ddf7cda 100644
--- a/core/dom/FrameRequestCallback.idl
+++ b/core/dom/FrameRequestCallback.idl
@@ -28,6 +28,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// TODO(philipj): FrameRequestCallback should not be a callback interface.
+// https://www.w3.org/Bugs/Public/show_bug.cgi?id=28152
callback interface FrameRequestCallback {
// highResTime is passed as high resolution timestamp, see
// http://www.w3.org/TR/hr-time/ for details.
diff --git a/core/dom/GlobalEventHandlers.idl b/core/dom/GlobalEventHandlers.idl
index 685f349..5366bd8 100644
--- a/core/dom/GlobalEventHandlers.idl
+++ b/core/dom/GlobalEventHandlers.idl
@@ -80,14 +80,6 @@
attribute EventHandler onpause;
attribute EventHandler onplay;
attribute EventHandler onplaying;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointercancel;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerdown;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerenter;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerleave;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointermove;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerout;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerover;
- [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerup;
attribute EventHandler onprogress;
attribute EventHandler onratechange;
attribute EventHandler onreset;
@@ -105,4 +97,22 @@
attribute EventHandler ontoggle;
attribute EventHandler onvolumechange;
attribute EventHandler onwaiting;
+
+ // Pointer Events
+ // https://w3c.github.io/pointerevents/#extensions-to-the-globaleventhandlers-interface
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerdown;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointermove;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerup;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointercancel;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerover;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerout;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerenter;
+ [RuntimeEnabled=PointerEvent] attribute EventHandler onpointerleave;
+
+ // Touch Events
+ // https://w3c.github.io/touch-events/#extensions-to-the-globaleventhandlers-interface
+ [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
+ [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
+ [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
+ [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
};
diff --git a/core/dom/IdleDeadline.idl b/core/dom/IdleDeadline.idl
new file mode 100644
index 0000000..1550789
--- /dev/null
+++ b/core/dom/IdleDeadline.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ GarbageCollected,
+ RuntimeEnabled=RequestIdleCallback,
+] interface IdleDeadline {
+ double timeRemaining();
+ readonly attribute boolean didTimeout;
+};
diff --git a/core/dom/IdleRequestCallback.idl b/core/dom/IdleRequestCallback.idl
new file mode 100644
index 0000000..b4cda7e
--- /dev/null
+++ b/core/dom/IdleRequestCallback.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ GarbageCollected,
+ RuntimeEnabled=RequestIdleCallback,
+] callback interface IdleRequestCallback {
+ void handleEvent(IdleDeadline deadline);
+};
diff --git a/modules/background_sync/SyncRegistrationOptions.idl b/core/dom/IdleRequestOptions.idl
similarity index 63%
copy from modules/background_sync/SyncRegistrationOptions.idl
copy to core/dom/IdleRequestOptions.idl
index 6e1abbc..cd89101 100644
--- a/modules/background_sync/SyncRegistrationOptions.idl
+++ b/core/dom/IdleRequestOptions.idl
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-[
- RuntimeEnabled=BackgroundSyncV2,
-] dictionary SyncRegistrationOptions {
- DOMString tag;
+dictionary IdleRequestOptions {
+ unsigned long timeout = 0;
};
diff --git a/core/dom/IntersectionObserver.idl b/core/dom/IntersectionObserver.idl
new file mode 100644
index 0000000..eb6122b
--- /dev/null
+++ b/core/dom/IntersectionObserver.idl
@@ -0,0 +1,23 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// TODO(szager): add link to final spec.
+callback IntersectionObserverCallback = void (sequence<IntersectionObserverEntry> entries, IntersectionObserver observer);
+
+// TODO(szager): Update the doc link when the spec has an official home.
+// https://github.com/slightlyoff/IntersectionObserver
+[
+ CustomConstructor(IntersectionObserverCallback callback, IntersectionObserverInit options),
+ Custom=VisitDOMWrapper,
+ GarbageCollected,
+ RuntimeEnabled=IntersectionObserver,
+] interface IntersectionObserver {
+ [RaisesException] void observe(Element target);
+ [RaisesException] void unobserve(Element target);
+ void disconnect();
+ sequence<IntersectionObserverEntry> takeRecords();
+ readonly attribute Element? root;
+ readonly attribute DOMString rootMargin;
+ readonly attribute double[] thresholds;
+};
diff --git a/core/dom/IntersectionObserverEntry.idl b/core/dom/IntersectionObserverEntry.idl
new file mode 100644
index 0000000..14d7268
--- /dev/null
+++ b/core/dom/IntersectionObserverEntry.idl
@@ -0,0 +1,16 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://github.com/slightlyoff/IntersectionObserver
+
+[
+ GarbageCollected,
+ RuntimeEnabled=IntersectionObserver,
+] interface IntersectionObserverEntry {
+ readonly attribute ClientRect boundingClientRect;
+ readonly attribute ClientRect intersectionRect;
+ readonly attribute ClientRect? rootBounds;
+ readonly attribute Element target;
+ readonly attribute DOMHighResTimeStamp time;
+};
diff --git a/core/dom/IntersectionObserverInit.idl b/core/dom/IntersectionObserverInit.idl
new file mode 100644
index 0000000..f333646
--- /dev/null
+++ b/core/dom/IntersectionObserverInit.idl
@@ -0,0 +1,13 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// TODO(szager): link to final spec
+
+[
+ RuntimeEnabled=IntersectionObserver
+] dictionary IntersectionObserverInit {
+ Element? root;
+ DOMString rootMargin;
+ (double or double[]) threshold = 0;
+};
diff --git a/core/dom/MessagePort.idl b/core/dom/MessagePort.idl
index 3c21c03..895e05e 100644
--- a/core/dom/MessagePort.idl
+++ b/core/dom/MessagePort.idl
@@ -28,7 +28,7 @@
// https://html.spec.whatwg.org/#message-ports
[
- ActiveDOMObject,
+ DependentLifetime,
Exposed=(Window,Worker),
GarbageCollected,
] interface MessagePort : EventTarget {
diff --git a/core/dom/MutationObserverInit.idl b/core/dom/MutationObserverInit.idl
index a9f9724..9ff5be4 100644
--- a/core/dom/MutationObserverInit.idl
+++ b/core/dom/MutationObserverInit.idl
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Spec: http://dom.spec.whatwg.org/#interface-mutationobserver
+// Spec: https://dom.spec.whatwg.org/#interface-mutationobserver
dictionary MutationObserverInit {
boolean childList = false;
diff --git a/core/dom/NamedNodeMap.idl b/core/dom/NamedNodeMap.idl
index 65a1cf3..b5af211 100644
--- a/core/dom/NamedNodeMap.idl
+++ b/core/dom/NamedNodeMap.idl
@@ -22,7 +22,6 @@
[
SetWrapperReferenceFrom=element,
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface NamedNodeMap {
readonly attribute unsigned long length;
diff --git a/core/dom/Node.idl b/core/dom/Node.idl
index 9c3e3a5..d3271a4 100644
--- a/core/dom/Node.idl
+++ b/core/dom/Node.idl
@@ -22,7 +22,6 @@
[
DependentLifetime,
- TypeChecking=Interface,
] interface Node : EventTarget {
const unsigned short ELEMENT_NODE = 1;
// FIXME: Attr should not inherit from Node. crbug.com/305105
@@ -38,7 +37,7 @@
const unsigned short DOCUMENT_TYPE_NODE = 10;
const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
const unsigned short NOTATION_NODE = 12; // historical
- readonly attribute unsigned short nodeType;
+ [ImplementedAs=getNodeType] readonly attribute unsigned short nodeType;
readonly attribute DOMString nodeName;
readonly attribute DOMString? baseURI;
@@ -52,14 +51,14 @@
[PerWorldBindings] readonly attribute Node? lastChild;
[PerWorldBindings] readonly attribute Node? previousSibling;
[PerWorldBindings] readonly attribute Node? nextSibling;
+ [RuntimeEnabled=ShadowDOMV1, MeasureAs=NodeTreeRoot] readonly attribute Node treeRoot;
[CustomElementCallbacks] attribute DOMString? nodeValue;
// FIXME: textContent should not have [TreatUndefinedAs=NullString].
[TreatUndefinedAs=NullString, CustomElementCallbacks] attribute DOMString? textContent;
[CustomElementCallbacks] void normalize();
- // FIXME: The deep argument should have a default value false.
- [NewObject, CustomElementCallbacks] Node cloneNode(optional boolean deep);
+ [NewObject, CustomElementCallbacks] Node cloneNode(optional boolean deep = false);
boolean isEqualNode(Node? node);
const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01;
@@ -80,11 +79,7 @@
[CustomElementCallbacks, PerWorldBindings, RaisesException] Node replaceChild(Node node, Node child);
[CustomElementCallbacks, RaisesException] Node removeChild(Node child);
- // FIXME: namespaceURI and localName have been moved to Element and Attr.
- [MeasureAs=NodeNamespaceURI] readonly attribute DOMString? namespaceURI;
- [MeasureAs=NodeLocalName] readonly attribute DOMString? localName;
-
// FIXME: isSameNode has been removed from the spec:
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=27424
- [MeasureAs=NodeIsSameNode] boolean isSameNode(Node? other);
+ [MeasureAs=NodeIsSameNode, ImplementedAs=isSameNodeDeprecated] boolean isSameNode(Node? other);
};
diff --git a/core/dom/NodeFilter.idl b/core/dom/NodeFilter.idl
index 3fe66ea..bcb5557 100644
--- a/core/dom/NodeFilter.idl
+++ b/core/dom/NodeFilter.idl
@@ -46,5 +46,5 @@
const unsigned long SHOW_NOTATION = 0x800; // historical
// FIXME: The node argument should not be optional.
- [RaisesException] unsigned short acceptNode([Default=Undefined] optional Node node);
+ [RaisesException, LegacyInterfaceTypeChecking] unsigned short acceptNode([Default=Undefined] optional Node node);
};
diff --git a/core/dom/NodeIterator.idl b/core/dom/NodeIterator.idl
index e7e60da..4262b7a 100644
--- a/core/dom/NodeIterator.idl
+++ b/core/dom/NodeIterator.idl
@@ -33,5 +33,5 @@
[RaisesException] Node? nextNode();
[RaisesException] Node? previousNode();
- [DeprecateAs=NodeIteratorDetach] void detach();
+ [MeasureAs=NodeIteratorDetach] void detach();
};
diff --git a/core/dom/NodeList.idl b/core/dom/NodeList.idl
index 5e549ca..0d85493 100644
--- a/core/dom/NodeList.idl
+++ b/core/dom/NodeList.idl
@@ -27,5 +27,5 @@
] interface NodeList {
getter Node? item(unsigned long index);
readonly attribute unsigned long length;
- // FIXME: iterable<Node>;
+ [RuntimeEnabled=IterableCollections] iterable<Node>;
};
diff --git a/core/dom/ParentNode.idl b/core/dom/ParentNode.idl
index 0f722e8..e660f6c 100644
--- a/core/dom/ParentNode.idl
+++ b/core/dom/ParentNode.idl
@@ -39,8 +39,8 @@
[PerWorldBindings] readonly attribute Element? lastElementChild;
readonly attribute unsigned long childElementCount;
- [Unscopeable, RaisesException, CustomElementCallbacks, RuntimeEnabled=DOMConvenienceAPI] void prepend((Node or DOMString)... nodes);
- [Unscopeable, RaisesException, CustomElementCallbacks, RuntimeEnabled=DOMConvenienceAPI] void append((Node or DOMString)... nodes);
+ // [Unscopeable] void prepend((Node or DOMString)... nodes);
+ // [Unscopeable] void append((Node or DOMString)... nodes);
// [Unscopeable] Element? query(DOMString relativeSelectors);
// [NewObject, Unscopeable] Elements queryAll(DOMString relativeSelectors);
diff --git a/core/dom/Range.idl b/core/dom/Range.idl
index 5452b45..88a4a36 100644
--- a/core/dom/Range.idl
+++ b/core/dom/Range.idl
@@ -25,7 +25,6 @@
Constructor,
ConstructorCallWith=Document,
WillBeGarbageCollected,
- TypeChecking=Interface,
] interface Range {
readonly attribute Node startContainer;
readonly attribute long startOffset;
@@ -57,7 +56,7 @@
[RaisesException, CustomElementCallbacks] void surroundContents(Node newParent);
[NewObject] Range cloneRange();
- [DeprecateAs=RangeDetach] void detach();
+ [MeasureAs=RangeDetach] void detach();
[RaisesException] boolean isPointInRange(Node node, long offset);
[RaisesException] short comparePoint(Node node, long offset);
diff --git a/core/dom/SharedArrayBuffer.idl b/core/dom/SharedArrayBuffer.idl
index 21bb64b..9ba56d5 100644
--- a/core/dom/SharedArrayBuffer.idl
+++ b/core/dom/SharedArrayBuffer.idl
@@ -2,9 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Draft spec:
-// https://docs.google.com/document/d/1NDGA_gZJ7M7w1Bh8S0AoDyEqwDdRh4uSoTPSNn77PFk
-
+// Draft spec: https://github.com/lars-t-hansen/ecmascript_sharedmem
[
ImplementedAs=DOMSharedArrayBuffer,
NoInterfaceObject,
diff --git a/core/dom/Text.idl b/core/dom/Text.idl
index 1d733b9..f970d49 100644
--- a/core/dom/Text.idl
+++ b/core/dom/Text.idl
@@ -29,4 +29,5 @@
// Shadow DOM
// http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-text-interface
NodeList getDestinationInsertionPoints();
+ [RuntimeEnabled=ShadowDOMV1, ImplementedAs=assignedSlotForBinding] readonly attribute HTMLSlotElement assignedSlot;
};
diff --git a/core/dom/Touch.idl b/core/dom/Touch.idl
index 72bc53c..a48a023 100644
--- a/core/dom/Touch.idl
+++ b/core/dom/Touch.idl
@@ -23,9 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://rawgit.com/w3c/touch-events/v1-errata/touchevents.html#touch-interface
+// https://w3c.github.io/touch-events/#touch-interface
[
+ Constructor(TouchInit initDict),
+ ConstructorCallWith=Document,
WillBeGarbageCollected,
] interface Touch {
readonly attribute long identifier;
@@ -36,17 +38,8 @@
readonly attribute double clientY;
readonly attribute double pageX;
readonly attribute double pageY;
-
- // Touch Events Extensions
- // http://rawgit.com/w3c/touch-events/master/touchevents.html#touch-interface
readonly attribute float radiusX;
readonly attribute float radiusY;
readonly attribute float rotationAngle;
readonly attribute float force;
-
- // Non-standard APIs
- [DeprecateAs=PrefixedTouchRadiusX, ImplementedAs=radiusX] readonly attribute float webkitRadiusX;
- [DeprecateAs=PrefixedTouchRadiusY, ImplementedAs=radiusY] readonly attribute float webkitRadiusY;
- [DeprecateAs=PrefixedTouchRotationAngle, ImplementedAs=rotationAngle] readonly attribute float webkitRotationAngle;
- [DeprecateAs=PrefixedTouchForce, ImplementedAs=force] readonly attribute float webkitForce;
};
diff --git a/core/dom/TouchInit.idl b/core/dom/TouchInit.idl
new file mode 100644
index 0000000..ba733b6
--- /dev/null
+++ b/core/dom/TouchInit.idl
@@ -0,0 +1,20 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/touch-events/#touch-interface
+
+dictionary TouchInit {
+ required long identifier;
+ required EventTarget target;
+ double clientX = 0;
+ double clientY = 0;
+ double screenX = 0;
+ double screenY = 0;
+ double pageX = 0;
+ double pageY = 0;
+ float radiusX = 0;
+ float radiusY = 0;
+ float rotationAngle = 0;
+ float force = 0;
+};
diff --git a/core/dom/TouchList.idl b/core/dom/TouchList.idl
index a0bd263..ea7d013 100644
--- a/core/dom/TouchList.idl
+++ b/core/dom/TouchList.idl
@@ -23,7 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://www.w3.org/TR/touch-events/#touchlist-interface
+// https://w3c.github.io/touch-events/#touchlist-interface
[
WillBeGarbageCollected,
diff --git a/core/dom/TreeWalker.idl b/core/dom/TreeWalker.idl
index 6cfa8a3..4fa1298 100644
--- a/core/dom/TreeWalker.idl
+++ b/core/dom/TreeWalker.idl
@@ -27,7 +27,7 @@
[SameObject] readonly attribute Node root;
readonly attribute unsigned long whatToShow;
readonly attribute NodeFilter? filter;
- [RaisesException=Setter] attribute Node currentNode;
+ attribute Node currentNode;
[RaisesException] Node? parentNode();
[RaisesException] Node? firstChild();
diff --git a/core/dom/URL.idl b/core/dom/URL.idl
index 8bd9527..f5df0bb 100644
--- a/core/dom/URL.idl
+++ b/core/dom/URL.idl
@@ -27,11 +27,7 @@
// https://url.spec.whatwg.org/#url
[
- // TODO(philipj): There should only be one constructor:
- // Constructor(USVString url, optional USVString base)
- Constructor(USVString url),
- Constructor(USVString url, USVString base),
- Constructor(USVString url, URL base),
+ Constructor(USVString url, optional USVString base),
Exposed=(Window,Worker),
ImplementedAs=DOMURL,
RaisesException=Constructor,
@@ -45,8 +41,8 @@
// TODO(philipj): This should be in a partial interface definition:
// File API
// https://w3c.github.io/FileAPI/#creating-revoking
- // TODO(philipj): Neither the return value nor the argument should be nullable.
- [RaisesException, CallWith=ExecutionContext] static DOMString? createObjectURL(Blob? blob);
+ // TODO(philipj): The return type should not be nullable.
+ [RaisesException, CallWith=ExecutionContext] static DOMString? createObjectURL(Blob blob);
[CallWith=ExecutionContext] static void revokeObjectURL(DOMString url);
};
diff --git a/core/dom/URLSearchParams.idl b/core/dom/URLSearchParams.idl
new file mode 100644
index 0000000..409542c
--- /dev/null
+++ b/core/dom/URLSearchParams.idl
@@ -0,0 +1,21 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://url.spec.whatwg.org/#interface-urlsearchparams
+
+[
+ Constructor(optional (USVString or URLSearchParams) init = ""),
+ GarbageCollected,
+ Exposed=(Window,Worker)
+] interface URLSearchParams {
+ void append(USVString name, USVString value);
+ [ImplementedAs=deleteAllWithName] void delete(USVString name);
+ USVString? get(USVString name);
+ sequence<USVString> getAll(USVString name);
+ boolean has(USVString name);
+ void set(USVString name, USVString value);
+
+ iterable<USVString, USVString>;
+ stringifier;
+};
diff --git a/core/dom/shadow/ShadowRoot.idl b/core/dom/shadow/ShadowRoot.idl
index cfb06f2..f783a41 100644
--- a/core/dom/shadow/ShadowRoot.idl
+++ b/core/dom/shadow/ShadowRoot.idl
@@ -42,5 +42,5 @@
// interface. Here, it's used to implement "Invoking the cloneNode() method
// on a ShadowRoot instance must always throw a DATA_CLONE_ERR exception" as
// Node.cloneNode() does not have [RaisesException].
- [RaisesException] Node cloneNode([Default=Undefined] optional boolean deep);
+ [RaisesException] Node cloneNode(optional boolean deep = false);
};
diff --git a/core/dom/shadow/ShadowRootInit.idl b/core/dom/shadow/ShadowRootInit.idl
index a2a97dc..69321e7 100644
--- a/core/dom/shadow/ShadowRootInit.idl
+++ b/core/dom/shadow/ShadowRootInit.idl
@@ -7,6 +7,6 @@
enum ShadowRootMode { "open", "closed" };
dictionary ShadowRootInit {
- ShadowRootMode mode;
+ required ShadowRootMode mode;
[RuntimeEnabled=ShadowRootDelegatesFocus] boolean delegatesFocus;
};
diff --git a/core/editing/Selection.idl b/core/editing/Selection.idl
index a7ad07b..51c2879 100644
--- a/core/editing/Selection.idl
+++ b/core/editing/Selection.idl
@@ -30,42 +30,44 @@
// http://w3c.github.io/selection-api/#idl-def-Selection
// TODO(yoichio): All long types should be unsigned long. crbug.com/391673
+// TODO(philipj): No arguments are optional in the spec, but some should be:
+// https://github.com/w3c/selection-api/issues/30
[
ImplementedAs=DOMSelection,
WillBeGarbageCollected,
] interface Selection {
- readonly attribute Node? anchorNode;
- readonly attribute long anchorOffset;
- readonly attribute Node? focusNode;
- readonly attribute long focusOffset;
- readonly attribute boolean isCollapsed;
- readonly attribute long rangeCount;
- [RaisesException] Range getRangeAt(long index);
- void addRange(Range range);
+ [MeasureAs=SelectionAnchorNode] readonly attribute Node? anchorNode;
+ [MeasureAs=SelectionAnchorOffset] readonly attribute long anchorOffset;
+ [MeasureAs=SelectionFocusNode] readonly attribute Node? focusNode;
+ [MeasureAs=SelectionFocusOffset] readonly attribute long focusOffset;
+ [MeasureAs=SelectionIsCollapsed] readonly attribute boolean isCollapsed;
+ [MeasureAs=SelectionRangeCount] readonly attribute long rangeCount;
+ [MeasureAs=SelectionType] readonly attribute DOMString type;
+ [MeasureAs=SelectionGetRangeAt, RaisesException] Range getRangeAt(long index);
+ [MeasureAs=SelectionAddRange] void addRange(Range range);
// TODO(yoichio): Implement removeRange. crbug.com/391673
//void removeRange(Range range);
- void removeAllRanges();
- // TODO(yoichio): The node argument should not be nullable. crbug.com/391673
- // TODO(philipj): The offset argument should not have a default value.
- [RaisesException] void collapse(Node? node, optional long offset = 0);
- [RaisesException] void collapseToStart();
- [RaisesException] void collapseToEnd();
- // TODO(philipj): The offset argument should not have a default value.
- [RaisesException, TypeChecking=Interface] void extend(Node node, optional long offset = 0);
+ [MeasureAs=SelectionRemoveAllRanges] void removeAllRanges();
+ [MeasureAs=SelectionEmpty] void empty();
+ [MeasureAs=SelectionCollapse, RaisesException, LegacyInterfaceTypeChecking] void collapse(Node? node, optional long offset = 0);
+ [ImplementedAs=collapse, MeasureAs=SelectionSetPosition, RaisesException, LegacyInterfaceTypeChecking] void setPosition(Node? node, optional long offset = 0);
+ [MeasureAs=SelectionCollapseToStart, RaisesException] void collapseToStart();
+ [MeasureAs=SelectionCollapseToEnd, RaisesException] void collapseToEnd();
+ [MeasureAs=SelectionExtend, RaisesException] void extend(Node node, optional long offset = 0);
// TODO(philipj): The arguments should be anchorNode, anchorOffset,
- // focusNode and focusOffset, and none of them should be optional.
- [MeasureAs=SelectionSetBaseAndExtent, RaisesException] void setBaseAndExtent([Default=Undefined] optional Node baseNode,
- [Default=Undefined] optional long baseOffset,
- [Default=Undefined] optional Node extentNode,
- [Default=Undefined] optional long extentOffset);
- [RaisesException, TypeChecking=Interface] void selectAllChildren(Node node);
- [CustomElementCallbacks] void deleteFromDocument();
- // TODO(philipj): The arguments should not be optional.
- [MeasureAs=SelectionContainsNode] boolean containsNode([Default=Undefined] optional Node node, [Default=Undefined] optional boolean allowPartialContainment);
+ // focusNode and focusOffset, and none of them are optional or nullable in
+ // the spec.
+ [MeasureAs=SelectionSetBaseAndExtent, RaisesException, LegacyInterfaceTypeChecking] void setBaseAndExtent([Default=Undefined] optional Node? baseNode,
+ [Default=Undefined] optional long baseOffset,
+ [Default=Undefined] optional Node? extentNode,
+ [Default=Undefined] optional long extentOffset);
+ [MeasureAs=SelectionSelectAllChildren, RaisesException] void selectAllChildren(Node node);
+ [MeasureAs=SelectionDeleteDromDocument, CustomElementCallbacks] void deleteFromDocument();
+ [MeasureAs=SelectionContainsNode] boolean containsNode(Node node, optional boolean allowPartialContainment = false);
// TODO(philipj): The spec does not use [NotEnumerable]. See also:
// https://codereview.chromium.org/345983004/
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=26179
- [NotEnumerable] stringifier DOMString ();
+ [MeasureAs=SelectionDOMString, NotEnumerable] stringifier DOMString();
// Non-standard APIs
@@ -75,17 +77,8 @@
[MeasureAs=SelectionExtentNode] readonly attribute Node? extentNode;
[MeasureAs=SelectionExtentOffset] readonly attribute long extentOffset;
- // https://github.com/w3c/selection-api/issues/14
- [MeasureAs=SelectionType] readonly attribute DOMString type;
-
- // https://github.com/w3c/selection-api/issues/36
- [MeasureAs=SelectionEmpty] void empty();
-
// https://github.com/w3c/selection-api/issues/37
[MeasureAs=SelectionModify] void modify([Default=Undefined] optional DOMString alter,
[Default=Undefined] optional DOMString direction,
[Default=Undefined] optional DOMString granularity);
-
- // https://github.com/w3c/selection-api/issues/38
- [ImplementedAs=collapse, MeasureAs=SelectionSetPosition, RaisesException] void setPosition(Node? node, optional long offset = 0);
};
diff --git a/core/events/AnimationPlayerEvent.idl b/core/events/AnimationPlayerEvent.idl
index bfd724a..291567a 100644
--- a/core/events/AnimationPlayerEvent.idl
+++ b/core/events/AnimationPlayerEvent.idl
@@ -11,6 +11,6 @@
Constructor(DOMString type, optional AnimationPlayerEventInit eventInitDict),
RuntimeEnabled=WebAnimationsAPI,
] interface AnimationPlayerEvent : Event {
- readonly attribute double currentTime;
+ readonly attribute double? currentTime;
readonly attribute double timelineTime;
};
diff --git a/core/events/CustomEvent.idl b/core/events/CustomEvent.idl
index 4d4cb08..ca1e27f 100644
--- a/core/events/CustomEvent.idl
+++ b/core/events/CustomEvent.idl
@@ -26,14 +26,12 @@
// https://dom.spec.whatwg.org/#interface-customevent
[
- Constructor(DOMString type, optional CustomEventInit eventInitDict),
+ // TODO(bashi): Don't use CustomConstructor. Constructor should be:
+ // Constructor(DOMString type, optional CustomEventInit eventInitDict),
+ CustomConstructor,
Exposed=(Window,Worker),
] interface CustomEvent : Event {
[Custom=Getter] readonly attribute any detail;
- // FIXME: initCustomEvent()'s arguments should not be optional.
- [Custom, Measure] void initCustomEvent([Default=Undefined] optional DOMString type,
- [Default=Undefined] optional boolean bubbles,
- [Default=Undefined] optional boolean cancelable,
- [Default=Undefined] optional any detail);
+ [Measure,Custom=(CallEpilogue)] void initCustomEvent(DOMString type, boolean bubbles, boolean cancelable, any detail);
};
diff --git a/core/events/DragEvent.idl b/core/events/DragEvent.idl
new file mode 100644
index 0000000..04047e2
--- /dev/null
+++ b/core/events/DragEvent.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://html.spec.whatwg.org/multipage/interaction.html#dragevent
+
+[
+ Constructor(DOMString type, optional DragEventInit eventInitDict),
+] interface DragEvent : MouseEvent {
+ readonly attribute DataTransfer dataTransfer;
+};
diff --git a/core/events/DragEventInit.idl b/core/events/DragEventInit.idl
new file mode 100644
index 0000000..3b90386
--- /dev/null
+++ b/core/events/DragEventInit.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://html.spec.whatwg.org/multipage/interaction.html#drageventinit
+
+dictionary DragEventInit : MouseEventInit {
+ DataTransfer? dataTransfer;
+};
diff --git a/core/events/Event.idl b/core/events/Event.idl
index 0a40ba6..e2f5a1c 100644
--- a/core/events/Event.idl
+++ b/core/events/Event.idl
@@ -43,9 +43,20 @@
void preventDefault();
readonly attribute boolean defaultPrevented;
- // FIXME: Implement the isTrusted attribute. crbug.com/334015
- // [Unforgeable] readonly attribute boolean isTrusted;
- readonly attribute DOMTimeStamp timeStamp;
+ [RuntimeEnabled=ShadowDOMV1, MeasureAs=EventScoped] readonly attribute boolean scoped;
+
+ [RuntimeEnabled=TrustedEvents, Unforgeable] readonly attribute boolean isTrusted;
+
+ // TODO(majidvp): At the moment the actual return value type can either
+ // be:
+ // - DOMTimeStamp (i.e. long long): legacy type
+ // - DOMHighResTimeStamp (i.e. double): HighResEventTimeStamp REF is
+ // enabled
+ // Below IDL definition uses DOMHighResTimeStamp because all DOMTimeStamp
+ // values can be represented in double type without any loss of precision.
+ // Once the feature is enabled by default the return value type will always
+ // match the definition here.
+ [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp timeStamp;
// FIXME: initEvent()'s arguments should not be optional.
[Measure] void initEvent([Default=Undefined] optional DOMString type,
@@ -55,6 +66,7 @@
// Shadow DOM
// https://w3c.github.io/webcomponents/spec/shadow/#extensions-to-event-interface
[MeasureAs=EventPath, CallWith=ScriptState] readonly attribute EventTarget[] path;
+ [RuntimeEnabled=ShadowDOMV1, MeasureAs=EventDeepPath, CallWith=ScriptState] sequence<EventTarget> deepPath();
// Non-standard APIs
const unsigned short MOUSEDOWN = 1;
diff --git a/core/events/EventInit.idl b/core/events/EventInit.idl
index f94cf4e..0ddc8ca 100644
--- a/core/events/EventInit.idl
+++ b/core/events/EventInit.idl
@@ -7,4 +7,5 @@
dictionary EventInit {
boolean bubbles = false;
boolean cancelable = false;
+ [RuntimeEnabled=ShadowDOMV1] boolean scoped = false;
};
diff --git a/core/events/EventListener.idl b/core/events/EventListener.idl
index 3f601bd..2823f16 100644
--- a/core/events/EventListener.idl
+++ b/core/events/EventListener.idl
@@ -20,6 +20,8 @@
// https://dom.spec.whatwg.org/#callbackdef-eventlistener
-callback interface EventListener {
+[
+ WillBeGarbageCollected
+] callback interface EventListener {
void handleEvent(Event event);
};
diff --git a/core/events/EventListenerOptions.idl b/core/events/EventListenerOptions.idl
new file mode 100644
index 0000000..f670de3
--- /dev/null
+++ b/core/events/EventListenerOptions.idl
@@ -0,0 +1,15 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://github.com/RByers/EventListenerOptions
+
+dictionary EventListenerOptions {
+ // TODO: |capture| is runtime enabled and its value actually
+ // changes whether the feature is enabled or not. Setting
+ // it to a default value here prevents the ability of checking
+ // whether it was set manually or by default. See EventTarget.cpp
+ // where it is populated. crbug.com/543685
+ [RuntimeEnabled=EventListenerOptions] boolean capture;
+ [RuntimeEnabled=PassiveEventListeners] boolean passive;
+};
diff --git a/core/events/EventModifierInit.idl b/core/events/EventModifierInit.idl
index 7c28e78..44caeb1 100644
--- a/core/events/EventModifierInit.idl
+++ b/core/events/EventModifierInit.idl
@@ -9,5 +9,12 @@
boolean shiftKey = false;
boolean altKey = false;
boolean metaKey = false;
+ boolean modifierAltGraph = false;
+ boolean modifierCapsLock = false;
+ boolean modifierFn = false;
+ boolean modifierNumLock = false;
+ boolean modifierOS = false;
+ boolean modifierScrollLock = false;
+ boolean modifierSymbol = false;
// FIXME: Add modifierXXX members when needed.
};
diff --git a/core/events/EventTarget.idl b/core/events/EventTarget.idl
index 3a37d19..b17db3f 100644
--- a/core/events/EventTarget.idl
+++ b/core/events/EventTarget.idl
@@ -21,14 +21,11 @@
// https://dom.spec.whatwg.org/#interface-eventtarget
[
- CheckSecurity=Window,
+ CheckSecurity=Receiver,
WillBeGarbageCollected,
Exposed=(Window,Worker)
] interface EventTarget {
- // FIXME: first 2 args should be required, but throwing TypeError breaks
- // legacy content. http://crbug.com/353484
- // FIXME: type should not be nullable.
- [Custom=(CallPrologue,CallEpilogue)] void addEventListener(optional DOMString? type = null, optional EventListener? listener = null, optional boolean capture = false);
- [Custom=(CallPrologue,CallEpilogue)] void removeEventListener(optional DOMString? type = null, optional EventListener? listener = null, optional boolean capture = false);
- [RaisesException] boolean dispatchEvent(Event event);
+ [Custom] void addEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options);
+ [Custom] void removeEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options);
+ [ImplementedAs=dispatchEventForBindings, RaisesException] boolean dispatchEvent(Event event);
};
diff --git a/core/events/HashChangeEvent.idl b/core/events/HashChangeEvent.idl
index 663fd57..40d4ec3 100644
--- a/core/events/HashChangeEvent.idl
+++ b/core/events/HashChangeEvent.idl
@@ -25,12 +25,4 @@
] interface HashChangeEvent : Event {
readonly attribute DOMString oldURL;
readonly attribute DOMString newURL;
-
- // TODO(philipj): initHashChangeEvent() has been removed from the spec:
- // https://html5.org/r/6551
- [Measure] void initHashChangeEvent([Default=Undefined] optional DOMString type,
- [Default=Undefined] optional boolean canBubble,
- [Default=Undefined] optional boolean cancelable,
- [Default=Undefined] optional DOMString oldURL,
- [Default=Undefined] optional DOMString newURL);
};
diff --git a/core/events/InputEvent.idl b/core/events/InputEvent.idl
new file mode 100644
index 0000000..cc1d595
--- /dev/null
+++ b/core/events/InputEvent.idl
@@ -0,0 +1,12 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/editing/input-events.html
+
+[
+ Constructor(DOMString type, optional InputEventInit eventInitDict),
+ RuntimeEnabled=InputEvent,
+] interface InputEvent : UIEvent {
+ // TODO(chongz): Add 'inputType', 'data', 'isComposing' and 'targetRanges'
+};
diff --git a/core/events/InputEventInit.idl b/core/events/InputEventInit.idl
new file mode 100644
index 0000000..6b2d07d
--- /dev/null
+++ b/core/events/InputEventInit.idl
@@ -0,0 +1,11 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/editing/input-events.html
+
+[
+ RuntimeEnabled=InputEvent,
+] dictionary InputEventInit : UIEventInit {
+ // TODO(chongz): Add 'inputType', 'data', 'isComposing' and 'targetRanges'
+};
diff --git a/core/events/KeyboardEvent.idl b/core/events/KeyboardEvent.idl
index a83b365..15990ac 100644
--- a/core/events/KeyboardEvent.idl
+++ b/core/events/KeyboardEvent.idl
@@ -45,7 +45,7 @@
[CallWith=ScriptState, Measure] void initKeyboardEvent([Default=Undefined] optional DOMString type,
[Default=Undefined] optional boolean bubbles,
[Default=Undefined] optional boolean cancelable,
- [Default=Undefined] optional Window view,
+ [Default=Undefined] optional Window? view,
[Default=Undefined] optional DOMString keyIdentifier,
[Default=Undefined] optional unsigned long location,
[Default=Undefined] optional boolean ctrlKey,
@@ -60,5 +60,4 @@
// Non-standard APIs
[Measure] readonly attribute DOMString keyIdentifier;
- [ImplementedAs=location, DeprecateAs=KeyboardEventKeyLocation] readonly attribute unsigned long keyLocation;
};
diff --git a/core/events/KeyboardEventInit.idl b/core/events/KeyboardEventInit.idl
index 80a6007..d45a16d 100644
--- a/core/events/KeyboardEventInit.idl
+++ b/core/events/KeyboardEventInit.idl
@@ -5,13 +5,12 @@
// https://w3c.github.io/uievents/#idl-def-KeyboardEventInit
dictionary KeyboardEventInit : EventModifierInit {
- // TODO(philipj): DOMString key = "";
- // TODO(philipj): DOMString code = "";
+ [RuntimeEnabled=KeyboardEventKey] DOMString key = "";
+ [RuntimeEnabled=KeyboardEventCode] DOMString code = "";
unsigned long location = 0;
boolean repeat = false;
// TODO(philipj): boolean isComposing = false;
// Non-standard APIs
DOMString keyIdentifier = "";
- [ImplementedAs=location, DeprecateAs=KeyboardEventKeyLocation] unsigned long keyLocation = 0;
};
diff --git a/core/events/MessageEvent.idl b/core/events/MessageEvent.idl
index 588a939..536ba1f 100644
--- a/core/events/MessageEvent.idl
+++ b/core/events/MessageEvent.idl
@@ -38,6 +38,7 @@
// TODO(bashi): |source| should be (WindowProxy or MessagePort)?
readonly attribute EventTarget? source;
readonly attribute MessagePort[]? ports;
+ [RuntimeEnabled=suborigins] readonly attribute DOMString suborigin;
// TODO(philipj): None of the initMessageEvent() arguments should be
// optional, and |sourceArg| and |portsArg| are of the wrong type.
diff --git a/core/events/MouseEvent.idl b/core/events/MouseEvent.idl
index fbdeaa3..0f4eab1 100644
--- a/core/events/MouseEvent.idl
+++ b/core/events/MouseEvent.idl
@@ -34,7 +34,7 @@
readonly attribute short button;
readonly attribute unsigned short buttons;
readonly attribute EventTarget? relatedTarget;
- // TODO(philipj): boolean getModifierState(DOMString keyArg);
+ boolean getModifierState(DOMString keyArg);
// https://w3c.github.io/uievents/#idl-interface-MouseEvent-initializers
// TODO(philipj): None of the initMouseEvent() arguments should be optional.
@@ -74,11 +74,6 @@
[MeasureAs=MouseEventFromElement] readonly attribute Node fromElement;
[MeasureAs=MouseEventToElement] readonly attribute Node toElement;
[MeasureAs=MouseEventWhich] readonly attribute long which;
- [DeprecateAs=PrefixedMouseEventMovementX, ImplementedAs=movementX] readonly attribute long webkitMovementX;
- [DeprecateAs=PrefixedMouseEventMovementY, ImplementedAs=movementY] readonly attribute long webkitMovementY;
[Measure] readonly attribute long layerX;
[Measure] readonly attribute long layerY;
-
- // FIXME: dataTransfer belongs on the DragEvent interface. crbug.com/498504
- readonly attribute DataTransfer dataTransfer;
};
diff --git a/core/events/MutationEvent.idl b/core/events/MutationEvent.idl
index 03ef830..d3607a4 100644
--- a/core/events/MutationEvent.idl
+++ b/core/events/MutationEvent.idl
@@ -34,7 +34,7 @@
[Measure] void initMutationEvent([Default=Undefined] optional DOMString type,
[Default=Undefined] optional boolean bubbles,
[Default=Undefined] optional boolean cancelable,
- [Default=Undefined] optional Node relatedNode,
+ [Default=Undefined] optional Node? relatedNode,
[Default=Undefined] optional DOMString prevValue,
[Default=Undefined] optional DOMString newValue,
[Default=Undefined] optional DOMString attrName,
diff --git a/core/events/ProgressEvent.idl b/core/events/ProgressEvent.idl
index 5ff7270..5062dea 100644
--- a/core/events/ProgressEvent.idl
+++ b/core/events/ProgressEvent.idl
@@ -25,10 +25,9 @@
// https://xhr.spec.whatwg.org/#interface-progressevent
-// TODO(philipj): The spec has Exposed=(Window,Worker)
-// https://github.com/whatwg/xhr/issues/19
[
Constructor(DOMString type, optional ProgressEventInit eventInitDict),
+ Exposed=(Window,DedicatedWorker,SharedWorker)
] interface ProgressEvent : Event {
readonly attribute boolean lengthComputable;
readonly attribute unsigned long long loaded;
diff --git a/core/events/PromiseRejectionEvent.idl b/core/events/PromiseRejectionEvent.idl
index 85ebeec..6cb2adf 100644
--- a/core/events/PromiseRejectionEvent.idl
+++ b/core/events/PromiseRejectionEvent.idl
@@ -7,10 +7,10 @@
[
RuntimeEnabled=PromiseRejectionEvent,
Custom=VisitDOMWrapper,
- Constructor(DOMString type, optional PromiseRejectionEventInit eventInitDict),
+ Constructor(DOMString type, PromiseRejectionEventInit eventInitDict),
ConstructorCallWith=ScriptState,
- Exposed=(Window,Worker,ServiceWorker),
+ Exposed=(Window,Worker),
] interface PromiseRejectionEvent : Event {
- [Custom=Getter] readonly attribute Promise<any>? promise;
+ [Custom=Getter] readonly attribute Promise<any> promise;
[CallWith=ScriptState] readonly attribute any reason;
};
diff --git a/core/events/PromiseRejectionEventInit.idl b/core/events/PromiseRejectionEventInit.idl
index cf6b3ba..caa0e7e 100644
--- a/core/events/PromiseRejectionEventInit.idl
+++ b/core/events/PromiseRejectionEventInit.idl
@@ -7,6 +7,6 @@
[
RuntimeEnabled=PromiseRejectionEvent,
] dictionary PromiseRejectionEventInit : EventInit {
- Promise<any> promise;
+ required Promise<any> promise;
any reason;
};
diff --git a/core/events/SecurityPolicyViolationEvent.idl b/core/events/SecurityPolicyViolationEvent.idl
index f3984a5..2ae1dbf 100644
--- a/core/events/SecurityPolicyViolationEvent.idl
+++ b/core/events/SecurityPolicyViolationEvent.idl
@@ -36,8 +36,7 @@
readonly attribute DOMString effectiveDirective;
readonly attribute DOMString originalPolicy;
readonly attribute DOMString sourceFile;
- // FIXME: The spec says "statusCode" is a DOMString.
- [Measure] readonly attribute long statusCode;
+ [Measure] readonly attribute unsigned short statusCode;
readonly attribute long lineNumber;
readonly attribute long columnNumber;
};
diff --git a/core/events/SecurityPolicyViolationEventInit.idl b/core/events/SecurityPolicyViolationEventInit.idl
index 32ce1ba..77d3db3 100644
--- a/core/events/SecurityPolicyViolationEventInit.idl
+++ b/core/events/SecurityPolicyViolationEventInit.idl
@@ -14,8 +14,7 @@
DOMString effectiveDirective;
DOMString originalPolicy;
DOMString sourceFile;
- // FIXME: The spec says "statusCode" is a DOMString.
- long statusCode;
+ unsigned short statusCode;
long lineNumber;
long columnNumber;
};
diff --git a/core/events/TextEvent.idl b/core/events/TextEvent.idl
index 96ffbce..b49c98f 100644
--- a/core/events/TextEvent.idl
+++ b/core/events/TextEvent.idl
@@ -34,10 +34,10 @@
[Measure] readonly attribute DOMString data;
- [Measure] void initTextEvent([Default=Undefined] optional DOMString typeArg,
- [Default=Undefined] optional boolean canBubbleArg,
- [Default=Undefined] optional boolean cancelableArg,
- [Default=Undefined] optional Window viewArg,
- [Default=Undefined] optional DOMString dataArg);
+ [Measure] void initTextEvent([Default=Undefined] optional DOMString type,
+ [Default=Undefined] optional boolean bubbles,
+ [Default=Undefined] optional boolean cancelable,
+ [Default=Undefined] optional Window? view,
+ [Default=Undefined] optional DOMString data);
};
diff --git a/core/events/TouchEvent.idl b/core/events/TouchEvent.idl
index d4c3b2c..42e234d 100644
--- a/core/events/TouchEvent.idl
+++ b/core/events/TouchEvent.idl
@@ -23,9 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://www.w3.org/TR/touch-events/#touchevent-interface
+// https://w3c.github.io/touch-events/#touchevent-interface
-interface TouchEvent : UIEvent {
+[
+ Constructor(DOMString type, optional TouchEventInit eventInitDict),
+] interface TouchEvent : UIEvent {
readonly attribute TouchList touches;
readonly attribute TouchList targetTouches;
readonly attribute TouchList changedTouches;
@@ -34,18 +36,17 @@
readonly attribute boolean ctrlKey;
readonly attribute boolean shiftKey;
- // FIXME: initTouch() is not yet standardized.
- [CallWith=ScriptState, Measure] void initTouchEvent([Default=Undefined] optional TouchList touches,
- [Default=Undefined] optional TouchList targetTouches,
- [Default=Undefined] optional TouchList changedTouches,
- [Default=Undefined] optional DOMString type,
- [Default=Undefined] optional Window view,
- [Default=Undefined] optional long unused1,
- [Default=Undefined] optional long unused2,
- [Default=Undefined] optional long unused3,
- [Default=Undefined] optional long unused4,
- [Default=Undefined] optional boolean ctrlKey,
- [Default=Undefined] optional boolean altKey,
- [Default=Undefined] optional boolean shiftKey,
- [Default=Undefined] optional boolean metaKey);
+ [CallWith=ScriptState, DeprecateAs=V8TouchEvent_InitTouchEvent_Method, LegacyInterfaceTypeChecking] void initTouchEvent([Default=Undefined] optional TouchList touches,
+ [Default=Undefined] optional TouchList targetTouches,
+ [Default=Undefined] optional TouchList changedTouches,
+ [Default=Undefined] optional DOMString type,
+ [Default=Undefined] optional Window? view,
+ [Default=Undefined] optional long unused1,
+ [Default=Undefined] optional long unused2,
+ [Default=Undefined] optional long unused3,
+ [Default=Undefined] optional long unused4,
+ [Default=Undefined] optional boolean ctrlKey,
+ [Default=Undefined] optional boolean altKey,
+ [Default=Undefined] optional boolean shiftKey,
+ [Default=Undefined] optional boolean metaKey);
};
diff --git a/core/events/TouchEventInit.idl b/core/events/TouchEventInit.idl
new file mode 100644
index 0000000..3fffb6b
--- /dev/null
+++ b/core/events/TouchEventInit.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/touch-events/#touchevent-interface
+
+dictionary TouchEventInit : EventModifierInit {
+ sequence<Touch> touches = [];
+ sequence<Touch> targetTouches = [];
+ sequence<Touch> changedTouches = [];
+};
diff --git a/core/events/UIEvent.idl b/core/events/UIEvent.idl
index 7cb51a8..c0ae319 100644
--- a/core/events/UIEvent.idl
+++ b/core/events/UIEvent.idl
@@ -24,7 +24,7 @@
] interface UIEvent : Event {
readonly attribute Window? view;
readonly attribute long detail;
- [RuntimeEnabled=InputDevice] readonly attribute InputDevice? sourceDevice;
+ [RuntimeEnabled=InputDeviceCapabilities] readonly attribute InputDeviceCapabilities? sourceCapabilities;
// https://w3c.github.io/uievents/#idl-interface-UIEvent-initializers
// TODO(philipj): None of the initUIEvent() arguments should be optional.
@@ -34,8 +34,6 @@
[Default=Undefined] optional Window? view,
[Default=Undefined] optional long detail);
- // FIXME: these belong on the KeyboardEvent interface
- [MeasureAs=UIEventCharCode] readonly attribute long charCode;
- [MeasureAs=UIEventKeyCode] readonly attribute long keyCode;
+ // FIXME: this belongs on the KeyboardEvent interface
[MeasureAs=UIEventWhich] readonly attribute long which;
};
diff --git a/core/events/UIEventInit.idl b/core/events/UIEventInit.idl
index 522b008..e1f9cbe 100644
--- a/core/events/UIEventInit.idl
+++ b/core/events/UIEventInit.idl
@@ -7,5 +7,5 @@
dictionary UIEventInit : EventInit {
Window? view = null;
long detail = 0;
- [RuntimeEnabled=InputDevice] InputDevice? sourceDevice = null;
-};
+ [RuntimeEnabled=InputDeviceCapabilities] InputDeviceCapabilities? sourceCapabilities = null;
+};
\ No newline at end of file
diff --git a/modules/filesystem/FileCallback.idl b/core/fileapi/BlobCallback.idl
similarity index 95%
rename from modules/filesystem/FileCallback.idl
rename to core/fileapi/BlobCallback.idl
index 2a692ba..e3ebb5e 100644
--- a/modules/filesystem/FileCallback.idl
+++ b/core/fileapi/BlobCallback.idl
@@ -28,6 +28,6 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-callback interface FileCallback {
- void handleEvent(File file);
+callback interface BlobCallback {
+ void handleEvent(Blob? blob);
};
diff --git a/core/fileapi/FileError.idl b/core/fileapi/FileError.idl
index 2507a7e..9022489 100644
--- a/core/fileapi/FileError.idl
+++ b/core/fileapi/FileError.idl
@@ -29,6 +29,7 @@
*/
// TODO(philipj): Remove the FileError interface. crbug.com/496901
+[Exposed=(Window,Worker)]
interface FileError : DOMError {
const unsigned short NOT_FOUND_ERR = 1;
const unsigned short SECURITY_ERR = 2;
diff --git a/core/fileapi/FileReader.idl b/core/fileapi/FileReader.idl
index 1a032a9..c299840 100644
--- a/core/fileapi/FileReader.idl
+++ b/core/fileapi/FileReader.idl
@@ -33,11 +33,10 @@
[
GarbageCollected,
- ActiveDOMObject,
+ DependentLifetime,
Constructor,
ConstructorCallWith=ExecutionContext,
Exposed=(Window,Worker),
- TypeChecking=Interface
] interface FileReader : EventTarget {
// async read methods
[RaisesException] void readAsArrayBuffer(Blob blob);
@@ -54,7 +53,7 @@
const unsigned short LOADING = 1;
const unsigned short DONE = 2;
- readonly attribute unsigned short readyState;
+ [ImplementedAs=getReadyState] readonly attribute unsigned short readyState;
// File or Blob data
readonly attribute (DOMString or ArrayBuffer)? result;
diff --git a/core/fileapi/FileReaderSync.idl b/core/fileapi/FileReaderSync.idl
index 642d8e2..d587242 100644
--- a/core/fileapi/FileReaderSync.idl
+++ b/core/fileapi/FileReaderSync.idl
@@ -33,7 +33,7 @@
[
GarbageCollected,
Exposed=Worker,
- Constructor
+ Constructor,
] interface FileReaderSync {
[CallWith=ExecutionContext, RaisesException] ArrayBuffer readAsArrayBuffer(Blob blob);
// TODO(philipj): readAsBinaryString() was removed from the spec in 2012:
diff --git a/core/frame/BarProp.idl b/core/frame/BarProp.idl
index 90a8e1e..278b34d 100644
--- a/core/frame/BarProp.idl
+++ b/core/frame/BarProp.idl
@@ -31,7 +31,5 @@
[
WillBeGarbageCollected,
] interface BarProp {
- // TODO(philipj): Remove readonly or have it added to the spec:
- // https://www.w3.org/Bugs/Public/show_bug.cgi?id=28697
readonly attribute boolean visible;
};
diff --git a/core/frame/History.idl b/core/frame/History.idl
index 5462033..bec0890 100644
--- a/core/frame/History.idl
+++ b/core/frame/History.idl
@@ -25,26 +25,20 @@
// https://html.spec.whatwg.org/#the-history-interface
+enum ScrollRestoration {"auto", "manual"};
+
[
GarbageCollected,
] interface History {
- // TODO(philipj): length is long in the spec, use that or change the spec:
- // https://www.w3.org/Bugs/Public/show_bug.cgi?id=28789
readonly attribute unsigned long length;
+ [RuntimeEnabled=ScrollRestoration, Measure] attribute ScrollRestoration scrollRestoration;
// TODO(philipj): The SerializedScriptValue type should be any.
[CachedAttribute=stateChanged] readonly attribute SerializedScriptValue state;
- // TODO(philipj): delta does not have a default value in the spec:
- // https://www.w3.org/Bugs/Public/show_bug.cgi?id=28790
[CallWith=ExecutionContext] void go(optional long delta = 0);
[CallWith=ExecutionContext] void back();
[CallWith=ExecutionContext] void forward();
// TODO(philipj): The SerializedScriptValue types should be any.
// TODO(philipj): The title arguments should simply be 'DOMString title'.
- // Note: The options arguments are part of the Scroll Restoration API.
- [RaisesException] void pushState(SerializedScriptValue data, [TreatUndefinedAs=NullString] DOMString? title, optional DOMString? url = null, optional StateOptions options);
- [RaisesException] void replaceState(SerializedScriptValue data, [TreatUndefinedAs=NullString] DOMString? title, optional DOMString? url = null, optional StateOptions options);
-
- // Experimental Scroll Restoration API
- // https://www.chromestatus.com/features/5657284784947200
- [RuntimeEnabled=ScrollRestoration] readonly attribute StateOptions options;
+ [RaisesException] void pushState(SerializedScriptValue data, [TreatUndefinedAs=NullString] DOMString? title, optional DOMString? url = null);
+ [RaisesException] void replaceState(SerializedScriptValue data, [TreatUndefinedAs=NullString] DOMString? title, optional DOMString? url = null);
};
diff --git a/core/frame/ImageBitmap.idl b/core/frame/ImageBitmap.idl
index 5cb21c8..b47435f 100644
--- a/core/frame/ImageBitmap.idl
+++ b/core/frame/ImageBitmap.idl
@@ -5,10 +5,10 @@
// https://html.spec.whatwg.org/#images
[
- // TODO(philipj): Exposed=(Window,Worker)
+ Exposed=(Window,Worker),
WillBeGarbageCollected,
] interface ImageBitmap {
- // TODO(philipj): width/height should be unsigned long.
- readonly attribute long width;
- readonly attribute long height;
+ readonly attribute unsigned long width;
+ readonly attribute unsigned long height;
+ [RuntimeEnabled=ExperimentalCanvasFeatures] void close();
};
diff --git a/core/frame/Location.idl b/core/frame/Location.idl
index d68eaf7..592474d 100644
--- a/core/frame/Location.idl
+++ b/core/frame/Location.idl
@@ -29,7 +29,7 @@
// https://html.spec.whatwg.org/#the-location-interface
[
- CheckSecurity=Frame,
+ CheckSecurity=Receiver,
Unforgeable,
WillBeGarbageCollected,
] interface Location {
diff --git a/core/frame/NavigatorID.idl b/core/frame/NavigatorID.idl
index eeeeba4..0bf48d5 100644
--- a/core/frame/NavigatorID.idl
+++ b/core/frame/NavigatorID.idl
@@ -35,7 +35,7 @@
Exposed=(Window,Worker),
] interface NavigatorID {
readonly attribute DOMString appCodeName; // constant "Mozilla"
- readonly attribute DOMString appName;
+ readonly attribute DOMString appName; // constant "Netscape"
readonly attribute DOMString appVersion;
readonly attribute DOMString platform;
readonly attribute DOMString product; // constant "Gecko"
diff --git a/core/frame/NavigatorStorageUtils.idl b/core/frame/NavigatorStorageUtils.idl
index e41b602..b408dc7 100644
--- a/core/frame/NavigatorStorageUtils.idl
+++ b/core/frame/NavigatorStorageUtils.idl
@@ -8,6 +8,4 @@
NoInterfaceObject, // Always used on target of 'implements'
] interface NavigatorStorageUtils {
readonly attribute boolean cookieEnabled;
- // TODO(philipj): This is called yieldForStorageUpdates() in the spec.
- [Measure] void getStorageUpdates();
};
diff --git a/core/frame/StateOptions.idl b/core/frame/StateOptions.idl
deleted file mode 100644
index cd6a9bd..0000000
--- a/core/frame/StateOptions.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Experimental Scroll Restoration API
-// https://www.chromestatus.com/features/5657284784947200
-
-enum ScrollRestoration {"auto", "manual"};
-
-dictionary StateOptions {
- ScrollRestoration scrollRestoration = "auto";
-};
diff --git a/core/frame/Window.idl b/core/frame/Window.idl
index 679fd07..f73fac7 100644
--- a/core/frame/Window.idl
+++ b/core/frame/Window.idl
@@ -28,7 +28,7 @@
// FIXME: explain all uses of [DoNotCheckSecurity]
[
- CheckSecurity=Frame,
+ CheckSecurity=Receiver,
ImplementedAs=DOMWindow,
PrimaryGlobal,
] interface Window : EventTarget {
@@ -60,9 +60,9 @@
// FIXME: opener should be of type any.
[DoNotCheckSecurity, Custom=Setter] attribute Window opener;
[Replaceable, DoNotCheckSecurity] readonly attribute Window parent;
- [CheckSecurity=Node, Custom=Getter] readonly attribute Element? frameElement;
+ [CheckSecurity=ReturnValue, Custom=Getter] readonly attribute Element? frameElement;
// FIXME: open() should have 4 optional arguments with defaults.
- [Custom] Window open(DOMString url, DOMString target, optional DOMString features);
+ [Custom] Window? open(DOMString url, DOMString target, optional DOMString features);
// FIXME: These getters should not have [NotEnumerable].
[NotEnumerable, DoNotCheckSecurity] getter Window (unsigned long index);
[Custom, NotEnumerable, DoNotCheckSecurity] getter object (DOMString name);
@@ -72,17 +72,18 @@
[RuntimeEnabled=ApplicationCache, LogActivity=GetterOnly] readonly attribute ApplicationCache applicationCache;
// user prompts
- void alert();
- void alert(DOMString message);
- boolean confirm(optional DOMString message = "");
- DOMString? prompt(optional DOMString message = "", optional DOMString defaultValue = "");
- void print();
+ [Measure] void alert();
+ [Measure] void alert(DOMString message);
+ [Measure] boolean confirm(optional DOMString message = "");
+ [Measure] DOMString? prompt(optional DOMString message = "", optional DOMString defaultValue = "");
+ [Measure] void print();
- // FIXME: requestAnimationFrame should take a FrameRequestCallback:
- // https://www.w3.org/Bugs/Public/show_bug.cgi?id=28152
[MeasureAs=UnprefixedRequestAnimationFrame] long requestAnimationFrame(FrameRequestCallback callback);
void cancelAnimationFrame(long handle);
+ [Measure, RuntimeEnabled=RequestIdleCallback] long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options);
+ [RuntimeEnabled=RequestIdleCallback] void cancelIdleCallback(long handle);
+
[DoNotCheckSecurity, Custom, RaisesException] void postMessage(any message, DOMString targetOrigin, optional sequence<Transferable> transfer);
// HTML obsolete features
@@ -93,7 +94,7 @@
// CSS Object Model (CSSOM)
// http://dev.w3.org/csswg/cssom/#extensions-to-the-window-interface
// FIXME: The optional pseudoElt argument should have no default.
- [NewObject, TypeChecking=Interface] CSSStyleDeclaration getComputedStyle(Element elt, optional DOMString? pseudoElt = null);
+ [NewObject] CSSStyleDeclaration getComputedStyle(Element elt, optional DOMString? pseudoElt = null);
// CSSOM View Module
// http://dev.w3.org/csswg/cssom-view/#extensions-to-the-window-interface
@@ -153,8 +154,8 @@
[MeasureAs=WindowDefaultStatus] attribute DOMString defaultStatus;
[MeasureAs=WindowDefaultstatus, ImplementedAs=defaultStatus] attribute DOMString defaultstatus;
[MeasureAs=StyleMedia] readonly attribute StyleMedia styleMedia;
- [DeprecateAs=GetMatchedCSSRules] CSSRuleList getMatchedCSSRules([Default=Undefined] optional Element element,
- [TreatUndefinedAs=NullString, Default=Undefined] optional DOMString? pseudoElement);
+ [DeprecateAs=GetMatchedCSSRules, LegacyInterfaceTypeChecking] CSSRuleList getMatchedCSSRules([Default=Undefined] optional Element element,
+ [TreatUndefinedAs=NullString, Default=Undefined] optional DOMString? pseudoElement);
// This is the interface orientation in degrees. Some examples are:
// 0 is straight up; -90 is when the device is rotated 90 clockwise;
// 90 is when rotated counter clockwise.
@@ -173,10 +174,6 @@
attribute EventHandler onanimationstart;
[RuntimeEnabled=OrientationEvent] attribute EventHandler onorientationchange;
attribute EventHandler onsearch;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
- [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
attribute EventHandler ontransitionend;
attribute EventHandler onwebkitanimationend;
attribute EventHandler onwebkitanimationiteration;
@@ -184,8 +181,8 @@
attribute EventHandler onwebkittransitionend;
attribute EventHandler onwheel;
- // window.toString() requires special handling in V8
- [DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] stringifier;
+ // https://w3c.github.io/webappsec/specs/powerfulfeatures/#monkey-patching-global-object
+ readonly attribute boolean isSecureContext;
};
// http://www.whatwg.org/specs/web-apps/current-work/#transferable-objects
diff --git a/core/html/AssignedNodesOptions.idl b/core/html/AssignedNodesOptions.idl
new file mode 100644
index 0000000..5247c06
--- /dev/null
+++ b/core/html/AssignedNodesOptions.idl
@@ -0,0 +1,9 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://w3c.github.io/webcomponents/spec/shadow/#idl-def-AssignedNodesOptions
+
+dictionary AssignedNodesOptions {
+ boolean flatten = false;
+};
diff --git a/core/html/FormData.idl b/core/html/FormData.idl
index dccbd43..70df8fe 100644
--- a/core/html/FormData.idl
+++ b/core/html/FormData.idl
@@ -37,7 +37,7 @@
Constructor(optional HTMLFormElement form),
Exposed=(Window,Worker),
GarbageCollected,
- ImplementedAs=DOMFormData,
+ LegacyInterfaceTypeChecking,
] interface FormData {
// TODO(philipj): The value argument should be FormDataEntryValue and there
// should be no optional filename argument. crbug.com/498790
@@ -47,7 +47,7 @@
[RuntimeEnabled=FormDataNewMethods, ImplementedAs=deleteEntry] void delete(USVString name);
[RuntimeEnabled=FormDataNewMethods] FormDataEntryValue? get(USVString name);
[RuntimeEnabled=FormDataNewMethods] sequence<FormDataEntryValue> getAll(USVString name);
- [RuntimeEnabled=FormDataNewMethods, ImplementedAs=hasEntry] boolean has(USVString name);
+ [RuntimeEnabled=FormDataNewMethods] boolean has(USVString name);
// TODO(philipj): The value argument should be FormDataEntryValue and there
// should be no optional filename argument.
[RuntimeEnabled=FormDataNewMethods] void set(USVString name, Blob value, optional USVString filename);
diff --git a/core/html/HTMLAllCollection.idl b/core/html/HTMLAllCollection.idl
index 40c7fc4..dc4ba0d 100644
--- a/core/html/HTMLAllCollection.idl
+++ b/core/html/HTMLAllCollection.idl
@@ -26,20 +26,17 @@
// https://html.spec.whatwg.org/#the-htmlallcollection-interface
-// FIXME: This interface should inherit HTMLCollection.
[
Custom=LegacyCallAsFunction,
DependentLifetime,
SetWrapperReferenceFrom=ownerNode,
WillBeGarbageCollected,
] interface HTMLAllCollection {
- // FIXME: length and 'getter' should be inherited from HTMLCollection.
readonly attribute unsigned long length;
[ImplementedAs=item] getter Element (unsigned long index);
// FIXME: The custom item() implementation may return a NodeList, but the
// spec has a (HTMLCollection or Element)? item(DOMString name) method.
[Custom] Element? item([Default=Undefined] optional unsigned long index);
- // FIXME:
// FIXME: namedItem() should be a legacycaller. crbug.com/465009
// FIXME: namedItem() should return an (HTMLCollection or Element)? union.
[ImplementedAs=namedGetter] getter (NodeList or Element)? namedItem(DOMString name);
diff --git a/core/html/HTMLAnchorElement.idl b/core/html/HTMLAnchorElement.idl
index a91eb23..255acf0 100644
--- a/core/html/HTMLAnchorElement.idl
+++ b/core/html/HTMLAnchorElement.idl
@@ -23,12 +23,13 @@
interface HTMLAnchorElement : HTMLElement {
[Reflect] attribute DOMString target;
[Reflect] attribute DOMString download;
- // FIXME: ping should be a DOMSettableTokenList.
+ // FIXME: ping should be a DOMTokenList.
[Reflect] attribute DOMString ping;
[Reflect] attribute DOMString rel;
// FIXME: readonly attribute DOMTokenList relList;
[Reflect] attribute DOMString hreflang;
[Reflect] attribute DOMString type;
+ [RuntimeEnabled=ReferrerPolicyAttribute, Reflect, ReflectOnly=("","no-referrer","origin","no-referrer-when-downgrade","origin-when-cross-origin","unsafe-url"), ReflectMissing="", ReflectInvalid=""] attribute DOMString referrerpolicy;
[ImplementedAs=textContent] attribute DOMString text;
diff --git a/core/html/HTMLAppletElement.idl b/core/html/HTMLAppletElement.idl
deleted file mode 100644
index d337bfb..0000000
--- a/core/html/HTMLAppletElement.idl
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2009, 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-// https://html.spec.whatwg.org/#the-applet-element
-
-// TODO(yukishiino): HTMLAppletElement should not have [OverrideBuiltins].
-[
- OverrideBuiltins,
-] interface HTMLAppletElement : HTMLElement {
- [Reflect] attribute DOMString align;
- [Reflect] attribute DOMString alt;
- [Reflect] attribute DOMString archive;
- [Reflect] attribute DOMString code;
- [Reflect, URL] attribute DOMString codeBase;
- [Reflect] attribute DOMString height;
- [Reflect] attribute unsigned long hspace;
- [Reflect] attribute DOMString name;
- [Reflect, URL] attribute DOMString _object; // the underscore is not part of the identifier
- [Reflect] attribute unsigned long vspace;
- [Reflect] attribute DOMString width;
-
- // FIXME: These getters and setters are not in the spec.
- [Custom, NotEnumerable] getter boolean (unsigned long index);
- [Custom] setter boolean (unsigned long index, Node value);
- [Custom, NotEnumerable] getter Node (DOMString name);
- [Custom] setter Node (DOMString name, Node value);
-};
diff --git a/core/html/HTMLAreaElement.idl b/core/html/HTMLAreaElement.idl
index 89a51c4..4782665 100644
--- a/core/html/HTMLAreaElement.idl
+++ b/core/html/HTMLAreaElement.idl
@@ -25,9 +25,10 @@
[Reflect] attribute DOMString coords;
[Reflect] attribute DOMString shape;
[Reflect] attribute DOMString target;
- // FIXME: ping should be a DOMSettableTokenList.
+ // FIXME: ping should be a DOMTokenList.
[Reflect] attribute DOMString ping;
- // FIXME: download, rel, relList, hreflang and type are missing.
+ // FIXME: download, rel, relList are missing
+ [RuntimeEnabled=ReferrerPolicyAttribute, Reflect, ReflectOnly=("","no-referrer","origin","no-referrer-when-downgrade","origin-when-cross-origin","unsafe-url"), ReflectMissing="", ReflectInvalid=""] attribute DOMString referrerpolicy;
// obsolete members
// https://html.spec.whatwg.org/#HTMLAreaElement-partial
diff --git a/core/html/HTMLButtonElement.idl b/core/html/HTMLButtonElement.idl
index 6ab20ee..a6c47d6 100644
--- a/core/html/HTMLButtonElement.idl
+++ b/core/html/HTMLButtonElement.idl
@@ -24,7 +24,7 @@
[Reflect] attribute boolean autofocus;
[Reflect] attribute boolean disabled;
[ImplementedAs=formOwner] readonly attribute HTMLFormElement? form;
- [Reflect, URL] attribute DOMString formAction;
+ attribute DOMString formAction;
attribute DOMString formEnctype;
attribute DOMString formMethod;
[Reflect] attribute boolean formNoValidate;
diff --git a/core/html/HTMLCanvasElement.idl b/core/html/HTMLCanvasElement.idl
index 458e8ab..15e7e50 100644
--- a/core/html/HTMLCanvasElement.idl
+++ b/core/html/HTMLCanvasElement.idl
@@ -26,7 +26,8 @@
// https://html.spec.whatwg.org/#the-canvas-element
-interface HTMLCanvasElement : HTMLElement {
+interface HTMLCanvasElement : HTMLElement
+{
// FIXME: width and height should be unsigned long.
attribute long width;
attribute long height;
@@ -45,11 +46,12 @@
// handled differently the return type could be changed to "RenderingContext?"
// and the [CallWith=ScriptState] extended attribute removed.
//
- // FIXME: The contextId argument should not be optional.
- [CallWith=ScriptState] any getContext([Default=Undefined] optional DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributes attributes);
+ [CallWith=ScriptState] any getContext(DOMString contextId, [PermissiveDictionaryConversion] optional CanvasContextCreationAttributes attributes);
// Note: The arguments argument is variadic in the spec, but not here as
// only one extra argument is actually used.
- // FIXME: type should not be nullable or have a default value.
- [RaisesException] DOMString toDataURL(optional DOMString? type = null, optional any arguments);
+ // FIXME: type should not have a default value.
+ [RaisesException] DOMString toDataURL(optional DOMString type = null, optional any arguments);
+
+ [RaisesException] void toBlob(BlobCallback _callback, optional DOMString type = null, optional any arguments);
};
diff --git a/core/html/HTMLCollection.idl b/core/html/HTMLCollection.idl
index 85c2d5a..b285517 100644
--- a/core/html/HTMLCollection.idl
+++ b/core/html/HTMLCollection.idl
@@ -27,7 +27,6 @@
WillBeGarbageCollected,
] interface HTMLCollection {
readonly attribute unsigned long length;
- // FIXME: The index argument should not be optional.
- getter Element? item([Default=Undefined] optional unsigned long index);
+ getter Element? item(unsigned long index);
getter Element? namedItem(DOMString name);
};
diff --git a/core/html/HTMLContentElement.idl b/core/html/HTMLContentElement.idl
index d03ee3d..0979cf8 100644
--- a/core/html/HTMLContentElement.idl
+++ b/core/html/HTMLContentElement.idl
@@ -27,7 +27,6 @@
// http://w3c.github.io/webcomponents/spec/shadow/#the-content-element
interface HTMLContentElement : HTMLElement {
- // FIXME: select should not have [TreatNullAs=NullString].
- [Reflect, TreatNullAs=NullString] attribute DOMString select;
+ [Reflect] attribute DOMString select;
NodeList getDistributedNodes();
};
diff --git a/core/html/HTMLDocument.idl b/core/html/HTMLDocument.idl
index 1b73bc8..2b3f5b9 100644
--- a/core/html/HTMLDocument.idl
+++ b/core/html/HTMLDocument.idl
@@ -26,12 +26,11 @@
interface HTMLDocument : Document {
// https://html.spec.whatwg.org/#Document-partial
- // FIXME: *Color should have [TreatNullAs=EmptyString].
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString fgColor;
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString linkColor;
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString vlinkColor;
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString alinkColor;
- [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString bgColor;
+ [TreatNullAs=EmptyString, CustomElementCallbacks] attribute DOMString fgColor;
+ [TreatNullAs=EmptyString, CustomElementCallbacks] attribute DOMString linkColor;
+ [TreatNullAs=EmptyString, CustomElementCallbacks] attribute DOMString vlinkColor;
+ [TreatNullAs=EmptyString, CustomElementCallbacks] attribute DOMString alinkColor;
+ [TreatNullAs=EmptyString, CustomElementCallbacks] attribute DOMString bgColor;
[MeasureAs=DocumentClear] void clear();
[MeasureAs=DocumentCaptureEvents] void captureEvents();
diff --git a/core/html/HTMLElement.idl b/core/html/HTMLElement.idl
index 7a849e9..d39a27a 100644
--- a/core/html/HTMLElement.idl
+++ b/core/html/HTMLElement.idl
@@ -30,7 +30,7 @@
// user interaction
[Reflect] attribute boolean hidden;
- void click();
+ [ImplementedAs=clickForBindings] void click();
[CustomElementCallbacks] attribute long tabIndex;
void focus();
void blur();
@@ -54,8 +54,7 @@
// CSS Object Model (CSSOM)
// http://dev.w3.org/csswg/cssom/#the-elementcssinlinestyle-interface
- // FIXME: style should have [PutForwards=cssText].
- [SameObject, PerWorldBindings] readonly attribute CSSStyleDeclaration style;
+ [SameObject, PerWorldBindings, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
// Non-standard APIs
[TreatNullAs=NullString, CustomElementCallbacks, RaisesException=Setter, MeasureAs=HTMLElementInnerText] attribute DOMString innerText;
diff --git a/core/html/HTMLEmbedElement.idl b/core/html/HTMLEmbedElement.idl
index 5759506..5def601 100644
--- a/core/html/HTMLEmbedElement.idl
+++ b/core/html/HTMLEmbedElement.idl
@@ -29,7 +29,7 @@
[Reflect] attribute DOMString type;
[Reflect] attribute DOMString width;
[Reflect] attribute DOMString height;
- [CheckSecurity=Node, RaisesException] Document? getSVGDocument();
+ [CheckSecurity=ReturnValue, RaisesException] Document? getSVGDocument();
// FIXME: The spec has a legacycaller any (any... arguments); crbug.com/465009
// obsolete members
diff --git a/core/html/HTMLFieldSetElement.idl b/core/html/HTMLFieldSetElement.idl
index 58dc295..fb86dc8 100644
--- a/core/html/HTMLFieldSetElement.idl
+++ b/core/html/HTMLFieldSetElement.idl
@@ -26,7 +26,7 @@
readonly attribute DOMString type;
- readonly attribute HTMLFormControlsCollection elements;
+ [Measure] readonly attribute HTMLFormControlsCollection elements;
readonly attribute boolean willValidate;
[SameObject] readonly attribute ValidityState validity;
diff --git a/core/html/HTMLFormElement.idl b/core/html/HTMLFormElement.idl
index cbd2500..d9e9d4c 100644
--- a/core/html/HTMLFormElement.idl
+++ b/core/html/HTMLFormElement.idl
@@ -44,5 +44,5 @@
boolean checkValidity();
boolean reportValidity();
- [RuntimeEnabled=RequestAutocomplete] void requestAutocomplete();
+ [RuntimeEnabled=RequestAutocomplete, MeasureAs=RequestAutocomplete] void requestAutocomplete();
};
diff --git a/core/html/HTMLFrameElement.idl b/core/html/HTMLFrameElement.idl
index 819bc6c..54e2901 100644
--- a/core/html/HTMLFrameElement.idl
+++ b/core/html/HTMLFrameElement.idl
@@ -27,13 +27,9 @@
[Reflect] attribute DOMString frameBorder;
[Reflect, URL] attribute DOMString longDesc;
[Reflect] attribute boolean noResize;
- [CheckSecurity=Node] readonly attribute Document? contentDocument;
+ [CheckSecurity=ReturnValue] readonly attribute Document? contentDocument;
readonly attribute Window? contentWindow;
[Reflect, TreatNullAs=EmptyString] attribute DOMString marginHeight;
[Reflect, TreatNullAs=EmptyString] attribute DOMString marginWidth;
-
- // FIXME: The spec defines getSVGDocument() for HTMLIFrameElement,
- // HTMLEmbedElement and HTMLObjectElement, but not here.
- [Measure, CheckSecurity=Node, RaisesException] Document? getSVGDocument();
};
diff --git a/core/html/HTMLIFrameElement.idl b/core/html/HTMLIFrameElement.idl
index d3f8e3f..1c98d81 100644
--- a/core/html/HTMLIFrameElement.idl
+++ b/core/html/HTMLIFrameElement.idl
@@ -24,14 +24,16 @@
[Reflect, URL] attribute DOMString src;
[Reflect] attribute DOMString srcdoc;
[Reflect] attribute DOMString name;
- [PutForwards=value] readonly attribute DOMSettableTokenList sandbox;
+ [PutForwards=value] readonly attribute DOMTokenList sandbox;
// Note: The seamless attribute was once supported, but was removed.
[Reflect] attribute boolean allowFullscreen;
[Reflect] attribute DOMString width;
[Reflect] attribute DOMString height;
- [CheckSecurity=Node] readonly attribute Document? contentDocument;
+ [CheckSecurity=ReturnValue] readonly attribute Document? contentDocument;
readonly attribute Window? contentWindow;
- [CheckSecurity=Node, RaisesException] Document? getSVGDocument();
+ [CheckSecurity=ReturnValue, RaisesException] Document? getSVGDocument();
+ [RuntimeEnabled=ReferrerPolicyAttribute, Reflect, ReflectOnly=("","no-referrer","origin","no-referrer-when-downgrade","origin-when-cross-origin","unsafe-url"), ReflectMissing="", ReflectInvalid=""] attribute DOMString referrerpolicy;
+
// obsolete members
// https://html.spec.whatwg.org/#HTMLIFrameElement-partial
diff --git a/core/html/HTMLImageElement.idl b/core/html/HTMLImageElement.idl
index 976e52f..abec4c2 100644
--- a/core/html/HTMLImageElement.idl
+++ b/core/html/HTMLImageElement.idl
@@ -38,6 +38,7 @@
readonly attribute long naturalHeight;
readonly attribute boolean complete;
readonly attribute DOMString currentSrc;
+ [RuntimeEnabled=ReferrerPolicyAttribute, Reflect, ReflectOnly=("","no-referrer","origin","no-referrer-when-downgrade","origin-when-cross-origin","unsafe-url"), ReflectMissing="", ReflectInvalid=""] attribute DOMString referrerpolicy;
// obsolete members
// https://html.spec.whatwg.org/#HTMLImageElement-partial
diff --git a/core/html/HTMLInputElement.idl b/core/html/HTMLInputElement.idl
index 95719d0..b82f096 100644
--- a/core/html/HTMLInputElement.idl
+++ b/core/html/HTMLInputElement.idl
@@ -21,6 +21,8 @@
// https://html.spec.whatwg.org/#the-input-element
+enum SelectionMode { "select", "start", "end", "preserve" };
+
interface HTMLInputElement : HTMLElement {
[Reflect] attribute DOMString accept;
[Reflect] attribute DOMString alt;
@@ -34,7 +36,7 @@
// The 'files' attribute is intentionally not readonly.
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=22682
attribute FileList? files;
- [Reflect, URL] attribute DOMString formAction;
+ attribute DOMString formAction;
[CustomElementCallbacks] attribute DOMString formEnctype;
[CustomElementCallbacks] attribute DOMString formMethod;
[Reflect] attribute boolean formNoValidate;
@@ -83,11 +85,10 @@
[RaisesException, ImplementedAs=selectionEndForBinding] attribute long selectionEnd;
[RaisesException, ImplementedAs=selectionDirectionForBinding] attribute DOMString selectionDirection;
[RaisesException] void setRangeText(DOMString replacement);
- // FIXME: The selectionMode argument should be a SelectionMode enum.
[RaisesException] void setRangeText(DOMString replacement,
unsigned long start,
unsigned long end,
- optional DOMString selectionMode = "preserve");
+ optional SelectionMode selectionMode = "preserve");
// FIXME: The start and end arguments should be unsigned long and should not have [Default=Undefined].
[RaisesException, ImplementedAs=setSelectionRangeForBinding]
void setSelectionRange([Default=Undefined] optional long start,
diff --git a/core/html/HTMLLabelElement.idl b/core/html/HTMLLabelElement.idl
index 3d17ad9..4db6d18 100644
--- a/core/html/HTMLLabelElement.idl
+++ b/core/html/HTMLLabelElement.idl
@@ -21,7 +21,7 @@
// https://html.spec.whatwg.org/#the-label-element
interface HTMLLabelElement : HTMLElement {
- [ImplementedAs=formOwner] readonly attribute HTMLFormElement? form;
+ [ImplementedAs=formForBinding, MeasureAs=HTMLLabelElementFormIDLAttribute] readonly attribute HTMLFormElement? form;
[Reflect=for] attribute DOMString htmlFor;
readonly attribute HTMLElement? control;
};
diff --git a/core/html/HTMLLinkElement.idl b/core/html/HTMLLinkElement.idl
index 91c040e..1d19a86 100644
--- a/core/html/HTMLLinkElement.idl
+++ b/core/html/HTMLLinkElement.idl
@@ -28,11 +28,12 @@
[Reflect, URL] attribute DOMString href;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
[Reflect] attribute DOMString rel;
- // FIXME: readonly attribute DOMTokenList relList;
+ [RuntimeEnabled=LinkPreload, PutForwards=value] readonly attribute DOMTokenList relList;
[Reflect] attribute DOMString media;
[Reflect] attribute DOMString hreflang;
[Reflect] attribute DOMString type;
- [PutForwards=value] readonly attribute DOMSettableTokenList sizes;
+ [Reflect, RuntimeEnabled=LinkPreload] attribute DOMString as;
+ [PutForwards=value] readonly attribute DOMTokenList sizes;
// obsolete members
// https://html.spec.whatwg.org/#HTMLLinkElement-partial
diff --git a/core/html/HTMLMediaElement.idl b/core/html/HTMLMediaElement.idl
index 0ced5dc..80899b4 100644
--- a/core/html/HTMLMediaElement.idl
+++ b/core/html/HTMLMediaElement.idl
@@ -27,7 +27,7 @@
enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" };
[
- ActiveDOMObject,
+ DependentLifetime,
RuntimeEnabled=Media,
] interface HTMLMediaElement : HTMLElement {
@@ -55,11 +55,11 @@
const unsigned short HAVE_CURRENT_DATA = 2;
const unsigned short HAVE_FUTURE_DATA = 3;
const unsigned short HAVE_ENOUGH_DATA = 4;
- readonly attribute unsigned short readyState;
+ [ImplementedAs=getReadyState] readonly attribute unsigned short readyState;
readonly attribute boolean seeking;
// playback state
- [RaisesException=Setter] attribute double currentTime;
+ attribute double currentTime;
// FIXME: void fastSeek(double time);
readonly attribute unrestricted double duration;
// FIXME: Date getStartDate(); crbug.com/312699
@@ -71,13 +71,9 @@
readonly attribute boolean ended;
[Reflect] attribute boolean autoplay;
[Reflect] attribute boolean loop;
- void play();
+ [CallWith=ScriptState, ImplementedAs=playForBindings] Promise<void> play();
void pause();
- // media controller
- [RuntimeEnabled=MediaController, Reflect] attribute DOMString mediaGroup;
- [RuntimeEnabled=MediaController, TypeChecking=Interface] attribute MediaController? controller;
-
// controls
[Reflect] attribute boolean controls;
[RaisesException=Setter] attribute double volume;
@@ -91,7 +87,6 @@
[RaisesException] TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
// Non-standard APIs
- [RuntimeEnabled=PrefixedEncryptedMedia, DeprecateAs=CanPlayTypeKeySystem] DOMString canPlayType(DOMString type, [TreatUndefinedAs=NullString] DOMString? keySystem);
// The number of bytes consumed by the media decoder.
[MeasureAs=PrefixedAudioDecodedByteCount] readonly attribute unsigned long webkitAudioDecodedByteCount;
[MeasureAs=PrefixedVideoDecodedByteCount] readonly attribute unsigned long webkitVideoDecodedByteCount;
diff --git a/core/html/HTMLObjectElement.idl b/core/html/HTMLObjectElement.idl
index a936771..d0f6261 100644
--- a/core/html/HTMLObjectElement.idl
+++ b/core/html/HTMLObjectElement.idl
@@ -33,9 +33,9 @@
[ImplementedAs=formOwner] readonly attribute HTMLFormElement? form;
[Reflect] attribute DOMString width;
[Reflect] attribute DOMString height;
- [CheckSecurity=Node] readonly attribute Document? contentDocument;
+ [CheckSecurity=ReturnValue] readonly attribute Document? contentDocument;
// TODO(philipj): readonly attribute WindowProxy? contentWindow;
- [CheckSecurity=Node, RaisesException] Document? getSVGDocument();
+ [CheckSecurity=ReturnValue, RaisesException] Document? getSVGDocument();
readonly attribute boolean willValidate;
readonly attribute ValidityState validity;
diff --git a/core/html/HTMLOptionElement.idl b/core/html/HTMLOptionElement.idl
index bcbeed3..92a2323 100644
--- a/core/html/HTMLOptionElement.idl
+++ b/core/html/HTMLOptionElement.idl
@@ -32,7 +32,7 @@
readonly attribute HTMLFormElement? form;
attribute DOMString label;
[Reflect=selected] attribute boolean defaultSelected;
- attribute boolean selected;
+ [ImplementedAs=selectedForBinding] attribute boolean selected;
attribute DOMString value;
// TODO(philipj): The text setter should never throw.
diff --git a/core/html/HTMLOptionsCollection.idl b/core/html/HTMLOptionsCollection.idl
index 7a9fabf..6907ffb 100644
--- a/core/html/HTMLOptionsCollection.idl
+++ b/core/html/HTMLOptionsCollection.idl
@@ -26,10 +26,10 @@
SetWrapperReferenceFrom=ownerNode,
] interface HTMLOptionsCollection : HTMLCollection {
// inherits item()
- [Custom=Setter, RaisesException=Setter] attribute unsigned long length; // shadows inherited length
+ [RaisesException=Setter] attribute unsigned long length; // shadows inherited length
// FIXME: The spec has a legacycaller HTMLOptionElement? (DOMString name);
- [RaisesException, TypeChecking=Interface] setter void (unsigned long index, HTMLOptionElement? option);
- [RaisesException, TypeChecking=Interface] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
+ [RaisesException] setter void (unsigned long index, HTMLOptionElement? option);
+ [RaisesException] void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
void remove(long index);
attribute long selectedIndex;
// FIXME: Neither of these getters are in the spec, and the
diff --git a/core/html/HTMLOutputElement.idl b/core/html/HTMLOutputElement.idl
index 957a9aa..8efb9a0 100644
--- a/core/html/HTMLOutputElement.idl
+++ b/core/html/HTMLOutputElement.idl
@@ -25,7 +25,7 @@
// https://html.spec.whatwg.org/#the-output-element
interface HTMLOutputElement : HTMLElement {
- [PutForwards=value] readonly attribute DOMSettableTokenList htmlFor;
+ [PutForwards=value] readonly attribute DOMTokenList htmlFor;
[ImplementedAs=formOwner] readonly attribute HTMLFormElement? form;
[Reflect] attribute DOMString name;
diff --git a/core/html/HTMLSelectElement.idl b/core/html/HTMLSelectElement.idl
index 718cec1..f631cc2 100644
--- a/core/html/HTMLSelectElement.idl
+++ b/core/html/HTMLSelectElement.idl
@@ -37,13 +37,12 @@
// TODO(philipj): The length setter should never throw.
[RaisesException=Setter] attribute unsigned long length;
getter Element? item(unsigned long index);
- // TODO(philipj): The name argument should not be optional.
- HTMLOptionElement? namedItem([Default=Undefined] optional DOMString name);
- [RaisesException, TypeChecking=Interface] void add((HTMLOptionElement or HTMLOptGroupElement) element,
- optional (HTMLElement or long)? before = null);
+ HTMLOptionElement? namedItem(DOMString name);
+ [RaisesException] void add((HTMLOptionElement or HTMLOptGroupElement) element,
+ optional (HTMLElement or long)? before = null);
[RaisesException] void remove(); // ChildNode overload
void remove(long index);
- [RaisesException, TypeChecking=Interface] setter void (unsigned long index, HTMLOptionElement? option);
+ [RaisesException] setter void (unsigned long index, HTMLOptionElement? option);
readonly attribute HTMLCollection selectedOptions;
attribute long selectedIndex;
diff --git a/modules/filesystem/FileCallback.idl b/core/html/HTMLSlotElement.idl
similarity index 77%
copy from modules/filesystem/FileCallback.idl
copy to core/html/HTMLSlotElement.idl
index 2a692ba..3dc032a 100644
--- a/modules/filesystem/FileCallback.idl
+++ b/core/html/HTMLSlotElement.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2015 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -7,10 +7,6 @@
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
@@ -28,6 +24,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-callback interface FileCallback {
- void handleEvent(File file);
+// http://w3c.github.io/webcomponents/spec/shadow/#the-slot-element
+
+[
+ RuntimeEnabled=ShadowDOMV1,
+] interface HTMLSlotElement : HTMLElement {
+ [Reflect] attribute DOMString name;
+ [ImplementedAs=getAssignedNodesForBinding] sequence<Node> getAssignedNodes(optional AssignedNodesOptions options);
};
diff --git a/core/html/HTMLTableCellElement.idl b/core/html/HTMLTableCellElement.idl
index 7a9a8d8..933fedb 100644
--- a/core/html/HTMLTableCellElement.idl
+++ b/core/html/HTMLTableCellElement.idl
@@ -24,7 +24,7 @@
attribute unsigned long colSpan;
attribute unsigned long rowSpan;
// TODO(philipj): headers should be a [PutForwards=value] readonly attribute
- // DOMSettableTokenList.
+ // DOMTokenList.
[Reflect, TreatNullAs=NullString] attribute DOMString headers;
readonly attribute long cellIndex;
diff --git a/core/html/HTMLTableElement.idl b/core/html/HTMLTableElement.idl
index acf2684..b36de85 100644
--- a/core/html/HTMLTableElement.idl
+++ b/core/html/HTMLTableElement.idl
@@ -23,18 +23,18 @@
interface HTMLTableElement : HTMLElement {
// TODO(philipj): The caption, tHead and tFoot setters should never throw.
[RaisesException=Setter] attribute HTMLTableCaptionElement? caption;
- HTMLElement createCaption();
+ HTMLTableCaptionElement createCaption();
void deleteCaption();
[RaisesException=Setter] attribute HTMLTableSectionElement? tHead;
- HTMLElement createTHead();
+ HTMLTableSectionElement createTHead();
void deleteTHead();
[RaisesException=Setter] attribute HTMLTableSectionElement? tFoot;
- HTMLElement createTFoot();
+ HTMLTableSectionElement createTFoot();
void deleteTFoot();
readonly attribute HTMLCollection tBodies;
- HTMLElement createTBody();
+ HTMLTableSectionElement createTBody();
readonly attribute HTMLCollection rows;
- [RaisesException] HTMLElement insertRow(optional long index = -1);
+ [RaisesException] HTMLTableRowElement insertRow(optional long index = -1);
[RaisesException] void deleteRow(long index);
// attribute boolean sortable;
// void stopSorting();
diff --git a/core/html/HTMLTextAreaElement.idl b/core/html/HTMLTextAreaElement.idl
index a937807..ea7ca76 100644
--- a/core/html/HTMLTextAreaElement.idl
+++ b/core/html/HTMLTextAreaElement.idl
@@ -58,11 +58,10 @@
attribute long selectionEnd;
attribute DOMString selectionDirection;
[RaisesException] void setRangeText(DOMString replacement);
- // TODO(philipj): The selectionMode argument should be a SelectionMode enum.
[RaisesException] void setRangeText(DOMString replacement,
unsigned long start,
unsigned long end,
- optional DOMString selectionMode = null);
+ optional SelectionMode selectionMode = "preserve");
// TODO(philipj): The start and end arguments should be unsigned long and
// should not be optional.
void setSelectionRange([Default=Undefined] optional long start,
diff --git a/core/html/HTMLTrackElement.idl b/core/html/HTMLTrackElement.idl
index 8a9b38e..08b3f14 100644
--- a/core/html/HTMLTrackElement.idl
+++ b/core/html/HTMLTrackElement.idl
@@ -37,7 +37,7 @@
const unsigned short LOADED = 2;
// Reflect is used for ERROR because it conflicts with a windows define.
[Reflect=TRACK_ERROR] const unsigned short ERROR = 3;
- readonly attribute unsigned short readyState;
+ [ImplementedAs=getReadyState] readonly attribute unsigned short readyState;
readonly attribute TextTrack track;
};
diff --git a/core/html/HTMLVideoElement.idl b/core/html/HTMLVideoElement.idl
index 5989128..3f2d0cc 100644
--- a/core/html/HTMLVideoElement.idl
+++ b/core/html/HTMLVideoElement.idl
@@ -38,11 +38,11 @@
[RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoSupportsFullscreen] readonly attribute boolean webkitSupportsFullscreen;
[RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoDisplayingFullscreen] readonly attribute boolean webkitDisplayingFullscreen;
- [RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoEnterFullscreen, RaisesException, LogActivity, LogAllWorlds] void webkitEnterFullscreen();
+ [RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoEnterFullscreen, LogActivity, LogAllWorlds] void webkitEnterFullscreen();
[RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoExitFullscreen] void webkitExitFullscreen();
// Note the different capitalization of the "S" in FullScreen.
- [RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoEnterFullScreen, ImplementedAs=webkitEnterFullscreen, RaisesException, LogActivity, LogAllWorlds] void webkitEnterFullScreen();
+ [RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoEnterFullScreen, ImplementedAs=webkitEnterFullscreen, LogActivity, LogAllWorlds] void webkitEnterFullScreen();
[RuntimeEnabled=PrefixedVideoFullscreen, DeprecateAs=PrefixedVideoExitFullScreen, ImplementedAs=webkitExitFullscreen] void webkitExitFullScreen();
// The number of frames that have been decoded and made available for
diff --git a/core/html/ImageData.idl b/core/html/ImageData.idl
index 44f6977..152a63d 100644
--- a/core/html/ImageData.idl
+++ b/core/html/ImageData.idl
@@ -29,16 +29,14 @@
// https://html.spec.whatwg.org/#dom-imagedata
[
- TypeChecking=Interface,
Constructor(unsigned long sw, unsigned long sh),
Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh),
Exposed=(Window,Worker),
RaisesException=Constructor,
GarbageCollected,
] interface ImageData {
- // TODO(philipj): width/height should be unsigned long.
- readonly attribute long width;
- readonly attribute long height;
+ readonly attribute unsigned long width;
+ readonly attribute unsigned long height;
// TODO(philipj): Expose data.
// FIXMEDART: Uncomment - we need this property.
readonly attribute Uint8ClampedArray data;
diff --git a/core/html/MediaController.idl b/core/html/MediaController.idl
deleted file mode 100644
index ca1dad4..0000000
--- a/core/html/MediaController.idl
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// https://html.spec.whatwg.org/#media-controllers
-
-enum MediaControllerPlaybackState { "waiting", "playing", "ended" };
-
-[
- Constructor,
- ConstructorCallWith=ExecutionContext,
- RuntimeEnabled=MediaController,
-] interface MediaController : EventTarget {
- // TODO(philipj): Expose readyState.
- // readonly attribute unsigned short readyState; // uses HTMLMediaElement.readyState's values
-
- readonly attribute TimeRanges buffered;
- readonly attribute TimeRanges seekable;
- readonly attribute unrestricted double duration;
- attribute double currentTime;
-
- readonly attribute boolean paused;
- readonly attribute MediaControllerPlaybackState playbackState;
- readonly attribute TimeRanges played;
- void pause();
- void unpause();
- void play(); // calls play() on all media elements as well
-
- attribute double defaultPlaybackRate;
- attribute double playbackRate;
-
- [RaisesException=Setter] attribute double volume;
- attribute boolean muted;
-
- // TODO(philipj): Expose the on* event handler attributes.
-};
diff --git a/core/html/MediaError.idl b/core/html/MediaError.idl
index 0d8b100..712251d 100644
--- a/core/html/MediaError.idl
+++ b/core/html/MediaError.idl
@@ -26,8 +26,8 @@
// https://html.spec.whatwg.org/#error-codes
[
+ GarbageCollected,
RuntimeEnabled=Media,
- WillBeGarbageCollected,
] interface MediaError {
const unsigned short MEDIA_ERR_ABORTED = 1;
const unsigned short MEDIA_ERR_NETWORK = 2;
diff --git a/core/html/MediaKeyError.idl b/core/html/MediaKeyError.idl
deleted file mode 100644
index 2a80de0..0000000
--- a/core/html/MediaKeyError.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
- RuntimeEnabled=PrefixedEncryptedMedia,
- WillBeGarbageCollected,
-] interface MediaKeyError {
- const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
- const unsigned short MEDIA_KEYERR_CLIENT = 2;
- const unsigned short MEDIA_KEYERR_SERVICE = 3;
- const unsigned short MEDIA_KEYERR_OUTPUT = 4;
- const unsigned short MEDIA_KEYERR_HARDWARECHANGE = 5;
- const unsigned short MEDIA_KEYERR_DOMAIN = 6;
- readonly attribute unsigned short code;
- [RuntimeEnabled=EncryptedMedia] readonly attribute unsigned long systemCode;
-};
diff --git a/core/html/MediaKeyEvent.idl b/core/html/MediaKeyEvent.idl
deleted file mode 100644
index 1159db0..0000000
--- a/core/html/MediaKeyEvent.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
- Constructor(DOMString type, optional MediaKeyEventInit eventInitDict),
- RuntimeEnabled=PrefixedEncryptedMedia,
-] interface MediaKeyEvent : Event {
- readonly attribute DOMString keySystem;
- readonly attribute DOMString sessionId;
- readonly attribute Uint8Array initData;
- readonly attribute Uint8Array message;
- readonly attribute DOMString defaultURL;
- readonly attribute MediaKeyError? errorCode;
- readonly attribute unsigned short systemCode;
-};
-
diff --git a/core/html/MediaKeyEventInit.idl b/core/html/MediaKeyEventInit.idl
deleted file mode 100644
index b8eb75a..0000000
--- a/core/html/MediaKeyEventInit.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-dictionary MediaKeyEventInit : EventInit {
- DOMString keySystem;
- DOMString sessionId;
- Uint8Array initData;
- Uint8Array message;
- DOMString defaultURL;
- MediaKeyError? errorCode;
- unsigned short systemCode;
-};
diff --git a/core/html/TextMetrics.idl b/core/html/TextMetrics.idl
index b9bdf06..e5d8fdb 100644
--- a/core/html/TextMetrics.idl
+++ b/core/html/TextMetrics.idl
@@ -28,7 +28,7 @@
// TODO(philipj): All float types in this interface should be double.
[
// TODO(philipj): Exposed=(Window,Worker)
- WillBeGarbageCollected,
+ GarbageCollected,
] interface TextMetrics {
// x-direction
readonly attribute float width; // advance width
diff --git a/core/html/TimeRanges.idl b/core/html/TimeRanges.idl
index edd9cfc..281861e 100644
--- a/core/html/TimeRanges.idl
+++ b/core/html/TimeRanges.idl
@@ -26,7 +26,7 @@
// https://html.spec.whatwg.org/#time-ranges
[
- WillBeGarbageCollected,
+ GarbageCollected,
RuntimeEnabled=Media
] interface TimeRanges {
readonly attribute unsigned long length;
diff --git a/core/html/canvas/OffscreenCanvas.idl b/core/html/canvas/OffscreenCanvas.idl
new file mode 100644
index 0000000..be5bf91
--- /dev/null
+++ b/core/html/canvas/OffscreenCanvas.idl
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ Constructor([EnforceRange] unsigned long width, [EnforceRange] unsigned long height),
+ GarbageCollected,
+ Exposed=(Window,Worker),
+ RuntimeEnabled=ExperimentalCanvasFeatures,
+] interface OffscreenCanvas {
+ [EnforceRange] attribute unsigned long width;
+ [EnforceRange] attribute unsigned long height;
+};
diff --git a/core/html/shadow/PluginPlaceholderElement.idl b/core/html/shadow/PluginPlaceholderElement.idl
deleted file mode 100644
index a873f0a..0000000
--- a/core/html/shadow/PluginPlaceholderElement.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- NoInterfaceObject
-] interface PluginPlaceholderElement : HTMLDivElement {
- [ImplementedInPrivateScript, OnlyExposedToPrivateScript] attribute DOMString message;
- [ImplementedInPrivateScript, OnlyExposedToPrivateScript] attribute boolean closeable;
-
- [ImplementedInPrivateScript, OnlyExposedToPrivateScript] void createdCallback();
-};
diff --git a/core/html/track/AudioTrack.idl b/core/html/track/AudioTrack.idl
index 28c294e..6299715 100644
--- a/core/html/track/AudioTrack.idl
+++ b/core/html/track/AudioTrack.idl
@@ -7,7 +7,7 @@
[
RuntimeEnabled=AudioVideoTracks,
SetWrapperReferenceFrom=owner,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface AudioTrack {
readonly attribute DOMString id;
readonly attribute DOMString kind;
diff --git a/core/html/track/AudioTrackList.idl b/core/html/track/AudioTrackList.idl
index 43a321e..80ba853 100644
--- a/core/html/track/AudioTrackList.idl
+++ b/core/html/track/AudioTrackList.idl
@@ -5,6 +5,7 @@
// https://html.spec.whatwg.org/#audiotracklist
[
+ GarbageCollected,
RuntimeEnabled=AudioVideoTracks,
SetWrapperReferenceFrom=owner,
] interface AudioTrackList : EventTarget {
diff --git a/core/html/track/TextTrack.idl b/core/html/track/TextTrack.idl
index 9fc8a39..3ce419b 100644
--- a/core/html/track/TextTrack.idl
+++ b/core/html/track/TextTrack.idl
@@ -29,8 +29,8 @@
enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" };
[
+ GarbageCollected,
SetWrapperReferenceFrom=owner,
- TypeChecking=Interface,
] interface TextTrack : EventTarget {
readonly attribute TextTrackKind kind;
readonly attribute DOMString label;
diff --git a/core/html/track/TextTrackCue.idl b/core/html/track/TextTrackCue.idl
index d10834b..7e4c6c8 100644
--- a/core/html/track/TextTrackCue.idl
+++ b/core/html/track/TextTrackCue.idl
@@ -26,6 +26,7 @@
// https://html.spec.whatwg.org/#texttrackcue
[
+ GarbageCollected,
SetWrapperReferenceFrom=owner,
] interface TextTrackCue : EventTarget {
readonly attribute TextTrack? track;
diff --git a/core/html/track/TextTrackCueList.idl b/core/html/track/TextTrackCueList.idl
index a65101b..116c75c 100644
--- a/core/html/track/TextTrackCueList.idl
+++ b/core/html/track/TextTrackCueList.idl
@@ -26,10 +26,9 @@
// https://html.spec.whatwg.org/#texttrackcuelist
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface TextTrackCueList {
readonly attribute unsigned long length;
- // TODO(philipj): This getter should be anonymous.
- [Measure] getter TextTrackCue item(unsigned long index);
+ getter TextTrackCue (unsigned long index);
TextTrackCue? getCueById(DOMString id);
};
diff --git a/core/html/track/TextTrackList.idl b/core/html/track/TextTrackList.idl
index 4f3168f..cef8012 100644
--- a/core/html/track/TextTrackList.idl
+++ b/core/html/track/TextTrackList.idl
@@ -26,11 +26,11 @@
// https://html.spec.whatwg.org/#texttracklist
[
+ GarbageCollected,
SetWrapperReferenceFrom=owner,
] interface TextTrackList : EventTarget {
readonly attribute unsigned long length;
- // TODO(philipj): This getter should be anonymous.
- [Measure] getter TextTrack item(unsigned long index);
+ getter TextTrack (unsigned long index);
TextTrack? getTrackById(DOMString id);
attribute EventHandler onchange;
diff --git a/core/html/track/VideoTrack.idl b/core/html/track/VideoTrack.idl
index bc0073e..8a6b8f6 100644
--- a/core/html/track/VideoTrack.idl
+++ b/core/html/track/VideoTrack.idl
@@ -7,7 +7,7 @@
[
RuntimeEnabled=AudioVideoTracks,
SetWrapperReferenceFrom=owner,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface VideoTrack {
readonly attribute DOMString id;
readonly attribute DOMString kind;
diff --git a/core/html/track/VideoTrackList.idl b/core/html/track/VideoTrackList.idl
index 0651763..79727b7 100644
--- a/core/html/track/VideoTrackList.idl
+++ b/core/html/track/VideoTrackList.idl
@@ -5,6 +5,7 @@
// https://html.spec.whatwg.org/#videotracklist
[
+ GarbageCollected,
RuntimeEnabled=AudioVideoTracks,
SetWrapperReferenceFrom=owner,
] interface VideoTrackList : EventTarget {
diff --git a/core/html/track/vtt/VTTRegion.idl b/core/html/track/vtt/VTTRegion.idl
index 3f18b15..a2843fd 100644
--- a/core/html/track/vtt/VTTRegion.idl
+++ b/core/html/track/vtt/VTTRegion.idl
@@ -28,7 +28,7 @@
[
Constructor,
RuntimeEnabled=WebVTTRegions,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface VTTRegion {
[RaisesException=Setter] attribute double width;
// TODO(philipj): height should be called lines.
diff --git a/core/html/track/vtt/VTTRegionList.idl b/core/html/track/vtt/VTTRegionList.idl
index 080b103..8eff2cd 100644
--- a/core/html/track/vtt/VTTRegionList.idl
+++ b/core/html/track/vtt/VTTRegionList.idl
@@ -28,7 +28,7 @@
[
RuntimeEnabled=WebVTTRegions,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface VTTRegionList {
readonly attribute unsigned long length;
getter VTTRegion item(unsigned long index);
diff --git a/core/imagebitmap/ImageBitmapFactories.idl b/core/imagebitmap/ImageBitmapFactories.idl
index 376fafa..02b3425 100644
--- a/core/imagebitmap/ImageBitmapFactories.idl
+++ b/core/imagebitmap/ImageBitmapFactories.idl
@@ -30,31 +30,24 @@
// https://html.spec.whatwg.org/#imagebitmapfactories
-// FIXME: should use typedef instead, but
-// requires better union type support: http://crbug.com/240176
-/*
-typedef (// HTMLImageElement or
- // HTMLVideoElement or
- // HTMLCanvasElement or
+typedef (HTMLImageElement or
+ HTMLVideoElement or
+ HTMLCanvasElement or
Blob or
ImageData or
- // CanvasRenderingContext2D or
ImageBitmap) ImageBitmapSource;
-*/
[
LegacyTreatAsPartialInterface,
NoInterfaceObject, // Always used on target of 'implements'
Exposed=(Window,Worker),
- RuntimeEnabled=ExperimentalCanvasFeatures,
- TypeChecking=Interface,
] interface ImageBitmapFactories {
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(Blob blob);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(Blob blob, long sx, long sy, long sw, long sh);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(ImageData data);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(ImageData data, long sx, long sy, long sw, long sh);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(ImageBitmap bitmap);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(ImageBitmap bitmap, long sx, long sy, long sw, long sh);
+ [CallWith=ScriptState, RaisesException] Promise createImageBitmap(ImageBitmapSource imageBitmap);
+ [CallWith=ScriptState, RaisesException, RuntimeEnabled=ExperimentalCanvasFeatures] Promise createImageBitmap(
+ ImageBitmapSource imageBitmap, ImageBitmapOptions options);
+ [CallWith=ScriptState, RaisesException] Promise createImageBitmap(ImageBitmapSource imageBitmap, long sx, long sy, long sw, long sh);
+ [CallWith=ScriptState, RaisesException, RuntimeEnabled=ExperimentalCanvasFeatures] Promise createImageBitmap(
+ ImageBitmapSource imageBitmap, long sx, long sy, long sw, long sh, ImageBitmapOptions options);
};
Window implements ImageBitmapFactories;
diff --git a/core/imagebitmap/ImageBitmapOptions.idl b/core/imagebitmap/ImageBitmapOptions.idl
new file mode 100644
index 0000000..e8c231d
--- /dev/null
+++ b/core/imagebitmap/ImageBitmapOptions.idl
@@ -0,0 +1,10 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[RuntimeEnabled=ExperimentalCanvasFeatures] enum ImageOrientation { "none", "flipY" };
+[RuntimeEnabled=ExperimentalCanvasFeatures] enum PremultiplyAlpha { "none", "default" };
+dictionary ImageBitmapOptions {
+ [RuntimeEnabled=ExperimentalCanvasFeatures] PremultiplyAlpha premultiplyAlpha = "default";
+ [RuntimeEnabled=ExperimentalCanvasFeatures] ImageOrientation imageOrientation = "none";
+};
diff --git a/core/input/InputDevice.idl b/core/input/InputDevice.idl
deleted file mode 100644
index 83e345f..0000000
--- a/core/input/InputDevice.idl
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents an input device (or group of related devices).
-// To ease implementation, developers cannot rely on comparing two InputDevice
-// instances for equality. Now we only have two InputDevice instances: one
-// represents all the devices which send touch events, the other one covers all
-// other devices which do not send touch events, because currently all we care
-// about is if the input device fires touch events or not.
-[
- Constructor(optional InputDeviceInit deviceInitDict),
- RuntimeEnabled=InputDevice,
- GarbageCollected,
-] interface InputDevice {
-
- // Whether this device dispatches touch events for movement. This is used to detect
- // mouse events which represent only an action that has already been handled by
- // touch event handlers.
- readonly attribute boolean firesTouchEvents;
-};
diff --git a/core/input/InputDeviceCapabilities.idl b/core/input/InputDeviceCapabilities.idl
new file mode 100644
index 0000000..6263af8
--- /dev/null
+++ b/core/input/InputDeviceCapabilities.idl
@@ -0,0 +1,22 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Represents capabilities for a group of related input devices.
+// To ease implementation, developers cannot rely on comparing two
+// InputDeviceCapabilities instances for equality. Now we only have two
+// InputDeviceCapabilities instances: one for devices which send touch
+// events, and one for those that don't, because currently all we care
+// about is if the input device fires touch events or not.
+
+[
+ Constructor(optional InputDeviceCapabilitiesInit deviceInitDict),
+ RuntimeEnabled=InputDeviceCapabilities,
+ GarbageCollected,
+] interface InputDeviceCapabilities {
+
+ // Whether this device dispatches touch events for movement. This is used to detect
+ // mouse events which represent only an action that has already been handled by
+ // touch event handlers.
+ [Measure] readonly attribute boolean firesTouchEvents;
+};
diff --git a/core/input/InputDeviceInit.idl b/core/input/InputDeviceCapabilitiesInit.idl
similarity index 70%
rename from core/input/InputDeviceInit.idl
rename to core/input/InputDeviceCapabilitiesInit.idl
index cad1069..e7ae86d 100644
--- a/core/input/InputDeviceInit.idl
+++ b/core/input/InputDeviceCapabilitiesInit.idl
@@ -3,7 +3,7 @@
// found in the LICENSE file.
[
- RuntimeEnabled=InputDevice,
-] dictionary InputDeviceInit {
+ RuntimeEnabled=InputDeviceCapabilities,
+] dictionary InputDeviceCapabilitiesInit {
boolean firesTouchEvents = false;
};
diff --git a/core/inspector/CodeGeneratorInspector.py b/core/inspector/CodeGeneratorInspector.py
deleted file mode 100755
index dccfdc0..0000000
--- a/core/inspector/CodeGeneratorInspector.py
+++ /dev/null
@@ -1,2127 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 Google Inc. All rights reserved.
-# Copyright (c) 2012 Intel Corporation. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os.path
-import sys
-import string
-import optparse
-import re
-try:
- import json
-except ImportError:
- import simplejson as json
-
-import CodeGeneratorInspectorStrings
-
-# Manually-filled map of type name replacements.
-TYPE_NAME_FIX_MAP = {
- "RGBA": "Rgba", # RGBA is reported to be conflicting with a define name in Windows CE.
- "": "Empty",
-}
-
-
-TYPES_WITH_RUNTIME_CAST_SET = frozenset(["Runtime.RemoteObject", "Runtime.PropertyDescriptor", "Runtime.InternalPropertyDescriptor",
- "Debugger.FunctionDetails", "Debugger.GeneratorObjectDetails", "Debugger.CollectionEntry", "Debugger.CallFrame", "Debugger.Location"])
-
-TYPES_WITH_OPEN_FIELD_LIST_SET = frozenset([
- # InspectorStyleSheet not only creates this property but wants to read it and modify it.
- "CSS.CSSProperty",
- # InspectorResourceAgent needs to update mime-type.
- "Network.Response"])
-
-cmdline_parser = optparse.OptionParser()
-cmdline_parser.add_option("--output_dir")
-
-try:
- arg_options, arg_values = cmdline_parser.parse_args()
- if (len(arg_values) != 1):
- raise Exception("Exactly one plain argument expected (found %s)" % len(arg_values))
- input_json_filename = arg_values[0]
- output_dirname = arg_options.output_dir
- if not output_dirname:
- raise Exception("Output directory must be specified")
-except Exception:
- # Work with python 2 and 3 http://docs.python.org/py3k/howto/pyporting.html
- exc = sys.exc_info()[1]
- sys.stderr.write("Failed to parse command-line arguments: %s\n\n" % exc)
- sys.stderr.write("Usage: <script> --output_dir <output_dir> protocol.json\n")
- exit(1)
-
-
-# FIXME: move this methods under Capitalizer class below and remove duplications.
-def dash_to_camelcase(word):
- return ''.join(x.capitalize() or '-' for x in word.split('-'))
-
-
-def fix_camel_case(name):
- refined = re.sub(r'-(\w)', lambda pat: pat.group(1).upper(), name)
- refined = to_title_case(refined)
- return re.sub(r'(?i)HTML|XML|WML|API', lambda pat: pat.group(0).upper(), refined)
-
-
-def to_title_case(name):
- return name[:1].upper() + name[1:]
-
-
-class Capitalizer:
- @staticmethod
- def lower_camel_case_to_upper(str):
- if len(str) > 0 and str[0].islower():
- str = str[0].upper() + str[1:]
- return str
-
- @staticmethod
- def upper_camel_case_to_lower(str):
- pos = 0
- while pos < len(str) and str[pos].isupper():
- pos += 1
- if pos == 0:
- return str
- if pos == 1:
- return str[0].lower() + str[1:]
- if pos < len(str):
- pos -= 1
- possible_abbreviation = str[0:pos]
- if possible_abbreviation not in Capitalizer.ABBREVIATION:
- raise Exception("Unknown abbreviation %s" % possible_abbreviation)
- str = possible_abbreviation.lower() + str[pos:]
- return str
-
- ABBREVIATION = frozenset(["XHR", "DOM", "CSS"])
-
-VALIDATOR_IFDEF_NAME = "ENABLE(ASSERT)"
-
-
-class DomainNameFixes:
- @staticmethod
- def get_fixed_data(domain_name):
- return Capitalizer.upper_camel_case_to_lower(domain_name) + "Agent"
-
-class RawTypes(object):
- @staticmethod
- def get(json_type):
- if json_type == "boolean":
- return RawTypes.Bool
- elif json_type == "string":
- return RawTypes.String
- elif json_type == "array":
- return RawTypes.Array
- elif json_type == "object":
- return RawTypes.Object
- elif json_type == "integer":
- return RawTypes.Int
- elif json_type == "number":
- return RawTypes.Number
- elif json_type == "any":
- return RawTypes.Any
- else:
- raise Exception("Unknown type: %s" % json_type)
-
- class BaseType(object):
- @classmethod
- def get_raw_validator_call_text(cls):
- return "RuntimeCastHelper::assertType<JSONValue::Type%s>" % cls.get_getter_name()
-
- @staticmethod
- def get_getter_name():
- raise Exception("Unsupported")
-
- class String(BaseType):
- @staticmethod
- def get_getter_name():
- return "String"
-
- get_setter_name = get_getter_name
-
- @staticmethod
- def get_constructor_pattern():
- return "InspectorString::create(%s)"
-
- @staticmethod
- def is_heavy_value():
- return True
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "String"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.String
-
- class Int(BaseType):
- @staticmethod
- def get_getter_name():
- return "Int"
-
- @staticmethod
- def get_setter_name():
- return "Number"
-
- @staticmethod
- def get_constructor_pattern():
- return "InspectorBasicValue::create(%s)"
-
- @classmethod
- def get_raw_validator_call_text(cls):
- return "RuntimeCastHelper::assertInt"
-
- @staticmethod
- def is_heavy_value():
- return False
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "int"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.Int
-
- class Number(BaseType):
- @staticmethod
- def get_getter_name():
- return "Double"
-
- @staticmethod
- def get_setter_name():
- return "Number"
-
- @staticmethod
- def get_constructor_pattern():
- return "InspectorBasicValue::create(%s)"
-
- @staticmethod
- def get_raw_validator_call_text():
- return "RuntimeCastHelper::assertType<JSONValue::TypeNumber>"
-
- @staticmethod
- def is_heavy_value():
- return False
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "double"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.Number
-
- class Bool(BaseType):
- @staticmethod
- def get_getter_name():
- return "Boolean"
-
- get_setter_name = get_getter_name
-
- @staticmethod
- def get_constructor_pattern():
- return "InspectorBasicValue::create(%s)"
-
- @staticmethod
- def is_heavy_value():
- return False
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "bool"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.Bool
-
- class Object(BaseType):
- @staticmethod
- def get_getter_name():
- return "Object"
-
- @staticmethod
- def get_setter_name():
- return "Value"
-
- @staticmethod
- def get_constructor_pattern():
- return "%s"
-
- @staticmethod
- def get_output_argument_prefix():
- return ""
-
- @staticmethod
- def is_heavy_value():
- return True
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "JSONObject"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.Object
-
- class Any(BaseType):
- @staticmethod
- def get_getter_name():
- return "Value"
-
- get_setter_name = get_getter_name
-
- @staticmethod
- def get_constructor_pattern():
- raise Exception("Unsupported")
-
- @staticmethod
- def get_raw_validator_call_text():
- return "RuntimeCastHelper::assertAny"
-
- @staticmethod
- def is_heavy_value():
- return True
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "JSONValue"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.Any
-
- class Array(BaseType):
- @staticmethod
- def get_getter_name():
- return "Array"
-
- @staticmethod
- def get_setter_name():
- return "Value"
-
- @staticmethod
- def get_constructor_pattern():
- return "%s"
-
- @staticmethod
- def get_output_argument_prefix():
- return ""
-
- @staticmethod
- def is_heavy_value():
- return True
-
- @staticmethod
- def get_array_item_raw_c_type_text():
- return "JSONArray"
-
- @staticmethod
- def get_raw_type_model():
- return TypeModel.Array
-
-
-def replace_right_shift(input_str):
- return input_str.replace(">>", "> >")
-
-
-class CommandReturnPassModel:
- class ByReference:
- def __init__(self, var_type, set_condition):
- self.var_type = var_type
- self.set_condition = set_condition
-
- def get_return_var_type(self):
- return self.var_type
-
- @staticmethod
- def get_output_argument_prefix():
- return ""
-
- @staticmethod
- def get_output_to_raw_expression():
- return "%s"
-
- def get_output_parameter_type(self):
- return self.var_type + "&"
-
- def get_set_return_condition(self):
- return self.set_condition
-
- class ByPointer:
- def __init__(self, var_type):
- self.var_type = var_type
-
- def get_return_var_type(self):
- return self.var_type
-
- @staticmethod
- def get_output_argument_prefix():
- return "&"
-
- @staticmethod
- def get_output_to_raw_expression():
- return "%s"
-
- def get_output_parameter_type(self):
- return self.var_type + "*"
-
- @staticmethod
- def get_set_return_condition():
- return None
-
- class OptOutput:
- def __init__(self, var_type):
- self.var_type = var_type
-
- def get_return_var_type(self):
- return "TypeBuilder::OptOutput<%s>" % self.var_type
-
- @staticmethod
- def get_output_argument_prefix():
- return "&"
-
- @staticmethod
- def get_output_to_raw_expression():
- return "%s.getValue()"
-
- def get_output_parameter_type(self):
- return "TypeBuilder::OptOutput<%s>*" % self.var_type
-
- @staticmethod
- def get_set_return_condition():
- return "%s.isAssigned()"
-
-
-class TypeModel:
- class RefPtrBased(object):
- def __init__(self, class_name):
- self.class_name = class_name
- self.optional = False
-
- def get_optional(self):
- result = TypeModel.RefPtrBased(self.class_name)
- result.optional = True
- return result
-
- def get_command_return_pass_model(self):
- if self.optional:
- set_condition = "%s"
- else:
- set_condition = None
- return CommandReturnPassModel.ByReference(replace_right_shift("RefPtr<%s>" % self.class_name), set_condition)
-
- def get_input_param_type_text(self):
- return replace_right_shift("PassRefPtr<%s>" % self.class_name)
-
- @staticmethod
- def get_event_setter_expression_pattern():
- return "%s"
-
- class Enum(object):
- def __init__(self, base_type_name):
- self.type_name = base_type_name + "::Enum"
-
- def get_optional(base_self):
- class EnumOptional:
- @classmethod
- def get_optional(cls):
- return cls
-
- @staticmethod
- def get_command_return_pass_model():
- return CommandReturnPassModel.OptOutput(base_self.type_name)
-
- @staticmethod
- def get_input_param_type_text():
- return base_self.type_name + "*"
-
- @staticmethod
- def get_event_setter_expression_pattern():
- raise Exception("TODO")
- return EnumOptional
-
- def get_command_return_pass_model(self):
- return CommandReturnPassModel.ByPointer(self.type_name)
-
- def get_input_param_type_text(self):
- return self.type_name
-
- @staticmethod
- def get_event_setter_expression_pattern():
- return "%s"
-
- class ValueType(object):
- def __init__(self, type_name, is_heavy):
- self.type_name = type_name
- self.is_heavy = is_heavy
-
- def get_optional(self):
- return self.ValueOptional(self)
-
- def get_command_return_pass_model(self):
- return CommandReturnPassModel.ByPointer(self.type_name)
-
- def get_input_param_type_text(self):
- if self.is_heavy:
- return "const %s&" % self.type_name
- else:
- return self.type_name
-
- def get_opt_output_type_(self):
- return self.type_name
-
- @staticmethod
- def get_event_setter_expression_pattern():
- return "%s"
-
- class ValueOptional:
- def __init__(self, base):
- self.base = base
-
- def get_optional(self):
- return self
-
- def get_command_return_pass_model(self):
- return CommandReturnPassModel.OptOutput(self.base.get_opt_output_type_())
-
- def get_input_param_type_text(self):
- return "const %s* const" % self.base.type_name
-
- @staticmethod
- def get_event_setter_expression_pattern():
- return "*%s"
-
- @classmethod
- def init_class(cls):
- cls.Bool = cls.ValueType("bool", False)
- cls.Int = cls.ValueType("int", False)
- cls.Number = cls.ValueType("double", False)
- cls.String = cls.ValueType("String", True,)
- cls.Object = cls.RefPtrBased("JSONObject")
- cls.Array = cls.RefPtrBased("JSONArray")
- cls.Any = cls.RefPtrBased("JSONValue")
-
-TypeModel.init_class()
-
-
-# Collection of JSONObject class methods that are likely to be overloaded in generated class.
-# We must explicitly import all overloaded methods or they won't be available to user.
-INSPECTOR_OBJECT_SETTER_NAMES = frozenset(["setValue", "setBoolean", "setNumber", "setString", "setValue", "setObject", "setArray"])
-
-
-def fix_type_name(json_name):
- if json_name in TYPE_NAME_FIX_MAP:
- fixed = TYPE_NAME_FIX_MAP[json_name]
-
- class Result(object):
- class_name = fixed
-
- @staticmethod
- def output_comment(writer):
- writer.newline("// Type originally was named '%s'.\n" % json_name)
- else:
-
- class Result(object):
- class_name = json_name
-
- @staticmethod
- def output_comment(writer):
- pass
-
- return Result
-
-
-class Writer:
- def __init__(self, output, indent):
- self.output = output
- self.indent = indent
-
- def newline(self, str):
- if (self.indent):
- self.output.append(self.indent)
- self.output.append(str)
-
- def append(self, str):
- self.output.append(str)
-
- def newline_multiline(self, str):
- parts = str.split('\n')
- self.newline(parts[0])
- for p in parts[1:]:
- self.output.append('\n')
- if p:
- self.newline(p)
-
- def append_multiline(self, str):
- parts = str.split('\n')
- self.append(parts[0])
- for p in parts[1:]:
- self.output.append('\n')
- if p:
- self.newline(p)
-
- def get_indent(self):
- return self.indent
-
- def insert_writer(self, additional_indent):
- new_output = []
- self.output.append(new_output)
- return Writer(new_output, self.indent + additional_indent)
-
-
-class EnumConstants:
- map_ = {}
- constants_ = []
-
- @classmethod
- def add_constant(cls, value):
- if value in cls.map_:
- return cls.map_[value]
- else:
- pos = len(cls.map_)
- cls.map_[value] = pos
- cls.constants_.append(value)
- return pos
-
- @classmethod
- def get_enum_constant_code(cls):
- output = []
- for item in cls.constants_:
- output.append(" \"" + item + "\"")
- return ",\n".join(output) + "\n"
-
-
-# Typebuilder code is generated in several passes: first typedefs, then other classes.
-# Manual pass management is needed because we cannot have forward declarations for typedefs.
-class TypeBuilderPass:
- TYPEDEF = "typedef"
- MAIN = "main"
-
-
-class TypeBindings:
- @staticmethod
- def create_named_type_declaration(json_typable, context_domain_name, type_data):
- json_type = type_data.get_json_type()
-
- class Helper:
- is_ad_hoc = False
- full_name_prefix_for_use = "TypeBuilder::" + context_domain_name + "::"
- full_name_prefix_for_impl = "TypeBuilder::" + context_domain_name + "::"
-
- @staticmethod
- def write_doc(writer):
- if "description" in json_type:
- writer.newline("/* ")
- writer.append(json_type["description"])
- writer.append(" */\n")
-
- @staticmethod
- def add_to_forward_listener(forward_listener):
- forward_listener.add_type_data(type_data)
-
-
- fixed_type_name = fix_type_name(json_type["id"])
- return TypeBindings.create_type_declaration_(json_typable, context_domain_name, fixed_type_name, Helper)
-
- @staticmethod
- def create_ad_hoc_type_declaration(json_typable, context_domain_name, ad_hoc_type_context):
- class Helper:
- is_ad_hoc = True
- full_name_prefix_for_use = ad_hoc_type_context.container_relative_name_prefix
- full_name_prefix_for_impl = ad_hoc_type_context.container_full_name_prefix
-
- @staticmethod
- def write_doc(writer):
- pass
-
- @staticmethod
- def add_to_forward_listener(forward_listener):
- pass
- fixed_type_name = ad_hoc_type_context.get_type_name_fix()
- return TypeBindings.create_type_declaration_(json_typable, context_domain_name, fixed_type_name, Helper)
-
- @staticmethod
- def create_type_declaration_(json_typable, context_domain_name, fixed_type_name, helper):
- if json_typable["type"] == "string":
- if "enum" in json_typable:
-
- class EnumBinding:
- need_user_runtime_cast_ = False
- need_internal_runtime_cast_ = False
-
- @classmethod
- def resolve_inner(cls, resolve_context):
- pass
-
- @classmethod
- def request_user_runtime_cast(cls, request):
- if request:
- cls.need_user_runtime_cast_ = True
- request.acknowledge()
-
- @classmethod
- def request_internal_runtime_cast(cls):
- cls.need_internal_runtime_cast_ = True
-
- @classmethod
- def get_code_generator(enum_binding_cls):
-
- class CodeGenerator:
- @staticmethod
- def generate_type_builder(writer, generate_context):
- enum = json_typable["enum"]
- helper.write_doc(writer)
- enum_name = fixed_type_name.class_name
- fixed_type_name.output_comment(writer)
- writer.newline("struct ")
- writer.append(enum_name)
- writer.append(" {\n")
- writer.newline(" enum Enum {\n")
- for enum_item in enum:
- enum_pos = EnumConstants.add_constant(enum_item)
-
- item_c_name = enum_item.replace('-', '_')
- item_c_name = Capitalizer.lower_camel_case_to_upper(item_c_name)
- if item_c_name in TYPE_NAME_FIX_MAP:
- item_c_name = TYPE_NAME_FIX_MAP[item_c_name]
- writer.newline(" ")
- writer.append(item_c_name)
- writer.append(" = ")
- writer.append("%s" % enum_pos)
- writer.append(",\n")
- writer.newline(" };\n")
- if enum_binding_cls.need_user_runtime_cast_:
- raise Exception("Not yet implemented")
-
- if enum_binding_cls.need_internal_runtime_cast_:
- writer.append("#if %s\n" % VALIDATOR_IFDEF_NAME)
- writer.newline(" static void assertCorrectValue(JSONValue* value);\n")
- writer.append("#endif // %s\n" % VALIDATOR_IFDEF_NAME)
-
- validator_writer = generate_context.validator_writer
-
- validator_writer.newline("void %s%s::assertCorrectValue(JSONValue* value)\n" % (helper.full_name_prefix_for_impl, enum_name))
- validator_writer.newline("{\n")
- validator_writer.newline(" WTF::String s;\n")
- validator_writer.newline(" bool cast_res = value->asString(&s);\n")
- validator_writer.newline(" ASSERT(cast_res);\n")
- if len(enum) > 0:
- condition_list = []
- for enum_item in enum:
- enum_pos = EnumConstants.add_constant(enum_item)
- condition_list.append("s == \"%s\"" % enum_item)
- validator_writer.newline(" ASSERT(%s);\n" % " || ".join(condition_list))
- validator_writer.newline("}\n")
-
- validator_writer.newline("\n\n")
-
- writer.newline("}; // struct ")
- writer.append(enum_name)
- writer.append("\n\n")
-
- @staticmethod
- def register_use(forward_listener):
- pass
-
- @staticmethod
- def get_generate_pass_id():
- return TypeBuilderPass.MAIN
-
- return CodeGenerator
-
- @classmethod
- def get_validator_call_text(cls):
- return helper.full_name_prefix_for_use + fixed_type_name.class_name + "::assertCorrectValue"
-
- @classmethod
- def get_array_item_c_type_text(cls):
- return helper.full_name_prefix_for_use + fixed_type_name.class_name + "::Enum"
-
- @staticmethod
- def get_setter_value_expression_pattern():
- return "TypeBuilder::getEnumConstantValue(%s)"
-
- @staticmethod
- def reduce_to_raw_type():
- return RawTypes.String
-
- @staticmethod
- def get_type_model():
- return TypeModel.Enum(helper.full_name_prefix_for_use + fixed_type_name.class_name)
-
- return EnumBinding
- else:
- if helper.is_ad_hoc:
-
- class PlainString:
- @classmethod
- def resolve_inner(cls, resolve_context):
- pass
-
- @staticmethod
- def request_user_runtime_cast(request):
- raise Exception("Unsupported")
-
- @staticmethod
- def request_internal_runtime_cast():
- pass
-
- @staticmethod
- def get_code_generator():
- return None
-
- @classmethod
- def get_validator_call_text(cls):
- return RawTypes.String.get_raw_validator_call_text()
-
- @staticmethod
- def reduce_to_raw_type():
- return RawTypes.String
-
- @staticmethod
- def get_type_model():
- return TypeModel.String
-
- @staticmethod
- def get_setter_value_expression_pattern():
- return None
-
- @classmethod
- def get_array_item_c_type_text(cls):
- return cls.reduce_to_raw_type().get_array_item_raw_c_type_text()
-
- return PlainString
-
- else:
-
- class TypedefString:
- @classmethod
- def resolve_inner(cls, resolve_context):
- pass
-
- @staticmethod
- def request_user_runtime_cast(request):
- raise Exception("Unsupported")
-
- @staticmethod
- def request_internal_runtime_cast():
- pass
-
- @staticmethod
- def get_code_generator():
- class CodeGenerator:
- @staticmethod
- def generate_type_builder(writer, generate_context):
- helper.write_doc(writer)
- fixed_type_name.output_comment(writer)
- writer.newline("typedef String ")
- writer.append(fixed_type_name.class_name)
- writer.append(";\n\n")
-
- @staticmethod
- def register_use(forward_listener):
- pass
-
- @staticmethod
- def get_generate_pass_id():
- return TypeBuilderPass.TYPEDEF
-
- return CodeGenerator
-
- @classmethod
- def get_validator_call_text(cls):
- return RawTypes.String.get_raw_validator_call_text()
-
- @staticmethod
- def reduce_to_raw_type():
- return RawTypes.String
-
- @staticmethod
- def get_type_model():
- return TypeModel.ValueType("%s%s" % (helper.full_name_prefix_for_use, fixed_type_name.class_name), True)
-
- @staticmethod
- def get_setter_value_expression_pattern():
- return None
-
- @classmethod
- def get_array_item_c_type_text(cls):
- return "%s%s" % (helper.full_name_prefix_for_use, fixed_type_name.class_name)
-
- return TypedefString
-
- elif json_typable["type"] == "object":
- if "properties" in json_typable:
-
- class ClassBinding:
- resolve_data_ = None
- need_user_runtime_cast_ = False
- need_internal_runtime_cast_ = False
-
- @classmethod
- def resolve_inner(cls, resolve_context):
- if cls.resolve_data_:
- return
-
- properties = json_typable["properties"]
- main = []
- optional = []
-
- ad_hoc_type_list = []
-
- for prop in properties:
- prop_name = prop["name"]
- ad_hoc_type_context = cls.AdHocTypeContextImpl(prop_name, fixed_type_name.class_name, resolve_context, ad_hoc_type_list, helper.full_name_prefix_for_impl)
- binding = resolve_param_type(prop, context_domain_name, ad_hoc_type_context)
-
- code_generator = binding.get_code_generator()
- if code_generator:
- code_generator.register_use(resolve_context.forward_listener)
-
- class PropertyData:
- param_type_binding = binding
- p = prop
-
- if prop.get("optional"):
- optional.append(PropertyData)
- else:
- main.append(PropertyData)
-
- class ResolveData:
- main_properties = main
- optional_properties = optional
- ad_hoc_types = ad_hoc_type_list
-
- cls.resolve_data_ = ResolveData
-
- for ad_hoc in ad_hoc_type_list:
- ad_hoc.resolve_inner(resolve_context)
-
- @classmethod
- def request_user_runtime_cast(cls, request):
- if not request:
- return
- cls.need_user_runtime_cast_ = True
- request.acknowledge()
- cls.request_internal_runtime_cast()
-
- @classmethod
- def request_internal_runtime_cast(cls):
- if cls.need_internal_runtime_cast_:
- return
- cls.need_internal_runtime_cast_ = True
- for p in cls.resolve_data_.main_properties:
- p.param_type_binding.request_internal_runtime_cast()
- for p in cls.resolve_data_.optional_properties:
- p.param_type_binding.request_internal_runtime_cast()
-
- @classmethod
- def get_code_generator(class_binding_cls):
- class CodeGenerator:
- @classmethod
- def generate_type_builder(cls, writer, generate_context):
- resolve_data = class_binding_cls.resolve_data_
- helper.write_doc(writer)
- class_name = fixed_type_name.class_name
-
- is_open_type = (context_domain_name + "." + class_name) in TYPES_WITH_OPEN_FIELD_LIST_SET
-
- fixed_type_name.output_comment(writer)
- writer.newline("class ")
- writer.append(class_name)
- writer.append(" : public ")
- if is_open_type:
- writer.append("JSONObject")
- else:
- writer.append("JSONObjectBase")
- writer.append(" {\n")
- writer.newline("public:\n")
- ad_hoc_type_writer = writer.insert_writer(" ")
-
- for ad_hoc_type in resolve_data.ad_hoc_types:
- code_generator = ad_hoc_type.get_code_generator()
- if code_generator:
- code_generator.generate_type_builder(ad_hoc_type_writer, generate_context)
-
- writer.newline_multiline(
-""" enum {
- NoFieldsSet = 0,
-""")
-
- state_enum_items = []
- if len(resolve_data.main_properties) > 0:
- pos = 0
- for prop_data in resolve_data.main_properties:
- item_name = Capitalizer.lower_camel_case_to_upper(prop_data.p["name"]) + "Set"
- state_enum_items.append(item_name)
- writer.newline(" %s = 1 << %s,\n" % (item_name, pos))
- pos += 1
- all_fields_set_value = "(" + (" | ".join(state_enum_items)) + ")"
- else:
- all_fields_set_value = "0"
-
- writer.newline_multiline(CodeGeneratorInspectorStrings.class_binding_builder_part_1
- % (all_fields_set_value, class_name, class_name))
-
- pos = 0
- for prop_data in resolve_data.main_properties:
- prop_name = prop_data.p["name"]
-
- param_type_binding = prop_data.param_type_binding
- param_raw_type = param_type_binding.reduce_to_raw_type()
-
- writer.newline_multiline(CodeGeneratorInspectorStrings.class_binding_builder_part_2
- % (state_enum_items[pos],
- Capitalizer.lower_camel_case_to_upper(prop_name),
- param_type_binding.get_type_model().get_input_param_type_text(),
- state_enum_items[pos], prop_name,
- param_raw_type.get_setter_name(), prop_name,
- format_setter_value_expression(param_type_binding, "value"),
- state_enum_items[pos]))
-
- pos += 1
-
- writer.newline_multiline(CodeGeneratorInspectorStrings.class_binding_builder_part_3
- % (class_name, class_name, class_name, class_name, class_name, class_name))
-
- writer.newline(" /*\n")
- writer.newline(" * Synthetic constructor:\n")
- writer.newline(" * RefPtr<%s> result = %s::create()" % (class_name, class_name))
- for prop_data in resolve_data.main_properties:
- writer.append_multiline("\n * .set%s(...)" % Capitalizer.lower_camel_case_to_upper(prop_data.p["name"]))
- writer.append_multiline(";\n */\n")
-
- writer.newline_multiline(CodeGeneratorInspectorStrings.class_binding_builder_part_4)
-
- writer.newline(" typedef TypeBuilder::StructItemTraits ItemTraits;\n")
-
- for prop_data in resolve_data.main_properties:
- prop_name = prop_data.p["name"]
- param_type_binding = prop_data.param_type_binding
- if isinstance(param_type_binding.get_type_model(), TypeModel.ValueType):
- writer.append_multiline("\n void %s" % prop_name)
- writer.append("(%s value)\n" % param_type_binding.get_type_model().get_command_return_pass_model().get_output_parameter_type())
- writer.newline(" {\n")
- writer.newline(" JSONObjectBase::get%s(\"%s\", value);\n"
- % (param_type_binding.reduce_to_raw_type().get_setter_name(), prop_data.p["name"]))
- writer.newline(" }\n")
-
- for prop_data in resolve_data.optional_properties:
- prop_name = prop_data.p["name"]
- param_type_binding = prop_data.param_type_binding
- setter_name = "set%s" % Capitalizer.lower_camel_case_to_upper(prop_name)
-
- writer.append_multiline("\n void %s" % setter_name)
- writer.append("(%s value)\n" % param_type_binding.get_type_model().get_input_param_type_text())
- writer.newline(" {\n")
- writer.newline(" this->set%s(\"%s\", %s);\n"
- % (param_type_binding.reduce_to_raw_type().get_setter_name(), prop_data.p["name"],
- format_setter_value_expression(param_type_binding, "value")))
- writer.newline(" }\n")
-
- if setter_name in INSPECTOR_OBJECT_SETTER_NAMES:
- writer.newline(" using JSONObjectBase::%s;\n\n" % setter_name)
-
- if class_binding_cls.need_user_runtime_cast_:
- writer.newline(" static PassRefPtr<%s> runtimeCast(PassRefPtr<JSONValue> value)\n" % class_name)
- writer.newline(" {\n")
- writer.newline(" RefPtr<JSONObject> object;\n")
- writer.newline(" bool castRes = value->asObject(&object);\n")
- writer.newline(" ASSERT_UNUSED(castRes, castRes);\n")
- writer.append("#if %s\n" % VALIDATOR_IFDEF_NAME)
- writer.newline(" assertCorrectValue(object.get());\n")
- writer.append("#endif // %s\n" % VALIDATOR_IFDEF_NAME)
- writer.newline(" static_assert(sizeof(%s) == sizeof(JSONObjectBase), \"%s should be the same size as JSONObjectBase\");\n" % (class_name, class_name))
- writer.newline(" return static_cast<%s*>(static_cast<JSONObjectBase*>(object.get()));\n" % class_name)
- writer.newline(" }\n")
- writer.append("\n")
-
- if class_binding_cls.need_internal_runtime_cast_:
- writer.append("#if %s\n" % VALIDATOR_IFDEF_NAME)
- writer.newline(" static void assertCorrectValue(JSONValue* value);\n")
- writer.append("#endif // %s\n" % VALIDATOR_IFDEF_NAME)
-
- closed_field_set = (context_domain_name + "." + class_name) not in TYPES_WITH_OPEN_FIELD_LIST_SET
-
- validator_writer = generate_context.validator_writer
-
- validator_writer.newline("void %s%s::assertCorrectValue(JSONValue* value)\n" % (helper.full_name_prefix_for_impl, class_name))
- validator_writer.newline("{\n")
- validator_writer.newline(" RefPtr<JSONObject> object;\n")
- validator_writer.newline(" bool castRes = value->asObject(&object);\n")
- validator_writer.newline(" ASSERT_UNUSED(castRes, castRes);\n")
- for prop_data in resolve_data.main_properties:
- validator_writer.newline(" {\n")
- it_name = "%sPos" % prop_data.p["name"]
- validator_writer.newline(" JSONObject::iterator %s;\n" % it_name)
- validator_writer.newline(" %s = object->find(\"%s\");\n" % (it_name, prop_data.p["name"]))
- validator_writer.newline(" ASSERT(%s != object->end());\n" % it_name)
- validator_writer.newline(" %s(%s->value.get());\n" % (prop_data.param_type_binding.get_validator_call_text(), it_name))
- validator_writer.newline(" }\n")
-
- if closed_field_set:
- validator_writer.newline(" int foundPropertiesCount = %s;\n" % len(resolve_data.main_properties))
-
- for prop_data in resolve_data.optional_properties:
- validator_writer.newline(" {\n")
- it_name = "%sPos" % prop_data.p["name"]
- validator_writer.newline(" JSONObject::iterator %s;\n" % it_name)
- validator_writer.newline(" %s = object->find(\"%s\");\n" % (it_name, prop_data.p["name"]))
- validator_writer.newline(" if (%s != object->end()) {\n" % it_name)
- validator_writer.newline(" %s(%s->value.get());\n" % (prop_data.param_type_binding.get_validator_call_text(), it_name))
- if closed_field_set:
- validator_writer.newline(" ++foundPropertiesCount;\n")
- validator_writer.newline(" }\n")
- validator_writer.newline(" }\n")
-
- if closed_field_set:
- validator_writer.newline(" if (foundPropertiesCount != object->size()) {\n")
- validator_writer.newline(" FATAL(\"Unexpected properties in object: %s\\n\", object->toJSONString().ascii().data());\n")
- validator_writer.newline(" }\n")
- validator_writer.newline("}\n")
-
- validator_writer.newline("\n\n")
-
- if is_open_type:
- cpp_writer = generate_context.cpp_writer
- writer.append("\n")
- writer.newline(" // Property names for type generated as open.\n")
- for prop_data in resolve_data.main_properties + resolve_data.optional_properties:
- prop_name = prop_data.p["name"]
- prop_field_name = Capitalizer.lower_camel_case_to_upper(prop_name)
- writer.newline(" static const char %s[];\n" % (prop_field_name))
- cpp_writer.newline("const char %s%s::%s[] = \"%s\";\n" % (helper.full_name_prefix_for_impl, class_name, prop_field_name, prop_name))
-
-
- writer.newline("};\n\n")
-
- @staticmethod
- def generate_forward_declaration(writer):
- class_name = fixed_type_name.class_name
- writer.newline("class ")
- writer.append(class_name)
- writer.append(";\n")
-
- @staticmethod
- def register_use(forward_listener):
- helper.add_to_forward_listener(forward_listener)
-
- @staticmethod
- def get_generate_pass_id():
- return TypeBuilderPass.MAIN
-
- return CodeGenerator
-
- @staticmethod
- def get_validator_call_text():
- return helper.full_name_prefix_for_use + fixed_type_name.class_name + "::assertCorrectValue"
-
- @classmethod
- def get_array_item_c_type_text(cls):
- return helper.full_name_prefix_for_use + fixed_type_name.class_name
-
- @staticmethod
- def get_setter_value_expression_pattern():
- return None
-
- @staticmethod
- def reduce_to_raw_type():
- return RawTypes.Object
-
- @staticmethod
- def get_type_model():
- return TypeModel.RefPtrBased(helper.full_name_prefix_for_use + fixed_type_name.class_name)
-
- class AdHocTypeContextImpl:
- def __init__(self, property_name, class_name, resolve_context, ad_hoc_type_list, parent_full_name_prefix):
- self.property_name = property_name
- self.class_name = class_name
- self.resolve_context = resolve_context
- self.ad_hoc_type_list = ad_hoc_type_list
- self.container_full_name_prefix = parent_full_name_prefix + class_name + "::"
- self.container_relative_name_prefix = ""
-
- def get_type_name_fix(self):
- class NameFix:
- class_name = Capitalizer.lower_camel_case_to_upper(self.property_name)
-
- @staticmethod
- def output_comment(writer):
- writer.newline("// Named after property name '%s' while generating %s.\n" % (self.property_name, self.class_name))
-
- return NameFix
-
- def add_type(self, binding):
- self.ad_hoc_type_list.append(binding)
-
- return ClassBinding
- else:
-
- class PlainObjectBinding:
- @classmethod
- def resolve_inner(cls, resolve_context):
- pass
-
- @staticmethod
- def request_user_runtime_cast(request):
- pass
-
- @staticmethod
- def request_internal_runtime_cast():
- pass
-
- @staticmethod
- def get_code_generator():
- pass
-
- @staticmethod
- def get_validator_call_text():
- return "RuntimeCastHelper::assertType<JSONValue::TypeObject>"
-
- @classmethod
- def get_array_item_c_type_text(cls):
- return cls.reduce_to_raw_type().get_array_item_raw_c_type_text()
-
- @staticmethod
- def get_setter_value_expression_pattern():
- return None
-
- @staticmethod
- def reduce_to_raw_type():
- return RawTypes.Object
-
- @staticmethod
- def get_type_model():
- return TypeModel.Object
-
- return PlainObjectBinding
- elif json_typable["type"] == "array":
- if "items" in json_typable:
-
- ad_hoc_types = []
-
- class AdHocTypeContext:
- container_full_name_prefix = "<not yet defined>"
- container_relative_name_prefix = ""
-
- @staticmethod
- def get_type_name_fix():
- return fixed_type_name
-
- @staticmethod
- def add_type(binding):
- ad_hoc_types.append(binding)
-
- item_binding = resolve_param_type(json_typable["items"], context_domain_name, AdHocTypeContext)
-
- class ArrayBinding:
- resolve_data_ = None
- need_internal_runtime_cast_ = False
-
- @classmethod
- def resolve_inner(cls, resolve_context):
- if cls.resolve_data_:
- return
-
- class ResolveData:
- item_type_binding = item_binding
- ad_hoc_type_list = ad_hoc_types
-
- cls.resolve_data_ = ResolveData
-
- for t in ad_hoc_types:
- t.resolve_inner(resolve_context)
-
- @classmethod
- def request_user_runtime_cast(cls, request):
- raise Exception("Not implemented yet")
-
- @classmethod
- def request_internal_runtime_cast(cls):
- if cls.need_internal_runtime_cast_:
- return
- cls.need_internal_runtime_cast_ = True
- cls.resolve_data_.item_type_binding.request_internal_runtime_cast()
-
- @classmethod
- def get_code_generator(array_binding_cls):
-
- class CodeGenerator:
- @staticmethod
- def generate_type_builder(writer, generate_context):
- ad_hoc_type_writer = writer
-
- resolve_data = array_binding_cls.resolve_data_
-
- for ad_hoc_type in resolve_data.ad_hoc_type_list:
- code_generator = ad_hoc_type.get_code_generator()
- if code_generator:
- code_generator.generate_type_builder(ad_hoc_type_writer, generate_context)
-
- @staticmethod
- def generate_forward_declaration(writer):
- pass
-
- @staticmethod
- def register_use(forward_listener):
- item_code_generator = item_binding.get_code_generator()
- if item_code_generator:
- item_code_generator.register_use(forward_listener)
-
- @staticmethod
- def get_generate_pass_id():
- return TypeBuilderPass.MAIN
-
- return CodeGenerator
-
- @classmethod
- def get_validator_call_text(cls):
- return cls.get_array_item_c_type_text() + "::assertCorrectValue"
-
- @classmethod
- def get_array_item_c_type_text(cls):
- return replace_right_shift("TypeBuilder::Array<%s>" % cls.resolve_data_.item_type_binding.get_array_item_c_type_text())
-
- @staticmethod
- def get_setter_value_expression_pattern():
- return None
-
- @staticmethod
- def reduce_to_raw_type():
- return RawTypes.Array
-
- @classmethod
- def get_type_model(cls):
- return TypeModel.RefPtrBased(cls.get_array_item_c_type_text())
-
- return ArrayBinding
- else:
- # Fall-through to raw type.
- pass
-
- raw_type = RawTypes.get(json_typable["type"])
-
- return RawTypeBinding(raw_type)
-
-
-class RawTypeBinding:
- def __init__(self, raw_type):
- self.raw_type_ = raw_type
-
- def resolve_inner(self, resolve_context):
- pass
-
- def request_user_runtime_cast(self, request):
- raise Exception("Unsupported")
-
- def request_internal_runtime_cast(self):
- pass
-
- def get_code_generator(self):
- return None
-
- def get_validator_call_text(self):
- return self.raw_type_.get_raw_validator_call_text()
-
- def get_array_item_c_type_text(self):
- return self.raw_type_.get_array_item_raw_c_type_text()
-
- def get_setter_value_expression_pattern(self):
- return None
-
- def reduce_to_raw_type(self):
- return self.raw_type_
-
- def get_type_model(self):
- return self.raw_type_.get_raw_type_model()
-
-
-class TypeData(object):
- def __init__(self, json_type, json_domain, domain_data):
- self.json_type_ = json_type
- self.json_domain_ = json_domain
- self.domain_data_ = domain_data
-
- if "type" not in json_type:
- raise Exception("Unknown type")
-
- json_type_name = json_type["type"]
- raw_type = RawTypes.get(json_type_name)
- self.raw_type_ = raw_type
- self.binding_being_resolved_ = False
- self.binding_ = None
-
- def get_raw_type(self):
- return self.raw_type_
-
- def get_binding(self):
- if not self.binding_:
- if self.binding_being_resolved_:
- raise Error("Type %s is already being resolved" % self.json_type_["type"])
- # Resolve only lazily, because resolving one named type may require resolving some other named type.
- self.binding_being_resolved_ = True
- try:
- self.binding_ = TypeBindings.create_named_type_declaration(self.json_type_, self.json_domain_["domain"], self)
- finally:
- self.binding_being_resolved_ = False
-
- return self.binding_
-
- def get_json_type(self):
- return self.json_type_
-
- def get_name(self):
- return self.json_type_["id"]
-
- def get_domain_name(self):
- return self.json_domain_["domain"]
-
-
-class DomainData:
- def __init__(self, json_domain):
- self.json_domain = json_domain
- self.types_ = []
-
- def add_type(self, type_data):
- self.types_.append(type_data)
-
- def name(self):
- return self.json_domain["domain"]
-
- def types(self):
- return self.types_
-
-
-class TypeMap:
- def __init__(self, api):
- self.map_ = {}
- self.domains_ = []
- for json_domain in api["domains"]:
- domain_name = json_domain["domain"]
-
- domain_map = {}
- self.map_[domain_name] = domain_map
-
- domain_data = DomainData(json_domain)
- self.domains_.append(domain_data)
-
- if "types" in json_domain:
- for json_type in json_domain["types"]:
- type_name = json_type["id"]
- type_data = TypeData(json_type, json_domain, domain_data)
- domain_map[type_name] = type_data
- domain_data.add_type(type_data)
-
- def domains(self):
- return self.domains_
-
- def get(self, domain_name, type_name):
- return self.map_[domain_name][type_name]
-
-
-def resolve_param_type(json_parameter, scope_domain_name, ad_hoc_type_context):
- if "$ref" in json_parameter:
- json_ref = json_parameter["$ref"]
- type_data = get_ref_data(json_ref, scope_domain_name)
- return type_data.get_binding()
- elif "type" in json_parameter:
- result = TypeBindings.create_ad_hoc_type_declaration(json_parameter, scope_domain_name, ad_hoc_type_context)
- ad_hoc_type_context.add_type(result)
- return result
- else:
- raise Exception("Unknown type")
-
-def resolve_param_raw_type(json_parameter, scope_domain_name):
- if "$ref" in json_parameter:
- json_ref = json_parameter["$ref"]
- type_data = get_ref_data(json_ref, scope_domain_name)
- return type_data.get_raw_type()
- elif "type" in json_parameter:
- json_type = json_parameter["type"]
- return RawTypes.get(json_type)
- else:
- raise Exception("Unknown type")
-
-
-def get_ref_data(json_ref, scope_domain_name):
- dot_pos = json_ref.find(".")
- if dot_pos == -1:
- domain_name = scope_domain_name
- type_name = json_ref
- else:
- domain_name = json_ref[:dot_pos]
- type_name = json_ref[dot_pos + 1:]
-
- return type_map.get(domain_name, type_name)
-
-
-input_file = open(input_json_filename, "r")
-json_string = input_file.read()
-json_api = json.loads(json_string)
-
-
-class Templates:
- def get_this_script_path_(absolute_path):
- absolute_path = os.path.abspath(absolute_path)
- components = []
-
- def fill_recursive(path_part, depth):
- if depth <= 0 or path_part == '/':
- return
- fill_recursive(os.path.dirname(path_part), depth - 1)
- components.append(os.path.basename(path_part))
-
- # Typical path is /Source/WebCore/inspector/CodeGeneratorInspector.py
- # Let's take 4 components from the real path then.
- fill_recursive(absolute_path, 4)
-
- return "/".join(components)
-
- file_header_ = ("// File is generated by %s\n\n" % get_this_script_path_(sys.argv[0]) +
-"""// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-""")
-
- frontend_domain_class = string.Template(CodeGeneratorInspectorStrings.frontend_domain_class)
- backend_method = string.Template(CodeGeneratorInspectorStrings.backend_method)
- frontend_method = string.Template(CodeGeneratorInspectorStrings.frontend_method)
- callback_main_methods = string.Template(CodeGeneratorInspectorStrings.callback_main_methods)
- callback_failure_method = string.Template(CodeGeneratorInspectorStrings.callback_failure_method)
- frontend_h = string.Template(file_header_ + CodeGeneratorInspectorStrings.frontend_h)
- backend_h = string.Template(file_header_ + CodeGeneratorInspectorStrings.backend_h)
- backend_cpp = string.Template(file_header_ + CodeGeneratorInspectorStrings.backend_cpp)
- frontend_cpp = string.Template(file_header_ + CodeGeneratorInspectorStrings.frontend_cpp)
- typebuilder_h = string.Template(file_header_ + CodeGeneratorInspectorStrings.typebuilder_h)
- typebuilder_cpp = string.Template(file_header_ + CodeGeneratorInspectorStrings.typebuilder_cpp)
- param_container_access_code = CodeGeneratorInspectorStrings.param_container_access_code
-
-
-
-
-
-type_map = TypeMap(json_api)
-
-
-class NeedRuntimeCastRequest:
- def __init__(self):
- self.ack_ = None
-
- def acknowledge(self):
- self.ack_ = True
-
- def is_acknowledged(self):
- return self.ack_
-
-
-def resolve_all_types():
- runtime_cast_generate_requests = {}
- for type_name in TYPES_WITH_RUNTIME_CAST_SET:
- runtime_cast_generate_requests[type_name] = NeedRuntimeCastRequest()
-
- class ForwardListener:
- type_data_set = set()
- already_declared_set = set()
-
- @classmethod
- def add_type_data(cls, type_data):
- if type_data not in cls.already_declared_set:
- cls.type_data_set.add(type_data)
-
- class ResolveContext:
- forward_listener = ForwardListener
-
- for domain_data in type_map.domains():
- for type_data in domain_data.types():
- # Do not generate forwards for this type any longer.
- ForwardListener.already_declared_set.add(type_data)
-
- binding = type_data.get_binding()
- binding.resolve_inner(ResolveContext)
-
- for domain_data in type_map.domains():
- for type_data in domain_data.types():
- full_type_name = "%s.%s" % (type_data.get_domain_name(), type_data.get_name())
- request = runtime_cast_generate_requests.pop(full_type_name, None)
- binding = type_data.get_binding()
- if request:
- binding.request_user_runtime_cast(request)
-
- if request and not request.is_acknowledged():
- raise Exception("Failed to generate runtimeCast in " + full_type_name)
-
- for full_type_name in runtime_cast_generate_requests:
- raise Exception("Failed to generate runtimeCast. Type " + full_type_name + " not found")
-
- return ForwardListener
-
-
-global_forward_listener = resolve_all_types()
-
-
-def get_annotated_type_text(raw_type, annotated_type):
- if annotated_type != raw_type:
- return "/*%s*/ %s" % (annotated_type, raw_type)
- else:
- return raw_type
-
-
-def format_setter_value_expression(param_type_binding, value_ref):
- pattern = param_type_binding.get_setter_value_expression_pattern()
- if pattern:
- return pattern % value_ref
- else:
- return value_ref
-
-class Generator:
- frontend_class_field_lines = []
- frontend_domain_class_lines = []
-
- method_name_enum_list = []
- backend_method_declaration_list = []
- backend_method_implementation_list = []
- backend_method_name_declaration_list = []
- backend_method_name_declaration_index_list = []
- backend_method_name_declaration_current_index = 0
- method_handler_list = []
- frontend_method_list = []
-
- backend_virtual_setters_list = []
- backend_agent_interface_list = []
- backend_setters_list = []
- backend_constructor_init_list = []
- backend_field_list = []
- frontend_constructor_init_list = []
- type_builder_fragments = []
- type_builder_forwards = []
- validator_impl_list = []
- type_builder_impl_list = []
-
-
- @staticmethod
- def go():
- Generator.process_types(type_map)
-
- for json_domain in json_api["domains"]:
- domain_name = json_domain["domain"]
- domain_name_lower = domain_name.lower()
-
- agent_field_name = DomainNameFixes.get_fixed_data(domain_name)
-
- frontend_method_declaration_lines = []
-
- if "events" in json_domain:
- for json_event in json_domain["events"]:
- Generator.process_event(json_event, domain_name, frontend_method_declaration_lines)
-
- Generator.frontend_class_field_lines.append(" %s m_%s;\n" % (domain_name, domain_name_lower))
- if Generator.frontend_constructor_init_list:
- Generator.frontend_constructor_init_list.append(" , ")
- Generator.frontend_constructor_init_list.append("m_%s(inspectorFrontendChannel)\n" % domain_name_lower)
- Generator.frontend_domain_class_lines.append(Templates.frontend_domain_class.substitute(None,
- domainClassName=domain_name,
- domainFieldName=domain_name_lower,
- frontendDomainMethodDeclarations="".join(flatten_list(frontend_method_declaration_lines))))
-
- agent_interface_name = Capitalizer.lower_camel_case_to_upper(domain_name) + "CommandHandler"
- Generator.backend_agent_interface_list.append(" class CORE_EXPORT %s {\n" % agent_interface_name)
- Generator.backend_agent_interface_list.append(" public:\n")
- if "commands" in json_domain:
- for json_command in json_domain["commands"]:
- Generator.process_command(json_command, domain_name, agent_field_name, agent_interface_name)
- Generator.backend_agent_interface_list.append("\n protected:\n")
- Generator.backend_agent_interface_list.append(" virtual ~%s() { }\n" % agent_interface_name)
- Generator.backend_agent_interface_list.append(" };\n\n")
-
- Generator.backend_constructor_init_list.append(" , m_%s(0)" % agent_field_name)
- Generator.backend_virtual_setters_list.append(" virtual void registerAgent(%s* %s) = 0;" % (agent_interface_name, agent_field_name))
- Generator.backend_setters_list.append(" virtual void registerAgent(%s* %s) { ASSERT(!m_%s); m_%s = %s; }" % (agent_interface_name, agent_field_name, agent_field_name, agent_field_name, agent_field_name))
- Generator.backend_field_list.append(" %s* m_%s;" % (agent_interface_name, agent_field_name))
-
- @staticmethod
- def process_event(json_event, domain_name, frontend_method_declaration_lines):
- if (("handlers" in json_event) and (not ("renderer" in json_event["handlers"]))):
- return
-
- event_name = json_event["name"]
-
- ad_hoc_type_output = []
- frontend_method_declaration_lines.append(ad_hoc_type_output)
- ad_hoc_type_writer = Writer(ad_hoc_type_output, " ")
-
- decl_parameter_list = []
-
- json_parameters = json_event.get("parameters")
- Generator.generate_send_method(json_parameters, event_name, domain_name, ad_hoc_type_writer,
- decl_parameter_list,
- Generator.EventMethodStructTemplate,
- Generator.frontend_method_list, Templates.frontend_method, {"eventName": event_name})
-
- frontend_method_declaration_lines.append(
- " void %s(%s);\n" % (event_name, ", ".join(decl_parameter_list)))
-
- class EventMethodStructTemplate:
- @staticmethod
- def append_prolog(line_list):
- line_list.append(" RefPtr<JSONObject> paramsObject = JSONObject::create();\n")
-
- @staticmethod
- def append_epilog(line_list):
- line_list.append(" jsonMessage->setObject(\"params\", paramsObject);\n")
-
- container_name = "paramsObject"
-
- @staticmethod
- def process_command(json_command, domain_name, agent_field_name, agent_interface_name):
- if (("handlers" in json_command) and (not ("renderer" in json_command["handlers"]))):
- return
-
- json_command_name = json_command["name"]
-
- cmd_enum_name = "k%s_%sCmd" % (domain_name, json_command["name"])
-
- Generator.method_name_enum_list.append(" %s," % cmd_enum_name)
- Generator.method_handler_list.append(" &InspectorBackendDispatcherImpl::%s_%s," % (domain_name, json_command_name))
- Generator.backend_method_declaration_list.append(" void %s_%s(int callId, JSONObject* requestMessageObject, JSONArray* protocolErrors);" % (domain_name, json_command_name))
-
- backend_agent_interface_list = [] if "redirect" in json_command else Generator.backend_agent_interface_list
-
- ad_hoc_type_output = []
- backend_agent_interface_list.append(ad_hoc_type_output)
- ad_hoc_type_writer = Writer(ad_hoc_type_output, " ")
-
- backend_agent_interface_list.append(" virtual void %s(ErrorString*" % json_command_name)
-
- method_in_code = ""
- method_out_code = ""
- agent_call_param_list = ["&error"]
- agent_call_params_declaration_list = [" ErrorString error;"]
- send_response_call_params_list = ["error"]
- request_message_param = ""
- normal_response_cook_text = ""
- error_type_binding = None
- if "error" in json_command:
- json_error = json_command["error"]
- error_type_binding = Generator.resolve_type_and_generate_ad_hoc(json_error, json_command_name + "Error", json_command_name, domain_name, ad_hoc_type_writer, agent_interface_name + "::")
- error_type_model = error_type_binding.get_type_model().get_optional()
- error_annotated_type = error_type_model.get_command_return_pass_model().get_output_parameter_type()
- agent_call_param_list.append("%serrorData" % error_type_model.get_command_return_pass_model().get_output_argument_prefix())
- backend_agent_interface_list.append(", %s errorData" % error_annotated_type)
- method_in_code += " %s errorData;\n" % error_type_model.get_command_return_pass_model().get_return_var_type()
- send_response_call_params_list.append("errorData")
-
- if "parameters" in json_command:
- json_params = json_command["parameters"]
- request_message_param = " requestMessageObject"
-
- if json_params:
- method_in_code += Templates.param_container_access_code
-
- for json_parameter in json_params:
- json_param_name = json_parameter["name"]
- param_raw_type = resolve_param_raw_type(json_parameter, domain_name)
-
- getter_name = param_raw_type.get_getter_name()
-
- optional = json_parameter.get("optional")
-
- non_optional_type_model = param_raw_type.get_raw_type_model()
-
- if optional:
- code = (" bool %s_valueFound = false;\n"
- " %s in_%s = get%s(paramsContainerPtr, \"%s\", &%s_valueFound, protocolErrors);\n" %
- (json_param_name, non_optional_type_model.get_command_return_pass_model().get_return_var_type(), json_param_name, getter_name, json_param_name, json_param_name))
- param = "%s_valueFound ? &in_%s : 0" % (json_param_name, json_param_name)
- # FIXME: pass optional refptr-values as PassRefPtr
- formal_param_type_pattern = "const %s*"
- else:
- code = (" %s in_%s = get%s(paramsContainerPtr, \"%s\", 0, protocolErrors);\n" %
- (non_optional_type_model.get_command_return_pass_model().get_return_var_type(), json_param_name, getter_name, json_param_name))
- param = "in_%s" % json_param_name
- # FIXME: pass not-optional refptr-values as NonNullPassRefPtr
- if param_raw_type.is_heavy_value():
- formal_param_type_pattern = "const %s&"
- else:
- formal_param_type_pattern = "%s"
-
- method_in_code += code
- agent_call_param_list.append(param)
- backend_agent_interface_list.append(", %s in_%s" % (formal_param_type_pattern % non_optional_type_model.get_command_return_pass_model().get_return_var_type(), json_param_name))
-
- if json_command.get("async") == True:
- callback_name = Capitalizer.lower_camel_case_to_upper(json_command_name) + "Callback"
-
- callback_output = []
- callback_writer = Writer(callback_output, ad_hoc_type_writer.get_indent())
-
- decl_parameter_list = []
- Generator.generate_send_method(json_command.get("returns"), json_command_name, domain_name, ad_hoc_type_writer,
- decl_parameter_list,
- Generator.CallbackMethodStructTemplate,
- Generator.backend_method_implementation_list, Templates.callback_main_methods,
- {"callbackName": callback_name, "agentName": agent_interface_name})
-
- callback_writer.newline("class " + callback_name + " : public CallbackBase {\n")
- callback_writer.newline("public:\n")
- callback_writer.newline(" " + callback_name + "(PassRefPtrWillBeRawPtr<InspectorBackendDispatcherImpl>, int id);\n")
- callback_writer.newline(" CORE_EXPORT void sendSuccess(" + ", ".join(decl_parameter_list) + ");\n")
- error_part_writer = callback_writer.insert_writer("")
- callback_writer.newline("};\n")
-
- if error_type_binding:
- annotated_type = error_type_model.get_input_param_type_text()
- error_part_writer.newline(" void sendFailure(const ErrorString&, %s);\n" % annotated_type)
- error_part_writer.newline(" using CallbackBase::sendFailure;\n")
-
- assigment_value = error_type_model.get_event_setter_expression_pattern() % "errorData"
- assigment_value = error_type_binding.reduce_to_raw_type().get_constructor_pattern() % assigment_value
-
- Generator.backend_method_implementation_list.append(Templates.callback_failure_method.substitute(None,
- agentName=agent_interface_name,
- callbackName=callback_name,
- parameter=annotated_type + " errorData",
- argument=assigment_value))
-
- ad_hoc_type_output.append(callback_output)
-
- method_out_code += " RefPtrWillBeRawPtr<" + agent_interface_name + "::" + callback_name + "> callback = adoptRefWillBeNoop(new " + agent_interface_name + "::" + callback_name + "(this, callId));\n"
- agent_call_param_list.append("callback")
- normal_response_cook_text += " if (!error.length()) \n"
- normal_response_cook_text += " return;\n"
- normal_response_cook_text += " callback->disable();\n"
- backend_agent_interface_list.append(", PassRefPtrWillBeRawPtr<%s> callback" % callback_name)
- else:
- if "returns" in json_command:
- method_out_code += "\n"
- agent_call_params_declaration_list.append(" RefPtr<JSONObject> result = JSONObject::create();")
- send_response_call_params_list.append("result")
- response_cook_list = []
- for json_return in json_command["returns"]:
-
- json_return_name = json_return["name"]
-
- optional = bool(json_return.get("optional"))
-
- return_type_binding = Generator.resolve_param_type_and_generate_ad_hoc(json_return, json_command_name, domain_name, ad_hoc_type_writer, agent_interface_name + "::")
-
- raw_type = return_type_binding.reduce_to_raw_type()
- setter_type = raw_type.get_setter_name()
-
- type_model = return_type_binding.get_type_model()
- if optional:
- type_model = type_model.get_optional()
-
- code = " %s out_%s;\n" % (type_model.get_command_return_pass_model().get_return_var_type(), json_return_name)
- param = "%sout_%s" % (type_model.get_command_return_pass_model().get_output_argument_prefix(), json_return_name)
- var_name = "out_%s" % json_return_name
- setter_argument = type_model.get_command_return_pass_model().get_output_to_raw_expression() % var_name
- if return_type_binding.get_setter_value_expression_pattern():
- setter_argument = return_type_binding.get_setter_value_expression_pattern() % setter_argument
-
- cook = " result->set%s(\"%s\", %s);\n" % (setter_type, json_return_name,
- setter_argument)
-
- set_condition_pattern = type_model.get_command_return_pass_model().get_set_return_condition()
- if set_condition_pattern:
- cook = (" if (%s)\n " % (set_condition_pattern % var_name)) + cook
- annotated_type = type_model.get_command_return_pass_model().get_output_parameter_type()
-
- param_name = var_name
- if optional:
- param_name = "opt_" + param_name
-
- backend_agent_interface_list.append(", %s %s" % (annotated_type, param_name))
- response_cook_list.append(cook)
-
- method_out_code += code
- agent_call_param_list.append(param)
-
- normal_response_cook_text += "".join(response_cook_list)
-
- if len(normal_response_cook_text) != 0:
- normal_response_cook_text = " if (!error.length()) {\n" + normal_response_cook_text + " }"
-
- # Redirect to another agent's implementation.
- agent_field = "m_" + agent_field_name
- if "redirect" in json_command:
- agent_field = "m_" + DomainNameFixes.get_fixed_data(json_command.get("redirect"))
-
- Generator.backend_method_implementation_list.append(Templates.backend_method.substitute(None,
- domainName=domain_name, methodName=json_command_name,
- agentField=agent_field,
- methodCode="".join([method_in_code, method_out_code]),
- agentCallParamsDeclaration="\n".join(agent_call_params_declaration_list),
- agentCallParams=", ".join(agent_call_param_list),
- requestMessageObject=request_message_param,
- responseCook=normal_response_cook_text,
- sendResponseCallParams=", ".join(send_response_call_params_list),
- commandNameIndex=cmd_enum_name))
- declaration_command_name = "%s.%s\\0" % (domain_name, json_command_name)
- Generator.backend_method_name_declaration_list.append(" \"%s\"" % declaration_command_name)
- assert Generator.backend_method_name_declaration_current_index < 2 ** 16, "Number too large for unsigned short."
- Generator.backend_method_name_declaration_index_list.append(" %d," % Generator.backend_method_name_declaration_current_index)
- Generator.backend_method_name_declaration_current_index += len(declaration_command_name) - 1
-
- backend_agent_interface_list.append(") = 0;\n")
-
- class CallbackMethodStructTemplate:
- @staticmethod
- def append_prolog(line_list):
- pass
-
- @staticmethod
- def append_epilog(line_list):
- pass
-
- container_name = "jsonMessage"
-
- # Generates common code for event sending and callback response data sending.
- @staticmethod
- def generate_send_method(parameters, event_name, domain_name, ad_hoc_type_writer, decl_parameter_list,
- method_struct_template,
- generator_method_list, method_template, template_params):
- method_line_list = []
- if parameters:
- method_struct_template.append_prolog(method_line_list)
- for json_parameter in parameters:
- parameter_name = json_parameter["name"]
-
- param_type_binding = Generator.resolve_param_type_and_generate_ad_hoc(json_parameter, event_name, domain_name, ad_hoc_type_writer, "")
-
- raw_type = param_type_binding.reduce_to_raw_type()
- raw_type_binding = RawTypeBinding(raw_type)
-
- optional = bool(json_parameter.get("optional"))
-
- setter_type = raw_type.get_setter_name()
-
- type_model = param_type_binding.get_type_model()
- raw_type_model = raw_type_binding.get_type_model()
- if optional:
- type_model = type_model.get_optional()
- raw_type_model = raw_type_model.get_optional()
-
- annotated_type = type_model.get_input_param_type_text()
- mode_type_binding = param_type_binding
-
- decl_parameter_list.append("%s %s" % (annotated_type, parameter_name))
-
- setter_argument = raw_type_model.get_event_setter_expression_pattern() % parameter_name
- if mode_type_binding.get_setter_value_expression_pattern():
- setter_argument = mode_type_binding.get_setter_value_expression_pattern() % setter_argument
-
- setter_code = " %s->set%s(\"%s\", %s);\n" % (method_struct_template.container_name, setter_type, parameter_name, setter_argument)
- if optional:
- setter_code = (" if (%s)\n " % parameter_name) + setter_code
- method_line_list.append(setter_code)
-
- method_struct_template.append_epilog(method_line_list)
-
- generator_method_list.append(method_template.substitute(None,
- domainName=domain_name,
- parameters=", ".join(decl_parameter_list),
- code="".join(method_line_list), **template_params))
-
- @classmethod
- def resolve_param_type_and_generate_ad_hoc(cls, json_param, method_name, domain_name, ad_hoc_type_writer, container_relative_name_prefix_param):
- param_name = json_param["name"]
- return cls.resolve_type_and_generate_ad_hoc(json_param, param_name, method_name, domain_name, ad_hoc_type_writer, container_relative_name_prefix_param)
-
- @staticmethod
- def resolve_type_and_generate_ad_hoc(typable_element, element_name, method_name, domain_name, ad_hoc_type_writer, container_relative_name_prefix_param):
- ad_hoc_type_list = []
-
- class AdHocTypeContext:
- container_full_name_prefix = "<not yet defined>"
- container_relative_name_prefix = container_relative_name_prefix_param
-
- @staticmethod
- def get_type_name_fix():
- class NameFix:
- class_name = Capitalizer.lower_camel_case_to_upper(element_name)
-
- @staticmethod
- def output_comment(writer):
- writer.newline("// Named after parameter '%s' while generating command/event %s.\n" % (element_name, method_name))
-
- return NameFix
-
- @staticmethod
- def add_type(binding):
- ad_hoc_type_list.append(binding)
-
- type_binding = resolve_param_type(typable_element, domain_name, AdHocTypeContext)
-
- class InterfaceForwardListener:
- @staticmethod
- def add_type_data(type_data):
- pass
-
- class InterfaceResolveContext:
- forward_listener = InterfaceForwardListener
-
- for type in ad_hoc_type_list:
- type.resolve_inner(InterfaceResolveContext)
-
- class InterfaceGenerateContext:
- validator_writer = "not supported in InterfaceGenerateContext"
- cpp_writer = validator_writer
-
- for type in ad_hoc_type_list:
- generator = type.get_code_generator()
- if generator:
- generator.generate_type_builder(ad_hoc_type_writer, InterfaceGenerateContext)
-
- return type_binding
-
- @staticmethod
- def process_types(type_map):
- output = Generator.type_builder_fragments
-
- class GenerateContext:
- validator_writer = Writer(Generator.validator_impl_list, "")
- cpp_writer = Writer(Generator.type_builder_impl_list, "")
-
- def generate_all_domains_code(out, type_data_callback):
- writer = Writer(out, "")
- for domain_data in type_map.domains():
- namespace_declared = []
-
- def namespace_lazy_generator():
- if not namespace_declared:
- writer.newline("namespace ")
- writer.append(domain_data.name())
- writer.append(" {\n")
- # What is a better way to change value from outer scope?
- namespace_declared.append(True)
- return writer
-
- for type_data in domain_data.types():
- type_data_callback(type_data, namespace_lazy_generator)
-
- if namespace_declared:
- writer.append("} // ")
- writer.append(domain_data.name())
- writer.append("\n\n")
-
- def create_type_builder_caller(generate_pass_id):
- def call_type_builder(type_data, writer_getter):
- code_generator = type_data.get_binding().get_code_generator()
- if code_generator and generate_pass_id == code_generator.get_generate_pass_id():
- writer = writer_getter()
-
- code_generator.generate_type_builder(writer, GenerateContext)
- return call_type_builder
-
- generate_all_domains_code(output, create_type_builder_caller(TypeBuilderPass.MAIN))
-
- Generator.type_builder_forwards.append("// Forward declarations.\n")
-
- def generate_forward_callback(type_data, writer_getter):
- if type_data in global_forward_listener.type_data_set:
- binding = type_data.get_binding()
- binding.get_code_generator().generate_forward_declaration(writer_getter())
- generate_all_domains_code(Generator.type_builder_forwards, generate_forward_callback)
-
- Generator.type_builder_forwards.append("// End of forward declarations.\n\n")
-
- Generator.type_builder_forwards.append("// Typedefs.\n")
-
- generate_all_domains_code(Generator.type_builder_forwards, create_type_builder_caller(TypeBuilderPass.TYPEDEF))
-
- Generator.type_builder_forwards.append("// End of typedefs.\n\n")
-
-
-def flatten_list(input):
- res = []
-
- def fill_recursive(l):
- for item in l:
- if isinstance(item, list):
- fill_recursive(item)
- else:
- res.append(item)
- fill_recursive(input)
- return res
-
-def output_file(file_name):
- return open(file_name, "w")
-
-
-Generator.go()
-
-backend_h_file = output_file(output_dirname + "/InspectorBackendDispatcher.h")
-backend_cpp_file = output_file(output_dirname + "/InspectorBackendDispatcher.cpp")
-
-frontend_h_file = output_file(output_dirname + "/InspectorFrontend.h")
-frontend_cpp_file = output_file(output_dirname + "/InspectorFrontend.cpp")
-
-typebuilder_h_file = output_file(output_dirname + "/InspectorTypeBuilder.h")
-typebuilder_cpp_file = output_file(output_dirname + "/InspectorTypeBuilder.cpp")
-
-
-backend_h_file.write(Templates.backend_h.substitute(None,
- virtualSetters="\n".join(Generator.backend_virtual_setters_list),
- agentInterfaces="".join(flatten_list(Generator.backend_agent_interface_list)),
- methodNamesEnumContent="\n".join(Generator.method_name_enum_list)))
-
-backend_cpp_file.write(Templates.backend_cpp.substitute(None,
- constructorInit="\n".join(Generator.backend_constructor_init_list),
- setters="\n".join(Generator.backend_setters_list),
- fieldDeclarations="\n".join(Generator.backend_field_list),
- methodNameDeclarations="\n".join(Generator.backend_method_name_declaration_list),
- methodNameDeclarationsIndex="\n".join(Generator.backend_method_name_declaration_index_list),
- methods="\n".join(Generator.backend_method_implementation_list),
- methodDeclarations="\n".join(Generator.backend_method_declaration_list),
- messageHandlers="\n".join(Generator.method_handler_list)))
-
-frontend_h_file.write(Templates.frontend_h.substitute(None,
- fieldDeclarations="".join(Generator.frontend_class_field_lines),
- domainClassList="".join(Generator.frontend_domain_class_lines)))
-
-frontend_cpp_file.write(Templates.frontend_cpp.substitute(None,
- constructorInit="".join(Generator.frontend_constructor_init_list),
- methods="\n".join(Generator.frontend_method_list)))
-
-typebuilder_h_file.write(Templates.typebuilder_h.substitute(None,
- typeBuilders="".join(flatten_list(Generator.type_builder_fragments)),
- forwards="".join(Generator.type_builder_forwards),
- validatorIfdefName=VALIDATOR_IFDEF_NAME))
-
-typebuilder_cpp_file.write(Templates.typebuilder_cpp.substitute(None,
- enumConstantValues=EnumConstants.get_enum_constant_code(),
- implCode="".join(flatten_list(Generator.type_builder_impl_list)),
- validatorCode="".join(flatten_list(Generator.validator_impl_list)),
- validatorIfdefName=VALIDATOR_IFDEF_NAME))
-
-backend_h_file.close()
-backend_cpp_file.close()
-
-frontend_h_file.close()
-frontend_cpp_file.close()
-
-typebuilder_h_file.close()
-typebuilder_cpp_file.close()
diff --git a/core/inspector/CodeGeneratorInspectorStrings.py b/core/inspector/CodeGeneratorInspectorStrings.py
deleted file mode 100644
index e20c806..0000000
--- a/core/inspector/CodeGeneratorInspectorStrings.py
+++ /dev/null
@@ -1,917 +0,0 @@
-# Copyright (c) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# THis file contains string resources for CodeGeneratorInspector.
-# Its syntax is a Python syntax subset, suitable for manual parsing.
-
-frontend_domain_class = (
-""" class CORE_EXPORT $domainClassName {
- public:
- static $domainClassName* from(InspectorFrontend* frontend) { return &(frontend->m_$domainFieldName) ;}
- $domainClassName(InspectorFrontendChannel* inspectorFrontendChannel) : m_inspectorFrontendChannel(inspectorFrontendChannel) { }
-${frontendDomainMethodDeclarations}
- void flush() { m_inspectorFrontendChannel->flush(); }
- private:
- InspectorFrontendChannel* m_inspectorFrontendChannel;
- };
-
-""")
-
-backend_method = (
-"""void InspectorBackendDispatcherImpl::${domainName}_$methodName(int callId, JSONObject*$requestMessageObject, JSONArray* protocolErrors)
-{
- if (!$agentField)
- protocolErrors->pushString("${domainName} handler is not available.");
-$methodCode
- if (protocolErrors->length()) {
- reportProtocolError(callId, InvalidParams, String::format(InvalidParamsFormatString, commandName($commandNameIndex)), protocolErrors);
- return;
- }
-$agentCallParamsDeclaration
- $agentField->$methodName($agentCallParams);
-$responseCook
- sendResponse(callId, $sendResponseCallParams);
-}
-""")
-
-frontend_method = ("""void InspectorFrontend::$domainName::$eventName($parameters)
-{
- RefPtr<JSONObject> jsonMessage = JSONObject::create();
- jsonMessage->setString("method", "$domainName.$eventName");
-$code if (m_inspectorFrontendChannel)
- m_inspectorFrontendChannel->sendProtocolNotification(jsonMessage.release());
-}
-""")
-
-callback_main_methods = (
-"""InspectorBackendDispatcher::$agentName::$callbackName::$callbackName(PassRefPtrWillBeRawPtr<InspectorBackendDispatcherImpl> backendImpl, int id) : CallbackBase(backendImpl, id) {}
-
-void InspectorBackendDispatcher::$agentName::$callbackName::sendSuccess($parameters)
-{
- RefPtr<JSONObject> jsonMessage = JSONObject::create();
-$code sendIfActive(jsonMessage, ErrorString(), PassRefPtr<JSONValue>());
-}
-""")
-
-callback_failure_method = (
-"""void InspectorBackendDispatcher::$agentName::$callbackName::sendFailure(const ErrorString& error, $parameter)
-{
- ASSERT(error.length());
- RefPtr<JSONValue> errorDataValue;
- if (error) {
- errorDataValue = $argument;
- }
- sendIfActive(nullptr, error, errorDataValue.release());
-}
-""")
-
-
-frontend_h = (
-"""#ifndef InspectorFrontend_h
-#define InspectorFrontend_h
-
-#include "InspectorTypeBuilder.h"
-#include "core/CoreExport.h"
-#include "core/inspector/InspectorFrontendChannel.h"
-#include "platform/JSONValues.h"
-#include "wtf/PassRefPtr.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-typedef String ErrorString;
-
-class CORE_EXPORT InspectorFrontend {
-public:
- InspectorFrontend(InspectorFrontendChannel*);
- InspectorFrontendChannel* channel() { return m_inspectorFrontendChannel; }
-
-$domainClassList
-private:
- InspectorFrontendChannel* m_inspectorFrontendChannel;
-${fieldDeclarations}};
-
-} // namespace blink
-#endif // !defined(InspectorFrontend_h)
-""")
-
-backend_h = (
-"""#ifndef InspectorBackendDispatcher_h
-#define InspectorBackendDispatcher_h
-
-#include "InspectorTypeBuilder.h"
-
-#include "core/CoreExport.h"
-#include "platform/heap/Handle.h"
-#include "wtf/PassRefPtr.h"
-#include "wtf/RefCounted.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-class JSONObject;
-class JSONArray;
-class InspectorFrontendChannel;
-
-typedef String ErrorString;
-
-class InspectorBackendDispatcherImpl;
-
-class CORE_EXPORT InspectorBackendDispatcher: public RefCountedWillBeGarbageCollectedFinalized<InspectorBackendDispatcher> {
-public:
- static PassRefPtrWillBeRawPtr<InspectorBackendDispatcher> create(InspectorFrontendChannel* inspectorFrontendChannel);
- virtual ~InspectorBackendDispatcher() { }
- DEFINE_INLINE_VIRTUAL_TRACE() { }
-
- class CORE_EXPORT CallbackBase: public RefCountedWillBeGarbageCollectedFinalized<CallbackBase> {
- public:
- CallbackBase(PassRefPtrWillBeRawPtr<InspectorBackendDispatcherImpl> backendImpl, int id);
- virtual ~CallbackBase();
- DECLARE_VIRTUAL_TRACE();
- void sendFailure(const ErrorString&);
- bool isActive();
-
- protected:
- void sendIfActive(PassRefPtr<JSONObject> partialMessage, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData);
-
- private:
- void disable() { m_alreadySent = true; }
-
- RefPtrWillBeMember<InspectorBackendDispatcherImpl> m_backendImpl;
- int m_id;
- bool m_alreadySent;
-
- friend class InspectorBackendDispatcherImpl;
- };
-
-$agentInterfaces
-$virtualSetters
-
- virtual void clearFrontend() = 0;
-
- enum CommonErrorCode {
- ParseError = 0,
- InvalidRequest,
- MethodNotFound,
- InvalidParams,
- InternalError,
- ServerError,
- LastEntry,
- };
-
- void reportProtocolError(int callId, CommonErrorCode, const String& errorMessage) const;
- virtual void reportProtocolError(int callId, CommonErrorCode, const String& errorMessage, PassRefPtr<JSONValue> data) const = 0;
- virtual void dispatch(const String& message) = 0;
- static bool getCommandName(const String& message, String* result);
-
- enum MethodNames {
-$methodNamesEnumContent
-
- kMethodNamesEnumSize
- };
-
- static const char* commandName(MethodNames);
-
-private:
- static const char commandNames[];
- static const unsigned short commandNamesIndex[];
-};
-
-} // namespace blink
-#endif // !defined(InspectorBackendDispatcher_h)
-
-
-""")
-
-backend_cpp = (
-"""
-
-#include "config.h"
-#include "InspectorBackendDispatcher.h"
-
-#include "core/inspector/InspectorFrontendChannel.h"
-#include "core/inspector/JSONParser.h"
-#include "platform/JSONValues.h"
-#include "wtf/text/CString.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-const char InspectorBackendDispatcher::commandNames[] = {
-$methodNameDeclarations
-};
-
-const unsigned short InspectorBackendDispatcher::commandNamesIndex[] = {
-$methodNameDeclarationsIndex
-};
-
-const char* InspectorBackendDispatcher::commandName(MethodNames index) {
- static_assert(static_cast<int>(kMethodNamesEnumSize) == WTF_ARRAY_LENGTH(commandNamesIndex), "MethodNames enum should have the same number of elements as commandNamesIndex");
- return commandNames + commandNamesIndex[index];
-}
-
-class InspectorBackendDispatcherImpl : public InspectorBackendDispatcher {
-public:
- InspectorBackendDispatcherImpl(InspectorFrontendChannel* inspectorFrontendChannel)
- : m_inspectorFrontendChannel(inspectorFrontendChannel)
-$constructorInit
- {
- // Initialize dispatch map.
- const CallHandler handlers[] = {
- $messageHandlers
- };
- for (size_t i = 0; i < kMethodNamesEnumSize; ++i)
- m_dispatchMap.add(commandName(static_cast<MethodNames>(i)), handlers[i]);
-
- // Initialize common errors.
- m_commonErrors.insert(ParseError, -32700);
- m_commonErrors.insert(InvalidRequest, -32600);
- m_commonErrors.insert(MethodNotFound, -32601);
- m_commonErrors.insert(InvalidParams, -32602);
- m_commonErrors.insert(InternalError, -32603);
- m_commonErrors.insert(ServerError, -32000);
- }
-
- virtual void clearFrontend() { m_inspectorFrontendChannel = 0; }
- virtual void dispatch(const String& message);
- virtual void reportProtocolError(int callId, CommonErrorCode, const String& errorMessage, PassRefPtr<JSONValue> data) const;
- using InspectorBackendDispatcher::reportProtocolError;
-
- void sendResponse(int callId, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData, PassRefPtr<JSONObject> result);
- bool isActive() { return m_inspectorFrontendChannel; }
-
-$setters
-private:
- using CallHandler = void (InspectorBackendDispatcherImpl::*)(int callId, JSONObject* messageObject, JSONArray* protocolErrors);
- using DispatchMap = HashMap<String, CallHandler>;
-
-$methodDeclarations
-
- InspectorFrontendChannel* m_inspectorFrontendChannel;
-$fieldDeclarations
-
- template<typename R, typename V, typename V0>
- static R getPropertyValueImpl(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors, V0 initial_value, bool (*as_method)(JSONValue*, V*), const char* type_name);
-
- static int getInt(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors);
- static double getDouble(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors);
- static String getString(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors);
- static bool getBoolean(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors);
- static PassRefPtr<JSONObject> getObject(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors);
- static PassRefPtr<JSONArray> getArray(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors);
-
- void sendResponse(int callId, ErrorString invocationError, PassRefPtr<JSONObject> result)
- {
- sendResponse(callId, invocationError, RefPtr<JSONValue>(), result);
- }
- void sendResponse(int callId, ErrorString invocationError)
- {
- sendResponse(callId, invocationError, RefPtr<JSONValue>(), JSONObject::create());
- }
- static const char InvalidParamsFormatString[];
-
- DispatchMap m_dispatchMap;
- Vector<int> m_commonErrors;
-};
-
-const char InspectorBackendDispatcherImpl::InvalidParamsFormatString[] = "Some arguments of method '%s' can't be processed";
-
-$methods
-
-PassRefPtrWillBeRawPtr<InspectorBackendDispatcher> InspectorBackendDispatcher::create(InspectorFrontendChannel* inspectorFrontendChannel)
-{
- return adoptRefWillBeNoop(new InspectorBackendDispatcherImpl(inspectorFrontendChannel));
-}
-
-
-void InspectorBackendDispatcherImpl::dispatch(const String& message)
-{
- RefPtrWillBeRawPtr<InspectorBackendDispatcher> protect(this);
- int callId = 0;
- RefPtr<JSONValue> parsedMessage = parseJSON(message);
- ASSERT(parsedMessage);
- RefPtr<JSONObject> messageObject = parsedMessage->asObject();
- ASSERT(messageObject);
-
- RefPtr<JSONValue> callIdValue = messageObject->get("id");
- bool success = callIdValue->asNumber(&callId);
- ASSERT_UNUSED(success, success);
-
- RefPtr<JSONValue> methodValue = messageObject->get("method");
- String method;
- success = methodValue && methodValue->asString(&method);
- ASSERT_UNUSED(success, success);
-
- HashMap<String, CallHandler>::iterator it = m_dispatchMap.find(method);
- if (it == m_dispatchMap.end()) {
- reportProtocolError(callId, MethodNotFound, "'" + method + "' wasn't found");
- return;
- }
-
- RefPtr<JSONArray> protocolErrors = JSONArray::create();
- ((*this).*it->value)(callId, messageObject.get(), protocolErrors.get());
-}
-
-void InspectorBackendDispatcherImpl::sendResponse(int callId, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData, PassRefPtr<JSONObject> result)
-{
- if (invocationError.length()) {
- reportProtocolError(callId, ServerError, invocationError, errorData);
- return;
- }
-
- RefPtr<JSONObject> responseMessage = JSONObject::create();
- responseMessage->setNumber("id", callId);
- responseMessage->setObject("result", result);
- if (m_inspectorFrontendChannel)
- m_inspectorFrontendChannel->sendProtocolResponse(callId, responseMessage.release());
-}
-
-void InspectorBackendDispatcher::reportProtocolError(int callId, CommonErrorCode code, const String& errorMessage) const
-{
- reportProtocolError(callId, code, errorMessage, PassRefPtr<JSONValue>());
-}
-
-void InspectorBackendDispatcherImpl::reportProtocolError(int callId, CommonErrorCode code, const String& errorMessage, PassRefPtr<JSONValue> data) const
-{
- ASSERT(code >=0);
- ASSERT((unsigned)code < m_commonErrors.size());
- ASSERT(m_commonErrors[code]);
- RefPtr<JSONObject> error = JSONObject::create();
- error->setNumber("code", m_commonErrors[code]);
- error->setString("message", errorMessage);
- ASSERT(error);
- if (data)
- error->setValue("data", data);
- RefPtr<JSONObject> message = JSONObject::create();
- message->setObject("error", error);
- message->setNumber("id", callId);
- if (m_inspectorFrontendChannel)
- m_inspectorFrontendChannel->sendProtocolResponse(callId, message.release());
-}
-
-template<typename R, typename V, typename V0>
-R InspectorBackendDispatcherImpl::getPropertyValueImpl(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors, V0 initial_value, bool (*as_method)(JSONValue*, V*), const char* type_name)
-{
- ASSERT(protocolErrors);
-
- if (valueFound)
- *valueFound = false;
-
- V value = initial_value;
-
- if (!object) {
- if (!valueFound) {
- // Required parameter in missing params container.
- protocolErrors->pushString(String::format("'params' object must contain required parameter '%s' with type '%s'.", name, type_name));
- }
- return value;
- }
-
- JSONObject::const_iterator end = object->end();
- JSONObject::const_iterator valueIterator = object->find(name);
-
- if (valueIterator == end) {
- if (!valueFound)
- protocolErrors->pushString(String::format("Parameter '%s' with type '%s' was not found.", name, type_name));
- return value;
- }
-
- if (!as_method(valueIterator->value.get(), &value))
- protocolErrors->pushString(String::format("Parameter '%s' has wrong type. It must be '%s'.", name, type_name));
- else
- if (valueFound)
- *valueFound = true;
- return value;
-}
-
-struct AsMethodBridges {
- static bool asInt(JSONValue* value, int* output) { return value->asNumber(output); }
- static bool asDouble(JSONValue* value, double* output) { return value->asNumber(output); }
- static bool asString(JSONValue* value, String* output) { return value->asString(output); }
- static bool asBoolean(JSONValue* value, bool* output) { return value->asBoolean(output); }
- static bool asObject(JSONValue* value, RefPtr<JSONObject>* output) { return value->asObject(output); }
- static bool asArray(JSONValue* value, RefPtr<JSONArray>* output) { return value->asArray(output); }
-};
-
-int InspectorBackendDispatcherImpl::getInt(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors)
-{
- return getPropertyValueImpl<int, int, int>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInt, "Number");
-}
-
-double InspectorBackendDispatcherImpl::getDouble(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors)
-{
- return getPropertyValueImpl<double, double, double>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asDouble, "Number");
-}
-
-String InspectorBackendDispatcherImpl::getString(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors)
-{
- return getPropertyValueImpl<String, String, String>(object, name, valueFound, protocolErrors, "", AsMethodBridges::asString, "String");
-}
-
-bool InspectorBackendDispatcherImpl::getBoolean(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors)
-{
- return getPropertyValueImpl<bool, bool, bool>(object, name, valueFound, protocolErrors, false, AsMethodBridges::asBoolean, "Boolean");
-}
-
-PassRefPtr<JSONObject> InspectorBackendDispatcherImpl::getObject(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors)
-{
- return getPropertyValueImpl<PassRefPtr<JSONObject>, RefPtr<JSONObject>, JSONObject*>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asObject, "Object");
-}
-
-PassRefPtr<JSONArray> InspectorBackendDispatcherImpl::getArray(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors)
-{
- return getPropertyValueImpl<PassRefPtr<JSONArray>, RefPtr<JSONArray>, JSONArray*>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asArray, "Array");
-}
-
-bool InspectorBackendDispatcher::getCommandName(const String& message, String* result)
-{
- RefPtr<JSONValue> value = parseJSON(message);
- if (!value)
- return false;
-
- RefPtr<JSONObject> object = value->asObject();
- if (!object)
- return false;
-
- if (!object->getString("method", result))
- return false;
-
- return true;
-}
-
-InspectorBackendDispatcher::CallbackBase::CallbackBase(PassRefPtrWillBeRawPtr<InspectorBackendDispatcherImpl> backendImpl, int id)
- : m_backendImpl(backendImpl), m_id(id), m_alreadySent(false) {}
-
-InspectorBackendDispatcher::CallbackBase::~CallbackBase() {}
-
-DEFINE_TRACE(InspectorBackendDispatcher::CallbackBase)
-{
- visitor->trace(m_backendImpl);
-}
-
-void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString& error)
-{
- ASSERT(error.length());
- sendIfActive(nullptr, error, PassRefPtr<JSONValue>());
-}
-
-bool InspectorBackendDispatcher::CallbackBase::isActive()
-{
- return !m_alreadySent && m_backendImpl->isActive();
-}
-
-void InspectorBackendDispatcher::CallbackBase::sendIfActive(PassRefPtr<JSONObject> partialMessage, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData)
-{
- if (m_alreadySent)
- return;
- m_backendImpl->sendResponse(m_id, invocationError, errorData, partialMessage);
- m_alreadySent = true;
-}
-
-} // namespace blink
-
-""")
-
-frontend_cpp = (
-"""
-
-#include "config.h"
-#include "InspectorFrontend.h"
-
-#include "core/inspector/InspectorFrontendChannel.h"
-#include "platform/JSONValues.h"
-#include "wtf/text/CString.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-InspectorFrontend::InspectorFrontend(InspectorFrontendChannel* inspectorFrontendChannel)
- : m_inspectorFrontendChannel(inspectorFrontendChannel)
- , $constructorInit
-{
-}
-
-$methods
-
-} // namespace blink
-
-""")
-
-typebuilder_h = (
-"""
-#ifndef InspectorTypeBuilder_h
-#define InspectorTypeBuilder_h
-
-#include "core/CoreExport.h"
-#include "platform/JSONValues.h"
-#include "wtf/Assertions.h"
-#include "wtf/PassRefPtr.h"
-
-namespace blink {
-
-namespace TypeBuilder {
-
-template<typename T>
-class OptOutput {
-public:
- OptOutput() : m_assigned(false) { }
-
- void operator=(T value)
- {
- m_value = value;
- m_assigned = true;
- }
-
- bool isAssigned() { return m_assigned; }
-
- T getValue()
- {
- ASSERT(isAssigned());
- return m_value;
- }
-
-private:
- T m_value;
- bool m_assigned;
-
- WTF_MAKE_NONCOPYABLE(OptOutput);
-};
-
-class RuntimeCastHelper {
-public:
-#if $validatorIfdefName
- template<JSONValue::Type TYPE>
- static void assertType(JSONValue* value)
- {
- ASSERT(value->type() == TYPE);
- }
- static void assertAny(JSONValue*);
- static void assertInt(JSONValue* value);
-#endif
-};
-
-
-// This class provides "Traits" type for the input type T. It is programmed using C++ template specialization
-// technique. By default it simply takes "ItemTraits" type from T, but it doesn't work with the base types.
-template<typename T>
-struct ArrayItemHelper {
- typedef typename T::ItemTraits Traits;
-};
-
-template<typename T>
-class Array : public JSONArrayBase {
-private:
- Array() { }
-
- JSONArray* openAccessors() {
- static_assert(sizeof(JSONArray) == sizeof(Array<T>), "JSONArray should be the same size as Array<T>");
- return static_cast<JSONArray*>(static_cast<JSONArrayBase*>(this));
- }
-
-public:
- void addItem(PassRefPtr<T> value)
- {
- ArrayItemHelper<T>::Traits::pushRefPtr(this->openAccessors(), value);
- }
-
- void addItem(T value)
- {
- ArrayItemHelper<T>::Traits::pushRaw(this->openAccessors(), value);
- }
-
- static PassRefPtr<Array<T> > create()
- {
- return adoptRef(new Array<T>());
- }
-
- static PassRefPtr<Array<T> > runtimeCast(PassRefPtr<JSONValue> value)
- {
- RefPtr<JSONArray> array;
- bool castRes = value->asArray(&array);
- ASSERT_UNUSED(castRes, castRes);
-#if $validatorIfdefName
- assertCorrectValue(array.get());
-#endif // $validatorIfdefName
- static_assert(sizeof(Array<T>) == sizeof(JSONArray), "Array<T> should be the same size as JSONArray");
- return static_cast<Array<T>*>(static_cast<JSONArrayBase*>(array.get()));
- }
-
- void concat(PassRefPtr<Array<T> > array)
- {
- return ArrayItemHelper<T>::Traits::concat(this->openAccessors(), array->openAccessors());
- }
-
-#if $validatorIfdefName
- static void assertCorrectValue(JSONValue* value)
- {
- RefPtr<JSONArray> array;
- bool castRes = value->asArray(&array);
- ASSERT_UNUSED(castRes, castRes);
- for (unsigned i = 0; i < array->length(); i++)
- ArrayItemHelper<T>::Traits::template assertCorrectValue<T>(array->get(i).get());
- }
-
-#endif // $validatorIfdefName
-};
-
-struct StructItemTraits {
- static void pushRefPtr(JSONArray* array, PassRefPtr<JSONValue> value)
- {
- array->pushValue(value);
- }
-
- static void concat(JSONArray* array, JSONArray* anotherArray)
- {
- for (JSONArray::iterator it = anotherArray->begin(); it != anotherArray->end(); ++it)
- array->pushValue(*it);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- T::assertCorrectValue(value);
- }
-#endif // $validatorIfdefName
-};
-
-template<>
-struct ArrayItemHelper<String> {
- struct Traits {
- static void pushRaw(JSONArray* array, const String& value)
- {
- array->pushString(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertType<JSONValue::TypeString>(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<>
-struct ArrayItemHelper<int> {
- struct Traits {
- static void pushRaw(JSONArray* array, int value)
- {
- array->pushInt(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertInt(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<>
-struct ArrayItemHelper<double> {
- struct Traits {
- static void pushRaw(JSONArray* array, double value)
- {
- array->pushNumber(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertType<JSONValue::TypeNumber>(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<>
-struct ArrayItemHelper<bool> {
- struct Traits {
- static void pushRaw(JSONArray* array, bool value)
- {
- array->pushBoolean(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertType<JSONValue::TypeBoolean>(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<>
-struct ArrayItemHelper<JSONValue> {
- struct Traits {
- static void pushRefPtr(JSONArray* array, PassRefPtr<JSONValue> value)
- {
- array->pushValue(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertAny(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<>
-struct ArrayItemHelper<JSONObject> {
- struct Traits {
- static void pushRefPtr(JSONArray* array, PassRefPtr<JSONValue> value)
- {
- array->pushValue(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertType<JSONValue::TypeObject>(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<>
-struct ArrayItemHelper<JSONArray> {
- struct Traits {
- static void pushRefPtr(JSONArray* array, PassRefPtr<JSONArray> value)
- {
- array->pushArray(value);
- }
-
-#if $validatorIfdefName
- template<typename T>
- static void assertCorrectValue(JSONValue* value) {
- RuntimeCastHelper::assertType<JSONValue::TypeArray>(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-template<typename T>
-struct ArrayItemHelper<TypeBuilder::Array<T> > {
- struct Traits {
- static void pushRefPtr(JSONArray* array, PassRefPtr<TypeBuilder::Array<T> > value)
- {
- array->pushValue(value);
- }
-
-#if $validatorIfdefName
- template<typename S>
- static void assertCorrectValue(JSONValue* value) {
- S::assertCorrectValue(value);
- }
-#endif // $validatorIfdefName
- };
-};
-
-${forwards}
-
-CORE_EXPORT String getEnumConstantValue(int code);
-
-${typeBuilders}
-} // namespace TypeBuilder
-
-
-} // namespace blink
-
-#endif // !defined(InspectorTypeBuilder_h)
-
-""")
-
-typebuilder_cpp = (
-"""
-
-#include "config.h"
-
-#include "InspectorTypeBuilder.h"
-#include "wtf/text/CString.h"
-
-namespace blink {
-
-namespace TypeBuilder {
-
-const char* const enum_constant_values[] = {
-$enumConstantValues};
-
-String getEnumConstantValue(int code) {
- return enum_constant_values[code];
-}
-
-} // namespace TypeBuilder
-
-$implCode
-
-#if $validatorIfdefName
-
-void TypeBuilder::RuntimeCastHelper::assertAny(JSONValue*)
-{
- // No-op.
-}
-
-
-void TypeBuilder::RuntimeCastHelper::assertInt(JSONValue* value)
-{
- double v;
- bool castRes = value->asNumber(&v);
- ASSERT_UNUSED(castRes, castRes);
- ASSERT(static_cast<double>(static_cast<int>(v)) == v);
-}
-
-$validatorCode
-
-#endif // $validatorIfdefName
-
-} // namespace blink
-
-""")
-
-param_container_access_code = """
- RefPtr<JSONObject> paramsContainer = requestMessageObject->getObject("params");
- JSONObject* paramsContainerPtr = paramsContainer.get();
-"""
-
-class_binding_builder_part_1 = (
-""" AllFieldsSet = %s
- };
-
- template<int STATE>
- class Builder {
- private:
- RefPtr<JSONObject> m_result;
-
- template<int STEP> Builder<STATE | STEP>& castState()
- {
- return *reinterpret_cast<Builder<STATE | STEP>*>(this);
- }
-
- Builder(PassRefPtr</*%s*/JSONObject> ptr)
- {
- static_assert(STATE == NoFieldsSet, "builder should not be created in non-init state");
- m_result = ptr;
- }
- friend class %s;
- public:
-""")
-
-class_binding_builder_part_2 = ("""
- Builder<STATE | %s>& set%s(%s value)
- {
- static_assert(!(STATE & %s), "property %s should not be set yet");
- m_result->set%s("%s", %s);
- return castState<%s>();
- }
-""")
-
-class_binding_builder_part_3 = ("""
- operator RefPtr<%s>& ()
- {
- static_assert(STATE == AllFieldsSet, "state should be AllFieldsSet");
- static_assert(sizeof(%s) == sizeof(JSONObject), "%s should be the same size as JSONObject");
- return *reinterpret_cast<RefPtr<%s>*>(&m_result);
- }
-
- PassRefPtr<%s> release()
- {
- return RefPtr<%s>(*this).release();
- }
- };
-
-""")
-
-class_binding_builder_part_4 = (
-""" static Builder<NoFieldsSet> create()
- {
- return Builder<NoFieldsSet>(JSONObject::create());
- }
-""")
diff --git a/core/inspector/CodeGeneratorInstrumentation.py b/core/inspector/CodeGeneratorInstrumentation.py
index 595812e..efcdb6d 100755
--- a/core/inspector/CodeGeneratorInstrumentation.py
+++ b/core/inspector/CodeGeneratorInstrumentation.py
@@ -80,8 +80,6 @@
template_cpp = string.Template("""// Code generated from InspectorInstrumentation.idl
-#include "config.h"
-
${includes}
namespace blink {
@@ -111,7 +109,7 @@
#include "core/CoreExport.h"
#include "platform/heap/Handle.h"
-#include "wtf/FastAllocBase.h"
+#include "wtf/Allocator.h"
#include "wtf/Noncopyable.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
@@ -122,7 +120,7 @@
class CORE_EXPORT InstrumentingAgents : public RefCountedWillBeGarbageCollectedFinalized<InstrumentingAgents> {
WTF_MAKE_NONCOPYABLE(InstrumentingAgents);
- WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(InstrumentingAgents);
+ USING_FAST_MALLOC_WILL_BE_REMOVED(InstrumentingAgents);
public:
static PassRefPtrWillBeRawPtr<InstrumentingAgents> create()
{
diff --git a/core/inspector/DevToolsHost.idl b/core/inspector/DevToolsHost.idl
index d20abb5..096fd64 100644
--- a/core/inspector/DevToolsHost.idl
+++ b/core/inspector/DevToolsHost.idl
@@ -41,10 +41,7 @@
void copyText(DOMString text);
[Custom] DOMString platform();
- // FIXME: showContextMenu is here only for old frontends. Remove in M43.
- [Custom] void showContextMenu(MouseEvent event, any items);
[Custom] void showContextMenuAtPoint(float x, float y, any items, optional Document document);
- void sendMessageToBackend(DOMString message);
void sendMessageToEmbedder(DOMString message);
DOMString getSelectionBackgroundColor();
diff --git a/core/inspector/InspectorInstrumentation.idl b/core/inspector/InspectorInstrumentation.idl
index b070934..260db42 100644
--- a/core/inspector/InspectorInstrumentation.idl
+++ b/core/inspector/InspectorInstrumentation.idl
@@ -138,10 +138,10 @@
void didRemoveTimer([Keep] ExecutionContext*, int timerId);
[Debugger, Inline=FastReturn]
- InspectorInstrumentationCookie willCallFunction([Keep] ExecutionContext*, const DevToolsFunctionInfo&);
+ InspectorInstrumentationCookie willExecuteScript(ExecutionContext*, int scriptId);
[Debugger, Inline=FastReturn]
- void didCallFunction(const InspectorInstrumentationCookie&);
+ void didExecuteScript(const InspectorInstrumentationCookie&);
[AsyncCallTracker, Inline=FastReturn]
void didEnqueueEvent([Keep] EventTarget*, Event*);
@@ -152,7 +152,7 @@
[AsyncCallTracker, DOMDebugger, Inline=FastReturn]
InspectorInstrumentationCookie willHandleEvent([Keep] EventTarget*, Event*, EventListener* listener, bool useCapture);
- [AsyncCallTracker, Debugger, Inline=FastReturn]
+ [AsyncCallTracker, DOMDebugger, Inline=FastReturn]
void didHandleEvent(const InspectorInstrumentationCookie&);
[AsyncCallTracker, Inline=FastReturn]
@@ -179,11 +179,8 @@
[AsyncCallTracker, Inline=FastReturn]
void didPerformExecutionContextTask(ExecutionContext*);
- [Debugger, DOMDebugger, Inline=FastReturn]
- InspectorInstrumentationCookie willEvaluateScript([Keep] LocalFrame*, const String& url, int lineNumber);
-
- [Debugger, Inline=FastReturn]
- void didEvaluateScript(const InspectorInstrumentationCookie&);
+ [DOMDebugger, Inline=FastReturn]
+ void willEvaluateScript(ExecutionContext*);
[PageRuntime]
void didCreateScriptContext([Keep] LocalFrame*, ScriptState*, SecurityOrigin*, int worldId);
@@ -194,14 +191,11 @@
[AsyncCallTracker, DOMDebugger, Inline=FastReturn]
InspectorInstrumentationCookie willFireTimer([Keep] ExecutionContext*, int timerId);
- [AsyncCallTracker, Debugger, Inline=FastReturn]
+ [AsyncCallTracker, DOMDebugger, Inline=FastReturn]
void didFireTimer(const InspectorInstrumentationCookie&);
[Page, Inline=FastReturn]
- void didLayout(LocalFrame*);
-
- [Page, Inline=FastReturn]
- void didScroll(LocalFrame*);
+ void didUpdateLayout(LocalFrame*);
[Page, Inline=FastReturn]
void didResizeMainFrame(LocalFrame*);
@@ -210,12 +204,12 @@
void didDispatchXHRLoadendEvent(ExecutionContext*, XMLHttpRequest*);
[LayerTree, Inline=FastReturn]
- void didPaint([Keep] LayoutObject*, const GraphicsLayer*, GraphicsContext*, const LayoutRect&);
+ void didPaint([Keep] LayoutObject*, const GraphicsLayer*, GraphicsContext&, const LayoutRect&);
[Resource, Inline=FastReturn]
InspectorInstrumentationCookie willRecalculateStyle([Keep] Document*);
- [Resource, Inline=FastReturn]
+ [Resource, Page, Inline=FastReturn]
void didRecalculateStyle(const InspectorInstrumentationCookie&, int elementCount);
[Resource, Inline=FastReturn]
@@ -225,7 +219,10 @@
void applyUserAgentOverride(LocalFrame*, String* userAgent);
[Resource]
- void willSendRequest(LocalFrame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse, const FetchInitiatorInfo&);
+ void didBlockRequest([Keep] LocalFrame*, const ResourceRequest&, DocumentLoader*, const FetchInitiatorInfo&, ResourceRequestBlockedReason);
+
+ [Resource]
+ void willSendRequest([Keep] LocalFrame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse, const FetchInitiatorInfo&);
[Resource]
void markResourceAsCached(LocalFrame*, unsigned long identifier);
@@ -258,13 +255,13 @@
void willSendEventSourceRequest(ExecutionContext*, ThreadableLoaderClient* eventSource);
[Resource]
- void willDispachEventSourceEvent(ExecutionContext*, ThreadableLoaderClient* eventSource, const AtomicString& eventName, const AtomicString& eventId, const Vector<UChar>& data);
+ void willDispatchEventSourceEvent(ExecutionContext*, ThreadableLoaderClient* eventSource, const AtomicString& eventName, const AtomicString& eventId, const String& data);
[Resource]
void didFinishEventSourceRequest(ExecutionContext*, ThreadableLoaderClient* eventSource);
[AsyncCallTracker, Resource]
- void willLoadXHR(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const KURL& url, bool async, PassRefPtr<FormData>, const HTTPHeaderMap& headers, bool includeCredentials);
+ void willLoadXHR(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const KURL& url, bool async, PassRefPtr<EncodedFormData>, const HTTPHeaderMap& headers, bool includeCredentials);
[Resource]
void didFailXHRLoading([Keep] ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url);
@@ -273,6 +270,15 @@
void didFinishXHRLoading([Keep] ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const String& url);
[Resource]
+ void willStartFetch(ExecutionContext*, ThreadableLoaderClient*);
+
+ [Resource]
+ void didFailFetch(ExecutionContext*, ThreadableLoaderClient*);
+
+ [Resource]
+ void didFinishFetch([Keep] ExecutionContext*, ThreadableLoaderClient*, const AtomicString& method, const String& url);
+
+ [Resource]
void scriptImported(ExecutionContext*, unsigned long identifier, const String& sourceString);
[Debugger]
@@ -321,7 +327,7 @@
void didRunJavaScriptDialog(const InspectorInstrumentationCookie&, bool result);
[Inline=Forward]
- void willDestroyResource(Resource* cachedResource);
+ void removedResourceFromMemoryCache(Resource* cachedResource);
[AsyncCallTracker, DOMDebugger]
void didRequestAnimationFrame([Keep] ExecutionContext*, int callbackId);
@@ -408,10 +414,13 @@
void traceAsyncCallbackCompleted(const InspectorInstrumentationCookie&);
[Animation, Inline=FastReturn]
- void didCreateAnimation(Document*, Animation* player);
+ void didCreateAnimation(Document*, unsigned);
[Animation, Inline=FastReturn]
- void didCancelAnimation(Document*, Animation* player);
+ void animationPlayStateChanged(Document*, Animation*, Animation::AnimationPlayState oldPlayState, Animation::AnimationPlayState newPlayState);
+
+ [Page, Inline=FastReturn]
+ void windowCreated(LocalFrame* opener, LocalFrame* created);
}
interface InspectorConsoleInstrumentation {
diff --git a/core/inspector/InspectorOverlayHost.idl b/core/inspector/InspectorOverlayHost.idl
index 1d31eba..c35fdeb 100644
--- a/core/inspector/InspectorOverlayHost.idl
+++ b/core/inspector/InspectorOverlayHost.idl
@@ -37,4 +37,7 @@
void startPropertyChange(DOMString propertyName);
void changeProperty(float cssDelta);
void endPropertyChange();
+ void clearSelection(boolean commitChanges);
+ void nextSelector();
+ void previousSelector();
};
diff --git a/core/origin_trials/testing/InternalsFrobulate.idl b/core/origin_trials/testing/InternalsFrobulate.idl
new file mode 100644
index 0000000..7c8c5cb
--- /dev/null
+++ b/core/origin_trials/testing/InternalsFrobulate.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+partial interface Internals {
+ [CallWith=ScriptState, RaisesException] readonly attribute boolean frobulate;
+ readonly attribute boolean frobulateNoEnabledCheck;
+};
+
diff --git a/core/page/EventSource.idl b/core/page/EventSource.idl
index cabfc5c..05abf39 100644
--- a/core/page/EventSource.idl
+++ b/core/page/EventSource.idl
@@ -32,7 +32,7 @@
// https://html.spec.whatwg.org/multipage/comms.html#the-eventsource-interface
[
- ActiveDOMObject,
+ DependentLifetime,
Constructor(DOMString url, optional EventSourceInit eventSourceInitDict),
ConstructorCallWith=ExecutionContext,
Exposed=(Window,Worker),
diff --git a/core/page/PagePopupController.idl b/core/page/PagePopupController.idl
index 28051d0..f32cc46 100644
--- a/core/page/PagePopupController.idl
+++ b/core/page/PagePopupController.idl
@@ -41,7 +41,6 @@
DOMString formatMonth(long year, long zeroBaseMonth);
DOMString formatShortMonth(long year, long zeroBaseMonth);
DOMString formatWeek(long year, long weekNumber, DOMString localizedStartDate);
- void histogramEnumeration(DOMString name, long sample, long boundaryValue);
// window.resizeTo/moveTo are not suitable because LocalDOMWindow adjusts
// rectangle to fit in the current screen. Popups sometimes need to be
// positioned on other screens.
diff --git a/core/page/scrolling/ScrollState.idl b/core/page/scrolling/ScrollState.idl
index 2c7dcba..7e5ff50 100644
--- a/core/page/scrolling/ScrollState.idl
+++ b/core/page/scrolling/ScrollState.idl
@@ -2,31 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// http://dev.w3.org/houdini/css-scroll-api/
+// https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY
[
- Constructor(optional double deltaX = 0,
- optional double deltaY = 0,
- optional double deltaGranularity = 0,
- optional double velocityX = 0,
- optional double velocityY = 0,
- optional boolean inInertialPhase = false,
- optional boolean isBeginning = false,
- optional boolean isEnding = false),
- WillBeGarbageCollected,
- RuntimeEnabled=ScrollCustomization
-] interface ScrollState {
+ Constructor(optional ScrollStateInit scrollStateInit),
+ WillBeGarbageCollected,
+ RuntimeEnabled = ScrollCustomization,
+] interface ScrollState
+{
readonly attribute double deltaX;
readonly attribute double deltaY;
- readonly attribute double deltaGranularity;
+ readonly attribute long startPositionX;
+ readonly attribute long startPositionY;
readonly attribute double velocityX;
readonly attribute double velocityY;
+ readonly attribute boolean isBeginning;
readonly attribute boolean inInertialPhase;
readonly attribute boolean isEnding;
- readonly attribute boolean isBeginning;
- readonly attribute boolean fromUserInput;
readonly attribute boolean shouldPropagate;
+ readonly attribute boolean fromUserInput;
+ readonly attribute boolean isDirectManipulation;
+ readonly attribute double deltaGranularity;
[RaisesException] void consumeDelta(double x, double y);
- // FIXME: implement distributeToScrollChainDescendent.
+ void distributeToScrollChainDescendant();
};
diff --git a/core/page/scrolling/ScrollStateCallback.idl b/core/page/scrolling/ScrollStateCallback.idl
new file mode 100644
index 0000000..423710a
--- /dev/null
+++ b/core/page/scrolling/ScrollStateCallback.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY
+
+[
+ RuntimeEnabled=ScrollCustomization
+] callback interface ScrollStateCallback {
+ void handleEvent(ScrollState scrollState);
+};
diff --git a/core/page/scrolling/ScrollStateInit.idl b/core/page/scrolling/ScrollStateInit.idl
new file mode 100644
index 0000000..d7aa140
--- /dev/null
+++ b/core/page/scrolling/ScrollStateInit.idl
@@ -0,0 +1,21 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY
+
+dictionary ScrollStateInit {
+ double deltaX = 0;
+ double deltaY = 0;
+ long startPositionX = 0;
+ long startPositionY = 0;
+ double velocityX = 0;
+ double velocityY = 0;
+ boolean isBeginning = false;
+ boolean isInInertialPhase = false;
+ boolean isEnding = false;
+ boolean shouldPropagate = true;
+ boolean fromUserInput = false;
+ boolean isDirectManipulation = false;
+ double deltaGranularity = 0;
+};
diff --git a/core/streams/ReadableStream.idl b/core/streams/ReadableStream.idl
deleted file mode 100644
index 33fbddc..0000000
--- a/core/streams/ReadableStream.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- GarbageCollected,
- Exposed=(Window,Worker),
-] interface ReadableStream {
- [CallWith=ExecutionContext, RaisesException] ReadableStreamReader getReader();
- [CallWith=ScriptState] Promise<void> cancel(optional any reason);
-};
diff --git a/core/streams/ReadableStreamReader.idl b/core/streams/ReadableStreamReader.idl
index 6603a3f..b3419cd 100644
--- a/core/streams/ReadableStreamReader.idl
+++ b/core/streams/ReadableStreamReader.idl
@@ -4,7 +4,7 @@
[
GarbageCollected,
- ActiveDOMObject,
+ DependentLifetime,
Exposed=(Window,Worker),
NoInterfaceObject,
] interface ReadableStreamReader {
diff --git a/core/streams/Stream.idl b/core/streams/Stream.idl
index 875d17f..1d3128f 100644
--- a/core/streams/Stream.idl
+++ b/core/streams/Stream.idl
@@ -38,7 +38,7 @@
[
RuntimeEnabled=ExperimentalStream,
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected
] interface Stream {
readonly attribute DOMString type;
diff --git a/core/streams/UnderlyingSourceBase.idl b/core/streams/UnderlyingSourceBase.idl
new file mode 100644
index 0000000..0c0486f
--- /dev/null
+++ b/core/streams/UnderlyingSourceBase.idl
@@ -0,0 +1,15 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This is not a spec interface. Instead, it is used to generate bindings
+// so that Blink code which wishes to create a stream can derive from
+// UnderlyingSourceBase, and a JavaScript object can then be generated
+// automatically for use in initializing a ReadableStream.
+
+[NoInterfaceObject, GarbageCollected, DependentLifetime]
+interface UnderlyingSourceBase {
+ [CallWith=ScriptState, ImplementedAs=startWrapper] Promise<void> start(any stream);
+ [CallWith=ScriptState] Promise<void> pull();
+ [CallWith=ScriptState, ImplementedAs=cancelWrapper] Promise<void> cancel([Default=Undefined] optional any reason);
+};
diff --git a/core/svg/SVGAElement.idl b/core/svg/SVGAElement.idl
index 2b678ad..15d5148 100644
--- a/core/svg/SVGAElement.idl
+++ b/core/svg/SVGAElement.idl
@@ -26,7 +26,7 @@
// http://www.w3.org/TR/SVG2/linking.html#InterfaceSVGAElement
interface SVGAElement : SVGGraphicsElement {
- [ImplementedAs=svgTarget, RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString target;
+ [ImplementedAs=svgTarget, Measure] readonly attribute SVGAnimatedString target;
};
SVGAElement implements SVGURIReference;
diff --git a/core/svg/SVGAngle.idl b/core/svg/SVGAngle.idl
index 4c02f71..64aa811 100644
--- a/core/svg/SVGAngle.idl
+++ b/core/svg/SVGAngle.idl
@@ -22,11 +22,9 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGAngle
-// TODO(philipj): SVGAngle should have constructors. crbug.com/366541
[
ImplementedAs=SVGAngleTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGAngle {
// Angle Unit Types
@@ -39,8 +37,7 @@
readonly attribute unsigned short unitType;
[RaisesException=Setter] attribute float value;
[RaisesException=Setter] attribute float valueInSpecifiedUnits;
- // TODO(philipj): valueAsString should not have [TreatNullAs=NullString].
- [TreatNullAs=NullString, RaisesException=Setter] attribute DOMString valueAsString;
+ [RaisesException=Setter] attribute DOMString valueAsString;
[RaisesException] void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits);
[RaisesException] void convertToSpecifiedUnits(unsigned short unitType);
diff --git a/core/svg/SVGAnimatedAngle.idl b/core/svg/SVGAnimatedAngle.idl
index 2f17812..4bd5848 100644
--- a/core/svg/SVGAnimatedAngle.idl
+++ b/core/svg/SVGAnimatedAngle.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedAngle {
readonly attribute SVGAngle baseVal;
diff --git a/core/svg/SVGAnimatedBoolean.idl b/core/svg/SVGAnimatedBoolean.idl
index 3134c8d..531af6a 100644
--- a/core/svg/SVGAnimatedBoolean.idl
+++ b/core/svg/SVGAnimatedBoolean.idl
@@ -27,9 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedBoolean {
[RaisesException=Setter] attribute boolean baseVal;
diff --git a/core/svg/SVGAnimatedEnumeration.idl b/core/svg/SVGAnimatedEnumeration.idl
index e610e6d..830f2c9 100644
--- a/core/svg/SVGAnimatedEnumeration.idl
+++ b/core/svg/SVGAnimatedEnumeration.idl
@@ -28,9 +28,6 @@
[
ImplementedAs=SVGAnimatedEnumerationBase,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedEnumeration {
[RaisesException=Setter] attribute unsigned short baseVal;
diff --git a/core/svg/SVGAnimatedInteger.idl b/core/svg/SVGAnimatedInteger.idl
index 1f8dfc8..78520f6 100644
--- a/core/svg/SVGAnimatedInteger.idl
+++ b/core/svg/SVGAnimatedInteger.idl
@@ -27,9 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedInteger {
[RaisesException=Setter] attribute long baseVal;
diff --git a/core/svg/SVGAnimatedLength.idl b/core/svg/SVGAnimatedLength.idl
index b46026e..3fbc245 100644
--- a/core/svg/SVGAnimatedLength.idl
+++ b/core/svg/SVGAnimatedLength.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedLength {
readonly attribute SVGLength baseVal;
diff --git a/core/svg/SVGAnimatedLengthList.idl b/core/svg/SVGAnimatedLengthList.idl
index d96c3ec..2f79e7f 100644
--- a/core/svg/SVGAnimatedLengthList.idl
+++ b/core/svg/SVGAnimatedLengthList.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedLengthList {
readonly attribute SVGLengthList baseVal;
diff --git a/core/svg/SVGAnimatedNumber.idl b/core/svg/SVGAnimatedNumber.idl
index 87fd762..9f228b4 100644
--- a/core/svg/SVGAnimatedNumber.idl
+++ b/core/svg/SVGAnimatedNumber.idl
@@ -27,10 +27,7 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGAnimatedNumber
[
- MeasureAs=SVG1DOM,
- RuntimeEnabled=SVG1DOM,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGAnimatedNumber {
[RaisesException=Setter] attribute float baseVal;
diff --git a/core/svg/SVGAnimatedNumberList.idl b/core/svg/SVGAnimatedNumberList.idl
index 5e73f09..c38f5cd 100644
--- a/core/svg/SVGAnimatedNumberList.idl
+++ b/core/svg/SVGAnimatedNumberList.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedNumberList {
readonly attribute SVGNumberList baseVal;
diff --git a/core/svg/SVGAnimatedPreserveAspectRatio.idl b/core/svg/SVGAnimatedPreserveAspectRatio.idl
index 3f1528c..e4b4a93 100644
--- a/core/svg/SVGAnimatedPreserveAspectRatio.idl
+++ b/core/svg/SVGAnimatedPreserveAspectRatio.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedPreserveAspectRatio {
readonly attribute SVGPreserveAspectRatio baseVal;
diff --git a/core/svg/SVGAnimatedRect.idl b/core/svg/SVGAnimatedRect.idl
index aa1a597..d020f95 100644
--- a/core/svg/SVGAnimatedRect.idl
+++ b/core/svg/SVGAnimatedRect.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedRect {
// TODO(philipj): SVGRect should be DOMRectReadOnly.
diff --git a/core/svg/SVGAnimatedString.idl b/core/svg/SVGAnimatedString.idl
index 5f4a067..e881925 100644
--- a/core/svg/SVGAnimatedString.idl
+++ b/core/svg/SVGAnimatedString.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedString {
[RaisesException=Setter] attribute DOMString baseVal;
diff --git a/core/svg/SVGAnimatedTransformList.idl b/core/svg/SVGAnimatedTransformList.idl
index 54937fa..fca3d24 100644
--- a/core/svg/SVGAnimatedTransformList.idl
+++ b/core/svg/SVGAnimatedTransformList.idl
@@ -27,8 +27,6 @@
[
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGAnimatedTransformList {
[MeasureAs=SVGAnimatedTransformListBaseVal] readonly attribute SVGTransformList baseVal;
diff --git a/core/svg/SVGAnimationElement.idl b/core/svg/SVGAnimationElement.idl
index c77cbfb..d20ae51 100644
--- a/core/svg/SVGAnimationElement.idl
+++ b/core/svg/SVGAnimationElement.idl
@@ -26,6 +26,7 @@
// http://www.w3.org/TR/SVG2/animate.html#InterfaceSVGAnimationElement
+[RuntimeEnabled=smil]
interface SVGAnimationElement : SVGElement {
readonly attribute SVGElement targetElement;
diff --git a/core/svg/SVGCircleElement.idl b/core/svg/SVGCircleElement.idl
index 0479e26..00a32e7 100644
--- a/core/svg/SVGCircleElement.idl
+++ b/core/svg/SVGCircleElement.idl
@@ -27,7 +27,7 @@
// http://www.w3.org/TR/SVG2/shapes.html#InterfaceSVGCircleElement
interface SVGCircleElement : SVGGeometryElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength cx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength cy;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength r;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength cx;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength cy;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength r;
};
diff --git a/core/svg/SVGClipPathElement.idl b/core/svg/SVGClipPathElement.idl
index 7afeec1..543feac 100644
--- a/core/svg/SVGClipPathElement.idl
+++ b/core/svg/SVGClipPathElement.idl
@@ -30,5 +30,5 @@
// implement SVGUnitTypes. The transform attribute (which is on
// SVGGraphicsElement) should also be on SVGClipPathElement.
interface SVGClipPathElement : SVGGraphicsElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration clipPathUnits;
+ [Measure] readonly attribute SVGAnimatedEnumeration clipPathUnits;
};
diff --git a/core/svg/SVGComponentTransferFunctionElement.idl b/core/svg/SVGComponentTransferFunctionElement.idl
index d4a34b8..8fe18b0 100644
--- a/core/svg/SVGComponentTransferFunctionElement.idl
+++ b/core/svg/SVGComponentTransferFunctionElement.idl
@@ -29,18 +29,18 @@
DoNotCheckConstants
] interface SVGComponentTransferFunctionElement : SVGElement {
// Component Transfer Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration type;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumberList tableValues;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber slope;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber intercept;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber amplitude;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber exponent;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber offset;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration type;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumberList tableValues;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber slope;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber intercept;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber amplitude;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber exponent;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber offset;
};
diff --git a/core/svg/SVGCursorElement.idl b/core/svg/SVGCursorElement.idl
index 56a83ec..d61be40 100644
--- a/core/svg/SVGCursorElement.idl
+++ b/core/svg/SVGCursorElement.idl
@@ -26,8 +26,8 @@
// http://www.w3.org/TR/SVG2/interact.html#InterfaceSVGCursorElement
interface SVGCursorElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMCursorElement] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMCursorElement] readonly attribute SVGAnimatedLength y;
};
SVGCursorElement implements SVGURIReference;
diff --git a/core/svg/SVGDiscardElement.idl b/core/svg/SVGDiscardElement.idl
index 2b51023..72b8939 100644
--- a/core/svg/SVGDiscardElement.idl
+++ b/core/svg/SVGDiscardElement.idl
@@ -31,5 +31,6 @@
// TODO(philipj): The SVGDiscardElement interface does not exist in the spec
// yet: http://www.w3.org/Graphics/SVG/WG/track/actions/3727
+[RuntimeEnabled=smil]
interface SVGDiscardElement : SVGElement {
};
diff --git a/core/svg/SVGElement.idl b/core/svg/SVGElement.idl
index 1e4ac18..d8faebb 100644
--- a/core/svg/SVGElement.idl
+++ b/core/svg/SVGElement.idl
@@ -23,8 +23,10 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGElement
interface SVGElement : Element {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGClassName] readonly attribute SVGAnimatedString className;
- readonly attribute CSSStyleDeclaration style;
+ [MeasureAs=SVGClassName] readonly attribute SVGAnimatedString className;
+ // CSS Object Model (CSSOM)
+ // http://dev.w3.org/csswg/cssom/#the-elementcssinlinestyle-interface
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
readonly attribute SVGSVGElement? ownerSVGElement;
readonly attribute SVGElement? viewportElement;
diff --git a/core/svg/SVGEllipseElement.idl b/core/svg/SVGEllipseElement.idl
index 3b431db..08750c6 100644
--- a/core/svg/SVGEllipseElement.idl
+++ b/core/svg/SVGEllipseElement.idl
@@ -26,8 +26,8 @@
// http://www.w3.org/TR/SVG2/shapes.html#InterfaceSVGEllipseElement
interface SVGEllipseElement : SVGGeometryElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength cx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength cy;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength rx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength ry;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength cx;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength cy;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength rx;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength ry;
};
diff --git a/core/svg/SVGFEBlendElement.idl b/core/svg/SVGFEBlendElement.idl
index 9de8f38..4b9ffe4 100644
--- a/core/svg/SVGFEBlendElement.idl
+++ b/core/svg/SVGFEBlendElement.idl
@@ -30,16 +30,16 @@
] interface SVGFEBlendElement : SVGElement {
// Blend Mode Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FEBLEND_MODE_NORMAL = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FEBLEND_MODE_SCREEN = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FEBLEND_MODE_DARKEN = 4;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_NORMAL = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_SCREEN = 3;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_DARKEN = 4;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration mode;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration mode;
};
SVGFEBlendElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEColorMatrixElement.idl b/core/svg/SVGFEColorMatrixElement.idl
index bb13640..d5fd90c 100644
--- a/core/svg/SVGFEColorMatrixElement.idl
+++ b/core/svg/SVGFEColorMatrixElement.idl
@@ -29,15 +29,15 @@
DoNotCheckConstants,
] interface SVGFEColorMatrixElement : SVGElement {
// Color Matrix Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration type;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumberList values;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration type;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumberList values;
};
SVGFEColorMatrixElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEComponentTransferElement.idl b/core/svg/SVGFEComponentTransferElement.idl
index 482571e..8eda50f 100644
--- a/core/svg/SVGFEComponentTransferElement.idl
+++ b/core/svg/SVGFEComponentTransferElement.idl
@@ -26,7 +26,7 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEComponentTransferElement
interface SVGFEComponentTransferElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
};
SVGFEComponentTransferElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFECompositeElement.idl b/core/svg/SVGFECompositeElement.idl
index 66ba771..7f1fb25 100644
--- a/core/svg/SVGFECompositeElement.idl
+++ b/core/svg/SVGFECompositeElement.idl
@@ -29,21 +29,21 @@
DoNotCheckConstants,
] interface SVGFECompositeElement : SVGElement {
// Composite Operators
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM,ImplementedAs=svgOperator] readonly attribute SVGAnimatedEnumeration operator;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber k1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber k2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber k3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber k4;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [ImplementedAs=svgOperator, MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration operator;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k2;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k3;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber k4;
};
SVGFECompositeElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEConvolveMatrixElement.idl b/core/svg/SVGFEConvolveMatrixElement.idl
index a1db16d..0c9edfd 100644
--- a/core/svg/SVGFEConvolveMatrixElement.idl
+++ b/core/svg/SVGFEConvolveMatrixElement.idl
@@ -29,27 +29,27 @@
DoNotCheckConstants,
] interface SVGFEConvolveMatrixElement : SVGElement {
// Edge Mode Values
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_EDGEMODE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_EDGEMODE_WRAP = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_EDGEMODE_NONE = 3;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_WRAP = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_EDGEMODE_NONE = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedInteger orderX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedInteger orderY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumberList kernelMatrix;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber divisor;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber bias;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedInteger targetX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedInteger targetY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration edgeMode;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber kernelUnitLengthX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber kernelUnitLengthY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger orderX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger orderY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumberList kernelMatrix;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber divisor;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber bias;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger targetX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger targetY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration edgeMode;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthY;
// TODO(philipj): The following was part of SVG 1.1:
// http://www.w3.org/TR/SVG11/filters.html#InterfaceSVGFEConvolveMatrixElement
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=28703
- [RuntimeEnabled=SVG1DOM, Measure] readonly attribute SVGAnimatedBoolean preserveAlpha;
+ [Measure] readonly attribute SVGAnimatedBoolean preserveAlpha;
};
SVGFEConvolveMatrixElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEDiffuseLightingElement.idl b/core/svg/SVGFEDiffuseLightingElement.idl
index b9b35cf..aa6d9f4 100644
--- a/core/svg/SVGFEDiffuseLightingElement.idl
+++ b/core/svg/SVGFEDiffuseLightingElement.idl
@@ -26,11 +26,11 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEDiffuseLightingElement
interface SVGFEDiffuseLightingElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber surfaceScale;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber diffuseConstant;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber kernelUnitLengthX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber kernelUnitLengthY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber surfaceScale;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber diffuseConstant;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthY;
};
SVGFEDiffuseLightingElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEDisplacementMapElement.idl b/core/svg/SVGFEDisplacementMapElement.idl
index 43a50ae..9b70e29 100644
--- a/core/svg/SVGFEDisplacementMapElement.idl
+++ b/core/svg/SVGFEDisplacementMapElement.idl
@@ -29,17 +29,17 @@
DoNotCheckConstants,
] interface SVGFEDisplacementMapElement : SVGElement {
// Channel Selectors
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_CHANNEL_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_CHANNEL_R = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_CHANNEL_G = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_CHANNEL_B = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_CHANNEL_A = 4;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_R = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_G = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_B = 3;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_CHANNEL_A = 4;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber scale;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration xChannelSelector;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration yChannelSelector;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in2;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber scale;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration xChannelSelector;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration yChannelSelector;
};
SVGFEDisplacementMapElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEDistantLightElement.idl b/core/svg/SVGFEDistantLightElement.idl
index 5ac5083..a5c6979 100644
--- a/core/svg/SVGFEDistantLightElement.idl
+++ b/core/svg/SVGFEDistantLightElement.idl
@@ -26,6 +26,6 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEDistantLightElement
interface SVGFEDistantLightElement : SVGElement {
- readonly attribute SVGAnimatedNumber azimuth;
- readonly attribute SVGAnimatedNumber elevation;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber azimuth;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber elevation;
};
diff --git a/core/svg/SVGFEDropShadowElement.idl b/core/svg/SVGFEDropShadowElement.idl
index ea44f41..47d742f 100644
--- a/core/svg/SVGFEDropShadowElement.idl
+++ b/core/svg/SVGFEDropShadowElement.idl
@@ -20,13 +20,13 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEDropShadowElement
interface SVGFEDropShadowElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber dx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber dy;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber stdDeviationX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber stdDeviationY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dx;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dy;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] void setStdDeviation(float stdDeviationX, float stdDeviationY);
+ [MeasureAs=SVG1DOMFilter] void setStdDeviation(float stdDeviationX, float stdDeviationY);
};
SVGFEDropShadowElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEGaussianBlurElement.idl b/core/svg/SVGFEGaussianBlurElement.idl
index 238d344..c9326d3 100644
--- a/core/svg/SVGFEGaussianBlurElement.idl
+++ b/core/svg/SVGFEGaussianBlurElement.idl
@@ -28,11 +28,11 @@
// Currently SVG 1.1 (SVG 2 members not implemented)
interface SVGFEGaussianBlurElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber stdDeviationX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber stdDeviationY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber stdDeviationY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] void setStdDeviation(float stdDeviationX, float stdDeviationY);
+ [MeasureAs=SVG1DOMFilter] void setStdDeviation(float stdDeviationX, float stdDeviationY);
};
SVGFEGaussianBlurElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEImageElement.idl b/core/svg/SVGFEImageElement.idl
index 2c4a272..05ecf0c 100644
--- a/core/svg/SVGFEImageElement.idl
+++ b/core/svg/SVGFEImageElement.idl
@@ -28,7 +28,7 @@
// Currently SVG 1.1, SVG 2 members not implemented
interface SVGFEImageElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
};
SVGFEImageElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEMergeNodeElement.idl b/core/svg/SVGFEMergeNodeElement.idl
index 9936f8d..1e91f7a 100644
--- a/core/svg/SVGFEMergeNodeElement.idl
+++ b/core/svg/SVGFEMergeNodeElement.idl
@@ -26,5 +26,5 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEMergeNodeElement
interface SVGFEMergeNodeElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
};
diff --git a/core/svg/SVGFEMorphologyElement.idl b/core/svg/SVGFEMorphologyElement.idl
index eee1596..c7facb7 100644
--- a/core/svg/SVGFEMorphologyElement.idl
+++ b/core/svg/SVGFEMorphologyElement.idl
@@ -29,14 +29,14 @@
DoNotCheckConstants,
] interface SVGFEMorphologyElement : SVGElement {
// Morphology Operators
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM,ImplementedAs=svgOperator] readonly attribute SVGAnimatedEnumeration operator;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber radiusX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber radiusY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [ImplementedAs=svgOperator, MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration operator;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber radiusX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber radiusY;
};
SVGFEMorphologyElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEOffsetElement.idl b/core/svg/SVGFEOffsetElement.idl
index bf73868..41fb654 100644
--- a/core/svg/SVGFEOffsetElement.idl
+++ b/core/svg/SVGFEOffsetElement.idl
@@ -26,9 +26,9 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEOffsetElement
interface SVGFEOffsetElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber dx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber dy;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dx;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber dy;
};
SVGFEOffsetElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFEPointLightElement.idl b/core/svg/SVGFEPointLightElement.idl
index fc732b7..c37d706 100644
--- a/core/svg/SVGFEPointLightElement.idl
+++ b/core/svg/SVGFEPointLightElement.idl
@@ -26,7 +26,7 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFEPointLightElement
interface SVGFEPointLightElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber z;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber x;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber y;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber z;
};
diff --git a/core/svg/SVGFESpecularLightingElement.idl b/core/svg/SVGFESpecularLightingElement.idl
index 36ec866..49baa91 100644
--- a/core/svg/SVGFESpecularLightingElement.idl
+++ b/core/svg/SVGFESpecularLightingElement.idl
@@ -26,12 +26,12 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFESpecularLightingElement
interface SVGFESpecularLightingElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber surfaceScale;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber specularConstant;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber specularExponent;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber kernelUnitLengthX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber kernelUnitLengthY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber surfaceScale;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber specularConstant;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber specularExponent;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber kernelUnitLengthY;
};
SVGFESpecularLightingElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFESpotLightElement.idl b/core/svg/SVGFESpotLightElement.idl
index 8ebca0e..bb0c3e8 100644
--- a/core/svg/SVGFESpotLightElement.idl
+++ b/core/svg/SVGFESpotLightElement.idl
@@ -26,12 +26,12 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFESpotLightElement
interface SVGFESpotLightElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber z;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber pointsAtX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber pointsAtY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber pointsAtZ;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber specularExponent;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber limitingConeAngle;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber x;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber y;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber z;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber pointsAtX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber pointsAtY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber pointsAtZ;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber specularExponent;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber limitingConeAngle;
};
diff --git a/core/svg/SVGFETileElement.idl b/core/svg/SVGFETileElement.idl
index b6cb618..13da3c0 100644
--- a/core/svg/SVGFETileElement.idl
+++ b/core/svg/SVGFETileElement.idl
@@ -26,7 +26,7 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFETileElement
interface SVGFETileElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString in1;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString in1;
};
SVGFETileElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFETurbulenceElement.idl b/core/svg/SVGFETurbulenceElement.idl
index bb35e24..08b2b83 100644
--- a/core/svg/SVGFETurbulenceElement.idl
+++ b/core/svg/SVGFETurbulenceElement.idl
@@ -29,21 +29,21 @@
DoNotCheckConstants,
] interface SVGFETurbulenceElement : SVGElement {
// Turbulence Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2;
// Stitch Options
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_STITCHTYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_STITCHTYPE_STITCH = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_STITCHTYPE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_STITCHTYPE_STITCH = 1;
+ [MeasureAs=SVG1DOMFilter] const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber baseFrequencyX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber baseFrequencyY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedInteger numOctaves;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber seed;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration stitchTiles;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration type;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber baseFrequencyX;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber baseFrequencyY;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedInteger numOctaves;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedNumber seed;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration stitchTiles;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration type;
};
SVGFETurbulenceElement implements SVGFilterPrimitiveStandardAttributes;
diff --git a/core/svg/SVGFilterElement.idl b/core/svg/SVGFilterElement.idl
index 3c990a7..2d939a3 100644
--- a/core/svg/SVGFilterElement.idl
+++ b/core/svg/SVGFilterElement.idl
@@ -26,15 +26,13 @@
// http://www.w3.org/TR/filter-effects/#InterfaceSVGFilterElement
-[
- TypeChecking=Interface,
-] interface SVGFilterElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration filterUnits;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration primitiveUnits;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
+interface SVGFilterElement : SVGElement {
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration filterUnits;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedEnumeration primitiveUnits;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength height;
};
SVGFilterElement implements SVGURIReference;
diff --git a/core/svg/SVGFilterPrimitiveStandardAttributes.idl b/core/svg/SVGFilterPrimitiveStandardAttributes.idl
index c12ffd5..458d616 100644
--- a/core/svg/SVGFilterPrimitiveStandardAttributes.idl
+++ b/core/svg/SVGFilterPrimitiveStandardAttributes.idl
@@ -29,9 +29,9 @@
[
NoInterfaceObject, // Always used on target of 'implements'
] interface SVGFilterPrimitiveStandardAttributes {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString result;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMFilter] readonly attribute SVGAnimatedString result;
};
diff --git a/core/svg/SVGFitToViewBox.idl b/core/svg/SVGFitToViewBox.idl
index cab50c5..45d3d53 100644
--- a/core/svg/SVGFitToViewBox.idl
+++ b/core/svg/SVGFitToViewBox.idl
@@ -29,6 +29,6 @@
[
NoInterfaceObject, // Always used on target of 'implements'
] interface SVGFitToViewBox {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedRect viewBox;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ [MeasureAs=SVG1DOMFitToViewBox] readonly attribute SVGAnimatedRect viewBox;
+ [MeasureAs=SVG1DOMFitToViewBox] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
};
diff --git a/core/svg/SVGForeignObjectElement.idl b/core/svg/SVGForeignObjectElement.idl
index bedb3bc..9825185 100644
--- a/core/svg/SVGForeignObjectElement.idl
+++ b/core/svg/SVGForeignObjectElement.idl
@@ -26,8 +26,8 @@
// http://www.w3.org/TR/SVG2/extend.html#InterfaceSVGForeignObjectElement
interface SVGForeignObjectElement : SVGGraphicsElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMForeignObjectElement] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMForeignObjectElement] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMForeignObjectElement] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMForeignObjectElement] readonly attribute SVGAnimatedLength height;
};
diff --git a/core/svg/SVGGeometryElement.idl b/core/svg/SVGGeometryElement.idl
index 50bc507..8f1619a 100644
--- a/core/svg/SVGGeometryElement.idl
+++ b/core/svg/SVGGeometryElement.idl
@@ -30,9 +30,7 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGGeometryElement
-[
- TypeChecking=Interface,
-] interface SVGGeometryElement : SVGGraphicsElement {
+interface SVGGeometryElement : SVGGraphicsElement {
// TODO(philipj): SVGPoint should be DOMPoint.
boolean isPointInFill(SVGPoint point);
boolean isPointInStroke(SVGPoint point);
diff --git a/core/svg/SVGGradientElement.idl b/core/svg/SVGGradientElement.idl
index 1010481..5d77514 100644
--- a/core/svg/SVGGradientElement.idl
+++ b/core/svg/SVGGradientElement.idl
@@ -29,14 +29,14 @@
DoNotCheckConstants
] interface SVGGradientElement : SVGElement {
// Spread Method Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_SPREADMETHOD_PAD = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_SPREADMETHOD_REFLECT = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_SPREADMETHOD_REPEAT = 3;
+ [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_PAD = 1;
+ [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_REFLECT = 2;
+ [MeasureAs=SVG1DOMPaintServer] const unsigned short SVG_SPREADMETHOD_REPEAT = 3;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration gradientUnits;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedTransformList gradientTransform;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration spreadMethod;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration gradientUnits;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedTransformList gradientTransform;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration spreadMethod;
};
SVGGradientElement implements SVGURIReference;
diff --git a/core/svg/SVGGraphicsElement.idl b/core/svg/SVGGraphicsElement.idl
index 7af9e22..77474ef 100644
--- a/core/svg/SVGGraphicsElement.idl
+++ b/core/svg/SVGGraphicsElement.idl
@@ -30,10 +30,8 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGGraphicsElement
-[
- TypeChecking=Interface,
-] interface SVGGraphicsElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedTransformList transform;
+interface SVGGraphicsElement : SVGElement {
+ [Measure] readonly attribute SVGAnimatedTransformList transform;
[MeasureAs=SVGLocatableNearestViewportElement] readonly attribute SVGElement nearestViewportElement;
[MeasureAs=SVGLocatableFarthestViewportElement] readonly attribute SVGElement farthestViewportElement;
@@ -41,7 +39,6 @@
[ImplementedAs=getBBoxFromJavascript] SVGRect getBBox();
[ImplementedAs=getCTMFromJavascript] SVGMatrix getCTM();
[ImplementedAs=getScreenCTMFromJavascript] SVGMatrix getScreenCTM();
- [RaisesException, MeasureAs=SVGGraphicsElementGetTransformToElement] SVGMatrix getTransformToElement(SVGElement element);
};
SVGGraphicsElement implements SVGTests;
diff --git a/core/svg/SVGImageElement.idl b/core/svg/SVGImageElement.idl
index 8830ac6..611a2cc 100644
--- a/core/svg/SVGImageElement.idl
+++ b/core/svg/SVGImageElement.idl
@@ -26,11 +26,11 @@
// http://www.w3.org/TR/SVG2/embedded.html#InterfaceSVGImageElement
interface SVGImageElement : SVGGraphicsElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ [MeasureAs=SVG1DOMImageElement] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMImageElement] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMImageElement] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMImageElement] readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMImageElement] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
};
SVGImageElement implements SVGURIReference;
diff --git a/core/svg/SVGLength.idl b/core/svg/SVGLength.idl
index 52e2daa..06b7617 100644
--- a/core/svg/SVGLength.idl
+++ b/core/svg/SVGLength.idl
@@ -22,13 +22,9 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGLength
-// TODO(philipj): SVGLength should have constructors. crbug.com/366541
[
ImplementedAs=SVGLengthTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- MeasureAs=SVG1DOM,
- RuntimeEnabled=SVG1DOM,
WillBeGarbageCollected,
] interface SVGLength {
// Length Unit Types
@@ -47,8 +43,7 @@
readonly attribute unsigned short unitType;
[RaisesException] attribute float value;
[RaisesException=Setter] attribute float valueInSpecifiedUnits;
- // TODO(philipj): valueAsString should not have [TreatNullAs=NullString].
- [TreatNullAs=NullString, RaisesException=Setter] attribute DOMString valueAsString;
+ [RaisesException=Setter] attribute DOMString valueAsString;
[RaisesException] void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits);
[RaisesException] void convertToSpecifiedUnits(unsigned short unitType);
diff --git a/core/svg/SVGLengthList.idl b/core/svg/SVGLengthList.idl
index e587ed2..5d6113c 100644
--- a/core/svg/SVGLengthList.idl
+++ b/core/svg/SVGLengthList.idl
@@ -29,9 +29,6 @@
[
ImplementedAs=SVGLengthListTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGLengthList {
readonly attribute unsigned long length;
diff --git a/core/svg/SVGLineElement.idl b/core/svg/SVGLineElement.idl
index db52f16..73e56a1 100644
--- a/core/svg/SVGLineElement.idl
+++ b/core/svg/SVGLineElement.idl
@@ -26,8 +26,8 @@
// http://www.w3.org/TR/SVG2/shapes.html#InterfaceSVGLineElement
interface SVGLineElement : SVGGeometryElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y2;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength x1;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength y1;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength x2;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength y2;
};
diff --git a/core/svg/SVGLinearGradientElement.idl b/core/svg/SVGLinearGradientElement.idl
index 95e1d5c..06c5c32 100644
--- a/core/svg/SVGLinearGradientElement.idl
+++ b/core/svg/SVGLinearGradientElement.idl
@@ -26,8 +26,8 @@
// http://www.w3.org/TR/SVG2/pservers.html#InterfaceSVGLinearGradientElement
interface SVGLinearGradientElement : SVGGradientElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y2;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength x1;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength y1;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength x2;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength y2;
};
diff --git a/core/svg/SVGMPathElement.idl b/core/svg/SVGMPathElement.idl
index beaf744..a0a1a5c 100644
--- a/core/svg/SVGMPathElement.idl
+++ b/core/svg/SVGMPathElement.idl
@@ -25,6 +25,7 @@
// http://www.w3.org/TR/SVG2/animate.html#InterfaceSVGMPathElement
+[RuntimeEnabled=smil]
interface SVGMPathElement : SVGElement {
};
diff --git a/core/svg/SVGMarkerElement.idl b/core/svg/SVGMarkerElement.idl
index 1083406..3ae585f 100644
--- a/core/svg/SVGMarkerElement.idl
+++ b/core/svg/SVGMarkerElement.idl
@@ -25,31 +25,29 @@
// http://www.w3.org/TR/SVG2/painting.html#InterfaceSVGMarkerElement
-[
- TypeChecking=Interface,
-] interface SVGMarkerElement : SVGElement {
+interface SVGMarkerElement : SVGElement {
// Marker Unit Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MARKERUNITS_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2;
+ const unsigned short SVG_MARKERUNITS_UNKNOWN = 0;
+ const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
+ const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2;
// Marker Orientation Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MARKER_ORIENT_AUTO = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_MARKER_ORIENT_ANGLE = 2;
+ const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0;
+ const unsigned short SVG_MARKER_ORIENT_AUTO = 1;
+ const unsigned short SVG_MARKER_ORIENT_ANGLE = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength refX;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength refY;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration markerUnits;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength markerWidth;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength markerHeight;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration orientType;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedAngle orientAngle;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedLength refX;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedLength refY;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedEnumeration markerUnits;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedLength markerWidth;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedLength markerHeight;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedEnumeration orientType;
+ [MeasureAs=SVG1DOMMarkerElement] readonly attribute SVGAnimatedAngle orientAngle;
// attribute DOMString orient;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] void setOrientToAuto();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] void setOrientToAngle(SVGAngle angle);
+ [MeasureAs=SVG1DOMMarkerElement] void setOrientToAuto();
+ [MeasureAs=SVG1DOMMarkerElement] void setOrientToAngle(SVGAngle angle);
};
SVGMarkerElement implements SVGFitToViewBox;
diff --git a/core/svg/SVGMaskElement.idl b/core/svg/SVGMaskElement.idl
index db24b72..0045a16 100644
--- a/core/svg/SVGMaskElement.idl
+++ b/core/svg/SVGMaskElement.idl
@@ -26,12 +26,12 @@
// http://www.w3.org/TR/css-masking/#InterfaceSVGMaskElement
interface SVGMaskElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration maskUnits;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration maskContentUnits;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMMaskElement] readonly attribute SVGAnimatedEnumeration maskUnits;
+ [MeasureAs=SVG1DOMMaskElement] readonly attribute SVGAnimatedEnumeration maskContentUnits;
+ [MeasureAs=SVG1DOMMaskElement] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMMaskElement] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMMaskElement] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMMaskElement] readonly attribute SVGAnimatedLength height;
};
// SVGMaskElement implements SVGUnitTypes;
diff --git a/core/svg/SVGMatrix.idl b/core/svg/SVGMatrix.idl
index a613da6..0c960a1 100644
--- a/core/svg/SVGMatrix.idl
+++ b/core/svg/SVGMatrix.idl
@@ -26,7 +26,6 @@
[
ImplementedAs=SVGMatrixTearOff,
SetWrapperReferenceTo(SVGTransform contextTransform),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGMatrix {
// FIXME: these attributes should all be floats but since we implement
diff --git a/core/svg/SVGNumber.idl b/core/svg/SVGNumber.idl
index aa7ce79..0a2aa67 100644
--- a/core/svg/SVGNumber.idl
+++ b/core/svg/SVGNumber.idl
@@ -22,11 +22,9 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGNumber
-// TODO(philipj): SVGNumber should have constructors. crbug.com/366541
[
ImplementedAs=SVGNumberTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGNumber {
[RaisesException=Setter] attribute float value;
diff --git a/core/svg/SVGNumberList.idl b/core/svg/SVGNumberList.idl
index 6c9bea9..3d02ae5 100644
--- a/core/svg/SVGNumberList.idl
+++ b/core/svg/SVGNumberList.idl
@@ -29,9 +29,6 @@
[
ImplementedAs=SVGNumberListTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGNumberList {
readonly attribute unsigned long length;
diff --git a/core/svg/SVGPathElement.idl b/core/svg/SVGPathElement.idl
index 80c852f..c5bb32f 100644
--- a/core/svg/SVGPathElement.idl
+++ b/core/svg/SVGPathElement.idl
@@ -26,63 +26,11 @@
// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathElement
-[
- TypeChecking=Interface,
-] interface SVGPathElement : SVGGeometryElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber pathLength;
+interface SVGPathElement : SVGGeometryElement {
+ [Measure] readonly attribute SVGAnimatedNumber pathLength;
float getTotalLength();
// TODO(philipj): SVGPoint should be DOMPoint.
SVGPoint getPointAtLength(float distance);
unsigned long getPathSegAtLength(float distance);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegClosePath createSVGPathSegClosePath();
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(float x, float y);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegMovetoRel createSVGPathSegMovetoRel(float x, float y);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(float x, float y);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegLinetoRel createSVGPathSegLinetoRel(float x, float y);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(
- float x, float y, float x1, float y1, float x2, float y2);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(
- float x, float y, float x1, float y1, float x2, float y2);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(
- float x, float y, float x1, float y1);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(
- float x, float y, float x1, float y1);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegArcAbs createSVGPathSegArcAbs(
- float x, float y, float r1, float r2,
- float angle, boolean largeArcFlag, boolean sweepFlag);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegArcRel createSVGPathSegArcRel(
- float x, float y, float r1, float r2,
- float angle, boolean largeArcFlag, boolean sweepFlag);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(float x);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(float x);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(float y);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(float y);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(
- float x, float y, float x2, float y2);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(
- float x, float y, float x2, float y2);
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y);
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y);
-
- // TODO(philipj): pathSegList and animatedPathSegList should be on the
- // SVGAnimatedPathData interface which SVGPathElement should implement:
- // http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGAnimatedPathData
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] readonly attribute SVGPathSegList pathSegList;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] readonly attribute SVGPathSegList animatedPathSegList;
-
- // TODO(philipj): The following was part of SVG 1.1:
- // http://www.w3.org/TR/SVG11/paths.html#InterfaceSVGAnimatedPathData
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] readonly attribute SVGPathSegList normalizedPathSegList;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVGPathSegDOM] readonly attribute SVGPathSegList animatedNormalizedPathSegList;
};
diff --git a/core/svg/SVGPathSeg.idl b/core/svg/SVGPathSeg.idl
deleted file mode 100644
index b28dd7e..0000000
--- a/core/svg/SVGPathSeg.idl
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSeg
-
-[
- DependentLifetime,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
- WillBeGarbageCollected,
-] interface SVGPathSeg {
- // Path Segment Types
- const unsigned short PATHSEG_UNKNOWN = 0;
- const unsigned short PATHSEG_CLOSEPATH = 1;
- const unsigned short PATHSEG_MOVETO_ABS = 2;
- const unsigned short PATHSEG_MOVETO_REL = 3;
- const unsigned short PATHSEG_LINETO_ABS = 4;
- const unsigned short PATHSEG_LINETO_REL = 5;
- const unsigned short PATHSEG_CURVETO_CUBIC_ABS = 6;
- const unsigned short PATHSEG_CURVETO_CUBIC_REL = 7;
- const unsigned short PATHSEG_CURVETO_QUADRATIC_ABS = 8;
- const unsigned short PATHSEG_CURVETO_QUADRATIC_REL = 9;
- const unsigned short PATHSEG_ARC_ABS = 10;
- const unsigned short PATHSEG_ARC_REL = 11;
- const unsigned short PATHSEG_LINETO_HORIZONTAL_ABS = 12;
- const unsigned short PATHSEG_LINETO_HORIZONTAL_REL = 13;
- const unsigned short PATHSEG_LINETO_VERTICAL_ABS = 14;
- const unsigned short PATHSEG_LINETO_VERTICAL_REL = 15;
- const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
- const unsigned short PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
- const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
- const unsigned short PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;
-
- readonly attribute unsigned short pathSegType;
- readonly attribute DOMString pathSegTypeAsLetter;
-};
diff --git a/core/svg/SVGPathSegArcAbs.idl b/core/svg/SVGPathSegArcAbs.idl
deleted file mode 100644
index d530ba5..0000000
--- a/core/svg/SVGPathSegArcAbs.idl
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegArcAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegArcAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float r1;
- attribute float r2;
- attribute float angle;
- attribute boolean largeArcFlag;
- attribute boolean sweepFlag;
-};
diff --git a/core/svg/SVGPathSegArcRel.idl b/core/svg/SVGPathSegArcRel.idl
deleted file mode 100644
index aa75b5d..0000000
--- a/core/svg/SVGPathSegArcRel.idl
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegArcRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegArcRel : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float r1;
- attribute float r2;
- attribute float angle;
- attribute boolean largeArcFlag;
- attribute boolean sweepFlag;
-};
diff --git a/core/svg/SVGPathSegClosePath.idl b/core/svg/SVGPathSegClosePath.idl
deleted file mode 100644
index a76a85b..0000000
--- a/core/svg/SVGPathSegClosePath.idl
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegClosePath
-
-[
- RuntimeEnabled=SVG1DOM
-] interface SVGPathSegClosePath : SVGPathSeg {
-};
diff --git a/core/svg/SVGPathSegCurvetoCubicAbs.idl b/core/svg/SVGPathSegCurvetoCubicAbs.idl
deleted file mode 100644
index 272dbba..0000000
--- a/core/svg/SVGPathSegCurvetoCubicAbs.idl
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoCubicAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoCubicAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float x1;
- attribute float y1;
- attribute float x2;
- attribute float y2;
-};
diff --git a/core/svg/SVGPathSegCurvetoCubicRel.idl b/core/svg/SVGPathSegCurvetoCubicRel.idl
deleted file mode 100644
index c690d85..0000000
--- a/core/svg/SVGPathSegCurvetoCubicRel.idl
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoCubicRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoCubicRel : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float x1;
- attribute float y1;
- attribute float x2;
- attribute float y2;
-};
diff --git a/core/svg/SVGPathSegCurvetoCubicSmoothAbs.idl b/core/svg/SVGPathSegCurvetoCubicSmoothAbs.idl
deleted file mode 100644
index a7085c1..0000000
--- a/core/svg/SVGPathSegCurvetoCubicSmoothAbs.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoCubicSmoothAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoCubicSmoothAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float x2;
- attribute float y2;
-};
diff --git a/core/svg/SVGPathSegCurvetoCubicSmoothRel.idl b/core/svg/SVGPathSegCurvetoCubicSmoothRel.idl
deleted file mode 100644
index b3a5329..0000000
--- a/core/svg/SVGPathSegCurvetoCubicSmoothRel.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoCubicSmoothRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoCubicSmoothRel : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float x2;
- attribute float y2;
-};
diff --git a/core/svg/SVGPathSegCurvetoQuadraticAbs.idl b/core/svg/SVGPathSegCurvetoQuadraticAbs.idl
deleted file mode 100644
index 812f2c6..0000000
--- a/core/svg/SVGPathSegCurvetoQuadraticAbs.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoQuadraticAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoQuadraticAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float x1;
- attribute float y1;
-};
diff --git a/core/svg/SVGPathSegCurvetoQuadraticRel.idl b/core/svg/SVGPathSegCurvetoQuadraticRel.idl
deleted file mode 100644
index 8348889..0000000
--- a/core/svg/SVGPathSegCurvetoQuadraticRel.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoQuadraticRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoQuadraticRel : SVGPathSeg {
- attribute float x;
- attribute float y;
- attribute float x1;
- attribute float y1;
-};
diff --git a/core/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl b/core/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl
deleted file mode 100644
index b264f8c..0000000
--- a/core/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoQuadraticSmoothAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl b/core/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl
deleted file mode 100644
index a9ad774..0000000
--- a/core/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegCurvetoQuadraticSmoothRel : SVGPathSeg {
- attribute float x;
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegLinetoAbs.idl b/core/svg/SVGPathSegLinetoAbs.idl
deleted file mode 100644
index 0a69c50..0000000
--- a/core/svg/SVGPathSegLinetoAbs.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegLinetoAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegLinetoAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegLinetoHorizontalAbs.idl b/core/svg/SVGPathSegLinetoHorizontalAbs.idl
deleted file mode 100644
index 479b068..0000000
--- a/core/svg/SVGPathSegLinetoHorizontalAbs.idl
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegLinetoHorizontalAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegLinetoHorizontalAbs : SVGPathSeg {
- attribute float x;
-};
diff --git a/core/svg/SVGPathSegLinetoHorizontalRel.idl b/core/svg/SVGPathSegLinetoHorizontalRel.idl
deleted file mode 100644
index c9ececf..0000000
--- a/core/svg/SVGPathSegLinetoHorizontalRel.idl
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegLinetoHorizontalRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegLinetoHorizontalRel : SVGPathSeg {
- attribute float x;
-};
diff --git a/core/svg/SVGPathSegLinetoRel.idl b/core/svg/SVGPathSegLinetoRel.idl
deleted file mode 100644
index 684dfe5..0000000
--- a/core/svg/SVGPathSegLinetoRel.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegLinetoRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegLinetoRel : SVGPathSeg {
- attribute float x;
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegLinetoVerticalAbs.idl b/core/svg/SVGPathSegLinetoVerticalAbs.idl
deleted file mode 100644
index 1411120..0000000
--- a/core/svg/SVGPathSegLinetoVerticalAbs.idl
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegLinetoVerticalAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegLinetoVerticalAbs : SVGPathSeg {
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegLinetoVerticalRel.idl b/core/svg/SVGPathSegLinetoVerticalRel.idl
deleted file mode 100644
index f7acc5e..0000000
--- a/core/svg/SVGPathSegLinetoVerticalRel.idl
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegLinetoVerticalRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegLinetoVerticalRel : SVGPathSeg {
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegList.idl b/core/svg/SVGPathSegList.idl
deleted file mode 100644
index 20afb09..0000000
--- a/core/svg/SVGPathSegList.idl
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegList
-
-[
- TypeChecking=Interface,
- SetWrapperReferenceTo(SVGElement contextElement),
- ImplementedAs=SVGPathSegListTearOff,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
- WillBeGarbageCollected,
-] interface SVGPathSegList {
- readonly attribute unsigned long length;
- [ImplementedAs=length] readonly attribute unsigned long numberOfItems;
-
- [RaisesException] void clear();
- [RaisesException] SVGPathSeg initialize(SVGPathSeg newItem);
- [RaisesException] getter SVGPathSeg getItem(unsigned long index);
- [RaisesException] SVGPathSeg insertItemBefore(SVGPathSeg newItem, unsigned long index);
- [RaisesException] SVGPathSeg replaceItem(SVGPathSeg newItem, unsigned long index);
- [RaisesException] SVGPathSeg removeItem(unsigned long index);
- [RaisesException] SVGPathSeg appendItem(SVGPathSeg newItem);
- [RaisesException] setter void (unsigned long index, SVGPathSeg newItem);
-};
diff --git a/core/svg/SVGPathSegMovetoAbs.idl b/core/svg/SVGPathSegMovetoAbs.idl
deleted file mode 100644
index 5b90445..0000000
--- a/core/svg/SVGPathSegMovetoAbs.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegMovetoAbs
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegMovetoAbs : SVGPathSeg {
- attribute float x;
- attribute float y;
-};
diff --git a/core/svg/SVGPathSegMovetoRel.idl b/core/svg/SVGPathSegMovetoRel.idl
deleted file mode 100644
index a45f987..0000000
--- a/core/svg/SVGPathSegMovetoRel.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// http://www.w3.org/TR/SVG2/paths.html#InterfaceSVGPathSegMovetoRel
-
-[
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVGPathSegDOM,
-] interface SVGPathSegMovetoRel : SVGPathSeg {
- attribute float x;
- attribute float y;
-};
diff --git a/core/svg/SVGPatternElement.idl b/core/svg/SVGPatternElement.idl
index 45edd46..76fd7bf 100644
--- a/core/svg/SVGPatternElement.idl
+++ b/core/svg/SVGPatternElement.idl
@@ -26,13 +26,13 @@
// http://www.w3.org/TR/SVG2/pservers.html#InterfaceSVGPatternElement
interface SVGPatternElement : SVGElement {
- readonly attribute SVGAnimatedEnumeration patternUnits;
- readonly attribute SVGAnimatedEnumeration patternContentUnits;
- readonly attribute SVGAnimatedTransformList patternTransform;
- readonly attribute SVGAnimatedLength x;
- readonly attribute SVGAnimatedLength y;
- readonly attribute SVGAnimatedLength width;
- readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration patternUnits;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedEnumeration patternContentUnits;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedTransformList patternTransform;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength height;
};
SVGPatternElement implements SVGFitToViewBox;
diff --git a/core/svg/SVGPoint.idl b/core/svg/SVGPoint.idl
index 7097dc8..b7c1434 100644
--- a/core/svg/SVGPoint.idl
+++ b/core/svg/SVGPoint.idl
@@ -26,7 +26,6 @@
[
ImplementedAs=SVGPointTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGPoint {
[RaisesException=Setter] attribute unrestricted float x;
diff --git a/core/svg/SVGPointList.idl b/core/svg/SVGPointList.idl
index e2dbb15..97589be 100644
--- a/core/svg/SVGPointList.idl
+++ b/core/svg/SVGPointList.idl
@@ -28,9 +28,6 @@
[
ImplementedAs=SVGPointListTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGPointList {
readonly attribute unsigned long length;
diff --git a/core/svg/SVGPolygonElement.idl b/core/svg/SVGPolygonElement.idl
index 21458ae..75e87c3 100644
--- a/core/svg/SVGPolygonElement.idl
+++ b/core/svg/SVGPolygonElement.idl
@@ -29,6 +29,6 @@
// TODO(philipj): points and animatedPoints be on the SVGAnimatedPoints
// interface which SVGPolygonElement should implement:
// http://www.w3.org/TR/SVG2/shapes.html#InterfaceSVGAnimatedPoints
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM, ImplementedAs=pointsFromJavascript] readonly attribute SVGPointList points;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGPointList animatedPoints;
+ [MeasureAs=SVG1DOMShape, ImplementedAs=pointsFromJavascript] readonly attribute SVGPointList points;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGPointList animatedPoints;
};
diff --git a/core/svg/SVGPolylineElement.idl b/core/svg/SVGPolylineElement.idl
index 6937733..fae6f4e 100644
--- a/core/svg/SVGPolylineElement.idl
+++ b/core/svg/SVGPolylineElement.idl
@@ -29,6 +29,6 @@
// TODO(philipj): points and animatedPoints should be on the
// SVGAnimatedPoints interface which SVGPolylineElement should implement:
// http://www.w3.org/TR/SVG2/shapes.html#InterfaceSVGAnimatedPoints
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM, ImplementedAs=pointsFromJavascript] readonly attribute SVGPointList points;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGPointList animatedPoints;
+ [MeasureAs=SVG1DOMShape, ImplementedAs=pointsFromJavascript] readonly attribute SVGPointList points;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGPointList animatedPoints;
};
diff --git a/core/svg/SVGPreserveAspectRatio.idl b/core/svg/SVGPreserveAspectRatio.idl
index dc9ba05..6e1d4ad 100644
--- a/core/svg/SVGPreserveAspectRatio.idl
+++ b/core/svg/SVGPreserveAspectRatio.idl
@@ -26,11 +26,8 @@
// http://www.w3.org/TR/SVG2/coords.html#InterfaceSVGPreserveAspectRatio
[
- TypeChecking=Interface,
ImplementedAs=SVGPreserveAspectRatioTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGPreserveAspectRatio {
// Alignment types
diff --git a/core/svg/SVGRadialGradientElement.idl b/core/svg/SVGRadialGradientElement.idl
index 71bd0bd..16a496b 100644
--- a/core/svg/SVGRadialGradientElement.idl
+++ b/core/svg/SVGRadialGradientElement.idl
@@ -26,10 +26,10 @@
// http://www.w3.org/TR/SVG2/pservers.html#InterfaceSVGRadialGradientElement
interface SVGRadialGradientElement : SVGGradientElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength cx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength cy;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength r;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength fx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength fy;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength fr;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength cx;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength cy;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength r;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength fx;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength fy;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedLength fr;
};
diff --git a/core/svg/SVGRect.idl b/core/svg/SVGRect.idl
index 3ab6c6a..725ee0f 100644
--- a/core/svg/SVGRect.idl
+++ b/core/svg/SVGRect.idl
@@ -26,7 +26,6 @@
[
ImplementedAs=SVGRectTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGRect {
[RaisesException=Setter] attribute unrestricted float x;
diff --git a/core/svg/SVGRectElement.idl b/core/svg/SVGRectElement.idl
index a23a007..98fb22d 100644
--- a/core/svg/SVGRectElement.idl
+++ b/core/svg/SVGRectElement.idl
@@ -27,10 +27,10 @@
// http://www.w3.org/TR/SVG2/shapes.html#InterfaceSVGRectElement
interface SVGRectElement : SVGGeometryElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength rx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength ry;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength rx;
+ [MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength ry;
};
diff --git a/core/svg/SVGSVGElement.idl b/core/svg/SVGSVGElement.idl
index 0ad5d7a..b05a259 100644
--- a/core/svg/SVGSVGElement.idl
+++ b/core/svg/SVGSVGElement.idl
@@ -22,16 +22,13 @@
// http://www.w3.org/TR/SVG2/struct.html#InterfaceSVGSVGElement
-[
- TypeChecking=Interface,
-] interface SVGSVGElement : SVGGraphicsElement {
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
+interface SVGSVGElement : SVGGraphicsElement {
+ [MeasureAs=SVG1DOMSVGElement] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMSVGElement] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMSVGElement] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMSVGElement] readonly attribute SVGAnimatedLength height;
// TODO(philipj): viewport should be a DOMRectReadOnly.
- readonly attribute SVGRect viewport;
+ [Measure] readonly attribute SVGRect viewport;
// TODO(philipj): useCurrentView and currentView have been removed:
// https://github.com/w3c/svgwg/commit/4c26fd36937a65192024208d85c144a21071b057
[Measure] readonly attribute boolean useCurrentView;
@@ -40,37 +37,35 @@
// TODO(philipj): currentTranslate should be a DOMPointReadOnly.
[ImplementedAs=currentTranslateFromJavascript] readonly attribute SVGPoint currentTranslate;
- [RuntimeEnabled=SVG1DOM, DeprecateAs=SVGSVGElementSuspendRedraw] unsigned long suspendRedraw(unsigned long maxWaitMilliseconds);
- [RuntimeEnabled=SVG1DOM, DeprecateAs=SVGSVGElementUnsuspendRedraw] void unsuspendRedraw(unsigned long suspendHandleId);
- [RuntimeEnabled=SVG1DOM, DeprecateAs=SVGSVGElementUnsuspendRedrawAll] void unsuspendRedrawAll();
- [RuntimeEnabled=SVG1DOM, DeprecateAs=SVGSVGElementForceRedraw] void forceRedraw();
- void pauseAnimations();
- void unpauseAnimations();
- boolean animationsPaused();
- float getCurrentTime();
- void setCurrentTime(float seconds);
+ [MeasureAs=SVGSVGElementSuspendRedraw] unsigned long suspendRedraw(unsigned long maxWaitMilliseconds);
+ [MeasureAs=SVGSVGElementUnsuspendRedraw] void unsuspendRedraw(unsigned long suspendHandleId);
+ [MeasureAs=SVGSVGElementUnsuspendRedrawAll] void unsuspendRedrawAll();
+ [MeasureAs=SVGSVGElementForceRedraw] void forceRedraw();
+
+ [RuntimeEnabled=smil] void pauseAnimations();
+ [RuntimeEnabled=smil] void unpauseAnimations();
+ [RuntimeEnabled=smil] boolean animationsPaused();
+ [RuntimeEnabled=smil] float getCurrentTime();
+ [RuntimeEnabled=smil] void setCurrentTime(float seconds);
+
// TODO(philipj): The rect arguments should be DOMRectReadOnly.
NodeList getIntersectionList(SVGRect rect, SVGElement? referenceElement);
NodeList getEnclosureList(SVGRect rect, SVGElement? referenceElement);
boolean checkIntersection(SVGElement element, SVGRect rect);
boolean checkEnclosure(SVGElement element, SVGRect rect);
void deselectAll();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGNumber createSVGNumber();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGLength createSVGLength();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGAngle createSVGAngle();
+ [Measure] SVGNumber createSVGNumber();
+ [Measure] SVGLength createSVGLength();
+ [Measure] SVGAngle createSVGAngle();
// TODO(philipj): SVGPoint/Matrix/Rect should be DOMPoint/Matrix/Rect.
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGPoint createSVGPoint();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGMatrix createSVGMatrix();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGRect createSVGRect();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGTransform createSVGTransform();
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix);
+ [Measure] SVGPoint createSVGPoint();
+ [Measure] SVGMatrix createSVGMatrix();
+ [Measure] SVGRect createSVGRect();
+ [Measure] SVGTransform createSVGTransform();
+ [Measure] SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix);
// TODO(philipj): The following was part of SVG 1.1:
// http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement
- [Measure] readonly attribute float pixelUnitToMillimeterX;
- [Measure] readonly attribute float pixelUnitToMillimeterY;
- [Measure] readonly attribute float screenPixelToMillimeterX;
- [Measure] readonly attribute float screenPixelToMillimeterY;
[Measure] Element getElementById(DOMString elementId);
};
diff --git a/core/svg/SVGStopElement.idl b/core/svg/SVGStopElement.idl
index ed21e23..a8406d4 100644
--- a/core/svg/SVGStopElement.idl
+++ b/core/svg/SVGStopElement.idl
@@ -26,5 +26,5 @@
// http://www.w3.org/TR/SVG2/pservers.html#InterfaceSVGStopElement
interface SVGStopElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumber offset;
+ [MeasureAs=SVG1DOMPaintServer] readonly attribute SVGAnimatedNumber offset;
};
diff --git a/core/svg/SVGStringList.idl b/core/svg/SVGStringList.idl
index d4f5b7b..7241243 100644
--- a/core/svg/SVGStringList.idl
+++ b/core/svg/SVGStringList.idl
@@ -26,10 +26,8 @@
// http://www.w3.org/TR/SVG2/types.html#InterfaceSVGStringList
[
- TypeChecking=Interface,
SetWrapperReferenceTo(SVGElement contextElement),
ImplementedAs=SVGStringListTearOff,
- RuntimeEnabled=SVG1DOM,
WillBeGarbageCollected,
] interface SVGStringList {
readonly attribute unsigned long length;
diff --git a/core/svg/SVGTests.idl b/core/svg/SVGTests.idl
index c9f8ce6..1a76c1e 100644
--- a/core/svg/SVGTests.idl
+++ b/core/svg/SVGTests.idl
@@ -29,12 +29,7 @@
[
NoInterfaceObject, // Always used on target of 'implements'
] interface SVGTests {
-
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGStringList requiredFeatures;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGStringList requiredExtensions;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGStringList systemLanguage;
-
- // TODO(philipj): The following was part of SVG 1.1:
- // http://www.w3.org/TR/SVG11/types.html#InterfaceSVGTests
- [Measure] boolean hasExtension(DOMString extension);
+ [MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList requiredFeatures;
+ [MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList requiredExtensions;
+ [MeasureAs=SVG1DOMSVGTests] readonly attribute SVGStringList systemLanguage;
};
diff --git a/core/svg/SVGTextContentElement.idl b/core/svg/SVGTextContentElement.idl
index c2a284f..77a7baa 100644
--- a/core/svg/SVGTextContentElement.idl
+++ b/core/svg/SVGTextContentElement.idl
@@ -25,16 +25,14 @@
// http://www.w3.org/TR/SVG2/text.html#InterfaceSVGTextContentElement
-[
- TypeChecking=Interface,
-] interface SVGTextContentElement : SVGGraphicsElement {
+interface SVGTextContentElement : SVGGraphicsElement {
// lengthAdjust Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short LENGTHADJUST_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short LENGTHADJUST_SPACING = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2;
+ [MeasureAs=SVG1DOMText] const unsigned short LENGTHADJUST_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMText] const unsigned short LENGTHADJUST_SPACING = 1;
+ [MeasureAs=SVG1DOMText] const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength textLength;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration lengthAdjust;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLength textLength;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedEnumeration lengthAdjust;
long getNumberOfChars();
float getComputedTextLength();
diff --git a/core/svg/SVGTextPathElement.idl b/core/svg/SVGTextPathElement.idl
index 93bb43c..6d47b57 100644
--- a/core/svg/SVGTextPathElement.idl
+++ b/core/svg/SVGTextPathElement.idl
@@ -27,18 +27,18 @@
interface SVGTextPathElement : SVGTextContentElement {
// textPath Method Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2;
+ [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1;
+ [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2;
// textPath Spacing Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2;
+ [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
+ [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1;
+ [MeasureAs=SVG1DOMText] const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength startOffset;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration method;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedEnumeration spacing;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLength startOffset;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedEnumeration method;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedEnumeration spacing;
};
SVGTextPathElement implements SVGURIReference;
diff --git a/core/svg/SVGTextPositioningElement.idl b/core/svg/SVGTextPositioningElement.idl
index 07640e3..f389dfa 100644
--- a/core/svg/SVGTextPositioningElement.idl
+++ b/core/svg/SVGTextPositioningElement.idl
@@ -26,9 +26,9 @@
// http://www.w3.org/TR/SVG2/text.html#InterfaceSVGTextPositioningElement
interface SVGTextPositioningElement : SVGTextContentElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLengthList x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLengthList y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLengthList dx;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLengthList dy;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedNumberList rotate;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList x;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList y;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList dx;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedLengthList dy;
+ [MeasureAs=SVG1DOMText] readonly attribute SVGAnimatedNumberList rotate;
};
diff --git a/core/svg/SVGTransform.idl b/core/svg/SVGTransform.idl
index 4a6ce72..dd594e1 100644
--- a/core/svg/SVGTransform.idl
+++ b/core/svg/SVGTransform.idl
@@ -21,13 +21,9 @@
// http://www.w3.org/TR/SVG2/coords.html#InterfaceSVGTransform
-// TODO(philipj): SVGTransform should have constructors. crbug.com/366541
[
ImplementedAs=SVGTransformTearOff,
- MeasureAs=SVG1DOM,
- RuntimeEnabled=SVG1DOM,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface SVGTransform {
// Transform Types
diff --git a/core/svg/SVGTransformList.idl b/core/svg/SVGTransformList.idl
index 6f6451e..2ffb5bc 100644
--- a/core/svg/SVGTransformList.idl
+++ b/core/svg/SVGTransformList.idl
@@ -29,9 +29,6 @@
[
ImplementedAs=SVGTransformListTearOff,
SetWrapperReferenceTo(SVGElement contextElement),
- TypeChecking=Interface,
- RuntimeEnabled=SVG1DOM,
- MeasureAs=SVG1DOM,
WillBeGarbageCollected,
] interface SVGTransformList {
readonly attribute unsigned long length;
diff --git a/core/svg/SVGURIReference.idl b/core/svg/SVGURIReference.idl
index 3f9e860..18932b0 100644
--- a/core/svg/SVGURIReference.idl
+++ b/core/svg/SVGURIReference.idl
@@ -29,5 +29,5 @@
[
NoInterfaceObject, // Always used on target of 'implements'
] interface SVGURIReference {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedString href;
+ [MeasureAs=SVG1DOMUriReference] readonly attribute SVGAnimatedString href;
};
diff --git a/core/svg/SVGUnitTypes.idl b/core/svg/SVGUnitTypes.idl
index 5e497de..2b42b50 100644
--- a/core/svg/SVGUnitTypes.idl
+++ b/core/svg/SVGUnitTypes.idl
@@ -30,7 +30,7 @@
WillBeGarbageCollected
] interface SVGUnitTypes {
// Unit Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
+ const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0;
+ const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1;
+ const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
};
diff --git a/core/svg/SVGUseElement.idl b/core/svg/SVGUseElement.idl
index 03065a4..316ee3b 100644
--- a/core/svg/SVGUseElement.idl
+++ b/core/svg/SVGUseElement.idl
@@ -26,10 +26,10 @@
// http://www.w3.org/TR/SVG2/struct.html#InterfaceSVGUseElement
interface SVGUseElement : SVGGraphicsElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength x;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength y;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength width;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGAnimatedLength height;
+ [MeasureAs=SVG1DOMUseElement] readonly attribute SVGAnimatedLength x;
+ [MeasureAs=SVG1DOMUseElement] readonly attribute SVGAnimatedLength y;
+ [MeasureAs=SVG1DOMUseElement] readonly attribute SVGAnimatedLength width;
+ [MeasureAs=SVG1DOMUseElement] readonly attribute SVGAnimatedLength height;
};
SVGUseElement implements SVGURIReference;
diff --git a/core/svg/SVGViewElement.idl b/core/svg/SVGViewElement.idl
index 45ae255..147ad37 100644
--- a/core/svg/SVGViewElement.idl
+++ b/core/svg/SVGViewElement.idl
@@ -26,7 +26,7 @@
// http://www.w3.org/TR/SVG2/linking.html#InterfaceSVGViewElement
interface SVGViewElement : SVGElement {
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] readonly attribute SVGStringList viewTarget;
+ [Measure] readonly attribute SVGStringList viewTarget;
};
SVGViewElement implements SVGFitToViewBox;
diff --git a/core/svg/SVGZoomAndPan.idl b/core/svg/SVGZoomAndPan.idl
index 7fa9063..624eae4 100644
--- a/core/svg/SVGZoomAndPan.idl
+++ b/core/svg/SVGZoomAndPan.idl
@@ -31,9 +31,9 @@
] interface SVGZoomAndPan {
// Zoom and Pan Types
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_ZOOMANDPAN_DISABLE = 1;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM] const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2;
+ const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0;
+ const unsigned short SVG_ZOOMANDPAN_DISABLE = 1;
+ const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2;
- [RuntimeEnabled=SVG1DOM, MeasureAs=SVG1DOM, RaisesException=Setter] attribute unsigned short zoomAndPan;
+ [MeasureAs=SVG1DOMZoomAndPan, RaisesException=Setter] attribute unsigned short zoomAndPan;
};
diff --git a/core/testing/DictionaryTest.idl b/core/testing/DictionaryTest.idl
index d03a78d..699e669 100644
--- a/core/testing/DictionaryTest.idl
+++ b/core/testing/DictionaryTest.idl
@@ -7,7 +7,10 @@
] interface DictionaryTest {
void set(optional InternalDictionary testingDictionary);
InternalDictionary get();
+ [CallWith=ScriptState] object getDictionaryMemberProperties();
void setDerived(InternalDictionaryDerived derived);
InternalDictionaryDerived getDerived();
+
+ [CallWith=ExecutionContext, RaisesException] DOMString stringFromIterable(Dictionary iterableDictionary);
};
diff --git a/core/testing/InternalDictionary.idl b/core/testing/InternalDictionary.idl
index b35e9a5..982650b 100644
--- a/core/testing/InternalDictionary.idl
+++ b/core/testing/InternalDictionary.idl
@@ -8,8 +8,8 @@
long longMember;
[Clamp] long longMemberWithClamp;
[EnforceRange] long longMemberWithEnforceRange;
- // We don't want to add a UseCounter feature for testing, so using KeyboardEventKeyLocation.
- [DeprecateAs=KeyboardEventKeyLocation, ImplementedAs=longMember] long deprecateLongMember;
+ // We don't want to add a UseCounter feature for testing, so using PrefixedStorageInfo.
+ [DeprecateAs=PrefixedStorageInfo, ImplementedAs=longMember] long deprecateLongMember;
long longMemberWithDefault = 42;
long? longOrNullMember;
long? longOrNullMemberWithDefault = null;
@@ -34,4 +34,5 @@
(double or DOMString) doubleOrStringMember;
sequence<(double or DOMString)> doubleOrStringSequenceMember;
EventTarget? eventTargetOrNullMember = null;
+ Dictionary dictionaryMember;
};
diff --git a/core/testing/InternalSettings.idl b/core/testing/InternalSettings.idl
index c95af21..ed536e6 100644
--- a/core/testing/InternalSettings.idl
+++ b/core/testing/InternalSettings.idl
@@ -53,11 +53,13 @@
[RaisesException] void setAvailableHoverTypes(DOMString types);
[RaisesException] void setPrimaryHoverType(DOMString type);
[RaisesException] void setImageAnimationPolicy(DOMString policy);
+ [RaisesException] void setCompositorWorkerEnabled(boolean enabled);
// FIXME: The following are RuntimeEnabledFeatures and likely
// cannot be changed after process start. These setters should
// be removed or moved onto internals.runtimeFlags:
void setAuthorShadowDOMForAnyElementEnabled(boolean enabled);
+ void setCSSStickyPositionEnabled(boolean enabled);
void setLangAttributeAwareFormControlUIEnabled(boolean enabled);
void setOverlayScrollbarsEnabled(boolean enabled);
void setExperimentalContentSecurityPolicyFeaturesEnabled(boolean enabled);
diff --git a/core/testing/Internals.idl b/core/testing/Internals.idl
index 23c3d70..dc69202 100644
--- a/core/testing/Internals.idl
+++ b/core/testing/Internals.idl
@@ -27,41 +27,40 @@
[
DoNotCheckConstants,
GarbageCollected,
- TypeChecking=Interface,
ConstructorCallWith=ScriptState,
] interface Internals {
DOMString address(Node node);
GCObservation observeGC(any observed);
- [RaisesException, TypeChecking=Interface] DOMString elementLayoutTreeAsText(Element element);
+ [RaisesException] DOMString elementLayoutTreeAsText(Element element);
boolean isPreloaded(DOMString url);
boolean isPreloadedBy(DOMString url, Document document);
boolean isLoadingFromMemoryCache(DOMString url);
- [TypeChecking=Interface] boolean isSharingStyle(Element element1, Element element2);
+ boolean isSharingStyle(Element element1, Element element2);
- [TypeChecking=Interface] CSSStyleDeclaration computedStyleIncludingVisitedInfo(Node node);
+ CSSStyleDeclaration computedStyleIncludingVisitedInfo(Node node);
- [TypeChecking=Interface] ShadowRoot createUserAgentShadowRoot(Element host);
+ ShadowRoot createUserAgentShadowRoot(Element host);
- [TypeChecking=Interface] ShadowRoot shadowRoot(Element host);
- [TypeChecking=Interface] ShadowRoot youngestShadowRoot(Element host);
- [TypeChecking=Interface] ShadowRoot oldestShadowRoot(Element host);
- [RaisesException, TypeChecking=Interface] ShadowRoot youngerShadowRoot(Node root);
+ ShadowRoot shadowRoot(Element host);
+ ShadowRoot youngestShadowRoot(Element host);
+ ShadowRoot oldestShadowRoot(Element host);
+ [RaisesException] ShadowRoot youngerShadowRoot(Node root);
- [RaisesException, TypeChecking=Interface] DOMString shadowRootType(Node root);
+ [RaisesException] DOMString shadowRootType(Node root);
[RaisesException] boolean hasShadowInsertionPoint(Node root);
[RaisesException] boolean hasContentElement(Node root);
- [RaisesException, TypeChecking=Interface] unsigned long countElementShadow(Node Root);
- [TypeChecking=Interface] DOMString shadowPseudoId(Element element);
- [RaisesException, TypeChecking=Interface] boolean isValidContentSelect(Element contentElement);
- [TypeChecking=Interface] Node treeScopeRootNode(Node node);
- [TypeChecking=Interface] Node parentTreeScope(Node node);
- [RaisesException, TypeChecking=Interface] boolean hasSelectorForIdInShadow(Element host, DOMString id);
- [RaisesException, TypeChecking=Interface] boolean hasSelectorForClassInShadow(Element host, DOMString className);
- [RaisesException, TypeChecking=Interface] boolean hasSelectorForAttributeInShadow(Element host, DOMString attributeName);
- [RaisesException, TypeChecking=Interface] unsigned short compareTreeScopePosition(Node treeScope1, Node treeScope2);
+ [RaisesException] unsigned long countElementShadow(Node Root);
+ DOMString shadowPseudoId(Element element);
+ [RaisesException] boolean isValidContentSelect(Element contentElement);
+ Node treeScopeRootNode(Node node);
+ Node parentTreeScope(Node node);
+ [RaisesException] boolean hasSelectorForIdInShadow(Element host, DOMString id);
+ [RaisesException] boolean hasSelectorForClassInShadow(Element host, DOMString className);
+ [RaisesException] boolean hasSelectorForAttributeInShadow(Element host, DOMString attributeName);
+ [RaisesException] unsigned short compareTreeScopePosition(Node treeScope1, Node treeScope2);
[RaisesException] unsigned long updateStyleAndReturnAffectedElementCount();
[RaisesException] unsigned long needsLayoutCount();
[RaisesException] unsigned long hitTestCount(Document document);
@@ -72,21 +71,28 @@
// Animation testing.
[RaisesException] void pauseAnimations(double pauseTime);
bool isCompositedAnimation(Animation animation);
+ void disableCompositedAnimation(Animation animation);
+ void disableCSSAdditiveAnimations();
// Modifies m_desiredFrameStartTime in BitmapImage to advance the next frame time
// for testing whether animated images work properly.
[RaisesException] void advanceTimeForImage(Element image, double deltaTimeInSeconds);
- [RaisesException, TypeChecking=Interface] Node nextSiblingInComposedTree(Node node);
- [RaisesException, TypeChecking=Interface] Node firstChildInComposedTree(Node node);
- [RaisesException, TypeChecking=Interface] Node lastChildInComposedTree(Node node);
- [RaisesException, TypeChecking=Interface] Node nextInComposedTree(Node node);
- [RaisesException, TypeChecking=Interface] Node previousInComposedTree(Node node);
+ // Advances an animated image. For BitmapImage (e.g., animated gifs) this
+ // will advance to the next frame. For SVGImage, this will trigger an
+ // animation update for CSS and advance the SMIL timeline by one frame.
+ [RaisesException] void advanceImageAnimation(Element image);
+
+ [RaisesException] Node nextSiblingInFlatTree(Node node);
+ [RaisesException] Node firstChildInFlatTree(Node node);
+ [RaisesException] Node lastChildInFlatTree(Node node);
+ [RaisesException] Node nextInFlatTree(Node node);
+ [RaisesException] Node previousInFlatTree(Node node);
DOMString visiblePlaceholder(Element element);
- [TypeChecking=Interface] void selectColorInColorChooser(Element element, DOMString colorValue);
- [TypeChecking=Interface] void endColorChooser(Element element);
+ void selectColorInColorChooser(Element element, DOMString colorValue);
+ void endColorChooser(Element element);
// If the argument is omitted, the top-level document is used.
boolean hasAutofocusRequest(optional Document document);
@@ -96,42 +102,39 @@
[RaisesException] ClientRect absoluteCaretBounds();
- [TypeChecking=Interface] ClientRect boundingBox(Element element);
+ ClientRect boundingBox(Element element);
- [RaisesException, TypeChecking=Interface] unsigned long markerCountForNode(Node node, DOMString markerType);
- [TypeChecking=Interface] unsigned long activeMarkerCountForNode(Node node);
- [RaisesException, TypeChecking=Interface] Range markerRangeForNode(Node node, DOMString markerType, unsigned long index);
- [RaisesException, TypeChecking=Interface] DOMString markerDescriptionForNode(Node node, DOMString markerType, unsigned long index);
- [TypeChecking=Interface] void addTextMatchMarker(Range range, boolean isActive);
- [TypeChecking=Interface] void setMarkersActive(Node node, unsigned long startOffset, unsigned long endOffset, boolean active);
+ [RaisesException] unsigned long markerCountForNode(Node node, DOMString markerType);
+ unsigned long activeMarkerCountForNode(Node node);
+ [RaisesException] Range markerRangeForNode(Node node, DOMString markerType, unsigned long index);
+ [RaisesException] DOMString markerDescriptionForNode(Node node, DOMString markerType, unsigned long index);
+ void addTextMatchMarker(Range range, boolean isActive);
+ void setMarkersActive(Node node, unsigned long startOffset, unsigned long endOffset, boolean active);
void setMarkedTextMatchesAreHighlighted(Document document, boolean highlight);
- [RaisesException, TypeChecking=Interface] void setFrameViewPosition(Document document, long x, long y);
+ [RaisesException] void setFrameViewPosition(Document document, long x, long y);
- [RaisesException, TypeChecking=Interface] DOMString viewportAsText(Document document,
- float devicePixelRatio,
- long availableWidth,
- long availableHeight);
+ [RaisesException] DOMString viewportAsText(Document document,
+ float devicePixelRatio,
+ long availableWidth,
+ long availableHeight);
- [RaisesException, TypeChecking=Interface] boolean wasLastChangeUserEdit(Element textField);
- [RaisesException, TypeChecking=Interface] boolean elementShouldAutoComplete(Element inputElement);
- [RaisesException, TypeChecking=Interface] DOMString suggestedValue(Element inputElement);
- [RaisesException, TypeChecking=Interface] void setSuggestedValue(Element inputElement, DOMString value);
- [RaisesException, TypeChecking=Interface] void setEditingValue(Element inputElement, DOMString value);
- [RaisesException, TypeChecking=Interface] void setAutofilled(Element inputElement, boolean enabled);
+ [RaisesException] boolean elementShouldAutoComplete(Element inputElement);
+ [RaisesException] DOMString suggestedValue(Element inputElement);
+ [RaisesException] void setSuggestedValue(Element inputElement, DOMString value);
+ [RaisesException] void setEditingValue(Element inputElement, DOMString value);
+ [RaisesException] void setAutofilled(Element inputElement, boolean enabled);
- [RaisesException, TypeChecking=Interface] void scrollElementToRect(Element element, long x, long y, long w, long h);
+ Range rangeFromLocationAndLength(Element scope, long rangeLocation, long rangeLength);
+ unsigned long locationFromRange(Element scope, Range range);
+ unsigned long lengthFromRange(Element scope, Range range);
+ DOMString rangeAsText(Range range);
- [TypeChecking=Interface] Range rangeFromLocationAndLength(Element scope, long rangeLocation, long rangeLength);
- [TypeChecking=Interface] unsigned long locationFromRange(Element scope, Range range);
- [TypeChecking=Interface] unsigned long lengthFromRange(Element scope, Range range);
- [TypeChecking=Interface] DOMString rangeAsText(Range range);
-
- [RaisesException, TypeChecking=Interface] DOMPoint touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, Document document);
- [RaisesException, TypeChecking=Interface] Node touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height, Document document);
- [RaisesException, TypeChecking=Interface] DOMPoint touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document document);
- [RaisesException, TypeChecking=Interface] Node touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document document);
- [RaisesException, TypeChecking=Interface] ClientRect bestZoomableAreaForTouchPoint(long x, long y, long width, long height, Document document);
+ [RaisesException] DOMPoint touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, Document document);
+ [RaisesException] Node touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height, Document document);
+ [RaisesException] DOMPoint touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document document);
+ [RaisesException] Node touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document document);
+ [RaisesException] ClientRect bestZoomableAreaForTouchPoint(long x, long y, long width, long height, Document document);
[RaisesException] long lastSpellCheckRequestSequence(Document document);
[RaisesException] long lastSpellCheckProcessedSequence(Document document);
@@ -139,57 +142,56 @@
sequence<DOMString> userPreferredLanguages();
void setUserPreferredLanguages(sequence<DOMString> languages);
- [TypeChecking=Interface] unsigned long activeDOMObjectCount(Document document);
- [TypeChecking=Interface] unsigned long wheelEventHandlerCount(Document document);
- [TypeChecking=Interface] unsigned long scrollEventHandlerCount(Document document);
- [TypeChecking=Interface] unsigned long touchEventHandlerCount(Document document);
- [RaisesException, TypeChecking=Interface] LayerRectList touchEventTargetLayerRects(Document document);
+ unsigned long activeDOMObjectCount(Document document);
+ unsigned long wheelEventHandlerCount(Document document);
+ unsigned long scrollEventHandlerCount(Document document);
+ unsigned long touchEventHandlerCount(Document document);
+ [RaisesException] LayerRectList touchEventTargetLayerRects(Document document);
- [RaisesException, TypeChecking=Interface] boolean executeCommand(Document document, DOMString name, DOMString value);
+ [RaisesException] boolean executeCommand(Document document, DOMString name, DOMString value);
DOMString htmlNamespace();
sequence<DOMString> htmlTags();
DOMString svgNamespace();
sequence<DOMString> svgTags();
- [RaisesException, TypeChecking=Interface] NodeList nodesFromRect(Document document, long x, long y,
+ [RaisesException] NodeList nodesFromRect(Document document, long x, long y,
unsigned long topPadding, unsigned long rightPadding, unsigned long bottomPadding, unsigned long leftPadding,
boolean ignoreClipping, boolean allowChildFrameContent);
- [TypeChecking=Interface] boolean hasSpellingMarker(Document document, long from, long length);
- [TypeChecking=Interface] boolean hasGrammarMarker(Document document, long from, long length);
+ boolean hasSpellingMarker(Document document, long from, long length);
+ boolean hasGrammarMarker(Document document, long from, long length);
void setContinuousSpellCheckingEnabled(boolean enabled);
- [TypeChecking=Interface] boolean isOverwriteModeEnabled(Document document);
- [TypeChecking=Interface] void toggleOverwriteModeEnabled(Document document);
+ boolean isOverwriteModeEnabled(Document document);
+ void toggleOverwriteModeEnabled(Document document);
- [TypeChecking=Interface] unsigned long numberOfScrollableAreas(Document document);
+ unsigned long numberOfScrollableAreas(Document document);
- [TypeChecking=Interface] boolean isPageBoxVisible(Document document, long pageNumber);
+ boolean isPageBoxVisible(Document document, long pageNumber);
readonly attribute InternalSettings settings;
readonly attribute InternalRuntimeFlags runtimeFlags;
readonly attribute unsigned long workerThreadCount;
// Flags for layerTreeAsText.
- // The values of these constants must be kept in sync with the values of LayerTreeAsTextBehaviorFlags in GraphicsLayerClient.h.
+ // The values of these constants must be kept in sync with the values of LayerTreeFlags in GraphicsLayerClient.h.
+ const unsigned short LAYER_TREE_INCLUDES_DEBUG_INFO = 1;
const unsigned short LAYER_TREE_INCLUDES_REPAINT_RECTS = 2;
const unsigned short LAYER_TREE_INCLUDES_PAINTING_PHASES = 4;
const unsigned short LAYER_TREE_INCLUDES_ROOT_LAYER = 8;
const unsigned short LAYER_TREE_INCLUDES_CLIP_AND_SCROLL_PARENTS = 16;
- const unsigned short LAYER_TREE_INCLUDES_SCROLL_BLOCKS_ON = 32;
- const unsigned short LAYER_TREE_INCLUDES_PAINT_INVALIDATION_OBJECTS = 64;
- const unsigned short LAYER_TREE_INCLUDES_COMPOSITING_REASONS = 128;
- [RaisesException, TypeChecking=Interface] DOMString layerTreeAsText(Document document, optional unsigned short flags);
- [RaisesException, TypeChecking=Interface] DOMString elementLayerTreeAsText(Element element, optional unsigned short flags);
+ const unsigned short LAYER_TREE_INCLUDES_PAINT_INVALIDATION_OBJECTS = 32;
+ const unsigned short LAYER_TREE_INCLUDES_COMPOSITING_REASONS = 64;
+ [RaisesException] DOMString layerTreeAsText(Document document, optional unsigned short flags);
+ [RaisesException] DOMString elementLayerTreeAsText(Element element, optional unsigned short flags);
- [RaisesException, TypeChecking=Interface] boolean scrollsWithRespectTo(Element element1, Element element2);
+ [RaisesException] boolean scrollsWithRespectTo(Element element1, Element element2);
- [TypeChecking=Interface] DOMString scrollingStateTreeAsText(Document document);
- [RaisesException, TypeChecking=Interface] DOMString mainThreadScrollingReasons(Document document);
- [RaisesException, TypeChecking=Interface] ClientRectList nonFastScrollableRects(Document document);
+ DOMString scrollingStateTreeAsText(Document document);
+ [RaisesException] DOMString mainThreadScrollingReasons(Document document);
+ [RaisesException] ClientRectList nonFastScrollableRects(Document document);
- [TypeChecking=Interface] void garbageCollectDocumentResources(Document document);
void evictAllResources();
unsigned long numberOfLiveNodes();
@@ -199,22 +201,22 @@
unsigned long[] setMemoryCacheCapacities(unsigned long minDeadBytes, unsigned long maxDeadBytes, unsigned long totalBytes);
DOMString counterValue(Element element);
- long pageNumber(Element element, optional float pageWidth, optional float pageHeight);
+ [RaisesException] long pageNumber(Element element, optional float pageWidth = 800, optional float pageHeight = 600);
DOMString[] shortcutIconURLs(Document document);
DOMString[] allIconURLs(Document document);
- long numberOfPages(optional double pageWidthInPixels, optional double pageHeightInPixels);
+ [RaisesException] long numberOfPages(optional double pageWidthInPixels = 800, optional double pageHeightInPixels = 600);
[RaisesException] DOMString pageProperty(DOMString propertyName, long pageNumber);
[RaisesException] DOMString pageSizeAndMarginsInPixels(long pageIndex, long width, long height, long marginTop, long marginRight, long marginBottom, long marginLeft);
- [RaisesException] void setDeviceScaleFactor(float scaleFactor);
[RaisesException] void setPageScaleFactor(float scaleFactor);
[RaisesException] void setPageScaleFactorLimits(float minScaleFactor, float maxScaleFactor);
- [RaisesException, TypeChecking=Interface] void setIsCursorVisible(Document document, boolean isVisible);
+ [RaisesException] void setIsCursorVisible(Document document, boolean isVisible);
- [TypeChecking=Interface] double effectiveMediaVolume(HTMLMediaElement mediaElement);
- [TypeChecking=Interface] void mediaPlayerRemoteRouteAvailabilityChanged(HTMLMediaElement mediaElement, boolean available);
- [TypeChecking=Interface] void mediaPlayerPlayingRemotelyChanged(HTMLMediaElement mediaElement, boolean remote);
+ double effectiveMediaVolume(HTMLMediaElement mediaElement);
+ void mediaPlayerRemoteRouteAvailabilityChanged(HTMLMediaElement mediaElement, boolean available);
+ void mediaPlayerPlayingRemotelyChanged(HTMLMediaElement mediaElement, boolean remote);
+ void setAllowHiddenVolumeControls(HTMLMediaElement mediaElement, boolean allow);
void registerURLSchemeAsBypassingContentSecurityPolicy(DOMString scheme);
void registerURLSchemeAsBypassingContentSecurityPolicy(DOMString scheme, sequence<DOMString> policyAreas);
@@ -229,50 +231,62 @@
DOMString[] getReferencedFilePaths();
- // These functions both reset the tracked repaint rects. They are inteded to be used in the following order:
- // startTrackingRepaints, repaintRectsAsText, stopTrackingRepaints.
- [RaisesException, TypeChecking=Interface] void startTrackingRepaints(Document document);
- [RaisesException, TypeChecking=Interface] void stopTrackingRepaints(Document document);
+ // These functions both reset the tracked repaint rects. They are intended to be used in the following order:
+ // startTrackingRepaints(), repaintRectsAsText(), stopTrackingRepaints().
+ // TODO(wangxianzhu): Remove these functions when we no longer use repaint rects.
+ [RaisesException] void startTrackingRepaints(Document document);
+ [RaisesException] void stopTrackingRepaints(Document document);
// |node| should be Document, HTMLIFrameElement, or unspecified.
// If |node| is an HTMLIFrameElement, it assumes node.contentDocument is
// specified without security checks. Unspecified means this document.
[RaisesException] void updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(optional Node? node = null);
- [RaisesException, TypeChecking=Interface] void forceFullRepaint(Document document);
+ [RaisesException] void forceFullRepaint(Document document);
+
+ // These functions both reset the tracked paint invalidation objects. They are intended to be used in the following order:
+ // startTrackingPaintInvalidationObjects(), trackedPaintInvalidationObjects(), stopTrackingPaintInvalidationObjects().
+ void startTrackingPaintInvalidationObjects();
+ void stopTrackingPaintInvalidationObjects();
+
+ // Returns a list of debug strings for objects that were invalidated between
+ // startTrackingPaintInvalidationObjects() and stopTrackingPaintInvalidationObjects().
+ // If an object is invalidated multiple times, it will appear in the list multiple times.
+ DOMString[] trackedPaintInvalidationObjects();
// Returns a list of draggable/non-draggable regions in the document.
- [RaisesException, TypeChecking=Interface] ClientRectList draggableRegions(Document document);
- [RaisesException, TypeChecking=Interface] ClientRectList nonDraggableRegions(Document document);
+ [RaisesException] ClientRectList draggableRegions(Document document);
+ [RaisesException] ClientRectList nonDraggableRegions(Document document);
// Returns a string with information about the mouse cursor used at the specified client location.
- [TypeChecking=Interface] DOMString getCurrentCursorInfo();
+ DOMString getCurrentCursorInfo();
readonly attribute boolean cursorUpdatePending;
- [TypeChecking=Interface] DOMString markerTextForListItem(Element element);
+ DOMString markerTextForListItem(Element element);
SerializedScriptValue deserializeBuffer(ArrayBuffer buffer);
ArrayBuffer serializeObject(SerializedScriptValue obj);
void forceReload(boolean endToEnd);
- [TypeChecking=Interface] DOMString getImageSourceURL(Element element);
+ DOMString getImageSourceURL(Element element);
- [TypeChecking=Interface] DOMString selectMenuListText(HTMLSelectElement select);
- [TypeChecking=Interface] boolean isSelectPopupVisible(Node node);
+ DOMString selectMenuListText(HTMLSelectElement select);
+ boolean isSelectPopupVisible(Node node);
boolean selectPopupItemStyleIsRtl(Node select, long itemIndex);
long selectPopupItemStyleFontHeight(Node select, long itemIndex);
+ void resetTypeAheadSession(HTMLSelectElement select);
[RaisesException] ClientRect selectionBounds();
boolean loseSharedGraphicsContext3D();
- [RaisesException, TypeChecking=Interface] void forceCompositingUpdate(Document document);
+ [RaisesException] void forceCompositingUpdate(Document document);
void setZoomFactor(float factor);
- [RaisesException, TypeChecking=Interface] void setShouldRevealPassword(Element element, boolean reveal);
+ [RaisesException] void setShouldRevealPassword(Element element, boolean reveal);
[CallWith=ScriptState] Promise createResolvedPromise(any value);
[CallWith=ScriptState] Promise createRejectedPromise(any reason);
@@ -291,35 +305,37 @@
void setFocused(boolean focused);
void setInitialFocus(boolean reverse);
- [TypeChecking=Interface] boolean ignoreLayoutWithPendingStylesheets(Document document);
+ boolean ignoreLayoutWithPendingStylesheets(Document document);
// These functions are for testing NetInfo. You must call setNetworkStateNotifierTestOnly(true)
// before calling setNetworkConnectionInfo.
void setNetworkStateNotifierTestOnly(boolean testOnly);
- [RaisesException] void setNetworkConnectionInfo(DOMString type);
+ [RaisesException] void setNetworkConnectionInfo(DOMString type, double downlinkMaxMbps);
// This function is for testing HitRegions on Canvas2D.
unsigned long countHitRegions(CanvasRenderingContext2D context);
- [TypeChecking=Interface] boolean isInCanvasFontCache(Document document, DOMString fontString);
- [TypeChecking=Interface] unsigned long canvasFontCacheMaxFonts();
-
- [TypeChecking=Interface] ClientRect boundsInViewportSpace(Element element);
-
- [RaisesException, TypeChecking=Interface] void forcePluginPlaceholder(HTMLElement plugin, DocumentFragment fragment);
- [RaisesException, TypeChecking=Interface] void forcePluginPlaceholder(HTMLElement plugin, PluginPlaceholderOptions options);
+ boolean isInCanvasFontCache(Document document, DOMString fontString);
+ unsigned long canvasFontCacheMaxFonts();
DictionaryTest dictionaryTest();
UnionTypesTest unionTypesTest();
-
+ [RaisesException] void setScrollChain(ScrollState scrollState, Element[] elements);
void forceBlinkGCWithoutV8GC();
DOMString selectedHTMLForClipboard();
DOMString selectedTextForClipboard();
void setVisualViewportOffset(long x, long y);
+ int visualViewportHeight();
+ int visualViewportWidth();
+ double visualViewportScrollX();
+ double visualViewportScrollY();
+
+ bool magnifyScaleAroundAnchor(float offset, float x, float y);
boolean isUseCounted(Document document, long useCounterId);
+ boolean isCSSPropertyUseCounted(Document document, DOMString propertyName);
iterable<long>;
@@ -327,5 +343,20 @@
[Unscopeable] DOMString unscopeableMethod();
ClientRectList focusRingRects(Element element);
+ ClientRectList outlineRects(Element element);
void setCapsLockState(boolean enabled);
+
+ // Returns whether the scrollbar was able to be shown or hidden; not all platforms
+ // support overlay scrollbars.
+ bool setScrollbarVisibilityInScrollableArea(Node node, boolean visible);
+
+ void forceRestrictIFramePermissions();
+ [RaisesException] double monotonicTimeToZeroBasedDocumentTime(double platformTime);
+
+ void setMediaElementNetworkState(HTMLMediaElement element, long state);
+
+ // TODO(liberato): remove once autoplay gesture override experiment concludes.
+ void triggerAutoplayViewportCheck(HTMLMediaElement mediaElement);
+
+ int getScrollAnimationState(Node node);
};
diff --git a/core/testing/PluginPlaceholderOptions.idl b/core/testing/PluginPlaceholderOptions.idl
deleted file mode 100644
index c478c29..0000000
--- a/core/testing/PluginPlaceholderOptions.idl
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-dictionary PluginPlaceholderOptions {
- DOMString message;
- boolean closeable;
-};
diff --git a/core/testing/PrivateScriptTest.idl b/core/testing/PrivateScriptTest.idl
index f2dd041..8e6d976 100644
--- a/core/testing/PrivateScriptTest.idl
+++ b/core/testing/PrivateScriptTest.idl
@@ -4,7 +4,6 @@
[
GarbageCollected,
- TypeChecking=Interface,
] interface PrivateScriptTest {
[ImplementedInPrivateScript] void doNothing();
[ImplementedInPrivateScript] short return123();
diff --git a/core/testing/TypeConversions.idl b/core/testing/TypeConversions.idl
index fbe1673..a937e5e 100644
--- a/core/testing/TypeConversions.idl
+++ b/core/testing/TypeConversions.idl
@@ -47,18 +47,10 @@
[EnforceRange, ImplementedAs=testUnsignedShort] attribute unsigned short testEnforceRangeUnsignedShort;
attribute ByteString testByteString;
- [ImplementedAs=testByteString, TreatReturnedNullStringAs=Null] attribute ByteString testByteStringTreatReturnedNullStringAsNullAttribute;
- [ImplementedAs=testByteString, TreatReturnedNullStringAs=Undefined] attribute ByteString testByteStringTreatReturnedNullStringAsUndefinedAttribute;
- [ImplementedAs=testByteString] ByteString? getTestByteStringTreatReturnedNullStringAsNullMethod();
- [ImplementedAs=testByteString, TreatReturnedNullStringAs=Undefined] ByteString getTestByteStringTreatReturnedNullStringAsUndefinedMethod();
void setTestByteString(ByteString byteString);
[ImplementedAs=setTestByteString] void setTestByteStringDefaultNull(optional ByteString byteString = null);
attribute USVString testUSVString;
- [ImplementedAs=testUSVString, TreatReturnedNullStringAs=Null] attribute USVString testUSVStringTreatReturnedNullStringAsNullAttribute;
- [ImplementedAs=testUSVString, TreatReturnedNullStringAs=Undefined] attribute USVString testUSVStringTreatReturnedNullStringAsUndefinedAttribute;
- [ImplementedAs=testUSVString] USVString? getTestUSVStringTreatReturnedNullStringAsNullMethod();
- [ImplementedAs=testUSVString, TreatReturnedNullStringAs=Undefined] USVString getTestUSVStringTreatReturnedNullStringAsUndefinedMethod();
void setTestUSVString(USVString usvString);
[ImplementedAs=setTestUSVString] void setTestUSVStringDefaultNull(optional USVString usvString = null);
};
diff --git a/core/timing/ConsoleMemory.idl b/core/timing/ConsoleMemory.idl
index 2cf01b6..4a19192 100644
--- a/core/timing/ConsoleMemory.idl
+++ b/core/timing/ConsoleMemory.idl
@@ -7,5 +7,5 @@
partial interface Console {
// We can't make the attribute readonly as it breaks existing code that relies on being able to assign to console.memory in strict mode. Instead, the setter just ignores the passed value. http://crbug.com/468611
- [Measure] attribute MemoryInfo memory;
+ [Measure, LegacyInterfaceTypeChecking] attribute MemoryInfo memory;
};
diff --git a/core/timing/Performance.idl b/core/timing/Performance.idl
index 6a8fab6..44eccbc 100644
--- a/core/timing/Performance.idl
+++ b/core/timing/Performance.idl
@@ -35,7 +35,9 @@
// would allow the WorkerPerformance interface to be merged into this.
// TODO(philipj): None of the optional DOMString arguments in this interface
// should have a default value.
-interface Performance : EventTarget {
+[
+ GarbageCollected
+] interface Performance : EventTarget {
DOMHighResTimeStamp now();
// Performance Timeline
@@ -47,19 +49,19 @@
// Resource Timing
// https://w3c.github.io/resource-timing/#extensions-performance-interface
- // TODO(philipj): Unprefix these APIs.
- [MeasureAs=PrefixedPerformanceClearResourceTimings] void webkitClearResourceTimings();
- [MeasureAs=PrefixedPerformanceSetResourceTimingBufferSize] void webkitSetResourceTimingBufferSize(unsigned long maxSize);
- attribute EventHandler onwebkitresourcetimingbufferfull;
+ void clearResourceTimings();
+ void setResourceTimingBufferSize(unsigned long maxSize);
+ attribute EventHandler onresourcetimingbufferfull;
+
+ // TODO(ksakamoto): Remove these prefixed APIs.
+ [DeprecateAs=PrefixedPerformanceClearResourceTimings, ImplementedAs=clearResourceTimings] void webkitClearResourceTimings();
+ [DeprecateAs=PrefixedPerformanceSetResourceTimingBufferSize, ImplementedAs=setResourceTimingBufferSize] void webkitSetResourceTimingBufferSize(unsigned long maxSize);
+ [DeprecateAs=PrefixedPerformanceResourceTimingBufferFull] attribute EventHandler onwebkitresourcetimingbufferfull;
// Navigation Timing
- // http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
- // TODO(philipj): The Navigation Timing Rec. defines the (not partial)
- // Performance interface, while https://w3c.github.io/navigation-timing/ has
- // changed the interface in an incompatible way:
- // https://github.com/w3c/navigation-timing/issues/22
- [Measure] readonly attribute PerformanceTiming timing;
- [Measure] readonly attribute PerformanceNavigation navigation;
+ // https://w3c.github.io/navigation-timing/#extensions-to-the-performance-interface
+ [SameObject, Measure] readonly attribute PerformanceTiming timing;
+ [SameObject, Measure] readonly attribute PerformanceNavigation navigation;
// User Timing
// https://w3c.github.io/user-timing/#extensions-performance-interface
diff --git a/core/timing/PerformanceNavigation.idl b/core/timing/PerformanceNavigation.idl
index 4ed6c06..30ee7b2 100644
--- a/core/timing/PerformanceNavigation.idl
+++ b/core/timing/PerformanceNavigation.idl
@@ -28,13 +28,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface
-
-// TODO(philipj): This interface been morphed into PerformanceNavigationTiming
-// in the latest spec:
-// https://w3c.github.io/navigation-timing/#sec-PerformanceNavigationTiming
+// https://w3c.github.io/navigation-timing/#the-performancenavigation-interface
[
+ Exposed=Window,
GarbageCollected
] interface PerformanceNavigation {
const unsigned short TYPE_NAVIGATE = 0;
@@ -43,4 +40,5 @@
const unsigned short TYPE_RESERVED = 255;
readonly attribute unsigned short type;
readonly attribute unsigned short redirectCount;
+ // TODO(philipj): serializer = {attribute};
};
diff --git a/core/timing/PerformanceObserver.idl b/core/timing/PerformanceObserver.idl
new file mode 100644
index 0000000..de04cb9
--- /dev/null
+++ b/core/timing/PerformanceObserver.idl
@@ -0,0 +1,16 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://w3c.github.io/performance-timeline/#idl-def-PerformanceObserverCallback
+callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries, PerformanceObserver observer);
+
+// http://w3c.github.io/performance-timeline/#the-performance-observer-interface
+[
+ CustomConstructor(PerformanceObserverCallback callback),
+ RuntimeEnabled=PerformanceObserver,
+ GarbageCollected,
+] interface PerformanceObserver {
+ [RaisesException] void observe(PerformanceObserverInit options);
+ void disconnect();
+};
diff --git a/core/timing/PerformanceObserverEntryList.idl b/core/timing/PerformanceObserverEntryList.idl
new file mode 100644
index 0000000..0d34346
--- /dev/null
+++ b/core/timing/PerformanceObserverEntryList.idl
@@ -0,0 +1,16 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://w3c.github.io/performance-timeline/#the-performance-observer-interface
+
+[
+ RuntimeEnabled=PerformanceObserver,
+ Exposed=(Window,Worker),
+ GarbageCollected,
+] interface PerformanceObserverEntryList {
+ // TODO(philipj): getEntries() should take an optional FilterOptions argument.
+ sequence<PerformanceEntry> getEntries();
+ sequence<PerformanceEntry> getEntriesByType(DOMString entryType);
+ sequence<PerformanceEntry> getEntriesByName(DOMString name, optional DOMString entryType = null);
+};
diff --git a/core/timing/PerformanceObserverInit.idl b/core/timing/PerformanceObserverInit.idl
new file mode 100644
index 0000000..635a31c
--- /dev/null
+++ b/core/timing/PerformanceObserverInit.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://w3c.github.io/performance-timeline/#the-performance-observer-interface
+[
+ RuntimeEnabled=PerformanceObserver,
+] dictionary PerformanceObserverInit {
+ required sequence<DOMString> entryTypes;
+};
diff --git a/core/timing/PerformanceTiming.idl b/core/timing/PerformanceTiming.idl
index 10fc224..2a7bcc7 100644
--- a/core/timing/PerformanceTiming.idl
+++ b/core/timing/PerformanceTiming.idl
@@ -28,13 +28,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface
-
-// TODO(philipj): This interface been morphed into PerformanceNavigationTiming
-// in the latest spec:
-// https://w3c.github.io/navigation-timing/#sec-PerformanceNavigationTiming
+// https://w3c.github.io/navigation-timing/#the-performancetiming-interface
[
+ Exposed=Window,
GarbageCollected
] interface PerformanceTiming {
readonly attribute unsigned long long navigationStart;
@@ -58,7 +55,5 @@
readonly attribute unsigned long long domComplete;
readonly attribute unsigned long long loadEventStart;
readonly attribute unsigned long long loadEventEnd;
-
- // TODO(philipj): This serializer is not defined in the spec.
serializer = {attribute};
};
diff --git a/core/timing/WindowPerformance.idl b/core/timing/WindowPerformance.idl
index 9418d5d..209a4cd 100644
--- a/core/timing/WindowPerformance.idl
+++ b/core/timing/WindowPerformance.idl
@@ -2,11 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
+// https://w3c.github.io/hr-time/#the-performance-interface
-// TODO(philipj): Window.performance should be in High Resolution Time:
-// https://github.com/w3c/hr-time/issues/9
-
+// TODO(philipj): This should be a GlobalPerformance interface implemented by
+// Window and WorkerGlobalScope.
[
ImplementedAs=DOMWindowPerformance,
] partial interface Window {
diff --git a/core/timing/WorkerGlobalScopePerformance.idl b/core/timing/WorkerGlobalScopePerformance.idl
index 1682a6e..d283fd8 100644
--- a/core/timing/WorkerGlobalScopePerformance.idl
+++ b/core/timing/WorkerGlobalScopePerformance.idl
@@ -28,9 +28,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// TODO(philipj): There is no spec for WorkerGlobalScope.performance:
-// https://github.com/w3c/hr-time/issues/10
+// https://w3c.github.io/hr-time/#the-performance-interface
+// TODO(philipj): This should be a GlobalPerformance interface implemented by
+// Window and WorkerGlobalScope.
partial interface WorkerGlobalScope {
readonly attribute WorkerPerformance performance;
};
diff --git a/core/timing/WorkerPerformance.idl b/core/timing/WorkerPerformance.idl
index 07c17c4..b3ac8ac 100644
--- a/core/timing/WorkerPerformance.idl
+++ b/core/timing/WorkerPerformance.idl
@@ -48,10 +48,9 @@
// Resource Timing
// https://w3c.github.io/resource-timing/#extensions-performance-interface
- // TODO(philipj): Unprefix these APIs.
- [RuntimeEnabled=ServiceWorkerPerformanceTimeline, MeasureAs=PrefixedPerformanceClearResourceTimings] void webkitClearResourceTimings();
- [RuntimeEnabled=ServiceWorkerPerformanceTimeline, MeasureAs=PrefixedPerformanceSetResourceTimingBufferSize] void webkitSetResourceTimingBufferSize(unsigned long maxSize);
- [RuntimeEnabled=ServiceWorkerPerformanceTimeline] attribute EventHandler onwebkitresourcetimingbufferfull;
+ [RuntimeEnabled=ServiceWorkerPerformanceTimeline] void clearResourceTimings();
+ [RuntimeEnabled=ServiceWorkerPerformanceTimeline] void setResourceTimingBufferSize(unsigned long maxSize);
+ [RuntimeEnabled=ServiceWorkerPerformanceTimeline] attribute EventHandler onresourcetimingbufferfull;
// User Timing
// https://w3c.github.io/user-timing/#extensions-performance-interface
diff --git a/core/workers/AbstractWorker.idl b/core/workers/AbstractWorker.idl
index ee524ab..c88428d 100644
--- a/core/workers/AbstractWorker.idl
+++ b/core/workers/AbstractWorker.idl
@@ -35,7 +35,7 @@
LegacyTreatAsPartialInterface,
NoInterfaceObject, // Always used on target of 'implements'
Exposed=(Window,Worker),
- WillBeGarbageCollected,
+ GarbageCollected,
] interface AbstractWorker {
attribute EventHandler onerror;
};
diff --git a/core/workers/SharedWorker.idl b/core/workers/SharedWorker.idl
index 3e94cab..3cb45e7 100644
--- a/core/workers/SharedWorker.idl
+++ b/core/workers/SharedWorker.idl
@@ -32,10 +32,11 @@
// https://html.spec.whatwg.org/#shared-workers-and-the-sharedworker-interface
[
- ActiveDOMObject,
+ DependentLifetime,
// TODO(philipj): The name argument should not have a default null value.
Constructor(DOMString scriptURL, optional DOMString name = null),
ConstructorCallWith=ExecutionContext,
+ GarbageCollected,
// TODO(philipj): Exposed=(Window,Worker),
RaisesException=Constructor,
RuntimeEnabled=SharedWorker,
diff --git a/core/workers/Worker.idl b/core/workers/Worker.idl
index cd657ab..70e5235 100644
--- a/core/workers/Worker.idl
+++ b/core/workers/Worker.idl
@@ -28,9 +28,10 @@
// https://html.spec.whatwg.org/#dedicated-workers-and-the-worker-interface
[
- ActiveDOMObject,
+ DependentLifetime,
Constructor(DOMString scriptUrl),
ConstructorCallWith=ExecutionContext,
+ GarbageCollected,
// TODO(philipj): Exposed=(Window,Worker),
RaisesException=Constructor,
] interface Worker : EventTarget {
diff --git a/core/xml/DocumentXPathEvaluator.idl b/core/xml/DocumentXPathEvaluator.idl
index 12c03ff..5f47dc4 100644
--- a/core/xml/DocumentXPathEvaluator.idl
+++ b/core/xml/DocumentXPathEvaluator.idl
@@ -19,9 +19,7 @@
// http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator
-[
- TypeChecking=Interface,
-] partial interface Document {
+partial interface Document {
[MeasureAs=DocumentXPathCreateExpression, RaisesException] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null);
[MeasureAs=DocumentXPathCreateNSResolver] XPathNSResolver createNSResolver(Node nodeResolver);
diff --git a/core/xml/XMLSerializer.idl b/core/xml/XMLSerializer.idl
index ee2e83c..9995b0e 100644
--- a/core/xml/XMLSerializer.idl
+++ b/core/xml/XMLSerializer.idl
@@ -23,7 +23,6 @@
[
Constructor,
GarbageCollected,
- TypeChecking=Interface,
] interface XMLSerializer {
DOMString serializeToString(Node root);
};
diff --git a/core/xml/XPathEvaluator.idl b/core/xml/XPathEvaluator.idl
index 70f258f..0210849 100644
--- a/core/xml/XPathEvaluator.idl
+++ b/core/xml/XPathEvaluator.idl
@@ -29,7 +29,6 @@
Constructor,
GarbageCollected,
Measure,
- TypeChecking=Interface,
] interface XPathEvaluator {
[Measure, RaisesException] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null);
diff --git a/core/xml/XPathExpression.idl b/core/xml/XPathExpression.idl
index 397fb25..3effc99 100644
--- a/core/xml/XPathExpression.idl
+++ b/core/xml/XPathExpression.idl
@@ -22,7 +22,6 @@
[
GarbageCollected,
- TypeChecking=Interface,
] interface XPathExpression {
[RaisesException] XPathResult evaluate(Node contextNode, optional unsigned short type = 0, optional object? inResult = null);
};
diff --git a/core/xml/XSLTProcessor.idl b/core/xml/XSLTProcessor.idl
index 221628f..b7b5158 100644
--- a/core/xml/XSLTProcessor.idl
+++ b/core/xml/XSLTProcessor.idl
@@ -36,7 +36,6 @@
ConstructorCallWith=Document,
RuntimeEnabled=XSLT,
MeasureAs=XSLTProcessor,
- TypeChecking=Interface,
] interface XSLTProcessor {
void importStylesheet(Node style);
diff --git a/core/xmlhttprequest/XMLHttpRequest.idl b/core/xmlhttprequest/XMLHttpRequest.idl
index da14664..28d9452 100644
--- a/core/xmlhttprequest/XMLHttpRequest.idl
+++ b/core/xmlhttprequest/XMLHttpRequest.idl
@@ -41,11 +41,9 @@
// TODO(philipj): Most DOMString types in the XMLHttpRequest interface should be
// either ByteString or USVString.
[
- ActiveDOMObject,
+ DependentLifetime,
Constructor,
ConstructorCallWith=ScriptState,
- // TODO(philipj): The spec has Exposed=(Window,Worker)
- // https://github.com/whatwg/xhr/issues/19
Exposed=(Window,DedicatedWorker,SharedWorker)
] interface XMLHttpRequest : XMLHttpRequestEventTarget {
// event handler
diff --git a/core/xmlhttprequest/XMLHttpRequestEventTarget.idl b/core/xmlhttprequest/XMLHttpRequestEventTarget.idl
index 6854477..154a1a5 100644
--- a/core/xmlhttprequest/XMLHttpRequestEventTarget.idl
+++ b/core/xmlhttprequest/XMLHttpRequestEventTarget.idl
@@ -28,8 +28,6 @@
[
GarbageCollected,
- // TODO(philipj): The spec has Exposed=(Window,Worker)
- // https://github.com/whatwg/xhr/issues/19
Exposed=(Window,DedicatedWorker,SharedWorker)
] interface XMLHttpRequestEventTarget : EventTarget {
// event handlers
diff --git a/core/xmlhttprequest/XMLHttpRequestProgressEvent.idl b/core/xmlhttprequest/XMLHttpRequestProgressEvent.idl
deleted file mode 100644
index 950a854..0000000
--- a/core/xmlhttprequest/XMLHttpRequestProgressEvent.idl
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2008, 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// TODO(philipj): Remove this interface together with position/totalSize.
-interface XMLHttpRequestProgressEvent : ProgressEvent {
- [DeprecateAs=XHRProgressEventPosition] readonly attribute unsigned long long position;
- [DeprecateAs=XHRProgressEventTotalSize] readonly attribute unsigned long long totalSize;
-};
diff --git a/core/xmlhttprequest/XMLHttpRequestUpload.idl b/core/xmlhttprequest/XMLHttpRequestUpload.idl
index a5ac933..325a6ff 100644
--- a/core/xmlhttprequest/XMLHttpRequestUpload.idl
+++ b/core/xmlhttprequest/XMLHttpRequestUpload.idl
@@ -28,7 +28,7 @@
// https://xhr.spec.whatwg.org/#xmlhttprequestupload
-// TODO(philipj): The spec has Exposed=(Window,Worker)
-// https://github.com/whatwg/xhr/issues/19
-interface XMLHttpRequestUpload : XMLHttpRequestEventTarget {
+[
+ Exposed=(Window,DedicatedWorker,SharedWorker)
+] interface XMLHttpRequestUpload : XMLHttpRequestEventTarget {
};
diff --git a/modules/README b/modules/README
deleted file mode 100644
index 630832e..0000000
--- a/modules/README
+++ /dev/null
@@ -1,9 +0,0 @@
-This directory contains a copy of WebKit/WebCore IDL files.
-See the attached LICENSE-* files in this directory.
-
-Please do not modify the files here. They are periodically copied
-using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
-
-The current version corresponds to:
-URL: https://src.chromium.org/blink/branches/dart/2454_1
-Current revision: 202759
diff --git a/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.idl b/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.idl
index a530d62..b8a3195 100644
--- a/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.idl
+++ b/modules/audio_output_devices/HTMLMediaElementAudioOutputDevice.idl
@@ -6,6 +6,5 @@
partial interface HTMLMediaElement {
[RuntimeEnabled=AudioOutputDevices] readonly attribute DOMString sinkId;
- [RuntimeEnabled=AudioOutputDevices, TypeChecking=Interface, CallWith=ScriptState] Promise<void> setSinkId(DOMString sinkId);
+ [RuntimeEnabled=AudioOutputDevices, CallWith=ScriptState] Promise<void> setSinkId(DOMString sinkId);
};
-
diff --git a/modules/background_sync/PeriodicSyncEvent.idl b/modules/background_sync/PeriodicSyncEvent.idl
deleted file mode 100644
index 826fb6c..0000000
--- a/modules/background_sync/PeriodicSyncEvent.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- Constructor(DOMString type, PeriodicSyncEventInit init),
- Exposed=ServiceWorker,
- RuntimeEnabled=BackgroundSync,
-] interface PeriodicSyncEvent : ExtendableEvent {
- readonly attribute PeriodicSyncRegistration registration;
-};
diff --git a/modules/background_sync/PeriodicSyncManager.idl b/modules/background_sync/PeriodicSyncManager.idl
deleted file mode 100644
index 44c3f76..0000000
--- a/modules/background_sync/PeriodicSyncManager.idl
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- Exposed=(Window,ServiceWorker),
- GarbageCollected,
- RuntimeEnabled=BackgroundSync,
- TypeChecking=Interface,
-] interface PeriodicSyncManager {
- [CallWith=ScriptState,ImplementedAs=registerFunction] Promise<PeriodicSyncRegistration> register([RuntimeEnabled=BackgroundSyncV2] optional PeriodicSyncRegistrationOptions options);
- [RuntimeEnabled=BackgroundSyncV2, CallWith=ScriptState] Promise<PeriodicSyncRegistration> getRegistration(DOMString tag);
- [RuntimeEnabled=BackgroundSyncV2, CallWith=ScriptState] Promise<sequence<PeriodicSyncRegistration>> getRegistrations();
- [RuntimeEnabled=BackgroundSyncV2, CallWith=ScriptState] Promise<SyncPermissionState> permissionState();
- [RuntimeEnabled=BackgroundSyncV2] readonly attribute unsigned long minPossiblePeriod;
-};
diff --git a/modules/background_sync/PeriodicSyncRegistration.idl b/modules/background_sync/PeriodicSyncRegistration.idl
deleted file mode 100644
index 4cc19f6..0000000
--- a/modules/background_sync/PeriodicSyncRegistration.idl
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-enum SyncNetworkState {
- "any",
- "avoid-cellular",
- "online"
-};
-
-enum SyncPowerState {
- "auto",
- "avoid-draining"
-};
-
-[
- Exposed=(Window,ServiceWorker),
- GarbageCollected,
- RuntimeEnabled=BackgroundSync,
-] interface PeriodicSyncRegistration {
- [RuntimeEnabled=BackgroundSyncV2] readonly attribute DOMString tag;
- [RuntimeEnabled=BackgroundSyncV2] readonly attribute unsigned long minPeriod;
- [RuntimeEnabled=BackgroundSyncV2] readonly attribute SyncNetworkState networkState;
- [RuntimeEnabled=BackgroundSyncV2] readonly attribute SyncPowerState powerState;
- [CallWith=ScriptState] Promise<boolean> unregister();
-};
diff --git a/modules/background_sync/PeriodicSyncRegistrationOptions.idl b/modules/background_sync/PeriodicSyncRegistrationOptions.idl
deleted file mode 100644
index 97c0a82..0000000
--- a/modules/background_sync/PeriodicSyncRegistrationOptions.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- RuntimeEnabled=BackgroundSync,
-] dictionary PeriodicSyncRegistrationOptions {
- DOMString tag;
- unsigned long minPeriod = 0;
- SyncNetworkState networkState = "network-online";
- SyncPowerState powerState = "auto";
-};
diff --git a/modules/background_sync/ServiceWorkerGlobalScopeSync.idl b/modules/background_sync/ServiceWorkerGlobalScopeSync.idl
index f8a766a..0860b81 100644
--- a/modules/background_sync/ServiceWorkerGlobalScopeSync.idl
+++ b/modules/background_sync/ServiceWorkerGlobalScopeSync.idl
@@ -6,5 +6,4 @@
RuntimeEnabled=BackgroundSync,
] partial interface ServiceWorkerGlobalScope {
attribute EventHandler onsync;
- attribute EventHandler onperiodicsync;
};
diff --git a/modules/background_sync/ServiceWorkerRegistrationSync.idl b/modules/background_sync/ServiceWorkerRegistrationSync.idl
index ee4ad72..0620451 100644
--- a/modules/background_sync/ServiceWorkerRegistrationSync.idl
+++ b/modules/background_sync/ServiceWorkerRegistrationSync.idl
@@ -7,5 +7,4 @@
RuntimeEnabled=BackgroundSync,
] partial interface ServiceWorkerRegistration {
[MeasureAs=BackgroundSync] readonly attribute SyncManager sync;
- [MeasureAs=BackgroundSync] readonly attribute PeriodicSyncManager periodicSync;
};
diff --git a/modules/background_sync/SyncEvent.idl b/modules/background_sync/SyncEvent.idl
index ae8a874..f663de0 100644
--- a/modules/background_sync/SyncEvent.idl
+++ b/modules/background_sync/SyncEvent.idl
@@ -7,5 +7,6 @@
Exposed=ServiceWorker,
RuntimeEnabled=BackgroundSync,
] interface SyncEvent : ExtendableEvent {
- readonly attribute SyncRegistration registration;
+ readonly attribute DOMString tag;
+ readonly attribute boolean lastChance;
};
diff --git a/modules/background_sync/SyncEventInit.idl b/modules/background_sync/SyncEventInit.idl
index a7d2f51..1a2a804 100644
--- a/modules/background_sync/SyncEventInit.idl
+++ b/modules/background_sync/SyncEventInit.idl
@@ -3,5 +3,6 @@
// found in the LICENSE file.
dictionary SyncEventInit : ExtendableEventInit {
- required SyncRegistration registration;
+ required DOMString tag;
+ boolean lastChance = false;
};
diff --git a/modules/background_sync/SyncManager.idl b/modules/background_sync/SyncManager.idl
index a8a9962..16899c1 100644
--- a/modules/background_sync/SyncManager.idl
+++ b/modules/background_sync/SyncManager.idl
@@ -12,10 +12,7 @@
Exposed=(Window,ServiceWorker),
GarbageCollected,
RuntimeEnabled=BackgroundSync,
- TypeChecking=Interface,
] interface SyncManager {
- [CallWith=ScriptState,ImplementedAs=registerFunction] Promise<SyncRegistration> register([RuntimeEnabled=BackgroundSyncV2] optional SyncRegistrationOptions options);
- [RuntimeEnabled=BackgroundSyncV2, CallWith=ScriptState] Promise<SyncRegistration> getRegistration(DOMString tag);
- [RuntimeEnabled=BackgroundSyncV2, CallWith=ScriptState] Promise<sequence<SyncRegistration>> getRegistrations();
- [RuntimeEnabled=BackgroundSyncV2, CallWith=ScriptState] Promise<SyncPermissionState> permissionState();
+ [MeasureAs=BackgroundSyncRegister,CallWith=(ScriptState,ExecutionContext),ImplementedAs=registerFunction] Promise<void> register(DOMString tag);
+ [CallWith=ScriptState] Promise<sequence<DOMString>> getTags();
};
diff --git a/modules/background_sync/SyncRegistration.idl b/modules/background_sync/SyncRegistration.idl
deleted file mode 100644
index 171e3e4..0000000
--- a/modules/background_sync/SyncRegistration.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[
- Exposed=(Window,ServiceWorker),
- GarbageCollected,
- RuntimeEnabled=BackgroundSync,
-] interface SyncRegistration {
- [RuntimeEnabled=BackgroundSyncV2] readonly attribute DOMString tag;
- [CallWith=ScriptState] Promise<boolean> unregister();
-};
diff --git a/modules/battery/BatteryManager.idl b/modules/battery/BatteryManager.idl
index 1237a51..26eebff 100644
--- a/modules/battery/BatteryManager.idl
+++ b/modules/battery/BatteryManager.idl
@@ -4,7 +4,7 @@
// https://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html#batterymanager-interface
[
- ActiveDOMObject
+ DependentLifetime
] interface BatteryManager : EventTarget {
readonly attribute boolean charging;
readonly attribute unrestricted double chargingTime;
diff --git a/modules/battery/testing/InternalsBattery.idl b/modules/battery/testing/InternalsBattery.idl
new file mode 100644
index 0000000..69256c9
--- /dev/null
+++ b/modules/battery/testing/InternalsBattery.idl
@@ -0,0 +1,9 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// TODO(yukishiino): Remove this API once JS bindings of Mojo services get
+// available.
+partial interface Internals {
+ void updateBatteryStatus(boolean charging, float chargingTime, float dischargingTime, float level);
+};
diff --git a/modules/bluetooth/Bluetooth.idl b/modules/bluetooth/Bluetooth.idl
index 28cf361..4055338 100644
--- a/modules/bluetooth/Bluetooth.idl
+++ b/modules/bluetooth/Bluetooth.idl
@@ -8,6 +8,8 @@
GarbageCollected,
NoInterfaceObject,
RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
] interface Bluetooth {
[CallWith=ScriptState, RaisesException] Promise<BluetoothDevice> requestDevice (
RequestDeviceOptions options
diff --git a/modules/bluetooth/BluetoothAdvertisingData.idl b/modules/bluetooth/BluetoothAdvertisingData.idl
new file mode 100644
index 0000000..818e5b4
--- /dev/null
+++ b/modules/bluetooth/BluetoothAdvertisingData.idl
@@ -0,0 +1,20 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothadvertisingdata
+
+// Implement BluetoothAdvertisingData interface: http://crbug.com/542756
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
+] interface BluetoothAdvertisingData {
+ // readonly attribute unsigned short? appearance;
+ readonly attribute byte? txPower;
+ readonly attribute byte? rssi;
+ // readonly attribute ManufacturerDataMap manufacturerData;
+ // readonly attribute ServiceDataMap serviceData;
+};
diff --git a/modules/bluetooth/BluetoothCharacteristicProperties.idl b/modules/bluetooth/BluetoothCharacteristicProperties.idl
new file mode 100644
index 0000000..ca87d7d
--- /dev/null
+++ b/modules/bluetooth/BluetoothCharacteristicProperties.idl
@@ -0,0 +1,24 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://webbluetoothcg.github.io/web-bluetooth/#characteristicproperties
+
+// Implement BluetoothCharacteristicProperties interface: http://crbug.com/483345
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
+] interface BluetoothCharacteristicProperties {
+ readonly attribute boolean broadcast;
+ readonly attribute boolean read;
+ readonly attribute boolean writeWithoutResponse;
+ readonly attribute boolean write;
+ readonly attribute boolean notify;
+ readonly attribute boolean indicate;
+ readonly attribute boolean authenticatedSignedWrites;
+ readonly attribute boolean reliableWrite;
+ readonly attribute boolean writableAuxiliaries;
+};
diff --git a/modules/bluetooth/BluetoothDevice.idl b/modules/bluetooth/BluetoothDevice.idl
index 70ba6f8..13ac479 100644
--- a/modules/bluetooth/BluetoothDevice.idl
+++ b/modules/bluetooth/BluetoothDevice.idl
@@ -13,22 +13,27 @@
[
GarbageCollected,
+ DependentLifetime,
RuntimeEnabled=WebBluetooth,
-] interface BluetoothDevice
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
+] interface BluetoothDevice : EventTarget
// Implement ServiceEventHandlers interface: http://crbug.com/421670
-// : ServiceEventHandlers
+// : ServiceEventHandlers
{
// Implement BluetoothDevice interface: http://crbug.com/421668
- readonly attribute DOMString instanceID;
+ [DeprecateAs=BluetoothDeviceInstanceId, ImplementedAs=id] readonly attribute DOMString instanceID;
+ readonly attribute DOMString id;
readonly attribute DOMString? name;
-// readonly attribute BluetoothAdvertisingData adData;
+ readonly attribute BluetoothAdvertisingData adData;
readonly attribute unsigned long? deviceClass;
readonly attribute VendorIDSource? vendorIDSource;
readonly attribute unsigned long? vendorID;
readonly attribute unsigned long? productID;
readonly attribute unsigned long? productVersion;
- readonly attribute boolean paired;
-// readonly attribute BluetoothGATTRemoteServer? gattServer;
+ readonly attribute BluetoothRemoteGATTServer gatt;
readonly attribute UUID[] uuids;
- [CallWith=ScriptState] Promise<BluetoothGATTRemoteServer> connectGATT ();
+ [CallWith=ScriptState, DeprecateAs=BluetoothDeviceConnectGATT] Promise<BluetoothRemoteGATTServer> connectGATT ();
+
+ attribute EventHandler ongattserverdisconnected;
};
diff --git a/modules/bluetooth/BluetoothGATTCharacteristic.idl b/modules/bluetooth/BluetoothGATTCharacteristic.idl
deleted file mode 100644
index c3e0eea..0000000
--- a/modules/bluetooth/BluetoothGATTCharacteristic.idl
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattcharacteristic
-
-// Implement BluetoothGATTCharacteristic interface: https://crbug.com/483344
-
-[
- GarbageCollected,
- RuntimeEnabled=WebBluetooth,
-] interface BluetoothGATTCharacteristic {//: CharacteristicEventHandlers {
- // TODO(ortuno): Add test to make sure service matches the service
- // used to call getCharacteristic.
- // readonly attribute BluetoothGATTService service;
- readonly attribute UUID uuid;
- // readonly attribute CharacteristicProperties properties;
- // readonly attribute ArrayBuffer? value;
- // Promise<BluetoothGATTDescriptor> getDescriptor(BluetoothDescriptorUUID descriptor);
- // Promise<sequence<BluetoothGATTDescriptor>> getDescriptors(optional BluetoothDescriptorUUID descriptor);
- [CallWith=ScriptState] Promise<ArrayBuffer> readValue();
- [CallWith=ScriptState] Promise<void> writeValue(BufferSource value);
- // Promise<void> startNotifications();
- // Promise<void> stopNotifications();
-};
diff --git a/modules/bluetooth/BluetoothGATTRemoteServer.idl b/modules/bluetooth/BluetoothGATTRemoteServer.idl
deleted file mode 100644
index 9f94604..0000000
--- a/modules/bluetooth/BluetoothGATTRemoteServer.idl
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattremoteserver
-
-// Implement BluetoothGATTRemoteServer interface: https://crbug.com/476735
-
-[
- GarbageCollected,
- RuntimeEnabled=WebBluetooth,
-] interface BluetoothGATTRemoteServer
-// Implement ServiceEventHandlers interface: http://crbug.com/421670
-// : ServiceEventHandlers
-{
- // readonly attribute BluetoothDevice device;
- readonly attribute boolean connected;
- // void disconnect ();
- [CallWith=ScriptState, RaisesException] Promise<BluetoothGATTService> getPrimaryService (BluetoothServiceUUID service);
- // Promise<sequence<BluetoothGATTService>> getPrimaryServices (optional BluetoothServiceUUID service);
-};
diff --git a/modules/bluetooth/BluetoothGATTService.idl b/modules/bluetooth/BluetoothGATTService.idl
deleted file mode 100644
index b6cef73..0000000
--- a/modules/bluetooth/BluetoothGATTService.idl
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattservice
-
-// Implement BluetoothGATTService interface: https://crbug.com/483342
-
-[
- GarbageCollected,
- RuntimeEnabled=WebBluetooth,
-] interface BluetoothGATTService { // : ServiceEventHandlers {
- readonly attribute UUID uuid;
- readonly attribute boolean isPrimary;
- // TODO(ortuno): Once device is implemented test that it matches
- // the original device.
- // readonly attribute BluetoothDevice device;
- [RaisesException, CallWith=ScriptState] Promise<BluetoothGATTCharacteristic> getCharacteristic(BluetoothCharacteristicUUID characteristic);
- // Promise<sequence<BluetoothGATTCharacteristic>> getCharacteristics(optional BluetoothCharacteristicUUID characteristic);
- // Promise<BluetoothGATTService> getIncludedService(BluetoothServiceUUID service);
- // Promise<sequence<BluetoothGATTService>> getIncludedServices(optional BluetoothServiceUUID service);
-};
diff --git a/modules/bluetooth/BluetoothRemoteGATTCharacteristic.idl b/modules/bluetooth/BluetoothRemoteGATTCharacteristic.idl
new file mode 100644
index 0000000..16c2dd2
--- /dev/null
+++ b/modules/bluetooth/BluetoothRemoteGATTCharacteristic.idl
@@ -0,0 +1,32 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattcharacteristic
+
+// Implement BluetoothRemoteGATTCharacteristic interface: https://crbug.com/483344
+
+[
+ GarbageCollected,
+ DependentLifetime,
+ RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
+] interface BluetoothRemoteGATTCharacteristic : EventTarget {//: CharacteristicEventHandlers {
+ // TODO(ortuno): Add test to make sure service matches the service
+ // used to call getCharacteristic.
+ // readonly attribute BluetoothRemoteGATTService service;
+ readonly attribute UUID uuid;
+ readonly attribute BluetoothCharacteristicProperties properties;
+ readonly attribute DataView? value;
+ // Promise<BluetoothRemoteGATTDescriptor> getDescriptor(BluetoothDescriptorUUID descriptor);
+ // Promise<sequence<BluetoothRemoteGATTDescriptor>> getDescriptors(optional BluetoothDescriptorUUID descriptor);
+ [CallWith=ScriptState] Promise<DataView> readValue();
+ [CallWith=ScriptState] Promise<void> writeValue(BufferSource value);
+ [CallWith=ScriptState] Promise<void> startNotifications();
+ [CallWith=ScriptState] Promise<void> stopNotifications();
+
+ // TODO(ortuno): Move this to CharacteristicEventHandlers.
+ // http://crbug.com/537459
+ attribute EventHandler oncharacteristicvaluechanged;
+};
diff --git a/modules/bluetooth/BluetoothRemoteGATTServer.idl b/modules/bluetooth/BluetoothRemoteGATTServer.idl
new file mode 100644
index 0000000..5e26954
--- /dev/null
+++ b/modules/bluetooth/BluetoothRemoteGATTServer.idl
@@ -0,0 +1,22 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattremoteserver
+
+// Implement BluetoothGATTRemoteServer interface: https://crbug.com/476735
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
+] interface BluetoothRemoteGATTServer
+{
+ readonly attribute BluetoothDevice device;
+ readonly attribute boolean connected;
+ [CallWith=ScriptState] Promise<BluetoothRemoteGATTServer> connect();
+ [CallWith=ScriptState] void disconnect();
+ [CallWith=ScriptState, RaisesException] Promise<BluetoothRemoteGATTService> getPrimaryService (BluetoothServiceUUID service);
+ // Promise<sequence<BluetoothRemoteGATTService>> getPrimaryServices (optional BluetoothServiceUUID service);
+};
diff --git a/modules/bluetooth/BluetoothRemoteGATTService.idl b/modules/bluetooth/BluetoothRemoteGATTService.idl
new file mode 100644
index 0000000..85ce907
--- /dev/null
+++ b/modules/bluetooth/BluetoothRemoteGATTService.idl
@@ -0,0 +1,24 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattservice
+
+// Implement BluetoothRemoteGATTService interface: https://crbug.com/483342
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
+] interface BluetoothRemoteGATTService { // : ServiceEventHandlers {
+ readonly attribute UUID uuid;
+ readonly attribute boolean isPrimary;
+ // TODO(ortuno): Once device is implemented test that it matches
+ // the original device.
+ // readonly attribute BluetoothDevice device;
+ [RaisesException, CallWith=ScriptState] Promise<BluetoothRemoteGATTCharacteristic> getCharacteristic(BluetoothCharacteristicUUID characteristic);
+ [RaisesException, CallWith=ScriptState] Promise<sequence<BluetoothRemoteGATTCharacteristic>> getCharacteristics(optional BluetoothCharacteristicUUID characteristic);
+ // Promise<BluetoothRemoteGATTService> getIncludedService(BluetoothServiceUUID service);
+ // Promise<sequence<BluetoothRemoteGATTService>> getIncludedServices(optional BluetoothServiceUUID service);
+};
diff --git a/modules/bluetooth/BluetoothScanFilter.idl b/modules/bluetooth/BluetoothScanFilter.idl
index 7ab4f9e..b8e7447 100644
--- a/modules/bluetooth/BluetoothScanFilter.idl
+++ b/modules/bluetooth/BluetoothScanFilter.idl
@@ -6,4 +6,6 @@
dictionary BluetoothScanFilter {
sequence<BluetoothServiceUUID> services;
+ DOMString name;
+ DOMString namePrefix;
};
diff --git a/modules/bluetooth/BluetoothUUID.idl b/modules/bluetooth/BluetoothUUID.idl
index 456dd8e..a064b3d 100644
--- a/modules/bluetooth/BluetoothUUID.idl
+++ b/modules/bluetooth/BluetoothUUID.idl
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// https://webbluetoothcg.github.io/web-bluetooth/#idl-def-bluetoothuuid
+// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothuuid
// Implement BluetoothUUID: http://crbug.com/491441
// Significant TODOs remain in BluetoothUUID.cpp.
@@ -10,6 +10,8 @@
[
GarbageCollected,
RuntimeEnabled=WebBluetooth,
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth,
] interface BluetoothUUID {
[RaisesException] static UUID getService((DOMString or unsigned long) name);
[RaisesException] static UUID getCharacteristic((DOMString or unsigned long) name);
diff --git a/modules/bluetooth/NavigatorBluetooth.idl b/modules/bluetooth/NavigatorBluetooth.idl
index 671f652..e7c777c 100644
--- a/modules/bluetooth/NavigatorBluetooth.idl
+++ b/modules/bluetooth/NavigatorBluetooth.idl
@@ -7,5 +7,11 @@
[
RuntimeEnabled=WebBluetooth,
] partial interface Navigator {
- readonly attribute Bluetooth bluetooth;
+ // Experimental Framework doesn't support adding bindings to partial
+ // interfaces yet, so we add it to the bluetooth attribute instead.
+ // https://crbug.com/585656
+ [
+ // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
+ // OriginTrialEnabled=WebBluetooth
+ ] readonly attribute Bluetooth bluetooth;
};
diff --git a/modules/cachestorage/Cache.idl b/modules/cachestorage/Cache.idl
index 8446938..6bd3c42 100644
--- a/modules/cachestorage/Cache.idl
+++ b/modules/cachestorage/Cache.idl
@@ -7,16 +7,11 @@
[
GarbageCollected,
Exposed=(Window,Worker),
- TypeChecking=Interface,
] interface Cache {
[CallWith=ScriptState, RaisesException] Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
-
- // FIXME: Implement matchAll(): http://crbug.com/428363
- // FIXME: First argument of matchAll() should be optional: http://crbug.com/425459
- // [CallWith=ScriptState, RaisesException] Promise<sequence<Response>> matchAll(RequestInfo request, optional CacheQueryOptions options);
-
+ [CallWith=ScriptState, RaisesException] Promise<sequence<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
[CallWith=ScriptState, RaisesException] Promise<void> add(RequestInfo request);
- [RuntimeEnabled=ServiceWorkerCacheAddAll, CallWith=ScriptState, RaisesException] Promise<void> addAll(sequence<RequestInfo> requests);
+ [CallWith=ScriptState, RaisesException] Promise<void> addAll(sequence<RequestInfo> requests);
[CallWith=ScriptState, RaisesException] Promise<void> put(RequestInfo request, Response response);
[CallWith=ScriptState, ImplementedAs=deleteFunction, RaisesException] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
[CallWith=ScriptState, RaisesException] Promise<sequence<Response>> keys(optional RequestInfo request, optional CacheQueryOptions options);
diff --git a/modules/cachestorage/CacheStorage.idl b/modules/cachestorage/CacheStorage.idl
index d0924ad..5749c17 100644
--- a/modules/cachestorage/CacheStorage.idl
+++ b/modules/cachestorage/CacheStorage.idl
@@ -6,11 +6,10 @@
[
GarbageCollected,
Exposed=(Window,Worker),
- TypeChecking=Interface,
] interface CacheStorage {
- [CallWith=ScriptState] Promise<boolean> has(DOMString cacheName);
- [CallWith=ScriptState] Promise<Cache> open(DOMString cacheName);
- [CallWith=ScriptState, ImplementedAs=deleteFunction] Promise<boolean> delete(DOMString cacheName);
- [CallWith=ScriptState] Promise<sequence<DOMString>> keys();
+ [CallWith=ScriptState, RaisesException] Promise<boolean> has(DOMString cacheName);
+ [CallWith=ScriptState, RaisesException] Promise<Cache> open(DOMString cacheName);
+ [CallWith=ScriptState, RaisesException, ImplementedAs=deleteFunction] Promise<boolean> delete(DOMString cacheName);
+ [CallWith=ScriptState, RaisesException] Promise<sequence<DOMString>> keys();
[CallWith=ScriptState, RaisesException] Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
};
diff --git a/modules/cachestorage/WorkerCacheStorage.idl b/modules/cachestorage/WorkerCacheStorage.idl
index 483f399..5916e88 100644
--- a/modules/cachestorage/WorkerCacheStorage.idl
+++ b/modules/cachestorage/WorkerCacheStorage.idl
@@ -7,5 +7,5 @@
RuntimeEnabled=GlobalCacheStorage,
ImplementedAs=GlobalCacheStorage,
] partial interface WorkerGlobalScope {
- [Unforgeable, MeasureAs=GlobalCacheStorage, RuntimeEnabled=GlobalCacheStorage, RaisesException] readonly attribute CacheStorage caches;
+ [Unforgeable, MeasureAs=GlobalCacheStorage, RuntimeEnabled=GlobalCacheStorage, RaisesException] readonly attribute CacheStorage caches;
};
diff --git a/modules/canvas2d/CanvasRenderingContext2D.idl b/modules/canvas2d/CanvasRenderingContext2D.idl
index d366967..a2a897c 100644
--- a/modules/canvas2d/CanvasRenderingContext2D.idl
+++ b/modules/canvas2d/CanvasRenderingContext2D.idl
@@ -25,7 +25,6 @@
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvasrenderingcontext2d
-// FIXME: float => double throughout
typedef (HTMLImageElement or
HTMLVideoElement or
HTMLCanvasElement or
@@ -33,10 +32,10 @@
ImageBitmap) CanvasImageSource;
enum CanvasFillRule { "nonzero", "evenodd" };
+enum ImageSmoothingQuality {"low", "medium", "high"};
[
SetWrapperReferenceFrom=canvas,
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface CanvasRenderingContext2D {
// back-reference to the canvas
@@ -48,39 +47,40 @@
// transformations (default transform is the identity matrix)
[RuntimeEnabled=ExperimentalCanvasFeatures] attribute SVGMatrix currentTransform;
- void scale(unrestricted float x, unrestricted float y);
- void rotate(unrestricted float angle);
- void translate(unrestricted float x, unrestricted float y);
- void transform(unrestricted float a, unrestricted float b, unrestricted float c, unrestricted float d, unrestricted float e, unrestricted float f);
- void setTransform(unrestricted float a, unrestricted float b, unrestricted float c, unrestricted float d, unrestricted float e, unrestricted float f);
+ void scale(unrestricted double x, unrestricted double y);
+ void rotate(unrestricted double angle);
+ void translate(unrestricted double x, unrestricted double y);
+ void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
+ void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
void resetTransform();
// compositing
- attribute unrestricted float globalAlpha; // (default 1.0)
- [TreatNullAs=NullString] attribute DOMString globalCompositeOperation; // (default source-over)
- [RuntimeEnabled=ExperimentalCanvasFeatures] attribute DOMString filter; // (default 'none')
+ attribute unrestricted double globalAlpha; // (default 1.0)
+ attribute DOMString globalCompositeOperation; // (default source-over)
+ [RuntimeEnabled=ExperimentalCanvasFeatures] attribute DOMString filter; // (default 'none')
// image smoothing
[ImplementedAs=imageSmoothingEnabled, DeprecateAs=PrefixedImageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
- [MeasureAs=UnprefixedImageSmoothingEnabled] attribute boolean imageSmoothingEnabled;
+ [MeasureAs=UnprefixedImageSmoothingEnabled] attribute boolean imageSmoothingEnabled; // (default True)
+ [RuntimeEnabled=ExperimentalCanvasFeatures] attribute ImageSmoothingQuality imageSmoothingQuality; // (default "low")
// colors and styles (see also the CanvasDrawingStyles interface)
attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black)
attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
- CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
- [RaisesException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
- [RaisesException] CanvasPattern createPattern(CanvasImageSource image, DOMString? repetitionType);
+ CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
+ [RaisesException] CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
+ [RaisesException] CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=NullString] DOMString repetitionType);
// shadows
- attribute unrestricted float shadowOffsetX;
- attribute unrestricted float shadowOffsetY;
- attribute unrestricted float shadowBlur;
- [TreatNullAs=NullString] attribute DOMString shadowColor;
+ attribute unrestricted double shadowOffsetX;
+ attribute unrestricted double shadowOffsetY;
+ attribute unrestricted double shadowBlur;
+ attribute DOMString shadowColor;
// rects
- void clearRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
- void fillRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
- void strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
+ void clearRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height);
+ void fillRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height);
+ void strokeRect(unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height);
// path API (see also CanvasPathMethods)
void beginPath();
@@ -95,20 +95,20 @@
[RuntimeEnabled=ExperimentalCanvasFeatures] void scrollPathIntoView(optional Path2D path);
void clip(optional CanvasFillRule winding);
void clip(Path2D path, optional CanvasFillRule winding);
- boolean isPointInPath(unrestricted float x, unrestricted float y, optional CanvasFillRule winding);
- boolean isPointInPath(Path2D path, unrestricted float x, unrestricted float y, optional CanvasFillRule winding);
- boolean isPointInStroke(unrestricted float x, unrestricted float y);
- boolean isPointInStroke(Path2D path, unrestricted float x, unrestricted float y);
+ boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule winding);
+ boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule winding);
+ boolean isPointInStroke(unrestricted double x, unrestricted double y);
+ boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
// text (see also the CanvasDrawingStyles interface)
- void fillText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
- void strokeText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
+ void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
+ void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
TextMetrics measureText(DOMString text);
// drawing images
- [RaisesException] void drawImage(CanvasImageSource image, unrestricted float x, unrestricted float y);
- [RaisesException] void drawImage(CanvasImageSource image, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
- [RaisesException] void drawImage(CanvasImageSource image, unrestricted float sx, unrestricted float sy, unrestricted float sw, unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
+ [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y);
+ [RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y, unrestricted double width, unrestricted double height);
+ [RaisesException] void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
// hit regions
[RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void addHitRegion(optional HitRegionOptions options);
@@ -117,10 +117,10 @@
// pixel manipulation
ImageData createImageData(ImageData imagedata);
- [RaisesException] ImageData createImageData(float sw, float sh);
- [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh);
- void putImageData(ImageData imagedata, float dx, float dy);
- void putImageData(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+ [RaisesException] ImageData createImageData(double sw, double sh);
+ [RaisesException] ImageData getImageData(double sx, double sy, double sw, double sh);
+ [RaisesException] void putImageData(ImageData imagedata, double dx, double dy);
+ [RaisesException] void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight);
// Context state
// Should be merged with WebGL counterpart in CanvasRenderingContext, once no-longer experimental
@@ -130,15 +130,15 @@
// FIXME: factor out to CanvasDrawingStyles
// line caps/joins
- attribute unrestricted float lineWidth; // (default 1)
- [TreatNullAs=NullString] attribute DOMString lineCap; // "butt", "round", "square" (default "butt")
- [TreatNullAs=NullString] attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter")
- attribute unrestricted float miterLimit; // (default 10)
+ attribute unrestricted double lineWidth; // (default 1)
+ attribute DOMString lineCap; // "butt", "round", "square" (default "butt")
+ attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter")
+ attribute unrestricted double miterLimit; // (default 10)
// dashed lines
- void setLineDash(sequence<unrestricted float> dash);
- sequence<unrestricted float> getLineDash();
- attribute unrestricted float lineDashOffset;
+ void setLineDash(sequence<unrestricted double> dash);
+ sequence<unrestricted double> getLineDash();
+ attribute unrestricted double lineDashOffset;
// text
attribute DOMString font; // (default 10px sans-serif)
diff --git a/modules/canvas2d/Path2D.idl b/modules/canvas2d/Path2D.idl
index f77f06d..8f8a2a1 100644
--- a/modules/canvas2d/Path2D.idl
+++ b/modules/canvas2d/Path2D.idl
@@ -35,7 +35,7 @@
GarbageCollected,
] interface Path2D {
- [RuntimeEnabled=ExperimentalCanvasFeatures, TypeChecking=Interface] void addPath(Path2D path, optional SVGMatrix? transform);
+ [RuntimeEnabled=ExperimentalCanvasFeatures] void addPath(Path2D path, optional SVGMatrix? transform);
};
Path2D implements CanvasPathMethods;
diff --git a/modules/canvas2d/TouchHitRegion.idl b/modules/canvas2d/TouchHitRegion.idl
new file mode 100644
index 0000000..50c6a92
--- /dev/null
+++ b/modules/canvas2d/TouchHitRegion.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://html.spec.whatwg.org/multipage/scripting.html#Touch-partial
+
+[
+ RuntimeEnabled=ExperimentalCanvasFeatures
+] partial interface Touch {
+ readonly attribute DOMString? region;
+};
diff --git a/modules/compositorworker/CompositorWorker.idl b/modules/compositorworker/CompositorWorker.idl
index e6f67c4..c7a57ed 100644
--- a/modules/compositorworker/CompositorWorker.idl
+++ b/modules/compositorworker/CompositorWorker.idl
@@ -3,12 +3,12 @@
// found in the LICENSE file.
[
- ActiveDOMObject,
+ DependentLifetime,
Constructor(DOMString scriptUrl),
ConstructorCallWith=ExecutionContext,
+ GarbageCollected,
RaisesException=Constructor,
RuntimeEnabled=CompositorWorker,
- WillBeGarbageCollected,
] interface CompositorWorker : EventTarget {
attribute EventHandler onmessage;
[PostMessage, RaisesException] void postMessage(SerializedScriptValue message, optional sequence<Transferable> transfer);
diff --git a/modules/compositorworker/CompositorWorkerGlobalScope.idl b/modules/compositorworker/CompositorWorkerGlobalScope.idl
index 217c4b8..f51d663 100644
--- a/modules/compositorworker/CompositorWorkerGlobalScope.idl
+++ b/modules/compositorworker/CompositorWorkerGlobalScope.idl
@@ -6,7 +6,6 @@
Exposed=CompositorWorker,
Global=CompositorWorker,
RuntimeEnabled=CompositorWorker,
- TypeChecking=Interface,
] interface CompositorWorkerGlobalScope : WorkerGlobalScope {
[PostMessage, RaisesException] void postMessage(any message, optional sequence<Transferable> transfer);
attribute EventHandler onmessage;
diff --git a/modules/credentialmanager/Credential.idl b/modules/credentialmanager/Credential.idl
index 960a16b..27a73ae 100644
--- a/modules/credentialmanager/Credential.idl
+++ b/modules/credentialmanager/Credential.idl
@@ -6,7 +6,8 @@
[
RuntimeEnabled=CredentialManager,
- GarbageCollected
+ GarbageCollected,
+ Exposed=Window
] interface Credential {
readonly attribute DOMString id;
readonly attribute DOMString type;
diff --git a/modules/credentialmanager/CredentialRequestOptions.idl b/modules/credentialmanager/CredentialRequestOptions.idl
index 2a70c7f..0e5902a 100644
--- a/modules/credentialmanager/CredentialRequestOptions.idl
+++ b/modules/credentialmanager/CredentialRequestOptions.idl
@@ -8,5 +8,5 @@
FederatedCredentialRequestOptions federated;
boolean password = false;
- boolean suppressUI = false;
+ boolean unmediated = false;
};
diff --git a/modules/credentialmanager/CredentialsContainer.idl b/modules/credentialmanager/CredentialsContainer.idl
index da5846d..dc7c109 100644
--- a/modules/credentialmanager/CredentialsContainer.idl
+++ b/modules/credentialmanager/CredentialsContainer.idl
@@ -6,8 +6,7 @@
RuntimeEnabled=CredentialManager,
GarbageCollected
] interface CredentialsContainer {
- [CallWith=ScriptState] Promise request(optional CredentialRequestOptions options);
- [CallWith=ScriptState, TypeChecking=Interface] Promise notifySignedIn(Credential credential);
- [CallWith=ScriptState] Promise requireUserMediation();
+ [CallWith=ScriptState, MeasureAs=CredentialManagerGet] Promise get(optional CredentialRequestOptions options);
+ [CallWith=ScriptState, MeasureAs=CredentialManagerStore] Promise store(Credential credential);
+ [CallWith=ScriptState, MeasureAs=CredentialManagerRequireUserMediation] Promise requireUserMediation();
};
-
diff --git a/modules/credentialmanager/FederatedCredential.idl b/modules/credentialmanager/FederatedCredential.idl
index 848ed8d..f72009a 100644
--- a/modules/credentialmanager/FederatedCredential.idl
+++ b/modules/credentialmanager/FederatedCredential.idl
@@ -7,7 +7,8 @@
[
RuntimeEnabled=CredentialManager,
RaisesException=Constructor,
- Constructor(FederatedCredentialData data)
+ Constructor(FederatedCredentialData data),
+ Exposed=Window
] interface FederatedCredential : Credential {
readonly attribute USVString provider;
diff --git a/modules/credentialmanager/FederatedCredentialRequestOptions.idl b/modules/credentialmanager/FederatedCredentialRequestOptions.idl
index 1039962..d1eea0f 100644
--- a/modules/credentialmanager/FederatedCredentialRequestOptions.idl
+++ b/modules/credentialmanager/FederatedCredentialRequestOptions.idl
@@ -5,6 +5,6 @@
// https://w3c.github.io/webappsec/specs/credentialmanagement/#dictdef-federatedcredentialrequestoptions
dictionary FederatedCredentialRequestOptions {
- sequence<USVString> providers;
+ sequence<DOMString> providers;
sequence<DOMString> protocols;
};
diff --git a/modules/credentialmanager/FormDataOptions.idl b/modules/credentialmanager/FormDataOptions.idl
new file mode 100644
index 0000000..76ddd9c
--- /dev/null
+++ b/modules/credentialmanager/FormDataOptions.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/webappsec/specs/credentialmanagement/#dictdef-formdataoptions
+
+dictionary FormDataOptions {
+ DOMString idName = "username";
+ DOMString passwordName = "password";
+};
diff --git a/modules/credentialmanager/PasswordCredential.idl b/modules/credentialmanager/PasswordCredential.idl
index 929aed3..2e91a60 100644
--- a/modules/credentialmanager/PasswordCredential.idl
+++ b/modules/credentialmanager/PasswordCredential.idl
@@ -2,11 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+typedef (FormData or URLSearchParams) CredentialBodyType;
+
[
RuntimeEnabled=CredentialManager,
RaisesException=Constructor,
- Constructor(DOMString id, DOMString password, optional DOMString name, optional DOMString iconURL)
+ Constructor(PasswordCredentialData data),
+ Exposed=Window,
] interface PasswordCredential : Credential {
- readonly attribute DOMString password;
- readonly attribute FormData formData;
+ attribute USVString idName;
+ attribute USVString passwordName;
+ attribute CredentialBodyType? additionalData;
};
diff --git a/modules/crypto/Crypto.idl b/modules/crypto/Crypto.idl
index 27182ef..b754187 100644
--- a/modules/crypto/Crypto.idl
+++ b/modules/crypto/Crypto.idl
@@ -34,4 +34,3 @@
readonly attribute SubtleCrypto subtle;
};
-
diff --git a/modules/crypto/SubtleCrypto.idl b/modules/crypto/SubtleCrypto.idl
index 007f368..04beea2 100644
--- a/modules/crypto/SubtleCrypto.idl
+++ b/modules/crypto/SubtleCrypto.idl
@@ -37,7 +37,6 @@
[
GarbageCollected,
Exposed=(Window,Worker),
- TypeChecking=Interface,
] interface SubtleCrypto {
[CallWith=ScriptState, MeasureAs=SubtleCryptoEncrypt] Promise encrypt(AlgorithmIdentifier algorithm, CryptoKey key, BufferSource data);
[CallWith=ScriptState, MeasureAs=SubtleCryptoDecrypt] Promise decrypt(AlgorithmIdentifier algorithm, CryptoKey key, BufferSource data);
diff --git a/modules/device_orientation/DeviceAcceleration.idl b/modules/device_orientation/DeviceAcceleration.idl
index 827bc46..1b2c23e 100644
--- a/modules/device_orientation/DeviceAcceleration.idl
+++ b/modules/device_orientation/DeviceAcceleration.idl
@@ -23,6 +23,8 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// http://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion
+
[
GarbageCollected,
NoInterfaceObject
diff --git a/modules/device_orientation/DeviceMotionEvent.idl b/modules/device_orientation/DeviceMotionEvent.idl
index c75497a..138f704 100644
--- a/modules/device_orientation/DeviceMotionEvent.idl
+++ b/modules/device_orientation/DeviceMotionEvent.idl
@@ -23,11 +23,17 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// http://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion
+
+// TODO(philipj): DeviceMotionEvent should have a constructor.
interface DeviceMotionEvent : Event {
- readonly attribute DeviceAcceleration acceleration;
- readonly attribute DeviceAcceleration accelerationIncludingGravity;
- readonly attribute DeviceRotationRate rotationRate;
+ readonly attribute DeviceAcceleration? acceleration;
+ readonly attribute DeviceAcceleration? accelerationIncludingGravity;
+ readonly attribute DeviceRotationRate? rotationRate;
readonly attribute double? interval;
+
+ // TODO(philipj): The init*Event() methods are not in the spec:
+ // https://github.com/w3c/deviceorientation/issues/18
[Custom, Measure] void initDeviceMotionEvent([Default=Undefined] optional DOMString type,
[Default=Undefined] optional boolean bubbles,
[Default=Undefined] optional boolean cancelable,
diff --git a/modules/device_orientation/DeviceOrientationEvent.idl b/modules/device_orientation/DeviceOrientationEvent.idl
index ab9840d..e8e0c9d 100644
--- a/modules/device_orientation/DeviceOrientationEvent.idl
+++ b/modules/device_orientation/DeviceOrientationEvent.idl
@@ -23,11 +23,18 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// http://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation
+
+// TODO(philipj): DeviceOrientationEvent should have a constructor.
interface DeviceOrientationEvent : Event {
readonly attribute double? alpha;
readonly attribute double? beta;
readonly attribute double? gamma;
+ // TODO(philipj): absolute should not be nullable.
readonly attribute boolean? absolute;
+
+ // TODO(philipj): The init*Event() methods are not in the spec:
+ // https://github.com/w3c/deviceorientation/issues/18
[Measure] void initDeviceOrientationEvent([Default=Undefined] optional DOMString type,
[Default=Undefined] optional boolean bubbles,
[Default=Undefined] optional boolean cancelable,
diff --git a/modules/device_orientation/DeviceRotationRate.idl b/modules/device_orientation/DeviceRotationRate.idl
index 117c8b6..a8c780b 100644
--- a/modules/device_orientation/DeviceRotationRate.idl
+++ b/modules/device_orientation/DeviceRotationRate.idl
@@ -23,6 +23,8 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// http://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion
+
[
GarbageCollected,
NoInterfaceObject
diff --git a/modules/device_orientation/WindowDeviceOrientation.idl b/modules/device_orientation/WindowDeviceOrientation.idl
index 8a7d18a..ccbcf55 100644
--- a/modules/device_orientation/WindowDeviceOrientation.idl
+++ b/modules/device_orientation/WindowDeviceOrientation.idl
@@ -6,4 +6,5 @@
ImplementedAs=DOMWindowDeviceOrientation
] partial interface Window {
attribute EventHandler ondeviceorientation;
+ [RuntimeEnabled=DeviceOrientationAbsolute] attribute EventHandler ondeviceorientationabsolute;
};
diff --git a/modules/encoding/TextEncoder.idl b/modules/encoding/TextEncoder.idl
index 8812f04..8730de4 100644
--- a/modules/encoding/TextEncoder.idl
+++ b/modules/encoding/TextEncoder.idl
@@ -31,6 +31,7 @@
[
Exposed=(Window,Worker),
Constructor(optional DOMString utfLabel = "utf-8"),
+ ConstructorCallWith=ExecutionContext,
RaisesException=Constructor,
GarbageCollected,
MeasureAs=TextEncoderConstructor
diff --git a/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl b/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl
index e79fe27..f096397 100644
--- a/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl
+++ b/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.idl
@@ -3,16 +3,7 @@
// found in the LICENSE file.
partial interface HTMLMediaElement {
- [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException, DeprecateAs=PrefixedMediaGenerateKeyRequest] void webkitGenerateKeyRequest([TreatUndefinedAs=NullString] DOMString? keySystem, optional Uint8Array initData);
- [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException, DeprecateAs=PrefixedMediaAddKey] void webkitAddKey([TreatUndefinedAs=NullString] DOMString? keySystem, Uint8Array key, optional Uint8Array initData, optional DOMString sessionId = null);
- [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException, DeprecateAs=PrefixedMediaCancelKeyRequest] void webkitCancelKeyRequest([TreatUndefinedAs=NullString] DOMString? keySystem, optional DOMString sessionId = null);
-
- [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeyadded;
- [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeyerror;
- [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeymessage;
- [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitneedkey;
-
[RuntimeEnabled=EncryptedMedia] readonly attribute MediaKeys mediaKeys;
- [RuntimeEnabled=EncryptedMedia, TypeChecking=Interface, CallWith=ScriptState] Promise setMediaKeys(MediaKeys? mediaKeys);
+ [RuntimeEnabled=EncryptedMedia, CallWith=ScriptState] Promise setMediaKeys(MediaKeys? mediaKeys);
[RuntimeEnabled=EncryptedMedia] attribute EventHandler onencrypted;
};
diff --git a/modules/encryptedmedia/MediaKeySession.idl b/modules/encryptedmedia/MediaKeySession.idl
index 3af0cea..5c3e214 100644
--- a/modules/encryptedmedia/MediaKeySession.idl
+++ b/modules/encryptedmedia/MediaKeySession.idl
@@ -24,10 +24,9 @@
*/
[
- ActiveDOMObject,
+ DependentLifetime,
RuntimeEnabled=EncryptedMedia,
GarbageCollected,
- TypeChecking=Interface
] interface MediaKeySession : EventTarget {
// session properties
readonly attribute DOMString sessionId;
diff --git a/modules/encryptedmedia/MediaKeyStatusMap.idl b/modules/encryptedmedia/MediaKeyStatusMap.idl
index 41e9853..e5956a2 100644
--- a/modules/encryptedmedia/MediaKeyStatusMap.idl
+++ b/modules/encryptedmedia/MediaKeyStatusMap.idl
@@ -7,8 +7,9 @@
enum MediaKeyStatus {
"usable",
"expired",
+ "released",
+ "output-restricted",
"output-downscaled",
- "output-not-allowed",
"status-pending",
"internal-error"
};
diff --git a/modules/encryptedmedia/MediaKeySystemAccess.idl b/modules/encryptedmedia/MediaKeySystemAccess.idl
index 48c2d2c..02069e7 100644
--- a/modules/encryptedmedia/MediaKeySystemAccess.idl
+++ b/modules/encryptedmedia/MediaKeySystemAccess.idl
@@ -7,7 +7,6 @@
[
RuntimeEnabled=EncryptedMedia,
GarbageCollected,
- TypeChecking=Interface
] interface MediaKeySystemAccess {
readonly attribute DOMString keySystem;
MediaKeySystemConfiguration getConfiguration();
diff --git a/modules/encryptedmedia/MediaKeys.idl b/modules/encryptedmedia/MediaKeys.idl
index 7913a47..8bf9389 100644
--- a/modules/encryptedmedia/MediaKeys.idl
+++ b/modules/encryptedmedia/MediaKeys.idl
@@ -29,10 +29,9 @@
};
[
- ActiveDOMObject,
+ DependentLifetime,
RuntimeEnabled=EncryptedMedia,
GarbageCollected,
- TypeChecking=Interface
] interface MediaKeys {
[CallWith=ScriptState, RaisesException] MediaKeySession createSession(optional MediaKeySessionType sessionType = "temporary");
diff --git a/modules/fetch/Body.idl b/modules/fetch/Body.idl
index 25cca48..f943545 100644
--- a/modules/fetch/Body.idl
+++ b/modules/fetch/Body.idl
@@ -7,9 +7,8 @@
[
Exposed=ServiceWorker,
NoInterfaceObject,
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
- TypeChecking=Interface,
] interface Body {
readonly attribute boolean bodyUsed;
[CallWith=ScriptState] Promise<ArrayBuffer> arrayBuffer();
diff --git a/modules/fetch/Headers.idl b/modules/fetch/Headers.idl
index e17dba9..6ea05d7 100644
--- a/modules/fetch/Headers.idl
+++ b/modules/fetch/Headers.idl
@@ -12,7 +12,6 @@
Exposed=(Window,Worker),
RaisesException=Constructor,
GarbageCollected,
- TypeChecking=Interface,
] interface Headers {
[RaisesException] void append(ByteString name, ByteString value);
[ImplementedAs=remove, RaisesException] void delete(ByteString key);
diff --git a/modules/fetch/Request.idl b/modules/fetch/Request.idl
index f545af9..7fe8fed 100644
--- a/modules/fetch/Request.idl
+++ b/modules/fetch/Request.idl
@@ -13,25 +13,26 @@
"prefetch", "script", "serviceworker", "sharedworker",
"subresource", "style", "track", "video", "worker", "xmlhttprequest", "xslt"
};
-enum RequestMode { "same-origin", "no-cors", "cors" };
+enum RequestMode { "navigate", "same-origin", "no-cors", "cors" };
enum RequestCredentials { "omit", "same-origin", "include" };
+enum RequestRedirect { "follow", "error", "manual" };
[
Constructor(RequestInfo input, optional Dictionary requestInitDict),
ConstructorCallWith=ScriptState,
Exposed=(Window,Worker),
RaisesException=Constructor,
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
- TypeChecking=Interface,
] interface Request {
readonly attribute ByteString method;
readonly attribute USVString url;
readonly attribute Headers headers;
- [DeprecateAs=FetchAPIRequestContext] readonly attribute RequestContext context;
readonly attribute DOMString referrer;
readonly attribute RequestMode mode;
readonly attribute RequestCredentials credentials;
+ readonly attribute RequestRedirect redirect;
+ readonly attribute DOMString integrity;
[RaisesException] Request clone();
};
diff --git a/modules/fetch/Response.idl b/modules/fetch/Response.idl
index 5deaa68..cd8a275 100644
--- a/modules/fetch/Response.idl
+++ b/modules/fetch/Response.idl
@@ -4,19 +4,17 @@
// http://fetch.spec.whatwg.org/#response-class
-enum ResponseType { "basic", "cors", "default", "error", "opaque" };
-
-// FIXME: Add union type: URLSearchParams
-typedef (Blob or ArrayBuffer or ArrayBufferView or FormData or USVString) BodyInit;
+enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredirect" };
[
- Constructor(optional BodyInit body, optional Dictionary responseInitDict),
- ConstructorCallWith=ExecutionContext,
+ // TODO(yhirano): We use "any" for body because the IDL processor doesn't
+ // recognize ReadableStream implemented with V8 extras. Fix it.
+ Constructor(optional any body, optional Dictionary responseInitDict),
+ ConstructorCallWith=ScriptState,
Exposed=(Window,Worker),
RaisesException=Constructor,
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
- TypeChecking=Interface,
] interface Response {
[CallWith=ExecutionContext] static Response error();
[CallWith=ExecutionContext, RaisesException] static Response redirect(USVString url, optional unsigned short status = 302);
@@ -29,7 +27,7 @@
[RaisesException] Response clone();
- readonly attribute ReadableByteStream body;
+ [ImplementedAs=bodyWithUseCounter] readonly attribute ReadableByteStream body;
};
Response implements Body;
diff --git a/modules/filesystem/DOMFileSystem.idl b/modules/filesystem/DOMFileSystem.idl
index 80f5032..1652123 100644
--- a/modules/filesystem/DOMFileSystem.idl
+++ b/modules/filesystem/DOMFileSystem.idl
@@ -31,7 +31,7 @@
[
NoInterfaceObject,
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
] interface DOMFileSystem {
readonly attribute DOMString name;
diff --git a/modules/filesystem/WorkerGlobalScopeFileSystem.idl b/modules/filesystem/DedicatedWorkerGlobalScopeFileSystem.idl
similarity index 94%
rename from modules/filesystem/WorkerGlobalScopeFileSystem.idl
rename to modules/filesystem/DedicatedWorkerGlobalScopeFileSystem.idl
index f01817a..d050cd6 100644
--- a/modules/filesystem/WorkerGlobalScopeFileSystem.idl
+++ b/modules/filesystem/DedicatedWorkerGlobalScopeFileSystem.idl
@@ -24,7 +24,8 @@
*
*/
-partial interface WorkerGlobalScope {
+[ImplementedAs=WorkerGlobalScopeFileSystem]
+partial interface DedicatedWorkerGlobalScope {
const unsigned short TEMPORARY = 0;
const unsigned short PERSISTENT = 1;
@@ -32,6 +33,4 @@
[RuntimeEnabled=FileSystem, RaisesException, MeasureAs=RequestFileSystemSyncWorker] DOMFileSystemSync webkitRequestFileSystemSync(unsigned short type, long long size);
[RuntimeEnabled=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url, EntryCallback successCallback, optional ErrorCallback errorCallback);
[RuntimeEnabled=FileSystem, RaisesException] EntrySync webkitResolveLocalFileSystemSyncURL(DOMString url);
-
- [RuntimeEnabled=FileSystem] attribute FileErrorConstructor FileError;
};
diff --git a/modules/filesystem/FileEntry.idl b/modules/filesystem/FileEntry.idl
index 818b759..a8382ea 100644
--- a/modules/filesystem/FileEntry.idl
+++ b/modules/filesystem/FileEntry.idl
@@ -32,5 +32,5 @@
NoInterfaceObject
] interface FileEntry : Entry {
void createWriter(FileWriterCallback successCallback, optional ErrorCallback errorCallback);
- void file(FileCallback successCallback, optional ErrorCallback errorCallback);
+ void file(BlobCallback successCallback, optional ErrorCallback errorCallback);
};
diff --git a/modules/filesystem/FileWriter.idl b/modules/filesystem/FileWriter.idl
index 4cac0d0..0e07baf 100644
--- a/modules/filesystem/FileWriter.idl
+++ b/modules/filesystem/FileWriter.idl
@@ -31,14 +31,14 @@
[
NoInterfaceObject,
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
] interface FileWriter : EventTarget {
// ready states
const unsigned short INIT = 0;
const unsigned short WRITING = 1;
const unsigned short DONE = 2;
- readonly attribute unsigned short readyState;
+ [ImplementedAs=getReadyState] readonly attribute unsigned short readyState;
// async write/modify methods
[RaisesException] void write(Blob data);
diff --git a/modules/filesystem/WorkerGlobalScopeFileSystem.idl b/modules/filesystem/SharedWorkerGlobalScopeFileSystem.idl
similarity index 94%
copy from modules/filesystem/WorkerGlobalScopeFileSystem.idl
copy to modules/filesystem/SharedWorkerGlobalScopeFileSystem.idl
index f01817a..b01deac 100644
--- a/modules/filesystem/WorkerGlobalScopeFileSystem.idl
+++ b/modules/filesystem/SharedWorkerGlobalScopeFileSystem.idl
@@ -24,7 +24,8 @@
*
*/
-partial interface WorkerGlobalScope {
+[ImplementedAs=WorkerGlobalScopeFileSystem]
+partial interface SharedWorkerGlobalScope {
const unsigned short TEMPORARY = 0;
const unsigned short PERSISTENT = 1;
@@ -32,6 +33,4 @@
[RuntimeEnabled=FileSystem, RaisesException, MeasureAs=RequestFileSystemSyncWorker] DOMFileSystemSync webkitRequestFileSystemSync(unsigned short type, long long size);
[RuntimeEnabled=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url, EntryCallback successCallback, optional ErrorCallback errorCallback);
[RuntimeEnabled=FileSystem, RaisesException] EntrySync webkitResolveLocalFileSystemSyncURL(DOMString url);
-
- [RuntimeEnabled=FileSystem] attribute FileErrorConstructor FileError;
};
diff --git a/modules/geolocation/testing/InternalsGeolocation.idl b/modules/geolocation/testing/InternalsGeolocation.idl
index 1619c21..ac6b2d3 100644
--- a/modules/geolocation/testing/InternalsGeolocation.idl
+++ b/modules/geolocation/testing/InternalsGeolocation.idl
@@ -28,9 +28,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- TypeChecking=Interface
-] partial interface Internals {
+partial interface Internals {
void setGeolocationClientMock(Document document);
void setGeolocationPosition(Document document, double latitude, double longitude, double accuracy);
void setGeolocationPositionUnavailableError(Document document, DOMString message);
diff --git a/modules/imagebitmap/ImageBitmapRenderingContext.idl b/modules/imagebitmap/ImageBitmapRenderingContext.idl
new file mode 100644
index 0000000..ac6f794
--- /dev/null
+++ b/modules/imagebitmap/ImageBitmapRenderingContext.idl
@@ -0,0 +1,14 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ RuntimeEnabled=ExperimentalCanvasFeatures,
+ SetWrapperReferenceFrom=canvas,
+ WillBeGarbageCollected,
+] interface ImageBitmapRenderingContext {
+ // back-reference to the canvas
+ readonly attribute HTMLCanvasElement canvas;
+
+ void transferImageBitmap(ImageBitmap bitmap);
+};
diff --git a/modules/imagebitmap/WindowImageBitmapFactories.idl b/modules/imagebitmap/WindowImageBitmapFactories.idl
deleted file mode 100644
index b265a6d..0000000
--- a/modules/imagebitmap/WindowImageBitmapFactories.idl
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2013, Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// https://html.spec.whatwg.org/#imagebitmapfactories
-
-// TODO(philipj): This should be part of the ImageBitmapFactories interface.
-[
- RuntimeEnabled=ExperimentalCanvasFeatures,
- TypeChecking=Interface,
-] partial interface Window {
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(HTMLImageElement image);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(HTMLImageElement image, long sx, long sy, long sw, long sh);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(HTMLVideoElement video);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(HTMLVideoElement video, long sx, long sy, long sw, long sh);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(CanvasRenderingContext2D context);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(CanvasRenderingContext2D context, long sx, long sy, long sw, long sh);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(HTMLCanvasElement canvas);
- [CallWith=ScriptState, RaisesException] Promise createImageBitmap(HTMLCanvasElement canvas, long sx, long sy, long sw, long sh);
-};
diff --git a/modules/indexeddb/IDBDatabase.idl b/modules/indexeddb/IDBDatabase.idl
index 1df577e..b6d72d4 100644
--- a/modules/indexeddb/IDBDatabase.idl
+++ b/modules/indexeddb/IDBDatabase.idl
@@ -28,12 +28,11 @@
[
Exposed=(Window,Worker),
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
] interface IDBDatabase : EventTarget {
readonly attribute DOMString name;
- // TODO(jsbell): DOMString version is non-standard, to support databases created with old API.
- readonly attribute (unsigned long long or DOMString) version;
+ readonly attribute unsigned long long version;
[Measure] readonly attribute DOMStringList objectStoreNames;
[RaisesException] IDBObjectStore createObjectStore(DOMString name, optional IDBObjectStoreParameters options);
diff --git a/modules/indexeddb/IDBIndex.idl b/modules/indexeddb/IDBIndex.idl
index ac023ed..e2e17b7 100644
--- a/modules/indexeddb/IDBIndex.idl
+++ b/modules/indexeddb/IDBIndex.idl
@@ -38,9 +38,9 @@
[CallWith=ScriptState, RaisesException] IDBRequest get(any key);
[CallWith=ScriptState, RaisesException] IDBRequest getKey(any key);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
- [CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
+ [CallWith=ScriptState, RaisesException] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
- [CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAllKeys([Default=Undefined] optional any range, [EnforceRange] optional unsigned long maxCount = 0xFFFFFFFF);
+ [CallWith=ScriptState, RaisesException] IDBRequest getAllKeys([Default=Undefined] optional any range, [EnforceRange] optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest count([Default=Undefined] optional any key);
[CallWith=ScriptState, RaisesException] IDBRequest openCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
[CallWith=ScriptState, RaisesException] IDBRequest openKeyCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
diff --git a/modules/indexeddb/IDBObjectStore.idl b/modules/indexeddb/IDBObjectStore.idl
index ae4fc4f..3422d7c 100644
--- a/modules/indexeddb/IDBObjectStore.idl
+++ b/modules/indexeddb/IDBObjectStore.idl
@@ -41,14 +41,12 @@
[CallWith=ScriptState, RaisesException] IDBRequest clear();
[CallWith=ScriptState, RaisesException] IDBRequest get(any key);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
- [CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
- // TODO(cmumford): Standardize or eventually remove. More info at:
- // https://w3c.github.io/IndexedDB/#widl-IDBObjectStore-getAllKeys-IDBRequest-any-query-unsigned-long-count
+ [CallWith=ScriptState, RaisesException] IDBRequest getAll([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
// TODO(cmumford): 0xFFFFFFFF is not necessary. Remove once crbug.com/335871 is fixed.
- [CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest getAllKeys([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
+ [CallWith=ScriptState, RaisesException] IDBRequest getAllKeys([Default=Undefined] optional any range, optional unsigned long maxCount = 0xFFFFFFFF);
[CallWith=ScriptState, RaisesException] IDBRequest count([Default=Undefined] optional any key);
[CallWith=ScriptState, RaisesException] IDBRequest openCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
- [CallWith=ScriptState, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest openKeyCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
+ [CallWith=ScriptState, RaisesException] IDBRequest openKeyCursor([Default=Undefined] optional any range, optional IDBCursorDirection direction = "next");
[CallWith=ScriptState, RaisesException] IDBIndex createIndex(DOMString name, (DOMString or sequence<DOMString>) keyPath, optional IDBIndexParameters options);
[RaisesException] IDBIndex index(DOMString name);
[RaisesException] void deleteIndex(DOMString name);
diff --git a/modules/indexeddb/IDBRequest.idl b/modules/indexeddb/IDBRequest.idl
index 42694a9..0620d7f 100644
--- a/modules/indexeddb/IDBRequest.idl
+++ b/modules/indexeddb/IDBRequest.idl
@@ -38,11 +38,11 @@
[
Exposed=(Window,Worker),
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
] interface IDBRequest : EventTarget {
[RaisesException=Getter, CachedAttribute=isResultDirty] readonly attribute any result;
- [RaisesException=Getter, Measure] readonly attribute DOMError error;
+ [RaisesException=Getter] readonly attribute DOMException error;
readonly attribute any source;
readonly attribute IDBTransaction transaction;
diff --git a/modules/indexeddb/IDBTransaction.idl b/modules/indexeddb/IDBTransaction.idl
index 7f56759..abe303d 100644
--- a/modules/indexeddb/IDBTransaction.idl
+++ b/modules/indexeddb/IDBTransaction.idl
@@ -1,4 +1,4 @@
- /*
+/*
* Copyright (C) 2010 Google Inc. All rights reserved.
* Copyright (C) 2011 Apple Inc. All rights reserved.
*
@@ -36,15 +36,15 @@
[
Exposed=(Window,Worker),
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected
] interface IDBTransaction : EventTarget {
// Properties
- [RuntimeEnabled=IndexedDBExperimental, Measure] readonly attribute DOMStringList objectStoreNames;
+ [Measure] readonly attribute DOMStringList objectStoreNames;
readonly attribute IDBTransactionMode mode;
readonly attribute IDBDatabase db;
- [Measure] readonly attribute DOMError error;
+ readonly attribute DOMException error;
// Methods
[RaisesException] IDBObjectStore objectStore (DOMString name);
diff --git a/modules/mediacapturefromelement/CanvasCaptureMediaStreamTrack.idl b/modules/mediacapturefromelement/CanvasCaptureMediaStreamTrack.idl
new file mode 100644
index 0000000..69c5fef
--- /dev/null
+++ b/modules/mediacapturefromelement/CanvasCaptureMediaStreamTrack.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://www.w3.org/TR/mediacapture-fromelement/#the-canvascapturemediastream
+[
+ RuntimeEnabled=MediaCaptureFromCanvas
+] interface CanvasCaptureMediaStreamTrack : MediaStreamTrack {
+ readonly attribute HTMLCanvasElement canvas;
+ void requestFrame ();
+};
diff --git a/modules/mediacapturefromelement/HTMLCanvasElementCapture.idl b/modules/mediacapturefromelement/HTMLCanvasElementCapture.idl
new file mode 100644
index 0000000..ca2cc74
--- /dev/null
+++ b/modules/mediacapturefromelement/HTMLCanvasElementCapture.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://www.w3.org/TR/mediacapture-fromelement/#html-canvas-element-media-capture-extensions
+[
+ RuntimeEnabled=MediaCaptureFromCanvas
+] partial interface HTMLCanvasElement {
+ [RaisesException] MediaStream captureStream (optional double frameRate);
+};
diff --git a/modules/mediacapturefromelement/HTMLMediaElementCapture.idl b/modules/mediacapturefromelement/HTMLMediaElementCapture.idl
new file mode 100644
index 0000000..059f3d1
--- /dev/null
+++ b/modules/mediacapturefromelement/HTMLMediaElementCapture.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-fromelement/#html-media-element-media-capture-extensions
+
+[
+ RuntimeEnabled=MediaCaptureFromVideo
+] partial interface HTMLMediaElement {
+ [RaisesException] MediaStream captureStream();
+ // TODO(mcasas): Implement captureStreamUntilEnded() http://crbug.com/575495.
+};
diff --git a/modules/mediarecorder/BlobEvent.idl b/modules/mediarecorder/BlobEvent.idl
new file mode 100644
index 0000000..5d46d57
--- /dev/null
+++ b/modules/mediarecorder/BlobEvent.idl
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-record/MediaRecorder.html#blob-event
+
+[
+ Constructor(DOMString type, BlobEventInit eventInitDict),
+ RuntimeEnabled=MediaRecorder
+]
+interface BlobEvent : Event {
+ readonly attribute Blob data;
+};
diff --git a/modules/mediarecorder/BlobEventInit.idl b/modules/mediarecorder/BlobEventInit.idl
new file mode 100644
index 0000000..23fe9bd
--- /dev/null
+++ b/modules/mediarecorder/BlobEventInit.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-record/MediaRecorder.html#blobeventinit
+
+dictionary BlobEventInit : EventInit {
+ required Blob data;
+};
diff --git a/modules/mediarecorder/MediaRecorder.idl b/modules/mediarecorder/MediaRecorder.idl
new file mode 100644
index 0000000..aa15744
--- /dev/null
+++ b/modules/mediarecorder/MediaRecorder.idl
@@ -0,0 +1,38 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-record/MediaRecorder.html#MediaRecorderAPI
+
+enum RecordingState { "inactive", "recording", "paused" };
+
+[
+ GarbageCollected,
+ DependentLifetime,
+ Constructor(MediaStream stream, optional MediaRecorderOptions options),
+ ConstructorCallWith=ExecutionContext,
+ RaisesException=Constructor,
+ RuntimeEnabled=MediaRecorder,
+] interface MediaRecorder : EventTarget {
+ readonly attribute MediaStream stream;
+ readonly attribute DOMString mimeType;
+ readonly attribute RecordingState state;
+
+ attribute EventHandler onstart;
+ attribute EventHandler onstop;
+ attribute EventHandler ondataavailable;
+ attribute EventHandler onpause;
+ attribute EventHandler onresume;
+ attribute EventHandler onerror;
+ attribute boolean ignoreMutedMedia;
+ readonly attribute unsigned long videoBitsPerSecond;
+ readonly attribute unsigned long audioBitsPerSecond;
+
+ [RaisesException] void start(optional long timeslice);
+ [RaisesException] void stop();
+ [RaisesException] void pause();
+ [RaisesException] void resume();
+ [RaisesException] void requestData();
+
+ static boolean isTypeSupported(DOMString type);
+};
diff --git a/modules/mediarecorder/MediaRecorderOptions.idl b/modules/mediarecorder/MediaRecorderOptions.idl
new file mode 100644
index 0000000..40da2b0
--- /dev/null
+++ b/modules/mediarecorder/MediaRecorderOptions.idl
@@ -0,0 +1,14 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-record/MediaRecorder.html#MediaRecorderOptions
+
+dictionary MediaRecorderOptions {
+ DOMString mimeType; // Encoding mimeType.
+
+ // TODO(mcasas): Consider changing the following options to signed: https://github.com/w3c/mediacapture-record/issues/48, and/or using [EnforceRange]/[Clamp].
+ unsigned long audioBitsPerSecond;
+ unsigned long videoBitsPerSecond;
+ unsigned long bitsPerSecond;
+};
diff --git a/modules/mediasession/HTMLMediaElementMediaSession.idl b/modules/mediasession/HTMLMediaElementMediaSession.idl
index 14b2fe5..a32ece1 100644
--- a/modules/mediasession/HTMLMediaElementMediaSession.idl
+++ b/modules/mediasession/HTMLMediaElementMediaSession.idl
@@ -5,8 +5,7 @@
// https://mediasession.spec.whatwg.org/#extensions-to-the-htmlmediaelement-interface
[
- TypeChecking=Interface,
RuntimeEnabled=MediaSession,
] partial interface HTMLMediaElement {
- attribute MediaSession? session;
+ [RaisesException=Setter] attribute MediaSession? session;
};
diff --git a/modules/mediasession/MediaMetadata.idl b/modules/mediasession/MediaMetadata.idl
new file mode 100644
index 0000000..03f0d45
--- /dev/null
+++ b/modules/mediasession/MediaMetadata.idl
@@ -0,0 +1,15 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://mediasession.spec.whatwg.org/#the-mediametadata-interface
+
+[
+ Constructor(MediaMetadataInit metadata),
+ GarbageCollected,
+ RuntimeEnabled=MediaSession,
+] interface MediaMetadata {
+ readonly attribute DOMString title;
+ readonly attribute DOMString artist;
+ readonly attribute DOMString album;
+};
diff --git a/modules/mediasession/MediaMetadataInit.idl b/modules/mediasession/MediaMetadataInit.idl
new file mode 100644
index 0000000..60377cd
--- /dev/null
+++ b/modules/mediasession/MediaMetadataInit.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://mediasession.spec.whatwg.org/#the-mediametadata-interface
+
+dictionary MediaMetadataInit {
+ DOMString title = "";
+ DOMString artist = "";
+ DOMString album = "";
+};
diff --git a/modules/mediasession/MediaSession.idl b/modules/mediasession/MediaSession.idl
index 235604b..b09cbc3 100644
--- a/modules/mediasession/MediaSession.idl
+++ b/modules/mediasession/MediaSession.idl
@@ -6,9 +6,13 @@
[
Constructor(),
+ ConstructorCallWith=ExecutionContext,
+ RaisesException=Constructor,
GarbageCollected,
RuntimeEnabled=MediaSession,
] interface MediaSession {
- void activate();
- void deactivate();
+ attribute MediaMetadata? metadata;
+
+ [CallWith=ScriptState] Promise<void> activate();
+ [CallWith=ScriptState] Promise<void> deactivate();
};
diff --git a/modules/mediasource/MediaSource.idl b/modules/mediasource/MediaSource.idl
index 244160b..253faa0 100644
--- a/modules/mediasource/MediaSource.idl
+++ b/modules/mediasource/MediaSource.idl
@@ -36,11 +36,10 @@
};
[
- ActiveDOMObject,
+ DependentLifetime,
Constructor,
ConstructorCallWith=ExecutionContext,
RuntimeEnabled=MediaSource,
- TypeChecking=Interface,
] interface MediaSource : EventTarget {
// All the source buffers created by this object.
readonly attribute SourceBufferList sourceBuffers;
diff --git a/modules/mediasource/SourceBuffer.idl b/modules/mediasource/SourceBuffer.idl
index 6329078..a3f206e 100644
--- a/modules/mediasource/SourceBuffer.idl
+++ b/modules/mediasource/SourceBuffer.idl
@@ -36,15 +36,12 @@
};
[
- ActiveDOMObject,
- NoInterfaceObject,
+ DependentLifetime,
RuntimeEnabled=MediaSource,
- TypeChecking=Interface,
] interface SourceBuffer : EventTarget {
// Gets or sets the AppendMode.
- // FIXME: Remove MediaSourceExperimental once mode attribute is implemented and stabilized. See http://crbug.com/249422.
- [RaisesException=Setter, RuntimeEnabled=MediaSourceExperimental] attribute AppendMode mode;
+ [RaisesException=Setter] attribute AppendMode mode;
readonly attribute boolean updating;
@@ -74,4 +71,3 @@
// the initialization segment algorithm.
[RaisesException=Setter, RuntimeEnabled=MediaSourceExperimental] attribute TrackDefaultList trackDefaults;
};
-
diff --git a/modules/mediasource/SourceBufferList.idl b/modules/mediasource/SourceBufferList.idl
index eb4db73..2cd26cc 100644
--- a/modules/mediasource/SourceBufferList.idl
+++ b/modules/mediasource/SourceBufferList.idl
@@ -30,7 +30,6 @@
[
GarbageCollected,
- NoInterfaceObject,
RuntimeEnabled=MediaSource,
] interface SourceBufferList : EventTarget {
readonly attribute unsigned long length;
diff --git a/modules/mediasource/URLMediaSource.idl b/modules/mediasource/URLMediaSource.idl
index 92c7e37..db0aa53 100644
--- a/modules/mediasource/URLMediaSource.idl
+++ b/modules/mediasource/URLMediaSource.idl
@@ -30,8 +30,6 @@
// https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#idl-def-URL
-[
- TypeChecking=Interface,
-] partial interface URL {
+partial interface URL {
[CallWith=ExecutionContext] static DOMString? createObjectURL(MediaSource source);
};
diff --git a/modules/mediastream/ConstrainBooleanParameters.idl b/modules/mediastream/ConstrainBooleanParameters.idl
new file mode 100644
index 0000000..c8e9677
--- /dev/null
+++ b/modules/mediastream/ConstrainBooleanParameters.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-ConstrainBooleanParameters
+
+dictionary ConstrainBooleanParameters {
+ boolean exact;
+ boolean ideal;
+};
diff --git a/modules/mediastream/ConstrainDOMStringParameters.idl b/modules/mediastream/ConstrainDOMStringParameters.idl
new file mode 100644
index 0000000..93bc42e
--- /dev/null
+++ b/modules/mediastream/ConstrainDOMStringParameters.idl
@@ -0,0 +1,14 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-ConstrainLongRange
+
+dictionary ConstrainDOMStringParameters {
+ sequence<DOMString> exact;
+ sequence<DOMString> ideal;
+ // The spec says that the members should be:
+ // (DOMString or sequence<DOMString>) exact;
+ // (DOMString or sequence<DOMString>) ideal;
+ // This is blocked on https://crbug.com/524424
+};
diff --git a/modules/mediastream/ConstrainDoubleRange.idl b/modules/mediastream/ConstrainDoubleRange.idl
new file mode 100644
index 0000000..15e92f2
--- /dev/null
+++ b/modules/mediastream/ConstrainDoubleRange.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-ConstrainDoubleRange
+
+dictionary ConstrainDoubleRange : DoubleRange {
+ double exact;
+ double ideal;
+};
diff --git a/modules/mediastream/ConstrainLongRange.idl b/modules/mediastream/ConstrainLongRange.idl
new file mode 100644
index 0000000..a894734
--- /dev/null
+++ b/modules/mediastream/ConstrainLongRange.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-ConstrainLongRange
+
+dictionary ConstrainLongRange : LongRange {
+ long exact;
+ long ideal;
+};
diff --git a/modules/mediastream/DoubleRange.idl b/modules/mediastream/DoubleRange.idl
new file mode 100644
index 0000000..424dfb0
--- /dev/null
+++ b/modules/mediastream/DoubleRange.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-DoubleRange
+
+dictionary DoubleRange {
+ double max;
+ double min;
+};
diff --git a/modules/mediastream/LongRange.idl b/modules/mediastream/LongRange.idl
new file mode 100644
index 0000000..d6dc0a4
--- /dev/null
+++ b/modules/mediastream/LongRange.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-LongRange
+
+dictionary LongRange {
+ long max;
+ long min;
+};
diff --git a/modules/mediastream/MediaDeviceInfo.idl b/modules/mediastream/MediaDeviceInfo.idl
index 4d441f4..34b0e0c 100644
--- a/modules/mediastream/MediaDeviceInfo.idl
+++ b/modules/mediastream/MediaDeviceInfo.idl
@@ -37,4 +37,5 @@
readonly attribute MediaDeviceKind kind;
readonly attribute DOMString label;
readonly attribute DOMString groupId;
+ serializer = {attribute};
};
diff --git a/modules/mediastream/MediaDevices.idl b/modules/mediastream/MediaDevices.idl
index 38c43de..f7aa991 100644
--- a/modules/mediastream/MediaDevices.idl
+++ b/modules/mediastream/MediaDevices.idl
@@ -8,9 +8,9 @@
[
GarbageCollected,
- RuntimeEnabled=EnumerateDevices
+ RuntimeEnabled=MediaDevices
]
interface MediaDevices {
- [RuntimeEnabled=EnumerateDevices, TypeChecking=Interface, CallWith=ScriptState] Promise<sequence<MediaDeviceInfo>> enumerateDevices();
- [CallWith=ScriptState, RaisesException] Promise<MediaStream> getUserMedia(Dictionary options);
+ [CallWith=ScriptState, MeasureAs=MediaDevicesEnumerateDevices] Promise<sequence<MediaDeviceInfo>> enumerateDevices();
+ [RuntimeEnabled=GetUserMedia, CallWith=ScriptState, RaisesException] Promise<MediaStream> getUserMedia(MediaStreamConstraints options);
};
diff --git a/modules/mediastream/MediaStream.idl b/modules/mediastream/MediaStream.idl
index 1a042b7..146dff1 100644
--- a/modules/mediastream/MediaStream.idl
+++ b/modules/mediastream/MediaStream.idl
@@ -22,7 +22,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-MediaStream
+// http://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-MediaStream
[
GarbageCollected,
@@ -32,8 +32,6 @@
ConstructorCallWith=ExecutionContext,
NoInterfaceObject,
] interface MediaStream : EventTarget {
- // DEPRECATED
- [DeprecateAs=MediaStreamLabel] readonly attribute DOMString label;
readonly attribute DOMString id;
@@ -45,18 +43,13 @@
[RaisesException] void removeTrack(MediaStreamTrack track);
MediaStreamTrack getTrackById(DOMString trackId);
[CallWith=ExecutionContext] MediaStream clone();
- // DEPRECATED
- [DeprecateAs=MediaStreamEnded] readonly attribute boolean ended;
readonly attribute boolean active;
- // DEPRECATED
- [DeprecateAs=MediaStreamStop] void stop();
-
attribute EventHandler onactive;
attribute EventHandler oninactive;
// DEPRECATED
- attribute EventHandler onended;
+ [MeasureAs=MediaStreamOnEnded] attribute EventHandler onended;
attribute EventHandler onaddtrack;
attribute EventHandler onremovetrack;
diff --git a/modules/mediastream/MediaStreamConstraints.idl b/modules/mediastream/MediaStreamConstraints.idl
new file mode 100644
index 0000000..b5a8fee
--- /dev/null
+++ b/modules/mediastream/MediaStreamConstraints.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-MediaStreamConstraints
+
+dictionary MediaStreamConstraints {
+ (boolean or MediaTrackConstraintSet) video;
+ (boolean or MediaTrackConstraintSet) audio;
+};
diff --git a/modules/mediastream/MediaStreamTrack.idl b/modules/mediastream/MediaStreamTrack.idl
index b707a46..1c7f1fd 100644
--- a/modules/mediastream/MediaStreamTrack.idl
+++ b/modules/mediastream/MediaStreamTrack.idl
@@ -24,16 +24,17 @@
[
GarbageCollected,
- ActiveDOMObject
+ DependentLifetime
] interface MediaStreamTrack : EventTarget {
readonly attribute DOMString kind;
readonly attribute DOMString id;
readonly attribute DOMString label;
attribute boolean enabled;
readonly attribute boolean muted;
+ readonly attribute boolean remote;
readonly attribute DOMString readyState;
- [CallWith=ExecutionContext, RaisesException, MeasureAs=MediaStreamTrackGetSources] static void getSources(MediaStreamTrackSourcesCallback callback);
+ [CallWith=ExecutionContext, RaisesException, DeprecateAs=MediaStreamTrackGetSources] static void getSources(MediaStreamTrackSourcesCallback callback);
[ImplementedAs=stopTrack, RaisesException] void stop();
[CallWith=ExecutionContext] MediaStreamTrack clone();
diff --git a/modules/mediastream/MediaTrackConstraintSet.idl b/modules/mediastream/MediaTrackConstraintSet.idl
new file mode 100644
index 0000000..04a3f33
--- /dev/null
+++ b/modules/mediastream/MediaTrackConstraintSet.idl
@@ -0,0 +1,36 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/mediacapture-main/getusermedia.html#idl-def-MediaTrackConstraintSet
+
+typedef ConstrainLongRange ConstrainLong;
+typedef ConstrainDoubleRange ConstrainDouble;
+typedef ConstrainBooleanParameters ConstrainBoolean;
+typedef ConstrainDOMStringParameters ConstrainDOMString;
+// The spec says that the typedefs should be:
+// typedef (long or ConstrainLongRange) ConstrainLong;
+// typedef (double or ConstrainDoubleRange) ConstrainDouble;
+// typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean;
+// typedef (DOMString or sequence<DOMString> or ConstrainDomStringParameters) ConstrainDomString;
+// This is blocked on https://crbug.com/524424
+
+dictionary MediaTrackConstraintSet {
+ [RuntimeEnabled=MediaConstraints] ConstrainLong width;
+ [RuntimeEnabled=MediaConstraints] ConstrainLong height;
+ [RuntimeEnabled=MediaConstraints] ConstrainDouble aspectRatio;
+ [RuntimeEnabled=MediaConstraints] ConstrainDouble frameRate;
+ [RuntimeEnabled=MediaConstraints] ConstrainDOMString facingMode;
+ [RuntimeEnabled=MediaConstraints] ConstrainDouble volume;
+ [RuntimeEnabled=MediaConstraints] ConstrainLong sampleRate;
+ [RuntimeEnabled=MediaConstraints] ConstrainLong sampleSize;
+ [RuntimeEnabled=MediaConstraints] ConstrainBoolean echoCancellation;
+ [RuntimeEnabled=MediaConstraints] ConstrainDouble latency;
+ [RuntimeEnabled=MediaConstraints] ConstrainLong channelCount;
+ [RuntimeEnabled=MediaConstraints] ConstrainDOMString deviceId;
+ [RuntimeEnabled=MediaConstraints] ConstrainDOMString groupId;
+ // The "mandatory" and "_optional" members are retained for conformance
+ // with https://www.w3.org/TR/2013/WD-mediacapture-streams-20130903/
+ Dictionary mandatory;
+ sequence<Dictionary> _optional;
+};
diff --git a/modules/mediastream/NavigatorMediaStream.idl b/modules/mediastream/NavigatorMediaStream.idl
index f8c0199..9453f9f 100644
--- a/modules/mediastream/NavigatorMediaStream.idl
+++ b/modules/mediastream/NavigatorMediaStream.idl
@@ -18,7 +18,7 @@
*/
partial interface Navigator {
- [RaisesException] void webkitGetUserMedia(Dictionary options,
+ [RaisesException] void webkitGetUserMedia(MediaStreamConstraints options,
NavigatorUserMediaSuccessCallback successCallback,
NavigatorUserMediaErrorCallback errorCallback);
};
diff --git a/modules/mediastream/NavigatorUserMedia.idl b/modules/mediastream/NavigatorUserMedia.idl
index 8c38ca1..c3ba9f0 100644
--- a/modules/mediastream/NavigatorUserMedia.idl
+++ b/modules/mediastream/NavigatorUserMedia.idl
@@ -5,6 +5,6 @@
// http://w3c.github.io/mediacapture-main/#navigatorusermedia
partial interface Navigator {
- [RuntimeEnabled=EnumerateDevices] readonly attribute MediaDevices mediaDevices;
+ [RuntimeEnabled=MediaDevices] readonly attribute MediaDevices mediaDevices;
};
diff --git a/modules/mediastream/RTCErrorCallback.idl b/modules/mediastream/RTCCertificate.idl
similarity index 83%
rename from modules/mediastream/RTCErrorCallback.idl
rename to modules/mediastream/RTCCertificate.idl
index bb7414b..b6e9a4a 100644
--- a/modules/mediastream/RTCErrorCallback.idl
+++ b/modules/mediastream/RTCCertificate.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
+ * Copyright (C) 2015 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,7 +28,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-callback interface RTCErrorCallback {
- void handleEvent(DOMString errorInformation);
+// https://w3c.github.io/webrtc-pc/#rtccertificate-interface
+[
+ GarbageCollected,
+] interface RTCCertificate {
+ // The expiration time in ms relative to epoch, 1970-01-01T00:00:00Z.
+ readonly attribute DOMTimeStamp expires;
};
-
diff --git a/modules/mediastream/RTCDTMFSender.idl b/modules/mediastream/RTCDTMFSender.idl
index c6f6076..25cd3e5 100644
--- a/modules/mediastream/RTCDTMFSender.idl
+++ b/modules/mediastream/RTCDTMFSender.idl
@@ -26,7 +26,7 @@
[
GarbageCollected,
NoInterfaceObject,
- ActiveDOMObject
+ DependentLifetime
] interface RTCDTMFSender : EventTarget {
readonly attribute boolean canInsertDTMF;
readonly attribute MediaStreamTrack track;
diff --git a/modules/mediastream/RTCDataChannel.idl b/modules/mediastream/RTCDataChannel.idl
index 83f0472..ee017de 100644
--- a/modules/mediastream/RTCDataChannel.idl
+++ b/modules/mediastream/RTCDataChannel.idl
@@ -38,7 +38,9 @@
readonly attribute unsigned short id;
readonly attribute DOMString readyState;
readonly attribute unsigned long bufferedAmount;
+ attribute unsigned long bufferedAmountLowThreshold;
attribute EventHandler onopen;
+ attribute EventHandler onbufferedamountlow;
attribute EventHandler onerror;
attribute EventHandler onclose;
void close();
diff --git a/modules/mediastream/RTCIceCandidate.idl b/modules/mediastream/RTCIceCandidate.idl
index d6ce94d..d3bce54 100644
--- a/modules/mediastream/RTCIceCandidate.idl
+++ b/modules/mediastream/RTCIceCandidate.idl
@@ -33,8 +33,8 @@
Constructor(RTCIceCandidateInit candidateInitDict),
RaisesException=Constructor
] interface RTCIceCandidate {
- [TreatNullAs=NullString] attribute DOMString candidate;
- [TreatNullAs=NullString] attribute DOMString sdpMid;
+ attribute DOMString candidate;
+ attribute DOMString sdpMid;
attribute unsigned short sdpMLineIndex;
serializer = {attribute};
};
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl
index fa54946..8938088 100644
--- a/modules/mediastream/RTCPeerConnection.idl
+++ b/modules/mediastream/RTCPeerConnection.idl
@@ -28,56 +28,106 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// https://w3c.github.io/webrtc-pc/#state-definitions
+
+enum RTCSignalingState {
+ "stable",
+ "have-local-offer",
+ "have-remote-offer",
+ "have-local-pranswer",
+ "have-remote-pranswer",
+ "closed"
+};
+
+enum RTCIceGatheringState {
+ "new",
+ "gathering",
+ "complete"
+};
+
+enum RTCIceConnectionState {
+ "new",
+ "checking",
+ "connected",
+ "completed",
+ "failed",
+ "disconnected",
+ "closed"
+};
+
+// https://w3c.github.io/webrtc-pc/#interface-definition
+
+// TODO(guidou): Many types are of the wrong type in this interface:
+// * Dictionary -> specific dictionary types like RTCConfiguration
+// * VoidCallback -> VoidFunction
[
GarbageCollected,
- ActiveDOMObject,
+ DependentLifetime,
+ // TODO(guidou): There should only be one constructor argument, and it
+ // should be optional.
Constructor(Dictionary rtcConfiguration, optional Dictionary mediaConstraints),
ConstructorCallWith=ExecutionContext,
NoInterfaceObject,
RaisesException=Constructor,
] interface RTCPeerConnection : EventTarget {
- [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary rtcOfferOptions);
-
- [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
-
- [RaisesException] void setLocalDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback);
- [RaisesException=Getter] readonly attribute RTCSessionDescription localDescription;
-
- [RaisesException] void setRemoteDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback);
- [RaisesException=Getter] readonly attribute RTCSessionDescription remoteDescription;
-
- readonly attribute DOMString signalingState;
-
- [RaisesException] void updateIce(optional Dictionary configuration, optional Dictionary mediaConstraints);
-
- // DEPRECATED
- [RaisesException] void addIceCandidate(RTCIceCandidate candidate);
-
- [RaisesException] void addIceCandidate(RTCIceCandidate candidate, VoidCallback successCallback, RTCErrorCallback failureCallback);
-
- readonly attribute DOMString iceGatheringState;
- readonly attribute DOMString iceConnectionState;
-
- sequence<MediaStream> getLocalStreams();
- sequence<MediaStream> getRemoteStreams();
- MediaStream getStreamById(DOMString streamId);
-
- [TypeChecking=Interface, RaisesException] void addStream(MediaStream? stream, optional Dictionary mediaConstraints);
- [TypeChecking=Interface, RaisesException] void removeStream(MediaStream? stream);
-
- void getStats(RTCStatsCallback successCallback, [Default=Undefined] optional MediaStreamTrack selector);
-
- [RaisesException] RTCDataChannel createDataChannel([TreatUndefinedAs=NullString] DOMString? label, optional Dictionary options);
-
- [RaisesException] RTCDTMFSender createDTMFSender(MediaStreamTrack track);
-
+ // Promise<RTCSessionDescription> createOffer(optional RTCOfferOptions options);
+ // Promise<RTCSessionDescription> createAnswer(optional RTCAnswerOptions options);
+ [CallWith=ScriptState] Promise<void> setLocalDescription(RTCSessionDescriptionInit description);
+ readonly attribute RTCSessionDescription? localDescription;
+ // readonly attribute RTCSessionDescription? currentLocalDescription;
+ // readonly attribute RTCSessionDescription? pendingLocalDescription;
+ [CallWith=ScriptState] Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);
+ readonly attribute RTCSessionDescription? remoteDescription;
+ // readonly attribute RTCSessionDescription? currentRemoteDescription;
+ // readonly attribute RTCSessionDescription? pendingRemoteDescription;
+ [CallWith=ScriptState] Promise<void> addIceCandidate ((RTCIceCandidateInit or RTCIceCandidate) candidate);
+ readonly attribute RTCSignalingState signalingState;
+ readonly attribute RTCIceGatheringState iceGatheringState;
+ readonly attribute RTCIceConnectionState iceConnectionState;
+ // readonly attribute boolean? canTrickleIceCandidates;
+ // RTCConfiguration getConfiguration();
+ // void setConfiguration(RTCConfiguration configuration);
+ // TODO(guidou): close() should never throw an exception.
[RaisesException] void close();
-
attribute EventHandler onnegotiationneeded;
attribute EventHandler onicecandidate;
attribute EventHandler onsignalingstatechange;
+ attribute EventHandler oniceconnectionstatechange;
+ // attribute EventHandler onicegatheringstatechange;
+
+ // https://w3c.github.io/webrtc-pc/#legacy-interface-extensions
+ // These methods return or will be changed to return Promise<void> because
+ // having Promise-based versions requires that all overloads return Promises.
+ [CallWith=ExecutionContext, RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional Dictionary rtcOfferOptions);
+ // TODO(guidou): There should be no mediaConstraints argument.
+ [CallWith=ExecutionContext, RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints);
+ [CallWith=ScriptState] Promise<void> setLocalDescription(RTCSessionDescription description, VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback);
+ // TODO(guidou): The failureCallback argument should be non-optional.
+ [CallWith=ScriptState] Promise<void> setRemoteDescription(RTCSessionDescription description, VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback);
+ [CallWith=ScriptState] Promise<void> addIceCandidate(RTCIceCandidate candidate, VoidCallback successCallback, RTCPeerConnectionErrorCallback failureCallback);
+ // TODO(guidou): The selector argument should the first (nullable,
+ // non-optional) argument, and there should be a third failureCallback
+ // argument.
+ [CallWith=ExecutionContext, LegacyInterfaceTypeChecking] void getStats(RTCStatsCallback successCallback, [Default=Undefined] optional MediaStreamTrack selector);
+
+ // https://w3c.github.io/webrtc-pc/#peer-to-peer-data-api
+ // TODO(guidou): The label argument should have [TreatNullAs=EmptyString]
+ // and be non-nullable.
+ [RaisesException] RTCDataChannel createDataChannel([TreatUndefinedAs=NullString] DOMString? label, optional Dictionary options);
+ attribute EventHandler ondatachannel;
+
+ // Non-standard or removed from the spec:
+ [CallWith=ExecutionContext, RaisesException] void updateIce(optional Dictionary configuration, optional Dictionary mediaConstraints);
+ sequence<MediaStream> getLocalStreams();
+ sequence<MediaStream> getRemoteStreams();
+ MediaStream getStreamById(DOMString streamId);
+ [CallWith=ExecutionContext, RaisesException] void addStream(MediaStream? stream, optional Dictionary mediaConstraints);
+ [RaisesException] void removeStream(MediaStream? stream);
+ [RaisesException] RTCDTMFSender createDTMFSender(MediaStreamTrack track);
attribute EventHandler onaddstream;
attribute EventHandler onremovestream;
- attribute EventHandler oniceconnectionstatechange;
- attribute EventHandler ondatachannel;
+
+ // Certificate management
+ // http://w3c.github.io/webrtc-pc/#sec.cert-mgmt
+ [RaisesException, CallWith=ScriptState] static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm);
};
diff --git a/modules/mediastream/RTCPeerConnectionErrorCallback.idl b/modules/mediastream/RTCPeerConnectionErrorCallback.idl
new file mode 100644
index 0000000..c159a9f
--- /dev/null
+++ b/modules/mediastream/RTCPeerConnectionErrorCallback.idl
@@ -0,0 +1,10 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/webrtc-pc/#rtcpeerconnectionerrorcallback
+
+callback interface RTCPeerConnectionErrorCallback {
+ void handleEvent(DOMException exception);
+};
+
diff --git a/modules/navigatorconnect/CrossOriginConnectEvent.idl b/modules/navigatorconnect/CrossOriginConnectEvent.idl
deleted file mode 100644
index 88823e3..0000000
--- a/modules/navigatorconnect/CrossOriginConnectEvent.idl
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// http://mkruisselbrink.github.io/navigator-connect/#idl-def-CrossOriginConnectEvent
-[
- Exposed=ServiceWorker,
- RuntimeEnabled=NavigatorConnect,
- TypeChecking=Interface
-] interface CrossOriginConnectEvent : Event {
- readonly attribute CrossOriginServiceWorkerClient client;
-
- [CallWith=ScriptState, RaisesException] void acceptConnection(Promise<boolean> shouldAccept);
-};
diff --git a/modules/navigatorconnect/ServicePortCollection.idl b/modules/navigatorconnect/ServicePortCollection.idl
index 31372cf..bcdc2b0 100644
--- a/modules/navigatorconnect/ServicePortCollection.idl
+++ b/modules/navigatorconnect/ServicePortCollection.idl
@@ -6,9 +6,7 @@
[
Exposed=(Window,Worker),
GarbageCollected,
- TypeChecking=Interface,
RuntimeEnabled=NavigatorConnect,
- TypeChecking=Interface,
] interface ServicePortCollection : EventTarget {
[CallWith=ScriptState, RaisesException] Promise<ServicePort> connect(DOMString url, optional ServicePortConnectOptions options);
[CallWith=ScriptState] Promise<ServicePort> match(ServicePortMatchOptions options);
diff --git a/modules/navigatorconnect/ServicePortConnectEvent.idl b/modules/navigatorconnect/ServicePortConnectEvent.idl
index 799c4bb..27fd436 100644
--- a/modules/navigatorconnect/ServicePortConnectEvent.idl
+++ b/modules/navigatorconnect/ServicePortConnectEvent.idl
@@ -6,7 +6,6 @@
[
Exposed=ServiceWorker,
RuntimeEnabled=NavigatorConnect,
- TypeChecking=Interface,
Constructor(DOMString type, optional ServicePortConnectEventInit eventInitDict),
] interface ServicePortConnectEvent : ExtendableEvent {
readonly attribute DOMString targetURL;
diff --git a/modules/navigatorconnect/ServiceWorkerGlobalScopeNavigatorConnect.idl b/modules/navigatorconnect/ServiceWorkerGlobalScopeNavigatorConnect.idl
index c9dc163..fe645ae 100644
--- a/modules/navigatorconnect/ServiceWorkerGlobalScopeNavigatorConnect.idl
+++ b/modules/navigatorconnect/ServiceWorkerGlobalScopeNavigatorConnect.idl
@@ -7,6 +7,5 @@
[
RuntimeEnabled=NavigatorConnect,
] partial interface ServiceWorkerGlobalScope {
- attribute EventHandler oncrossoriginconnect;
attribute EventHandler oncrossoriginmessage;
};
diff --git a/modules/netinfo/NetworkInformation.idl b/modules/netinfo/NetworkInformation.idl
index 166c2b5..c45ccdb 100644
--- a/modules/netinfo/NetworkInformation.idl
+++ b/modules/netinfo/NetworkInformation.idl
@@ -7,18 +7,23 @@
"bluetooth",
"ethernet",
"wifi",
+ "wimax",
"other",
"none",
"unknown"
};
+typedef unrestricted double Megabit;
+
[
RuntimeEnabled=NetworkInformation,
Exposed=(Window,Worker),
GarbageCollected,
- ActiveDOMObject
+ DependentLifetime
] interface NetworkInformation : EventTarget {
- readonly attribute ConnectionType type;
- attribute EventHandler ontypechange;
+ [MeasureAs=NetInfoType] readonly attribute ConnectionType type;
+ [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoDownlinkMax] readonly attribute Megabit downlinkMax;
+ [RuntimeEnabled=NetInfoDownlinkMax, MeasureAs=NetInfoOnChange] attribute EventHandler onchange;
+ [MeasureAs=NetInfoOnTypeChange] attribute EventHandler ontypechange;
};
diff --git a/modules/nfc/MessageCallback.idl b/modules/nfc/MessageCallback.idl
new file mode 100644
index 0000000..edbffe5
--- /dev/null
+++ b/modules/nfc/MessageCallback.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/web-nfc/#idl-def-messagecallback
+
+callback interface MessageCallback {
+ void handleMessage(NFCMessage message);
+};
diff --git a/modules/nfc/NFC.idl b/modules/nfc/NFC.idl
new file mode 100644
index 0000000..bb0f520
--- /dev/null
+++ b/modules/nfc/NFC.idl
@@ -0,0 +1,17 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/web-nfc/#the-nfc-interface
+
+typedef (DOMString or ArrayBuffer or NFCMessage) NFCPushMessage;
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebNFC,
+] interface NFC {
+ [CallWith=ScriptState] Promise<void> push (NFCPushMessage message, optional NFCPushOptions options);
+ [CallWith=ScriptState] Promise<void> cancelPush (optional NFCPushTarget target = "any");
+ [CallWith=ScriptState] Promise<long> watch (MessageCallback callback, optional NFCWatchOptions options);
+ [CallWith=ScriptState] Promise<void> cancelWatch (optional long id);
+};
diff --git a/modules/nfc/NFCMessage.idl b/modules/nfc/NFCMessage.idl
new file mode 100644
index 0000000..5cea9c7
--- /dev/null
+++ b/modules/nfc/NFCMessage.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/web-nfc/#the-nfcmessage-dictionary
+
+dictionary NFCMessage {
+ sequence<NFCRecord> data;
+ USVString url;
+};
diff --git a/modules/nfc/NFCPushOptions.idl b/modules/nfc/NFCPushOptions.idl
new file mode 100644
index 0000000..c7c78fb
--- /dev/null
+++ b/modules/nfc/NFCPushOptions.idl
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/web-nfc/#the-nfcpushoptions-dictionary
+
+enum NFCPushTarget { "tag", "peer", "any" };
+
+dictionary NFCPushOptions {
+ NFCPushTarget target = "any";
+ unrestricted double timeout; // in ms
+ boolean ignoreRead = true;
+};
diff --git a/modules/nfc/NFCRecord.idl b/modules/nfc/NFCRecord.idl
new file mode 100644
index 0000000..48bfd24
--- /dev/null
+++ b/modules/nfc/NFCRecord.idl
@@ -0,0 +1,17 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/web-nfc/#the-nfcrecord-dictionary
+
+enum NFCRecordType { "empty", "text", "url", "json", "opaque" };
+
+// TODO(shalamov): This is blocked by https://crbug.com/524424
+// typedef (DOMString or unrestricted double or ArrayBuffer or Dictionary) NFCRecordData;
+typedef any NFCRecordData;
+
+dictionary NFCRecord {
+ NFCRecordType recordType;
+ USVString mediaType;
+ NFCRecordData data;
+};
diff --git a/modules/nfc/NFCWatchOptions.idl b/modules/nfc/NFCWatchOptions.idl
new file mode 100644
index 0000000..8a4722d
--- /dev/null
+++ b/modules/nfc/NFCWatchOptions.idl
@@ -0,0 +1,14 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/web-nfc/#the-nfcwatchoptions-dictionary
+
+enum NFCWatchMode { "web-nfc-only", "any" };
+
+dictionary NFCWatchOptions {
+ USVString url = "";
+ NFCRecordType? recordType;
+ USVString mediaType = "";
+ NFCWatchMode mode = "web-nfc-only";
+};
diff --git a/modules/nfc/NavigatorNFC.idl b/modules/nfc/NavigatorNFC.idl
new file mode 100644
index 0000000..1b6d2e6
--- /dev/null
+++ b/modules/nfc/NavigatorNFC.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://w3c.github.io/web-nfc/
+
+[
+ RuntimeEnabled=WebNFC,
+] partial interface Navigator {
+ readonly attribute NFC nfc;
+};
diff --git a/modules/notifications/Notification.idl b/modules/notifications/Notification.idl
index 0ad1096..8ad23a1 100644
--- a/modules/notifications/Notification.idl
+++ b/modules/notifications/Notification.idl
@@ -29,9 +29,19 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// https://notifications.spec.whatwg.org/#enumdef-notificationpermission
+
+enum NotificationPermission {
+ "default",
+ "denied",
+ "granted"
+};
+
+// https://notifications.spec.whatwg.org/#api
+
[
GarbageCollected,
- ActiveDOMObject,
+ DependentLifetime,
Constructor(DOMString title, optional NotificationOptions options),
ConstructorCallWith=ExecutionContext,
Exposed=(Window,Worker),
@@ -39,10 +49,11 @@
RaisesException=Constructor,
RuntimeEnabled=Notifications,
] interface Notification : EventTarget {
- [CallWith=ExecutionContext, MeasureAs=NotificationPermission] static readonly attribute DOMString permission;
- [CallWith=ExecutionContext, MeasureAs=NotificationPermissionRequested] static void requestPermission(optional NotificationPermissionCallback callback);
+ [CallWith=ExecutionContext, MeasureAs=NotificationPermission] static readonly attribute NotificationPermission permission;
- // FIXME: Implement the Notification.get() method.
+ [CallWith=ScriptState, Exposed=Window, MeasureAs=NotificationPermissionRequested] static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback deprecatedCallback);
+
+ static readonly attribute unsigned long maxActions;
attribute EventHandler onclick;
[MeasureAs=NotificationShowEvent] attribute EventHandler onshow;
@@ -54,11 +65,19 @@
readonly attribute DOMString lang;
readonly attribute DOMString body;
readonly attribute DOMString tag;
- readonly attribute DOMString icon;
+ readonly attribute USVString icon;
[RuntimeEnabled=NotificationExperimental] readonly attribute sequence<unsigned long>? vibrate;
+ readonly attribute DOMTimeStamp timestamp;
+ readonly attribute boolean renotify;
readonly attribute boolean silent;
- [CallWith=ScriptState] readonly attribute any data;
+ readonly attribute boolean requireInteraction;
+ [CallWith=ScriptState, SameObject] readonly attribute any data;
+
+ // TODO(johnme): Ship once Blink supports FrozenArray (https://crbug.com/515920)
+ // and we've implemented the additional Object.freeze described in
+ // https://notifications.spec.whatwg.org/#dom-notification-actions
+ [RuntimeEnabled=NotificationExperimental] readonly attribute sequence<NotificationAction> actions;
[MeasureAs=NotificationClosed] void close();
};
diff --git a/modules/notifications/NotificationAction.idl b/modules/notifications/NotificationAction.idl
new file mode 100644
index 0000000..be78856
--- /dev/null
+++ b/modules/notifications/NotificationAction.idl
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://notifications.spec.whatwg.org/#dictdef-notificationaction
+
+dictionary NotificationAction {
+ required DOMString action;
+ required DOMString title;
+ [RuntimeEnabled=NotificationActionIcons] USVString icon;
+};
diff --git a/modules/notifications/NotificationEvent.idl b/modules/notifications/NotificationEvent.idl
index 89bc93f..4261777 100644
--- a/modules/notifications/NotificationEvent.idl
+++ b/modules/notifications/NotificationEvent.idl
@@ -5,10 +5,10 @@
// https://notifications.spec.whatwg.org/#service-worker-api
[
- Constructor(DOMString type, optional NotificationEventInit eventInitDict),
+ Constructor(DOMString type, NotificationEventInit eventInitDict),
Exposed=ServiceWorker,
- RuntimeEnabled=ServiceWorkerNotifications,
- TypeChecking=Interface,
+ RuntimeEnabled=Notifications,
] interface NotificationEvent : ExtendableEvent {
readonly attribute Notification notification;
+ readonly attribute DOMString action;
};
diff --git a/modules/notifications/NotificationEventInit.idl b/modules/notifications/NotificationEventInit.idl
index 47ce14a..79ab16b 100644
--- a/modules/notifications/NotificationEventInit.idl
+++ b/modules/notifications/NotificationEventInit.idl
@@ -5,5 +5,6 @@
// https://notifications.spec.whatwg.org/#notificationevent
dictionary NotificationEventInit : ExtendableEventInit {
- Notification notification;
+ required Notification notification;
+ DOMString action = "";
};
diff --git a/modules/notifications/NotificationOptions.idl b/modules/notifications/NotificationOptions.idl
index 364907e..9b1ded4 100644
--- a/modules/notifications/NotificationOptions.idl
+++ b/modules/notifications/NotificationOptions.idl
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// http://notifications.spec.whatwg.org/#api
+// https://notifications.spec.whatwg.org/#api
enum NotificationDirection {
"auto",
@@ -15,9 +15,13 @@
DOMString lang = "";
DOMString body = "";
DOMString tag = "";
- DOMString icon;
+ USVString icon;
// TODO(sh919.park): vibrate should be ([Clamp] unsigned long or sequence<unsigned long>)
(unsigned long or sequence<unsigned long>) vibrate;
+ DOMTimeStamp timestamp;
+ boolean renotify = false;
boolean silent = false;
+ boolean requireInteraction = false;
any data = null;
+ sequence<NotificationAction> actions = [];
};
diff --git a/modules/notifications/NotificationPermissionCallback.idl b/modules/notifications/NotificationPermissionCallback.idl
index 09f7a1b..a596669 100644
--- a/modules/notifications/NotificationPermissionCallback.idl
+++ b/modules/notifications/NotificationPermissionCallback.idl
@@ -23,6 +23,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// https://notifications.spec.whatwg.org/#api
+
callback interface NotificationPermissionCallback {
void handleEvent(DOMString permission);
};
diff --git a/modules/notifications/ServiceWorkerGlobalScopeNotifications.idl b/modules/notifications/ServiceWorkerGlobalScopeNotifications.idl
index b2a61e5..45f2c54 100644
--- a/modules/notifications/ServiceWorkerGlobalScopeNotifications.idl
+++ b/modules/notifications/ServiceWorkerGlobalScopeNotifications.idl
@@ -5,8 +5,8 @@
// https://notifications.spec.whatwg.org/#service-worker-api
[
- RuntimeEnabled=ServiceWorkerNotifications,
+ RuntimeEnabled=Notifications,
] partial interface ServiceWorkerGlobalScope {
attribute EventHandler onnotificationclick;
- attribute EventHandler onnotificationerror;
+ attribute EventHandler onnotificationclose;
};
diff --git a/modules/notifications/ServiceWorkerRegistrationNotifications.idl b/modules/notifications/ServiceWorkerRegistrationNotifications.idl
index fed85c5..bb5330b 100644
--- a/modules/notifications/ServiceWorkerRegistrationNotifications.idl
+++ b/modules/notifications/ServiceWorkerRegistrationNotifications.idl
@@ -6,7 +6,7 @@
[
Exposed=(Window, ServiceWorker),
- RuntimeEnabled=ServiceWorkerNotifications
+ RuntimeEnabled=Notifications
] partial interface ServiceWorkerRegistration {
[CallWith=ScriptState, RaisesException] Promise showNotification(DOMString title, optional NotificationOptions options);
[CallWith=ScriptState] Promise<sequence<Notification>> getNotifications(optional GetNotificationOptions filter);
diff --git a/modules/permissions/PermissionStatus.idl b/modules/permissions/PermissionStatus.idl
index 61354cb..e62fa89 100644
--- a/modules/permissions/PermissionStatus.idl
+++ b/modules/permissions/PermissionStatus.idl
@@ -12,13 +12,11 @@
};
[
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
Exposed=(Window,Worker),
RuntimeEnabled=Permissions,
] interface PermissionStatus : EventTarget {
- [DeprecateAs=PermissionStatusStatus, ImplementedAs=state] readonly attribute PermissionState status;
-
readonly attribute PermissionState state;
attribute EventHandler onchange;
};
diff --git a/modules/permissions/Permissions.idl b/modules/permissions/Permissions.idl
index ccf21eb..9f2306a 100644
--- a/modules/permissions/Permissions.idl
+++ b/modules/permissions/Permissions.idl
@@ -10,5 +10,8 @@
GarbageCollected,
RuntimeEnabled=Permissions
] interface Permissions {
- [CallWith=ScriptState, Measure] Promise<PermissionStatus> query(object permission);
+ [CallWith=ScriptState, Measure] Promise<PermissionStatus> query(Dictionary permission);
+ [RuntimeEnabled=PermissionsRequestRevoke, CallWith=ScriptState, Measure] Promise<PermissionStatus> request(Dictionary permissions);
+ [RuntimeEnabled=PermissionsRequestRevoke, CallWith=ScriptState, Measure] Promise<PermissionStatus> revoke(Dictionary permission);
+ [RuntimeEnabled=PermissionsRequestRevoke, CallWith=ScriptState, Measure] Promise<sequence<PermissionStatus>> requestAll(sequence<Dictionary> permissions);
};
diff --git a/modules/presentation/DefaultSessionStartEvent.idl b/modules/presentation/DefaultSessionStartEvent.idl
deleted file mode 100644
index 70bdf7e..0000000
--- a/modules/presentation/DefaultSessionStartEvent.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://w3c.github.io/presentation-api/#interface-defaultsessionstartevent
-
-[
- Constructor(DOMString type, optional DefaultSessionStartEventInit eventInitDict),
- RuntimeEnabled=Presentation
-] interface DefaultSessionStartEvent : Event {
- [SameObject] readonly attribute PresentationSession session;
-};
diff --git a/modules/presentation/DefaultSessionStartEventInit.idl b/modules/presentation/DefaultSessionStartEventInit.idl
deleted file mode 100644
index 90f9db3..0000000
--- a/modules/presentation/DefaultSessionStartEventInit.idl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://w3c.github.io/presentation-api/#interface-defaultsessionstartevent
-
-dictionary DefaultSessionStartEventInit : EventInit {
- PresentationSession session;
-};
diff --git a/modules/presentation/Presentation.idl b/modules/presentation/Presentation.idl
index 2ec7725..968abde 100644
--- a/modules/presentation/Presentation.idl
+++ b/modules/presentation/Presentation.idl
@@ -7,16 +7,9 @@
[
GarbageCollected,
RuntimeEnabled=Presentation
-] interface Presentation : EventTarget {
- // This API used by controlling browsing context.
- [CallWith=ScriptState] Promise<PresentationSession> startSession(DOMString url);
- // TODO(avayvod): The |presentationId| argument should not be optional.
- [CallWith=ScriptState] Promise<PresentationSession> joinSession(DOMString url, [Default=Undefined] optional DOMString presentationId);
- [CallWith=ScriptState] Promise<PresentationAvailability> getAvailability(DOMString url);
- attribute EventHandler ondefaultsessionstart;
+] interface Presentation {
+ [MeasureAs=PresentationDefaultRequest] attribute PresentationRequest? defaultRequest;
- // This API used by presenting browsing context.
- // TODO(avayvod): The spec has |getSession()| and |getSessions()| instead.
- readonly attribute PresentationSession? session;
- // TODO(avayvod): attribute EventHandler onsessionavailable;
+ // This API is available on the receiving browsing context.
+ [RuntimeEnabled=PresentationReceiver, SameObject] readonly attribute PresentationReceiver? receiver;
};
diff --git a/modules/presentation/PresentationAvailability.idl b/modules/presentation/PresentationAvailability.idl
index 4afd903..a1c72cb 100644
--- a/modules/presentation/PresentationAvailability.idl
+++ b/modules/presentation/PresentationAvailability.idl
@@ -5,7 +5,7 @@
// https://w3c.github.io/presentation-api/#interface-presentationavailability
[
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
RuntimeEnabled=Presentation,
] interface PresentationAvailability : EventTarget {
diff --git a/modules/presentation/PresentationConnection.idl b/modules/presentation/PresentationConnection.idl
new file mode 100644
index 0000000..0210567
--- /dev/null
+++ b/modules/presentation/PresentationConnection.idl
@@ -0,0 +1,33 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/presentation-api/#interface-presentationconnection
+
+enum PresentationConnectionState {
+ "connected",
+ "closed",
+ "terminated"
+};
+
+[
+ GarbageCollected,
+ RuntimeEnabled=Presentation
+] interface PresentationConnection : EventTarget {
+ readonly attribute DOMString? id;
+ readonly attribute PresentationConnectionState state;
+ [MeasureAs=PresentationConnectionClose] void close();
+ [MeasureAs=PresentationConnectionTerminate] void terminate();
+ [DeprecateAs=PresentationConnectionStateChangeEventListener] attribute EventHandler onstatechange;
+ attribute EventHandler onconnect;
+ attribute EventHandler onclose;
+ attribute EventHandler onterminate;
+
+ // Communication
+ attribute BinaryType binaryType;
+ attribute EventHandler onmessage;
+ [RaisesException, MeasureAs=PresentationConnectionSend] void send(DOMString message);
+ [RaisesException, MeasureAs=PresentationConnectionSend] void send(Blob data);
+ [RaisesException, MeasureAs=PresentationConnectionSend] void send(ArrayBuffer data);
+ [RaisesException, MeasureAs=PresentationConnectionSend] void send(ArrayBufferView data);
+};
diff --git a/modules/presentation/PresentationConnectionAvailableEvent.idl b/modules/presentation/PresentationConnectionAvailableEvent.idl
new file mode 100644
index 0000000..a937e2e
--- /dev/null
+++ b/modules/presentation/PresentationConnectionAvailableEvent.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/presentation-api/#interface-presentationconnectionavailableeevent
+
+[
+ Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict),
+ RuntimeEnabled=Presentation
+] interface PresentationConnectionAvailableEvent : Event {
+ [SameObject] readonly attribute PresentationConnection connection;
+};
diff --git a/modules/presentation/PresentationConnectionAvailableEventInit.idl b/modules/presentation/PresentationConnectionAvailableEventInit.idl
new file mode 100644
index 0000000..1f28673
--- /dev/null
+++ b/modules/presentation/PresentationConnectionAvailableEventInit.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/presentation-api/#idl-def-presentationconnectionavailableeventinit
+
+dictionary PresentationConnectionAvailableEventInit : EventInit {
+ required PresentationConnection connection;
+};
diff --git a/modules/presentation/PresentationConnectionCloseEvent.idl b/modules/presentation/PresentationConnectionCloseEvent.idl
new file mode 100644
index 0000000..88f004b
--- /dev/null
+++ b/modules/presentation/PresentationConnectionCloseEvent.idl
@@ -0,0 +1,15 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://w3c.github.io/presentation-api/#interface-presentationconnectioncloseevent
+
+enum PresentationConnectionCloseReason { "error", "closed", "wentaway" };
+
+[
+ Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict),
+ RuntimeEnabled=Presentation
+] interface PresentationConnectionCloseEvent : Event {
+ readonly attribute PresentationConnectionCloseReason reason;
+ readonly attribute DOMString message;
+};
diff --git a/modules/presentation/PresentationConnectionCloseEventInit.idl b/modules/presentation/PresentationConnectionCloseEventInit.idl
new file mode 100644
index 0000000..f56dbab
--- /dev/null
+++ b/modules/presentation/PresentationConnectionCloseEventInit.idl
@@ -0,0 +1,8 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+dictionary PresentationConnectionCloseEventInit : EventInit {
+ required PresentationConnectionCloseReason reason;
+ DOMString message;
+};
diff --git a/modules/presentation/PresentationReceiver.idl b/modules/presentation/PresentationReceiver.idl
new file mode 100644
index 0000000..4039cec
--- /dev/null
+++ b/modules/presentation/PresentationReceiver.idl
@@ -0,0 +1,15 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/presentation-api/#interface-presentation
+
+[
+ GarbageCollected,
+ RuntimeEnabled=PresentationReceiver
+] interface PresentationReceiver : EventTarget {
+ [CallWith=ScriptState] Promise<PresentationConnection> getConnection();
+ [CallWith=ScriptState] Promise<sequence<PresentationConnection>> getConnections();
+
+ attribute EventHandler onconnectionavailable;
+};
diff --git a/modules/presentation/PresentationRequest.idl b/modules/presentation/PresentationRequest.idl
new file mode 100644
index 0000000..dc92159
--- /dev/null
+++ b/modules/presentation/PresentationRequest.idl
@@ -0,0 +1,22 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// TODO(mlamouri): double-check link after spec changes have landed.
+// https://w3c.github.io/presentation-api/#interface-presentationrequest
+
+[
+ Constructor(DOMString url),
+ ConstructorCallWith=ExecutionContext,
+ RaisesException=Constructor,
+ DependentLifetime,
+ GarbageCollected,
+ RuntimeEnabled=Presentation,
+ MeasureAs=PresentationRequestConstructor
+] interface PresentationRequest : EventTarget {
+ [CallWith=ScriptState, MeasureAs=PresentationRequestStart] Promise<PresentationConnection> start();
+ [CallWith=ScriptState, MeasureAs=PresentationRequestReconnect] Promise<PresentationConnection> reconnect(DOMString id);
+ [CallWith=ScriptState, MeasureAs=PresentationRequestGetAvailability] Promise<PresentationAvailability> getAvailability();
+
+ attribute EventHandler onconnectionavailable;
+};
diff --git a/modules/presentation/PresentationSession.idl b/modules/presentation/PresentationSession.idl
deleted file mode 100644
index 493f8ca..0000000
--- a/modules/presentation/PresentationSession.idl
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://w3c.github.io/presentation-api/#interface-presentationsession
-
-enum PresentationSessionState {
- "connected",
- "disconnected"
-};
-
-[
- GarbageCollected,
- RuntimeEnabled=Presentation
-] interface PresentationSession : EventTarget {
- readonly attribute DOMString? id;
- readonly attribute PresentationSessionState state;
- void close();
- attribute EventHandler onstatechange;
-
- // Communication
- attribute BinaryType binaryType;
- attribute EventHandler onmessage;
- [RaisesException] void send(DOMString message);
- [RaisesException] void send(Blob data);
- [RaisesException] void send(ArrayBuffer data);
- [RaisesException] void send(ArrayBufferView data);
-};
diff --git a/modules/push_messaging/PushEventInit.idl b/modules/push_messaging/PushEventInit.idl
index aa921f4..a5672f8 100644
--- a/modules/push_messaging/PushEventInit.idl
+++ b/modules/push_messaging/PushEventInit.idl
@@ -4,6 +4,9 @@
// https://w3c.github.io/push-api/#idl-def-PushEvent
+// TODO(peter): Use BufferSource when union types can refer to other union types.
+typedef (ArrayBuffer or ArrayBufferView or USVString) PushMessageDataInit;
+
dictionary PushEventInit : ExtendableEventInit {
- PushMessageData data;
+ PushMessageDataInit data;
};
diff --git a/modules/push_messaging/PushMessageData.idl b/modules/push_messaging/PushMessageData.idl
index fab3d5a..9af96db 100644
--- a/modules/push_messaging/PushMessageData.idl
+++ b/modules/push_messaging/PushMessageData.idl
@@ -7,7 +7,6 @@
typedef object JSON;
[
- Constructor(USVString message),
Exposed=ServiceWorker,
GarbageCollected,
RuntimeEnabled=PushMessagingData,
diff --git a/modules/push_messaging/PushSubscription.idl b/modules/push_messaging/PushSubscription.idl
index 0575d1f..469bd8c 100644
--- a/modules/push_messaging/PushSubscription.idl
+++ b/modules/push_messaging/PushSubscription.idl
@@ -4,13 +4,20 @@
// https://w3c.github.io/push-api/#pushsubscription-interface
+enum PushEncryptionKeyName {
+ "p256dh",
+ "auth"
+};
+
[
Exposed=(Window,ServiceWorker),
GarbageCollected,
RuntimeEnabled=PushMessaging,
] interface PushSubscription {
readonly attribute USVString endpoint;
+
+ [RuntimeEnabled=PushMessagingData] ArrayBuffer? getKey(PushEncryptionKeyName name);
[CallWith=ScriptState] Promise<boolean> unsubscribe();
- serializer = { attribute };
+ serializer;
};
diff --git a/modules/quota/NavigatorStorageQuota.idl b/modules/quota/NavigatorStorageQuota.idl
index 21c6e6f..26483d3 100644
--- a/modules/quota/NavigatorStorageQuota.idl
+++ b/modules/quota/NavigatorStorageQuota.idl
@@ -17,9 +17,16 @@
* Boston, MA 02110-1301, USA.
*/
+// This partial interface is a merge of three different partial interfaces
+// related to storage.
partial interface Navigator {
+ // http://www.w3.org/TR/2012/WD-quota-api-20120703/#idl-def-StorageQuotaEnvironment
[MeasureAs=PrefixedStorageQuota] readonly attribute DeprecatedStorageQuota webkitTemporaryStorage;
[MeasureAs=PrefixedStorageQuota] readonly attribute DeprecatedStorageQuota webkitPersistentStorage;
+ // http://www.w3.org/TR/2015/WD-quota-api-20150409/#accessing-storagequota-interface
[RuntimeEnabled=QuotaPromise] readonly attribute StorageQuota storageQuota;
+
+ // https://storage.spec.whatwg.org/#api
+ [RuntimeEnabled=DurableStorage] readonly attribute StorageManager storage;
};
diff --git a/modules/quota/StorageManager.idl b/modules/quota/StorageManager.idl
new file mode 100644
index 0000000..7d48dac
--- /dev/null
+++ b/modules/quota/StorageManager.idl
@@ -0,0 +1,18 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://storage.spec.whatwg.org/#storagemanager
+
+enum PersistentStoragePermission { "default", "denied", "granted" };
+
+[
+ Exposed=(Window,Worker),
+ GarbageCollected,
+ RuntimeEnabled=DurableStorage,
+] interface StorageManager {
+ [Exposed=Window, CallWith=ScriptState] Promise<boolean> requestPersistent();
+ [CallWith=ScriptState] Promise<PersistentStoragePermission> persistentPermission();
+
+ // TODO(dgrogan): Implement estimate() and persistentEstimate().
+};
diff --git a/modules/quota/WorkerNavigatorStorageQuota.idl b/modules/quota/WorkerNavigatorStorageQuota.idl
index c47cb53..cb14bb6 100644
--- a/modules/quota/WorkerNavigatorStorageQuota.idl
+++ b/modules/quota/WorkerNavigatorStorageQuota.idl
@@ -17,7 +17,13 @@
* Boston, MA 02110-1301, USA.
*/
+// This partial interface is a merge of two different partial interfaces
+// related to storage.
partial interface WorkerNavigator {
+ // http://www.w3.org/TR/2012/WD-quota-api-20120703/#idl-def-StorageQuotaEnvironment
[MeasureAs=PrefixedStorageQuota] readonly attribute DeprecatedStorageQuota webkitTemporaryStorage;
[MeasureAs=PrefixedStorageQuota] readonly attribute DeprecatedStorageQuota webkitPersistentStorage;
+
+ // https://storage.spec.whatwg.org/#api
+ [RuntimeEnabled=DurableStorage] readonly attribute StorageManager storage;
};
diff --git a/modules/remoteplayback/HTMLMediaElementRemotePlayback.idl b/modules/remoteplayback/HTMLMediaElementRemotePlayback.idl
new file mode 100644
index 0000000..87e23c7
--- /dev/null
+++ b/modules/remoteplayback/HTMLMediaElementRemotePlayback.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://w3c.github.io/remote-playback/#extension-to-the-htmlmediaelement
+
+partial interface HTMLMediaElement {
+ [Reflect] attribute boolean disableRemotePlayback;
+};
diff --git a/modules/serviceworkers/Client.idl b/modules/serviceworkers/Client.idl
index 134e68a..01dd03e 100644
--- a/modules/serviceworkers/Client.idl
+++ b/modules/serviceworkers/Client.idl
@@ -6,7 +6,6 @@
[
Exposed=ServiceWorker,
GarbageCollected,
- TypeChecking=Interface,
ImplementedAs=ServiceWorkerClient,
] interface Client {
[RuntimeEnabled=ServiceWorkerClientAttributes] readonly attribute USVString url;
diff --git a/modules/serviceworkers/Clients.idl b/modules/serviceworkers/Clients.idl
index bf85fb3..df84bec 100644
--- a/modules/serviceworkers/Clients.idl
+++ b/modules/serviceworkers/Clients.idl
@@ -6,9 +6,9 @@
[
Exposed=ServiceWorker,
GarbageCollected,
- TypeChecking=Interface,
ImplementedAs=ServiceWorkerClients,
] interface Clients {
+ [RuntimeEnabled=ServiceWorkerClientsGetID, CallWith=ScriptState] Promise<any> get(DOMString id);
[CallWith=ScriptState] Promise<sequence<Client>> matchAll(optional ClientQueryOptions options);
[RuntimeEnabled=ServiceWorkerClientAttributes, CallWith=ScriptState] Promise<WindowClient?> openWindow(USVString url);
[CallWith=ScriptState] Promise<void> claim();
diff --git a/modules/serviceworkers/ExtendableEvent.idl b/modules/serviceworkers/ExtendableEvent.idl
index df1bc88..6bef9da 100644
--- a/modules/serviceworkers/ExtendableEvent.idl
+++ b/modules/serviceworkers/ExtendableEvent.idl
@@ -32,7 +32,6 @@
[
Constructor(DOMString type, optional ExtendableEventInit eventInitDict),
Exposed=ServiceWorker,
- TypeChecking=Interface,
] interface ExtendableEvent : Event {
- [CallWith=ScriptState, RaisesException] void waitUntil(any value);
+ [CallWith=ScriptState, RaisesException] void waitUntil(Promise<any> f);
};
diff --git a/modules/serviceworkers/ExtendableMessageEvent.idl b/modules/serviceworkers/ExtendableMessageEvent.idl
new file mode 100644
index 0000000..6da6bbf
--- /dev/null
+++ b/modules/serviceworkers/ExtendableMessageEvent.idl
@@ -0,0 +1,21 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#extendablemessage-event-section
+
+[
+ // TODO(bashi): Stop using CustomConstructor once we solve reference
+ // circulation between Blink and V8. http://crbug.com/501866
+ // Constructor should be:
+ // Constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict),
+ CustomConstructor,
+ Exposed=ServiceWorker,
+ RuntimeEnabled=ServiceWorkerExtendableMessageEvent,
+] interface ExtendableMessageEvent : ExtendableEvent {
+ [Custom=Getter] readonly attribute any data;
+ readonly attribute DOMString origin;
+ readonly attribute DOMString lastEventId;
+ [SameObject] readonly attribute (Client or ServiceWorker or MessagePort)? source;
+ [SameObject] readonly attribute MessagePort[]? ports;
+};
diff --git a/modules/serviceworkers/ExtendableMessageEventInit.idl b/modules/serviceworkers/ExtendableMessageEventInit.idl
new file mode 100644
index 0000000..9d3bbe0
--- /dev/null
+++ b/modules/serviceworkers/ExtendableMessageEventInit.idl
@@ -0,0 +1,15 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#extendablemessage-event-section
+
+[
+ RuntimeEnabled=ServiceWorkerExtendableMessageEvent,
+] dictionary ExtendableMessageEventInit : ExtendableEventInit {
+ any data;
+ DOMString origin;
+ DOMString lastEventId;
+ (Client or ServiceWorker or MessagePort)? source;
+ sequence<MessagePort>? ports;
+};
diff --git a/modules/serviceworkers/FetchEvent.idl b/modules/serviceworkers/FetchEvent.idl
index ffa53ec..e8f4551 100644
--- a/modules/serviceworkers/FetchEvent.idl
+++ b/modules/serviceworkers/FetchEvent.idl
@@ -4,12 +4,12 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#fetch-event-interface
[
- Constructor(DOMString type, optional FetchEventInit eventInitDict),
+ Constructor(DOMString type, FetchEventInit eventInitDict),
Exposed=ServiceWorker,
- TypeChecking=Interface,
] interface FetchEvent : ExtendableEvent {
- readonly attribute Request request;
+ [SameObject] readonly attribute Request request;
+ readonly attribute DOMString? clientId;
readonly attribute boolean isReload;
- [CallWith=ScriptState, RaisesException] void respondWith(any value);
+ [CallWith=ScriptState, RaisesException] void respondWith(Promise<Response> r);
};
diff --git a/modules/serviceworkers/FetchEventInit.idl b/modules/serviceworkers/FetchEventInit.idl
index cac8bbe..80da60f 100644
--- a/modules/serviceworkers/FetchEventInit.idl
+++ b/modules/serviceworkers/FetchEventInit.idl
@@ -5,6 +5,7 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#fetch-event-interface
dictionary FetchEventInit : ExtendableEventInit {
- Request request;
- boolean isReload = false;
+ required Request request;
+ DOMString? clientId = null;
+ boolean isReload = false;
};
diff --git a/modules/serviceworkers/InstallEvent.idl b/modules/serviceworkers/InstallEvent.idl
new file mode 100644
index 0000000..dc9ee12
--- /dev/null
+++ b/modules/serviceworkers/InstallEvent.idl
@@ -0,0 +1,12 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#fetch-event-interface
+[
+ Constructor(DOMString type, optional ExtendableEventInit eventInitDict),
+ Exposed=ServiceWorker,
+ RuntimeEnabled=ForeignFetch,
+] interface InstallEvent : ExtendableEvent {
+ [CallWith=ExecutionContext, RaisesException] void registerForeignFetchScopes(sequence<USVString> subScopes, (USVString or sequence<USVString>) origins);
+};
diff --git a/modules/serviceworkers/NavigatorServiceWorker.idl b/modules/serviceworkers/NavigatorServiceWorker.idl
index b7c95b3..7ffe838 100644
--- a/modules/serviceworkers/NavigatorServiceWorker.idl
+++ b/modules/serviceworkers/NavigatorServiceWorker.idl
@@ -4,5 +4,5 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#navigator-service-worker
partial interface Navigator {
- [RaisesException] readonly attribute ServiceWorkerContainer serviceWorker;
+ [RaisesException, CallWith=ExecutionContext] readonly attribute ServiceWorkerContainer serviceWorker;
};
diff --git a/modules/serviceworkers/ServiceWorker.idl b/modules/serviceworkers/ServiceWorker.idl
index 4efa439..12f157b 100644
--- a/modules/serviceworkers/ServiceWorker.idl
+++ b/modules/serviceworkers/ServiceWorker.idl
@@ -39,8 +39,8 @@
};
[
- ActiveDOMObject,
- TypeChecking=Interface,
+ DependentLifetime,
+ GarbageCollected,
] interface ServiceWorker : EventTarget {
[PostMessage, RaisesException] void postMessage(SerializedScriptValue message, optional sequence<Transferable> transfer);
diff --git a/modules/serviceworkers/ServiceWorkerContainer.idl b/modules/serviceworkers/ServiceWorkerContainer.idl
index 7f1322d..bc58128 100644
--- a/modules/serviceworkers/ServiceWorkerContainer.idl
+++ b/modules/serviceworkers/ServiceWorkerContainer.idl
@@ -31,7 +31,6 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-container-interface
[
GarbageCollected,
- TypeChecking=Interface,
] interface ServiceWorkerContainer : EventTarget {
[Unforgeable] readonly attribute ServiceWorker? controller;
[CallWith=ScriptState] readonly attribute Promise<ServiceWorkerRegistration> ready;
diff --git a/modules/serviceworkers/ServiceWorkerGlobalScope.idl b/modules/serviceworkers/ServiceWorkerGlobalScope.idl
index 2319e5b..df412a7 100644
--- a/modules/serviceworkers/ServiceWorkerGlobalScope.idl
+++ b/modules/serviceworkers/ServiceWorkerGlobalScope.idl
@@ -33,16 +33,11 @@
[
Exposed=ServiceWorker,
Global=(Worker,ServiceWorker),
- TypeChecking=Interface,
] interface ServiceWorkerGlobalScope : WorkerGlobalScope {
readonly attribute Clients clients;
readonly attribute ServiceWorkerRegistration registration;
- // https://github.com/mkruisselbrink/navigator-connect/blob/gh-pages/docs/api-idea.md#persisted-messageports
- // TODO(mek): Link to actual spec when this is added there, and decide if this is the right place for this.
- [RuntimeEnabled=NavigatorConnect] readonly attribute StashedPortCollection ports;
-
[CallWith=ScriptState, RaisesException] Promise<Response> fetch(RequestInfo input, optional Dictionary init);
[RaisesException] void close();
@@ -53,4 +48,5 @@
attribute EventHandler onfetch;
attribute EventHandler oninstall;
attribute EventHandler onmessage;
+ [RuntimeEnabled=ForeignFetch] attribute EventHandler onforeignfetch;
};
diff --git a/modules/serviceworkers/ServiceWorkerMessageEvent.idl b/modules/serviceworkers/ServiceWorkerMessageEvent.idl
index 711f643..f110925 100644
--- a/modules/serviceworkers/ServiceWorkerMessageEvent.idl
+++ b/modules/serviceworkers/ServiceWorkerMessageEvent.idl
@@ -5,7 +5,11 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#serviceworkermessage-event-interface
[
- Constructor(DOMString type, optional ServiceWorkerMessageEventInit eventInitDict),
+ // TODO(bashi): Stop using CustomConstructor once we solve reference
+ // circulation between Blink and V8. http://crbug.com/501866
+ // Constructor should be:
+ // Constructor(DOMString type, optional ServiceWorkerMessageEventInit eventInitDict),
+ CustomConstructor,
Exposed=(Window, Worker),
] interface ServiceWorkerMessageEvent : Event {
[Custom=Getter] readonly attribute any data;
diff --git a/modules/serviceworkers/ServiceWorkerRegistration.idl b/modules/serviceworkers/ServiceWorkerRegistration.idl
index c88cb42..97d7b82 100644
--- a/modules/serviceworkers/ServiceWorkerRegistration.idl
+++ b/modules/serviceworkers/ServiceWorkerRegistration.idl
@@ -5,9 +5,8 @@
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-registration-obj
[
Exposed=(Window,Worker),
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
- TypeChecking=Interface,
] interface ServiceWorkerRegistration : EventTarget {
[Unforgeable] readonly attribute ServiceWorker? installing;
[Unforgeable] readonly attribute ServiceWorker? waiting;
@@ -15,7 +14,7 @@
readonly attribute USVString scope;
- [CallWith=ScriptState, RaisesException] void update();
+ [CallWith=ScriptState] Promise<void> update();
[CallWith=ScriptState] Promise<boolean> unregister();
attribute EventHandler onupdatefound;
diff --git a/modules/serviceworkers/StashedMessagePort.idl b/modules/serviceworkers/StashedMessagePort.idl
deleted file mode 100644
index beab9cb..0000000
--- a/modules/serviceworkers/StashedMessagePort.idl
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://github.com/mkruisselbrink/navigator-connect/blob/gh-pages/docs/api-idea.md#persisted-messageports
-// TODO(mek): Link to actual spec when this is added there.
-[
- Exposed=ServiceWorker,
- RuntimeEnabled=NavigatorConnect,
- GarbageCollected,
-] interface StashedMessagePort : MessagePort {
- readonly attribute DOMString name;
-};
diff --git a/modules/serviceworkers/StashedPortCollection.idl b/modules/serviceworkers/StashedPortCollection.idl
deleted file mode 100644
index 08ffeb0..0000000
--- a/modules/serviceworkers/StashedPortCollection.idl
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// https://github.com/mkruisselbrink/navigator-connect/blob/gh-pages/docs/api-idea.md#persisted-messageports
-// TODO(mek): Link to actual spec when this is added there.
-[
- Exposed=ServiceWorker,
- GarbageCollected,
- RuntimeEnabled=NavigatorConnect,
- TypeChecking=Interface,
-] interface StashedPortCollection : EventTarget {
- [CallWith=ScriptState] StashedMessagePort add(USVString name, MessagePort port);
- // Promise<sequence<StashedMessagePort>> match(UVString name);
- attribute EventHandler onmessage;
-};
diff --git a/modules/serviceworkers/WindowClient.idl b/modules/serviceworkers/WindowClient.idl
index 3af859b..3639408 100644
--- a/modules/serviceworkers/WindowClient.idl
+++ b/modules/serviceworkers/WindowClient.idl
@@ -15,10 +15,10 @@
Exposed=ServiceWorker,
RuntimeEnabled=ServiceWorkerClientAttributes,
GarbageCollected,
- TypeChecking=Interface,
ImplementedAs=ServiceWorkerWindowClient,
] interface WindowClient : Client {
readonly attribute VisibilityState visibilityState;
readonly attribute boolean focused;
[CallWith=ScriptState] Promise<WindowClient> focus();
+ [RuntimeEnabled=ServiceWorkerWindowClientNavigate, CallWith=ScriptState] Promise<WindowClient> navigate(USVString url);
};
diff --git a/modules/speech/SpeechRecognition.idl b/modules/speech/SpeechRecognition.idl
index 71854f7..cbd14c2 100644
--- a/modules/speech/SpeechRecognition.idl
+++ b/modules/speech/SpeechRecognition.idl
@@ -26,17 +26,16 @@
[
GarbageCollected,
NoInterfaceObject,
- ActiveDOMObject,
+ DependentLifetime,
Constructor,
ConstructorCallWith=ExecutionContext,
] interface SpeechRecognition : EventTarget {
- attribute SpeechGrammarList grammars;
+ [LegacyInterfaceTypeChecking] attribute SpeechGrammarList grammars;
attribute DOMString lang;
- attribute DOMString serviceURI;
attribute boolean continuous;
attribute boolean interimResults;
attribute unsigned long maxAlternatives;
- [RuntimeEnabled=MediaStreamSpeech] attribute MediaStreamTrack audioTrack;
+ [RuntimeEnabled=MediaStreamSpeech, LegacyInterfaceTypeChecking] attribute MediaStreamTrack audioTrack;
[RaisesException] void start();
[ImplementedAs=stopFunction] void stop();
diff --git a/modules/speech/SpeechSynthesis.idl b/modules/speech/SpeechSynthesis.idl
index 98b53de..17fa33a 100644
--- a/modules/speech/SpeechSynthesis.idl
+++ b/modules/speech/SpeechSynthesis.idl
@@ -31,7 +31,7 @@
readonly attribute boolean speaking;
readonly attribute boolean paused;
- [RaisesException] void speak(SpeechSynthesisUtterance utterance);
+ void speak(SpeechSynthesisUtterance utterance);
void cancel();
void pause();
void resume();
diff --git a/modules/speech/SpeechSynthesisUtterance.idl b/modules/speech/SpeechSynthesisUtterance.idl
index 7278056..872fa89 100644
--- a/modules/speech/SpeechSynthesisUtterance.idl
+++ b/modules/speech/SpeechSynthesisUtterance.idl
@@ -31,7 +31,7 @@
] interface SpeechSynthesisUtterance : EventTarget {
attribute DOMString text;
attribute DOMString lang;
- attribute SpeechSynthesisVoice voice;
+ [LegacyInterfaceTypeChecking] attribute SpeechSynthesisVoice voice;
attribute float volume;
attribute float rate;
attribute float pitch;
diff --git a/modules/storage/Storage.idl b/modules/storage/Storage.idl
index 63f4d5a..d972137 100644
--- a/modules/storage/Storage.idl
+++ b/modules/storage/Storage.idl
@@ -23,21 +23,26 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+// https://html.spec.whatwg.org/multipage/webstorage.html#the-storage-interface
+
[
GarbageCollected
] interface Storage {
- [NotEnumerable, RaisesException] getter DOMString (unsigned long index);
- [RaisesException] setter DOMString (unsigned long index, DOMString value);
- [RaisesException] deleter boolean (unsigned long index);
+ // TODO(philipj): [NotEnumerable] should not be used anywhere in this interface.
+ [NotEnumerable, RaisesException=Getter] readonly attribute unsigned long length;
+ [NotEnumerable, RaisesException] DOMString? key(unsigned long index);
+ [LogActivity, NotEnumerable, RaisesException] DOMString? getItem(DOMString key);
+ [LogActivity, NotEnumerable, RaisesException] void setItem(DOMString key, DOMString value);
+ [LogActivity, NotEnumerable, RaisesException] void removeItem(DOMString key);
+ [LogActivity, NotEnumerable, RaisesException] void clear();
+ // TODO(philipj): Merge these into getItem/setItem/removeItem.
[RaisesException] getter DOMString (DOMString name);
[RaisesException] setter DOMString (DOMString name, DOMString value);
[RaisesException] deleter boolean (DOMString name);
- [NotEnumerable, RaisesException=Getter] readonly attribute unsigned long length;
- [NotEnumerable, RaisesException] DOMString? key(unsigned long index);
- [LogActivity, NotEnumerable, RaisesException] DOMString? getItem(DOMString key);
- [LogActivity, NotEnumerable, RaisesException] void setItem(DOMString key, DOMString data);
- [LogActivity, NotEnumerable, RaisesException] void removeItem(DOMString key);
- [LogActivity, NotEnumerable, RaisesException] void clear();
+ // Non-standard APIs
+ [NotEnumerable, RaisesException] getter DOMString (unsigned long index);
+ [RaisesException] setter DOMString (unsigned long index, DOMString value);
+ [RaisesException] deleter boolean (unsigned long index);
};
diff --git a/modules/storage/StorageEvent.idl b/modules/storage/StorageEvent.idl
index af603e4..bcf9162 100644
--- a/modules/storage/StorageEvent.idl
+++ b/modules/storage/StorageEvent.idl
@@ -23,7 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-// http://dev.w3.org/html5/webstorage/#the-storage-event
+// https://html.spec.whatwg.org/multipage/webstorage.html#the-storageevent-interface
[
Constructor(DOMString type, optional StorageEventInit eventInitDict),
@@ -34,15 +34,13 @@
readonly attribute DOMString url;
readonly attribute Storage? storageArea;
- [Measure] void initStorageEvent([Default=Undefined] optional DOMString typeArg,
- [Default=Undefined] optional boolean canBubbleArg,
- [Default=Undefined] optional boolean cancelableArg,
- [Default=Undefined] optional DOMString keyArg,
- [Default=Undefined] optional DOMString? oldValueArg,
- [Default=Undefined] optional DOMString? newValueArg,
- [Default=Undefined] optional DOMString urlArg,
- [Default=Undefined] optional Storage storageAreaArg);
-
- // Needed once we support init<blank>EventNS
- // void initStorageEventNS(DOMString namespaceURI, DOMString typeArg, boolean canBubbleArg, boolean cancelableArg, DOMString keyArg, DOMString oldValueArg, DOMString newValueArg, DOMString urlArg, Storage storageAreaArg);
+ // Non-standard API
+ [Measure, LegacyInterfaceTypeChecking] void initStorageEvent([Default=Undefined] optional DOMString typeArg,
+ [Default=Undefined] optional boolean canBubbleArg,
+ [Default=Undefined] optional boolean cancelableArg,
+ [Default=Undefined] optional DOMString keyArg,
+ [Default=Undefined] optional DOMString? oldValueArg,
+ [Default=Undefined] optional DOMString? newValueArg,
+ [Default=Undefined] optional DOMString urlArg,
+ [Default=Undefined] optional Storage storageAreaArg);
};
diff --git a/modules/storage/StorageEventInit.idl b/modules/storage/StorageEventInit.idl
index 72f18be..3f58958 100644
--- a/modules/storage/StorageEventInit.idl
+++ b/modules/storage/StorageEventInit.idl
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// http://dev.w3.org/html5/webstorage/#the-storage-event
+// https://html.spec.whatwg.org/multipage/webstorage.html#the-storageevent-interface
dictionary StorageEventInit : EventInit {
DOMString? key;
diff --git a/modules/vr/HMDVRDevice.idl b/modules/vr/HMDVRDevice.idl
index 99d6858..2737c66 100644
--- a/modules/vr/HMDVRDevice.idl
+++ b/modules/vr/HMDVRDevice.idl
@@ -13,7 +13,6 @@
// http://mozvr.github.io/webvr-spec/webvr.html#hmdvrdevice
[
RuntimeEnabled=WebVR,
- TypeChecking=Interface
] interface HMDVRDevice : VRDevice {
VREyeParameters getEyeParameters(VREye whichEye);
void setFieldOfView(optional VRFieldOfView leftFov, optional VRFieldOfView rightFov);
diff --git a/modules/vr/VRFieldOfView.idl b/modules/vr/VRFieldOfView.idl
index ba5e102..23049d2 100644
--- a/modules/vr/VRFieldOfView.idl
+++ b/modules/vr/VRFieldOfView.idl
@@ -6,7 +6,6 @@
[
RuntimeEnabled=WebVR,
GarbageCollected,
- TypeChecking=Interface,
Constructor(optional VRFieldOfViewInit fov),
] interface VRFieldOfView {
attribute double upDegrees;
@@ -14,4 +13,3 @@
attribute double leftDegrees;
attribute double rightDegrees;
};
-
diff --git a/modules/background_sync/SyncRegistrationOptions.idl b/modules/wake_lock/ScreenWakeLock.idl
similarity index 63%
copy from modules/background_sync/SyncRegistrationOptions.idl
copy to modules/wake_lock/ScreenWakeLock.idl
index 6e1abbc..38b8d26 100644
--- a/modules/background_sync/SyncRegistrationOptions.idl
+++ b/modules/wake_lock/ScreenWakeLock.idl
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-[
- RuntimeEnabled=BackgroundSyncV2,
-] dictionary SyncRegistrationOptions {
- DOMString tag;
+[RuntimeEnabled=WakeLock] partial interface Screen {
+ attribute boolean keepAwake;
};
diff --git a/modules/webaudio/AnalyserNode.idl b/modules/webaudio/AnalyserNode.idl
index f066b8c..854920e 100644
--- a/modules/webaudio/AnalyserNode.idl
+++ b/modules/webaudio/AnalyserNode.idl
@@ -22,9 +22,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO,
-] interface AnalyserNode : AudioNode {
+interface AnalyserNode : AudioNode {
[RaisesException=Setter] attribute unsigned long fftSize;
readonly attribute unsigned long frequencyBinCount;
diff --git a/modules/webaudio/AudioBuffer.idl b/modules/webaudio/AudioBuffer.idl
index 3999ff6..155a9c6 100644
--- a/modules/webaudio/AudioBuffer.idl
+++ b/modules/webaudio/AudioBuffer.idl
@@ -28,7 +28,6 @@
[
GarbageCollected,
- Conditional=WEB_AUDIO
] interface AudioBuffer {
readonly attribute long length; // in sample-frames
readonly attribute double duration; // in seconds
diff --git a/modules/webaudio/AudioBufferCallback.idl b/modules/webaudio/AudioBufferCallback.idl
index aa1c383..35241eb 100644
--- a/modules/webaudio/AudioBufferCallback.idl
+++ b/modules/webaudio/AudioBufferCallback.idl
@@ -22,8 +22,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] callback interface AudioBufferCallback {
+callback interface AudioBufferCallback {
void handleEvent(AudioBuffer audioBuffer);
+ void handleEvent(DOMException exception);
};
diff --git a/modules/webaudio/AudioBufferSourceNode.idl b/modules/webaudio/AudioBufferSourceNode.idl
index de711d4..3daec8c 100644
--- a/modules/webaudio/AudioBufferSourceNode.idl
+++ b/modules/webaudio/AudioBufferSourceNode.idl
@@ -23,10 +23,7 @@
*/
// A cached (non-streamed), memory-resident audio source
-[
- Conditional=WEB_AUDIO,
- TypeChecking=Interface,
-] interface AudioBufferSourceNode : AudioSourceNode {
+interface AudioBufferSourceNode : AudioSourceNode {
[RaisesException=Setter] attribute AudioBuffer buffer;
readonly attribute AudioParam playbackRate;
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl
index 63617aa..b56876e 100644
--- a/modules/webaudio/AudioContext.idl
+++ b/modules/webaudio/AudioContext.idl
@@ -31,10 +31,10 @@
[
GarbageCollected,
- ActiveDOMObject,
- Conditional=WEB_AUDIO,
+ DependentLifetime,
Constructor,
ConstructorCallWith=Document,
+ ImplementedAs=AbstractAudioContext,
NoInterfaceObject,
RaisesException=Constructor,
] interface AudioContext : EventTarget {
@@ -56,29 +56,30 @@
[RaisesException] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate);
// Asynchronous audio file data decoding.
- [RaisesException, MeasureAs=AudioContextDecodeAudioData] void decodeAudioData(ArrayBuffer audioData, AudioBufferCallback successCallback, optional AudioBufferCallback errorCallback);
+ [RaisesException, MeasureAs=AudioContextDecodeAudioData, CallWith=ScriptState] Promise<AudioBuffer> decodeAudioData(ArrayBuffer audioData, optional AudioBufferCallback successCallback, optional AudioBufferCallback errorCallback);
// Sources
[RaisesException, MeasureAs=AudioContextCreateBufferSource] AudioBufferSourceNode createBufferSource();
[RaisesException, MeasureAs=AudioContextCreateMediaElementSource] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
- [RaisesException, MeasureAs=AudioContextCreateMediaStreamSource, RaisesException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
+ [RaisesException, MeasureAs=AudioContextCreateMediaStreamSource] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
[RaisesException, MeasureAs=AudioContextCreateMediaStreamDestination] MediaStreamAudioDestinationNode createMediaStreamDestination();
// Processing nodes
[RaisesException, MeasureAs=AudioContextCreateGain] GainNode createGain();
[RaisesException, MeasureAs=AudioContextCreateDelay] DelayNode createDelay(optional double maxDelayTime);
[RaisesException, MeasureAs=AudioContextCreateBiquadFilter] BiquadFilterNode createBiquadFilter();
+ [RaisesException, MeasureAs=AudioContextCreateIIRFilter] IIRFilterNode createIIRFilter(sequence<double> feedForward, sequence<double> feedBack);
[RaisesException, MeasureAs=AudioContextCreateWaveShaper] WaveShaperNode createWaveShaper();
[RaisesException, MeasureAs=AudioContextCreatePanner] PannerNode createPanner();
[RaisesException, MeasureAs=AudioContextCreateConvolver] ConvolverNode createConvolver();
[RaisesException, MeasureAs=AudioContextCreateDynamicsCompressor] DynamicsCompressorNode createDynamicsCompressor();
[RaisesException, MeasureAs=AudioContextCreateAnalyser] AnalyserNode createAnalyser();
- [RaisesException, MeasureAs=AudioContextCreateScriptProcessor, RaisesException] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels);
+ [RaisesException, MeasureAs=AudioContextCreateScriptProcessor] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels);
[RaisesException, MeasureAs=AudioContextCreateStereoPanner] StereoPannerNode createStereoPanner();
[RaisesException, MeasureAs=AudioContextCreateOscillator] OscillatorNode createOscillator();
- [RaisesException, MeasureAs=AudioContextCreatePeriodicWave, RaisesException] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag);
+ [RaisesException, MeasureAs=AudioContextCreatePeriodicWave] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag, optional Dictionary options);
// Channel splitting and merging
[RaisesException, MeasureAs=AudioContextCreateChannelSplitter] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs);
diff --git a/modules/webaudio/AudioDestinationNode.idl b/modules/webaudio/AudioDestinationNode.idl
index e85caef..f638bb2 100644
--- a/modules/webaudio/AudioDestinationNode.idl
+++ b/modules/webaudio/AudioDestinationNode.idl
@@ -22,8 +22,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface AudioDestinationNode : AudioNode {
+interface AudioDestinationNode : AudioNode {
readonly attribute unsigned long maxChannelCount;
};
diff --git a/modules/webaudio/AudioListener.idl b/modules/webaudio/AudioListener.idl
index 4783450..843e290 100644
--- a/modules/webaudio/AudioListener.idl
+++ b/modules/webaudio/AudioListener.idl
@@ -28,7 +28,6 @@
[
GarbageCollected,
- Conditional=WEB_AUDIO,
] interface AudioListener {
[DeprecateAs=AudioListenerDopplerFactor] attribute float dopplerFactor; // same as OpenAL (default 1.0)
[DeprecateAs=AudioListenerSpeedOfSound] attribute float speedOfSound; // in meters / second (default 343.3)
diff --git a/modules/webaudio/AudioNode.idl b/modules/webaudio/AudioNode.idl
index 56c3425..7dbb3a8 100644
--- a/modules/webaudio/AudioNode.idl
+++ b/modules/webaudio/AudioNode.idl
@@ -36,19 +36,17 @@
// http://webaudio.github.io/web-audio-api/#idl-def-AudioNode
[
- Conditional=WEB_AUDIO,
GarbageCollected,
- TypeChecking=Interface
] interface AudioNode : EventTarget {
- [RaisesException] void connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0);
- [RaisesException] void connect(AudioParam destination, optional unsigned long output = 0);
+ [RaisesException, MeasureAs=AudioNodeConnectToAudioNode] AudioNode connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0);
+ [RaisesException, MeasureAs=AudioNodeConnectToAudioParam] void connect(AudioParam destination, optional unsigned long output = 0);
void disconnect();
- [RaisesException] void disconnect(unsigned long output);
- [RaisesException] void disconnect(AudioNode destination);
- [RaisesException] void disconnect(AudioNode destination, unsigned long output);
- [RaisesException] void disconnect(AudioNode destination, unsigned long output, unsigned long input);
- [RaisesException] void disconnect(AudioParam destination);
- [RaisesException] void disconnect(AudioParam destination, unsigned long output);
+ [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioNode] void disconnect(unsigned long output);
+ [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioNode] void disconnect(AudioNode destination);
+ [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioNode] void disconnect(AudioNode destination, unsigned long output);
+ [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioNode] void disconnect(AudioNode destination, unsigned long output, unsigned long input);
+ [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioParam] void disconnect(AudioParam destination);
+ [RaisesException, MeasureAs=AudioNodeDisconnectFromAudioParam] void disconnect(AudioParam destination, unsigned long output);
readonly attribute AudioContext context;
readonly attribute unsigned long numberOfInputs;
readonly attribute unsigned long numberOfOutputs;
diff --git a/modules/webaudio/AudioParam.idl b/modules/webaudio/AudioParam.idl
index 7b499f4..02501ec 100644
--- a/modules/webaudio/AudioParam.idl
+++ b/modules/webaudio/AudioParam.idl
@@ -28,24 +28,23 @@
[
GarbageCollected,
- Conditional=WEB_AUDIO,
] interface AudioParam {
attribute float value;
readonly attribute float defaultValue;
// Parameter automation.
- [RaisesException] void setValueAtTime(float value, double time);
- [RaisesException] void linearRampToValueAtTime(float value, double time);
- [RaisesException] void exponentialRampToValueAtTime(float value, double time);
+ [RaisesException, MeasureAs=AudioParamSetValueAtTime] AudioParam setValueAtTime(float value, double time);
+ [RaisesException, MeasureAs=AudioParamLinearRampToValueAtTime] AudioParam linearRampToValueAtTime(float value, double time);
+ [RaisesException, MeasureAs=AudioParamExponentialRampToValueAtTime] AudioParam exponentialRampToValueAtTime(float value, double time);
// Exponentially approach the target with a rate having the given time constant.
- [RaisesException] void setTargetAtTime(float target, double time, double timeConstant);
+ [RaisesException, MeasureAs=AudioParamSetTargetAtTime] AudioParam setTargetAtTime(float target, double time, double timeConstant);
// Sets an array of arbitrary parameter values starting at time for the given duration.
// The number of values will be scaled to fit into the desired duration.
- [RaisesException] void setValueCurveAtTime(Float32Array values, double time, double duration);
+ [RaisesException, MeasureAs=AudioParamSetValueCurveAtTime] AudioParam setValueCurveAtTime(Float32Array values, double time, double duration);
// Cancels all scheduled parameter changes with times greater than or equal to startTime.
- [RaisesException] void cancelScheduledValues(double startTime);
+ [RaisesException, MeasureAs=AudioParamCancelScheduledValues] AudioParam cancelScheduledValues(double startTime);
};
diff --git a/modules/webaudio/AudioProcessingEvent.idl b/modules/webaudio/AudioProcessingEvent.idl
index 2b81282..b897a7f 100644
--- a/modules/webaudio/AudioProcessingEvent.idl
+++ b/modules/webaudio/AudioProcessingEvent.idl
@@ -22,9 +22,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface AudioProcessingEvent : Event {
+interface AudioProcessingEvent : Event {
readonly attribute double playbackTime;
readonly attribute AudioBuffer inputBuffer;
readonly attribute AudioBuffer outputBuffer;
diff --git a/modules/webaudio/AudioSourceNode.idl b/modules/webaudio/AudioSourceNode.idl
index 7a69b79..04bc6ee 100644
--- a/modules/webaudio/AudioSourceNode.idl
+++ b/modules/webaudio/AudioSourceNode.idl
@@ -28,6 +28,6 @@
[
NoInterfaceObject,
- Conditional=WEB_AUDIO
+ DependentLifetime
] interface AudioSourceNode : AudioNode {
};
diff --git a/modules/webaudio/BiquadFilterNode.idl b/modules/webaudio/BiquadFilterNode.idl
index 9783ab2..0a16aab 100644
--- a/modules/webaudio/BiquadFilterNode.idl
+++ b/modules/webaudio/BiquadFilterNode.idl
@@ -33,9 +33,7 @@
"allpass"
};
-[
- Conditional=WEB_AUDIO
-] interface BiquadFilterNode : AudioNode {
+interface BiquadFilterNode : AudioNode {
attribute BiquadFilterType type;
readonly attribute AudioParam frequency; // in Hertz
diff --git a/modules/webaudio/ChannelMergerNode.idl b/modules/webaudio/ChannelMergerNode.idl
index e79ce5a..5d27dde 100644
--- a/modules/webaudio/ChannelMergerNode.idl
+++ b/modules/webaudio/ChannelMergerNode.idl
@@ -26,7 +26,5 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface ChannelMergerNode : AudioNode {
+interface ChannelMergerNode : AudioNode {
};
diff --git a/modules/webaudio/ChannelSplitterNode.idl b/modules/webaudio/ChannelSplitterNode.idl
index eabfba1..413ee74 100644
--- a/modules/webaudio/ChannelSplitterNode.idl
+++ b/modules/webaudio/ChannelSplitterNode.idl
@@ -22,7 +22,5 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface ChannelSplitterNode : AudioNode {
+interface ChannelSplitterNode : AudioNode {
};
diff --git a/modules/webaudio/ConvolverNode.idl b/modules/webaudio/ConvolverNode.idl
index fe0544b..e797e5c 100644
--- a/modules/webaudio/ConvolverNode.idl
+++ b/modules/webaudio/ConvolverNode.idl
@@ -23,9 +23,7 @@
*/
// A linear convolution effect
-[
- Conditional=WEB_AUDIO
-] interface ConvolverNode : AudioNode {
- [RaisesException=Setter] attribute AudioBuffer buffer;
+interface ConvolverNode : AudioNode {
+ [RaisesException=Setter] attribute AudioBuffer? buffer;
attribute boolean normalize;
};
diff --git a/modules/webaudio/DelayNode.idl b/modules/webaudio/DelayNode.idl
index b5cb6eb..a6a0f18 100644
--- a/modules/webaudio/DelayNode.idl
+++ b/modules/webaudio/DelayNode.idl
@@ -22,8 +22,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface DelayNode : AudioNode {
+interface DelayNode : AudioNode {
readonly attribute AudioParam delayTime;
};
diff --git a/modules/webaudio/DynamicsCompressorNode.idl b/modules/webaudio/DynamicsCompressorNode.idl
index 6be99d0..b6a6633 100644
--- a/modules/webaudio/DynamicsCompressorNode.idl
+++ b/modules/webaudio/DynamicsCompressorNode.idl
@@ -22,9 +22,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface DynamicsCompressorNode : AudioNode {
+interface DynamicsCompressorNode : AudioNode {
readonly attribute AudioParam threshold; // in Decibels
readonly attribute AudioParam knee; // in Decibels
readonly attribute AudioParam ratio; // unit-less
diff --git a/modules/webaudio/GainNode.idl b/modules/webaudio/GainNode.idl
index 0f1a88e..60f5fdd 100644
--- a/modules/webaudio/GainNode.idl
+++ b/modules/webaudio/GainNode.idl
@@ -22,9 +22,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface GainNode : AudioNode {
+interface GainNode : AudioNode {
// FIXME: eventually it will be interesting to remove the readonly restriction, but need to properly deal with thread safety here.
readonly attribute AudioParam gain;
};
diff --git a/modules/webaudio/IIRFilterNode.idl b/modules/webaudio/IIRFilterNode.idl
new file mode 100644
index 0000000..313e516
--- /dev/null
+++ b/modules/webaudio/IIRFilterNode.idl
@@ -0,0 +1,9 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+interface IIRFilterNode : AudioNode {
+ [RaisesException] void getFrequencyResponse(Float32Array frequencyHz,
+ Float32Array magResponse,
+ Float32Array phaseResponse);
+};
\ No newline at end of file
diff --git a/modules/webaudio/MediaElementAudioSourceNode.idl b/modules/webaudio/MediaElementAudioSourceNode.idl
index 196eddd..8f96e41 100644
--- a/modules/webaudio/MediaElementAudioSourceNode.idl
+++ b/modules/webaudio/MediaElementAudioSourceNode.idl
@@ -22,8 +22,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface MediaElementAudioSourceNode : AudioSourceNode {
+interface MediaElementAudioSourceNode : AudioSourceNode {
readonly attribute HTMLMediaElement mediaElement;
};
diff --git a/modules/webaudio/MediaStreamAudioDestinationNode.idl b/modules/webaudio/MediaStreamAudioDestinationNode.idl
index 6bca078..971e607 100644
--- a/modules/webaudio/MediaStreamAudioDestinationNode.idl
+++ b/modules/webaudio/MediaStreamAudioDestinationNode.idl
@@ -22,8 +22,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface MediaStreamAudioDestinationNode : AudioNode {
+interface MediaStreamAudioDestinationNode : AudioNode {
readonly attribute MediaStream stream;
};
diff --git a/modules/webaudio/MediaStreamAudioSourceNode.idl b/modules/webaudio/MediaStreamAudioSourceNode.idl
index 78f29df..6da028b 100644
--- a/modules/webaudio/MediaStreamAudioSourceNode.idl
+++ b/modules/webaudio/MediaStreamAudioSourceNode.idl
@@ -22,8 +22,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface MediaStreamAudioSourceNode : AudioSourceNode {
+interface MediaStreamAudioSourceNode : AudioSourceNode {
readonly attribute MediaStream mediaStream;
};
diff --git a/modules/webaudio/OfflineAudioCompletionEvent.idl b/modules/webaudio/OfflineAudioCompletionEvent.idl
index a3fbc72..6529fac 100644
--- a/modules/webaudio/OfflineAudioCompletionEvent.idl
+++ b/modules/webaudio/OfflineAudioCompletionEvent.idl
@@ -22,8 +22,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-[
- Conditional=WEB_AUDIO
-] interface OfflineAudioCompletionEvent : Event {
+interface OfflineAudioCompletionEvent : Event {
readonly attribute AudioBuffer renderedBuffer;
};
diff --git a/modules/webaudio/OfflineAudioContext.idl b/modules/webaudio/OfflineAudioContext.idl
index 4c225d9..1f91f8f 100644
--- a/modules/webaudio/OfflineAudioContext.idl
+++ b/modules/webaudio/OfflineAudioContext.idl
@@ -23,7 +23,6 @@
*/
[
- Conditional=WEB_AUDIO,
Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
ConstructorCallWith=ExecutionContext,
RaisesException=Constructor,
@@ -31,5 +30,7 @@
] interface OfflineAudioContext : AudioContext {
// Offline rendering
attribute EventHandler oncomplete;
- [CallWith=ScriptState,ImplementedAs=startOfflineRendering] Promise<AudioBuffer> startRendering();
+ [CallWith=ScriptState, ImplementedAs=startOfflineRendering, MeasureAs=OfflineAudioContextStartRendering] Promise<AudioBuffer> startRendering();
+ [CallWith=ScriptState, ImplementedAs=suspendContext, MeasureAs=OfflineAudioContextSuspend] Promise<void> suspend(double suspendTime);
+ [CallWith=ScriptState, ImplementedAs=resumeContext, MeasureAs=OfflineAudioContextResume] Promise<void> resume();
};
diff --git a/modules/webaudio/OscillatorNode.idl b/modules/webaudio/OscillatorNode.idl
index 203abfe..0440252 100644
--- a/modules/webaudio/OscillatorNode.idl
+++ b/modules/webaudio/OscillatorNode.idl
@@ -31,9 +31,7 @@
};
// OscillatorNode is an audio generator of periodic waveforms.
-[
- Conditional=WEB_AUDIO,
-] interface OscillatorNode : AudioSourceNode {
+interface OscillatorNode : AudioSourceNode {
[RaisesException=Setter] attribute OscillatorType type;
diff --git a/modules/webaudio/PannerNode.idl b/modules/webaudio/PannerNode.idl
index 4cb9ae5..d69f4d6 100644
--- a/modules/webaudio/PannerNode.idl
+++ b/modules/webaudio/PannerNode.idl
@@ -35,7 +35,6 @@
[
NoInterfaceObject,
- Conditional=WEB_AUDIO,
] interface PannerNode : AudioNode {
// Default model for stereo is equalpower.
attribute PanningModelType panningModel;
diff --git a/modules/webaudio/PeriodicWave.idl b/modules/webaudio/PeriodicWave.idl
index 46a5474..bf70cbd 100644
--- a/modules/webaudio/PeriodicWave.idl
+++ b/modules/webaudio/PeriodicWave.idl
@@ -24,8 +24,7 @@
// PeriodicWave represents a periodic audio waveform given by its Fourier coefficients.
[
- GarbageCollected,
- Conditional=WEB_AUDIO
+ GarbageCollected
] interface PeriodicWave {
};
diff --git a/modules/webaudio/ScriptProcessorNode.idl b/modules/webaudio/ScriptProcessorNode.idl
index bc000b9..382e384 100644
--- a/modules/webaudio/ScriptProcessorNode.idl
+++ b/modules/webaudio/ScriptProcessorNode.idl
@@ -23,9 +23,7 @@
*/
// For real-time audio stream synthesis/processing in JavaScript
-[
- Conditional=WEB_AUDIO
-] interface ScriptProcessorNode : AudioNode {
+interface ScriptProcessorNode : AudioNode {
// Rendering callback
attribute EventHandler onaudioprocess;
diff --git a/modules/webaudio/StereoPannerNode.idl b/modules/webaudio/StereoPannerNode.idl
index 74f2354..d0a7776 100644
--- a/modules/webaudio/StereoPannerNode.idl
+++ b/modules/webaudio/StereoPannerNode.idl
@@ -4,7 +4,6 @@
[
NoInterfaceObject,
- Conditional=WEB_AUDIO
] interface StereoPannerNode : AudioNode {
readonly attribute AudioParam pan;
diff --git a/modules/webaudio/WaveShaperNode.idl b/modules/webaudio/WaveShaperNode.idl
index 5028567..aeca5fb 100644
--- a/modules/webaudio/WaveShaperNode.idl
+++ b/modules/webaudio/WaveShaperNode.idl
@@ -28,9 +28,7 @@
"4x"
};
-[
- Conditional=WEB_AUDIO
-] interface WaveShaperNode : AudioNode {
- [RaisesException=Setter] attribute Float32Array curve;
+interface WaveShaperNode : AudioNode {
+ [RaisesException=Setter] attribute Float32Array? curve;
attribute OverSampleType oversample;
};
diff --git a/modules/webaudio/WindowWebAudio.idl b/modules/webaudio/WindowWebAudio.idl
index 01e4618..0a5bb07 100644
--- a/modules/webaudio/WindowWebAudio.idl
+++ b/modules/webaudio/WindowWebAudio.idl
@@ -5,8 +5,8 @@
[
ImplementedAs=DOMWindowWebAudio,
] partial interface Window {
- [MeasureAs=AudioContext, Conditional=WEB_AUDIO, RuntimeEnabled=WebAudio] attribute AudioContextConstructor AudioContext;
- [MeasureAs=OfflineAudioContext, Conditional=WEB_AUDIO, RuntimeEnabled=WebAudio] attribute OfflineAudioContextConstructor OfflineAudioContext;
- [DeprecateAs=PrefixedAudioContext, Conditional=WEB_AUDIO, RuntimeEnabled=WebAudio] attribute AudioContextConstructor webkitAudioContext;
- [DeprecateAs=PrefixedOfflineAudioContext, Conditional=WEB_AUDIO, RuntimeEnabled=WebAudio] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
+ [MeasureAs=AudioContext] attribute AudioContextConstructor AudioContext;
+ [MeasureAs=OfflineAudioContext] attribute OfflineAudioContextConstructor OfflineAudioContext;
+ [DeprecateAs=PrefixedAudioContext] attribute AudioContextConstructor webkitAudioContext;
+ [DeprecateAs=PrefixedOfflineAudioContext] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
};
diff --git a/modules/webgl/ANGLEInstancedArrays.idl b/modules/webgl/ANGLEInstancedArrays.idl
index 217396c..eb8853a 100644
--- a/modules/webgl/ANGLEInstancedArrays.idl
+++ b/modules/webgl/ANGLEInstancedArrays.idl
@@ -31,8 +31,7 @@
[
DoNotCheckConstants,
NoInterfaceObject,
- TypeChecking=Interface,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface ANGLEInstancedArrays {
const unsigned long VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE;
diff --git a/modules/webgl/CHROMIUMSubscribeUniform.idl b/modules/webgl/CHROMIUMSubscribeUniform.idl
index 3ae4f0e..16b6f28 100644
--- a/modules/webgl/CHROMIUMSubscribeUniform.idl
+++ b/modules/webgl/CHROMIUMSubscribeUniform.idl
@@ -7,8 +7,7 @@
[
DoNotCheckConstants,
NoInterfaceObject,
- TypeChecking=Interface,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface CHROMIUMSubscribeUniform {
const GLenum SUBSCRIBED_VALUES_BUFFER_CHROMIUM = 0x924B;
diff --git a/modules/webgl/CHROMIUMValuebuffer.idl b/modules/webgl/CHROMIUMValuebuffer.idl
index 82b4003..a7277aa 100644
--- a/modules/webgl/CHROMIUMValuebuffer.idl
+++ b/modules/webgl/CHROMIUMValuebuffer.idl
@@ -4,6 +4,6 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface CHROMIUMValuebuffer {
};
diff --git a/modules/webgl/EXTBlendMinMax.idl b/modules/webgl/EXTBlendMinMax.idl
index fbf002c..773c314 100644
--- a/modules/webgl/EXTBlendMinMax.idl
+++ b/modules/webgl/EXTBlendMinMax.idl
@@ -5,8 +5,7 @@
[
DoNotCheckConstants,
NoInterfaceObject,
- TypeChecking=Interface,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface EXTBlendMinMax {
const unsigned long MIN_EXT = 0x8007;
diff --git a/modules/webgl/EXTColorBufferFloat.idl b/modules/webgl/EXTColorBufferFloat.idl
new file mode 100644
index 0000000..f528ec7
--- /dev/null
+++ b/modules/webgl/EXTColorBufferFloat.idl
@@ -0,0 +1,10 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ NoInterfaceObject,
+ GarbageCollected,
+ SetWrapperReferenceFrom=canvas,
+] interface EXTColorBufferFloat {
+};
diff --git a/modules/webgl/EXTDisjointTimerQuery.idl b/modules/webgl/EXTDisjointTimerQuery.idl
new file mode 100644
index 0000000..6da8e5b
--- /dev/null
+++ b/modules/webgl/EXTDisjointTimerQuery.idl
@@ -0,0 +1,29 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+typedef unsigned long long GLuint64EXT;
+
+[
+ DoNotCheckConstants,
+ NoInterfaceObject,
+ GarbageCollected,
+ SetWrapperReferenceFrom=canvas,
+] interface EXTDisjointTimerQuery {
+ const GLenum QUERY_COUNTER_BITS_EXT = 0x8864;
+ const GLenum CURRENT_QUERY_EXT = 0x8865;
+ const GLenum QUERY_RESULT_EXT = 0x8866;
+ const GLenum QUERY_RESULT_AVAILABLE_EXT = 0x8867;
+ const GLenum TIME_ELAPSED_EXT = 0x88BF;
+ const GLenum TIMESTAMP_EXT = 0x8E28;
+ const GLenum GPU_DISJOINT_EXT = 0x8FBB;
+
+ WebGLTimerQueryEXT createQueryEXT();
+ void deleteQueryEXT([Default=Undefined] WebGLTimerQueryEXT? query);
+ boolean isQueryEXT([Default=Undefined] WebGLTimerQueryEXT? query);
+ void beginQueryEXT(GLenum target, [Default=Undefined] WebGLTimerQueryEXT? query);
+ void endQueryEXT(GLenum target);
+ void queryCounterEXT([Default=Undefined] WebGLTimerQueryEXT? query, GLenum target);
+ [CallWith=ScriptState] any getQueryEXT(GLenum target, GLenum pname);
+ [CallWith=ScriptState] any getQueryObjectEXT([Default=Undefined] WebGLTimerQueryEXT? query, GLenum pname);
+};
diff --git a/modules/webgl/EXTFragDepth.idl b/modules/webgl/EXTFragDepth.idl
index a91c7ab..caadf78 100644
--- a/modules/webgl/EXTFragDepth.idl
+++ b/modules/webgl/EXTFragDepth.idl
@@ -25,7 +25,7 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface EXTFragDepth {
};
diff --git a/modules/webgl/EXTShaderTextureLOD.idl b/modules/webgl/EXTShaderTextureLOD.idl
index a8103b0..5c0b9eb 100644
--- a/modules/webgl/EXTShaderTextureLOD.idl
+++ b/modules/webgl/EXTShaderTextureLOD.idl
@@ -4,7 +4,7 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface EXTShaderTextureLOD {
};
diff --git a/modules/webgl/EXTTextureFilterAnisotropic.idl b/modules/webgl/EXTTextureFilterAnisotropic.idl
index 33ab206..5c08b8b 100644
--- a/modules/webgl/EXTTextureFilterAnisotropic.idl
+++ b/modules/webgl/EXTTextureFilterAnisotropic.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface EXTTextureFilterAnisotropic {
const unsigned long TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
diff --git a/modules/webgl/EXTsRGB.idl b/modules/webgl/EXTsRGB.idl
index e4545e5..b8af673 100644
--- a/modules/webgl/EXTsRGB.idl
+++ b/modules/webgl/EXTsRGB.idl
@@ -5,7 +5,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface EXTsRGB {
const unsigned long SRGB_EXT = 0x8C40;
diff --git a/modules/webgl/OESElementIndexUint.idl b/modules/webgl/OESElementIndexUint.idl
index 2fda077..6c8f5c6 100644
--- a/modules/webgl/OESElementIndexUint.idl
+++ b/modules/webgl/OESElementIndexUint.idl
@@ -25,7 +25,7 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESElementIndexUint {
};
diff --git a/modules/webgl/OESStandardDerivatives.idl b/modules/webgl/OESStandardDerivatives.idl
index 19e9367..bb64a4c 100644
--- a/modules/webgl/OESStandardDerivatives.idl
+++ b/modules/webgl/OESStandardDerivatives.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESStandardDerivatives {
const unsigned long FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
diff --git a/modules/webgl/OESTextureFloat.idl b/modules/webgl/OESTextureFloat.idl
index 5ccdca0..fe24758 100644
--- a/modules/webgl/OESTextureFloat.idl
+++ b/modules/webgl/OESTextureFloat.idl
@@ -25,7 +25,7 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESTextureFloat {
};
diff --git a/modules/webgl/OESTextureFloatLinear.idl b/modules/webgl/OESTextureFloatLinear.idl
index bb39e3d..0c305b7 100644
--- a/modules/webgl/OESTextureFloatLinear.idl
+++ b/modules/webgl/OESTextureFloatLinear.idl
@@ -25,7 +25,7 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESTextureFloatLinear {
};
diff --git a/modules/webgl/OESTextureHalfFloat.idl b/modules/webgl/OESTextureHalfFloat.idl
index 062b1ca..1a9ebf3 100644
--- a/modules/webgl/OESTextureHalfFloat.idl
+++ b/modules/webgl/OESTextureHalfFloat.idl
@@ -28,7 +28,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESTextureHalfFloat {
const GLenum HALF_FLOAT_OES = 0x8D61;
diff --git a/modules/webgl/OESTextureHalfFloatLinear.idl b/modules/webgl/OESTextureHalfFloatLinear.idl
index 7e78d0e..7c147d9 100644
--- a/modules/webgl/OESTextureHalfFloatLinear.idl
+++ b/modules/webgl/OESTextureHalfFloatLinear.idl
@@ -25,7 +25,7 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESTextureHalfFloatLinear {
};
diff --git a/modules/webgl/OESVertexArrayObject.idl b/modules/webgl/OESVertexArrayObject.idl
index e2751cd..ebe9285 100644
--- a/modules/webgl/OESVertexArrayObject.idl
+++ b/modules/webgl/OESVertexArrayObject.idl
@@ -26,14 +26,13 @@
[
DoNotCheckConstants,
NoInterfaceObject,
- TypeChecking=Interface,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface OESVertexArrayObject {
const unsigned long VERTEX_ARRAY_BINDING_OES = 0x85B5;
WebGLVertexArrayObjectOES createVertexArrayOES();
- void deleteVertexArrayOES([Default=Undefined] optional WebGLVertexArrayObjectOES? arrayObject);
+ [CallWith=ScriptState] void deleteVertexArrayOES([Default=Undefined] optional WebGLVertexArrayObjectOES? arrayObject);
boolean isVertexArrayOES([Default=Undefined] optional WebGLVertexArrayObjectOES? arrayObject);
- void bindVertexArrayOES([Default=Undefined] optional WebGLVertexArrayObjectOES? arrayObject);
+ [CallWith=ScriptState] void bindVertexArrayOES([Default=Undefined] optional WebGLVertexArrayObjectOES? arrayObject);
};
diff --git a/modules/webgl/PRESUBMIT.py b/modules/webgl/PRESUBMIT.py
new file mode 100644
index 0000000..923a26b
--- /dev/null
+++ b/modules/webgl/PRESUBMIT.py
@@ -0,0 +1,41 @@
+# Copyright (c) 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Top-level presubmit script for gpu.
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details about the presubmit API built into depot_tools.
+"""
+
+
+import re
+
+
+def PostUploadHook(cl, change, output_api):
+ """git cl upload will call this hook after the issue is created/modified.
+
+ This hook adds extra try bots list to the CL description in order to run
+ extra GPU tests in addition to CQ try bots.
+ """
+ rietveld_obj = cl.RpcServer()
+ issue = cl.issue
+ description = rietveld_obj.get_description(issue)
+ if re.search(r'^CQ_INCLUDE_TRYBOTS=.*', description, re.M | re.I):
+ return []
+
+ bots = [
+ 'tryserver.chromium.win:win_optional_gpu_tests_rel',
+ 'tryserver.chromium.mac:mac_optional_gpu_tests_rel',
+ ]
+
+ results = []
+ new_description = description
+ new_description += '\nCQ_INCLUDE_TRYBOTS=%s' % ';'.join(bots)
+ results.append(output_api.PresubmitNotifyResult(
+ 'Automatically added optional GPU tests to run on CQ.'))
+
+ if new_description != description:
+ rietveld_obj.update_description(issue, new_description)
+
+ return results
diff --git a/modules/webgl/WebGL2RenderingContext.idl b/modules/webgl/WebGL2RenderingContext.idl
index 164b8b7..a3387bf 100644
--- a/modules/webgl/WebGL2RenderingContext.idl
+++ b/modules/webgl/WebGL2RenderingContext.idl
@@ -6,7 +6,6 @@
RuntimeEnabled=UnsafeES3APIs,
DoNotCheckConstants,
SetWrapperReferenceFrom=canvas,
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface WebGL2RenderingContext { };
WebGL2RenderingContext implements WebGLRenderingContextBase;
diff --git a/modules/webgl/WebGL2RenderingContextBase.idl b/modules/webgl/WebGL2RenderingContextBase.idl
index 928b3a3..cb2eaf0 100644
--- a/modules/webgl/WebGL2RenderingContextBase.idl
+++ b/modules/webgl/WebGL2RenderingContextBase.idl
@@ -297,20 +297,18 @@
const GLenum MAX_ELEMENT_INDEX = 0x8D6B;
const GLenum NUM_SAMPLE_COUNTS = 0x9380;
const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
-
- // FIXME: This currently differs from the WebGL2 spec.
- const GLuint TIMEOUT_IGNORED = 0xFFFFFFFF;
+ const GLint TIMEOUT_IGNORED = -1;
/* WebGL-specific enums */
const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
/* Buffer objects */
void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
- void getBufferSubData(GLenum target, GLintptr offset, ArrayBuffer returnedData);
+ void getBufferSubData(GLenum target, GLintptr offset, ArrayBuffer? returnedData);
/* Framebuffer objects */
void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
- void framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture texture, GLint level, GLint layer);
+ [CallWith=ScriptState] void framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, GLint layer);
[CallWith=ScriptState] any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
void invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
void invalidateSubFramebuffer (GLenum target, sequence<GLenum> attachments, GLint x, GLint y, GLsizei width, GLsizei height);
@@ -320,14 +318,17 @@
void renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
/* Texture objects */
+ void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLintptr offset);
void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels);
- [RaisesException] void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, ArrayBufferView? pixels);
- [RaisesException] void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageData? data);
+ void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr offset);
+ void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, ArrayBufferView? pixels);
+ void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageData? data);
[RaisesException] void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLImageElement? image);
[RaisesException] void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLCanvasElement? canvas);
[RaisesException] void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLVideoElement? video);
+ [RaisesException] void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageBitmap? bitmap);
void copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, ArrayBufferView data);
void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, ArrayBufferView data);
@@ -340,10 +341,14 @@
void uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
- void uniform1uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniform2uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniform3uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniform4uiv(WebGLUniformLocation? location, sequence<GLuint> value);
+ void uniform1uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v);
+ void uniform1uiv(WebGLUniformLocation? location, sequence<GLuint> v);
+ void uniform2uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v);
+ void uniform2uiv(WebGLUniformLocation? location, sequence<GLuint> v);
+ void uniform3uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v);
+ void uniform3uiv(WebGLUniformLocation? location, sequence<GLuint> v);
+ void uniform4uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v);
+ void uniform4uiv(WebGLUniformLocation? location, sequence<GLuint> v);
void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
@@ -358,8 +363,10 @@
void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
+ void vertexAttribI4iv(GLuint index, Int32Array v);
void vertexAttribI4iv(GLuint index, sequence<GLint> v);
void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+ void vertexAttribI4uiv(GLuint index, Uint32Array v);
void vertexAttribI4uiv(GLuint index, sequence<GLuint> v);
void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
@@ -401,10 +408,10 @@
WebGLSync fenceSync(GLenum condition, GLbitfield flags);
GLboolean isSync(WebGLSync? sync);
void deleteSync(WebGLSync? sync);
- GLenum clientWaitSync(WebGLSync? sync, GLbitfield flags, GLuint timeout);
- void waitSync(WebGLSync? sync, GLbitfield flags, GLuint timeout);
+ GLenum clientWaitSync(WebGLSync? sync, GLbitfield flags, GLint64 timeout);
+ void waitSync(WebGLSync? sync, GLbitfield flags, GLint64 timeout);
- [CallWith=ScriptState] any getSyncParameter(WebGLSync sync, GLenum pname);
+ [CallWith=ScriptState] any getSyncParameter(WebGLSync? sync, GLenum pname);
/* Transform Feedback */
WebGLTransformFeedback createTransformFeedback();
@@ -423,16 +430,19 @@
void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
[CallWith=ScriptState] any getIndexedParameter(GLenum target, GLuint index);
sequence<GLuint>? getUniformIndices(WebGLProgram? program, sequence<DOMString> uniformNames);
- sequence<GLint>? getActiveUniforms(WebGLProgram? program, sequence<GLuint> uniformIndices, GLenum pname);
+ [CallWith=ScriptState] any getActiveUniforms(WebGLProgram? program, sequence<GLuint> uniformIndices, GLenum pname);
GLuint getUniformBlockIndex(WebGLProgram? program, DOMString uniformBlockName);
[CallWith=ScriptState] any getActiveUniformBlockParameter(WebGLProgram? program, GLuint uniformBlockIndex, GLenum pname);
- DOMString getActiveUniformBlockName(WebGLProgram? program, GLuint uniformBlockIndex);
+ DOMString? getActiveUniformBlockName(WebGLProgram? program, GLuint uniformBlockIndex);
void uniformBlockBinding(WebGLProgram? program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
/* Vertex Array Objects */
WebGLVertexArrayObject createVertexArray();
- void deleteVertexArray(WebGLVertexArrayObject? vertexArray);
+ [CallWith=ScriptState] void deleteVertexArray(WebGLVertexArrayObject? vertexArray);
GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
- void bindVertexArray(WebGLVertexArrayObject? vertexArray);
+ [CallWith=ScriptState] void bindVertexArray(WebGLVertexArrayObject? vertexArray);
+
+ /* Reading */
+ void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset);
};
WebGL2RenderingContextBase implements WebGLRenderingContextBase;
diff --git a/modules/webgl/WebGLActiveInfo.idl b/modules/webgl/WebGLActiveInfo.idl
index f4aa739..e22a5bd 100644
--- a/modules/webgl/WebGLActiveInfo.idl
+++ b/modules/webgl/WebGLActiveInfo.idl
@@ -24,7 +24,7 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLActiveInfo {
readonly attribute long size;
readonly attribute unsigned long type;
diff --git a/modules/webgl/WebGLBuffer.idl b/modules/webgl/WebGLBuffer.idl
index aecd6b0..826f3a0 100644
--- a/modules/webgl/WebGLBuffer.idl
+++ b/modules/webgl/WebGLBuffer.idl
@@ -24,6 +24,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLBuffer {
};
diff --git a/modules/webgl/WebGLCompressedTextureASTC.idl b/modules/webgl/WebGLCompressedTextureASTC.idl
new file mode 100644
index 0000000..43db7d6
--- /dev/null
+++ b/modules/webgl/WebGLCompressedTextureASTC.idl
@@ -0,0 +1,40 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ NoInterfaceObject,
+ DoNotCheckConstants,
+ GarbageCollected,
+ SetWrapperReferenceFrom=canvas,
+] interface WebGLCompressedTextureASTC {
+ /* Compressed Texture Formats */
+ const unsigned long COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0;
+ const unsigned long COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1;
+ const unsigned long COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2;
+ const unsigned long COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3;
+ const unsigned long COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4;
+ const unsigned long COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5;
+ const unsigned long COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6;
+ const unsigned long COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7;
+ const unsigned long COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8;
+ const unsigned long COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9;
+ const unsigned long COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA;
+ const unsigned long COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB;
+ const unsigned long COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC;
+ const unsigned long COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC;
+ const unsigned long COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD;
+};
diff --git a/modules/webgl/WebGLCompressedTextureATC.idl b/modules/webgl/WebGLCompressedTextureATC.idl
index 25355c2..1bb3fe7 100644
--- a/modules/webgl/WebGLCompressedTextureATC.idl
+++ b/modules/webgl/WebGLCompressedTextureATC.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLCompressedTextureATC {
/* Compressed Texture Formats */
diff --git a/modules/webgl/WebGLCompressedTextureETC1.idl b/modules/webgl/WebGLCompressedTextureETC1.idl
index db8ed21..65f8321 100644
--- a/modules/webgl/WebGLCompressedTextureETC1.idl
+++ b/modules/webgl/WebGLCompressedTextureETC1.idl
@@ -5,7 +5,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLCompressedTextureETC1 {
/* Compressed Texture Formats */
diff --git a/modules/webgl/WebGLCompressedTexturePVRTC.idl b/modules/webgl/WebGLCompressedTexturePVRTC.idl
index 731bab6..29c09ff 100644
--- a/modules/webgl/WebGLCompressedTexturePVRTC.idl
+++ b/modules/webgl/WebGLCompressedTexturePVRTC.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLCompressedTexturePVRTC {
/* Compressed Texture Formats */
diff --git a/modules/webgl/WebGLCompressedTextureS3TC.idl b/modules/webgl/WebGLCompressedTextureS3TC.idl
index e5465c3..36f76b7 100644
--- a/modules/webgl/WebGLCompressedTextureS3TC.idl
+++ b/modules/webgl/WebGLCompressedTextureS3TC.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLCompressedTextureS3TC {
/* Compressed Texture Formats */
diff --git a/modules/webgl/WebGLDebugRendererInfo.idl b/modules/webgl/WebGLDebugRendererInfo.idl
index ac4f2e1..635f2ec 100644
--- a/modules/webgl/WebGLDebugRendererInfo.idl
+++ b/modules/webgl/WebGLDebugRendererInfo.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLDebugRendererInfo {
const unsigned long UNMASKED_VENDOR_WEBGL = 0x9245;
diff --git a/modules/webgl/WebGLDebugShaders.idl b/modules/webgl/WebGLDebugShaders.idl
index 770c12d..9196da9 100644
--- a/modules/webgl/WebGLDebugShaders.idl
+++ b/modules/webgl/WebGLDebugShaders.idl
@@ -25,8 +25,7 @@
[
NoInterfaceObject,
- TypeChecking=Interface,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLDebugShaders {
DOMString? getTranslatedShaderSource(WebGLShader? shader);
diff --git a/modules/webgl/WebGLDepthTexture.idl b/modules/webgl/WebGLDepthTexture.idl
index 773819b..d1b2ca9 100644
--- a/modules/webgl/WebGLDepthTexture.idl
+++ b/modules/webgl/WebGLDepthTexture.idl
@@ -26,7 +26,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLDepthTexture {
const unsigned long UNSIGNED_INT_24_8_WEBGL = 0x84FA;
diff --git a/modules/webgl/WebGLDrawBuffers.idl b/modules/webgl/WebGLDrawBuffers.idl
index 0a907aa..b39138b 100644
--- a/modules/webgl/WebGLDrawBuffers.idl
+++ b/modules/webgl/WebGLDrawBuffers.idl
@@ -28,7 +28,7 @@
[
NoInterfaceObject,
DoNotCheckConstants,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLDrawBuffers {
const GLenum COLOR_ATTACHMENT0_WEBGL = 0x8CE0;
diff --git a/modules/webgl/WebGLFramebuffer.idl b/modules/webgl/WebGLFramebuffer.idl
index 354f82f..b41a0d2 100644
--- a/modules/webgl/WebGLFramebuffer.idl
+++ b/modules/webgl/WebGLFramebuffer.idl
@@ -24,6 +24,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLFramebuffer {
};
diff --git a/modules/webgl/WebGLLoseContext.idl b/modules/webgl/WebGLLoseContext.idl
index 8e3a5d2..bfcc898 100644
--- a/modules/webgl/WebGLLoseContext.idl
+++ b/modules/webgl/WebGLLoseContext.idl
@@ -25,8 +25,7 @@
[
NoInterfaceObject,
- TypeChecking=Interface,
- WillBeGarbageCollected,
+ GarbageCollected,
SetWrapperReferenceFrom=canvas,
] interface WebGLLoseContext {
void loseContext();
diff --git a/modules/webgl/WebGLProgram.idl b/modules/webgl/WebGLProgram.idl
index b637b22..10042da 100644
--- a/modules/webgl/WebGLProgram.idl
+++ b/modules/webgl/WebGLProgram.idl
@@ -24,6 +24,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLProgram {
};
diff --git a/modules/webgl/WebGLQuery.idl b/modules/webgl/WebGLQuery.idl
index 257b911..725f0b9 100644
--- a/modules/webgl/WebGLQuery.idl
+++ b/modules/webgl/WebGLQuery.idl
@@ -4,6 +4,6 @@
[
RuntimeEnabled=UnsafeES3APIs,
- WillBeGarbageCollected
+ GarbageCollected
] interface WebGLQuery {
-};
\ No newline at end of file
+};
diff --git a/modules/webgl/WebGLRenderbuffer.idl b/modules/webgl/WebGLRenderbuffer.idl
index 2e6792f..98fa819 100644
--- a/modules/webgl/WebGLRenderbuffer.idl
+++ b/modules/webgl/WebGLRenderbuffer.idl
@@ -24,6 +24,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLRenderbuffer {
};
diff --git a/modules/webgl/WebGLRenderingContext.idl b/modules/webgl/WebGLRenderingContext.idl
index f0eb42f..20922a2 100644
--- a/modules/webgl/WebGLRenderingContext.idl
+++ b/modules/webgl/WebGLRenderingContext.idl
@@ -28,7 +28,6 @@
[
DoNotCheckConstants,
SetWrapperReferenceFrom=canvas,
- TypeChecking=Interface,
WillBeGarbageCollected,
] interface WebGLRenderingContext { };
WebGLRenderingContext implements WebGLRenderingContextBase;
diff --git a/modules/webgl/WebGLRenderingContextBase.idl b/modules/webgl/WebGLRenderingContextBase.idl
index d0a3dd1..2bad45c 100644
--- a/modules/webgl/WebGLRenderingContextBase.idl
+++ b/modules/webgl/WebGLRenderingContextBase.idl
@@ -41,11 +41,10 @@
typedef unrestricted float GLclampf;
[
- // FIXME: [DoNotCheckConstants] and [TypeChecking=Interface] should be applied
- // to members and not need to be put on implementing interface
+ // FIXME: [DoNotCheckConstants] should be applied to members and not need to
+ // be put on implementing interface
// DoNotCheckConstants, // need to put on implementing interface
NoInterfaceObject, // Always used on target of 'implements'
- // TypeChecking=Interface, // need to put on implementing interface
WillBeGarbageCollected,
] interface WebGLRenderingContextBase {
@@ -474,12 +473,12 @@
readonly attribute GLsizei drawingBufferHeight;
void activeTexture(GLenum texture);
- void attachShader(WebGLProgram? program, WebGLShader? shader);
+ [CallWith=ScriptState] void attachShader(WebGLProgram? program, WebGLShader? shader);
void bindAttribLocation(WebGLProgram? program, GLuint index, DOMString name);
- void bindBuffer(GLenum target, WebGLBuffer? buffer);
- void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
- void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
- void bindTexture(GLenum target, WebGLTexture? texture);
+ [CallWith=ScriptState] void bindBuffer(GLenum target, WebGLBuffer? buffer);
+ [CallWith=ScriptState] void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
+ [CallWith=ScriptState] void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
+ [CallWith=ScriptState] void bindTexture(GLenum target, WebGLTexture? texture);
void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
void blendEquation(GLenum mode);
void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
@@ -490,7 +489,7 @@
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferData(GLenum target, ArrayBufferView data, GLenum usage);
void bufferData(GLenum target, ArrayBuffer? data, GLenum usage);
- void bufferSubData(GLenum target, GLintptr offset, ArrayBufferView data);
+ void bufferSubData(GLenum target, GLintptr offset, [FlexibleArrayBufferView] ArrayBufferView data);
void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer? data);
GLenum checkFramebufferStatus(GLenum target);
@@ -502,9 +501,9 @@
void compileShader(WebGLShader? shader);
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
- GLsizei width, GLsizei height, GLint border, ArrayBufferView? data);
+ GLsizei width, GLsizei height, GLint border, ArrayBufferView data);
void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height, GLenum format, ArrayBufferView? data);
+ GLsizei width, GLsizei height, GLenum format, ArrayBufferView data);
void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
@@ -528,7 +527,7 @@
void depthFunc(GLenum func);
void depthMask(GLboolean flag);
void depthRange(GLclampf zNear, GLclampf zFar);
- void detachShader(WebGLProgram? program, WebGLShader? shader);
+ [CallWith=ScriptState] void detachShader(WebGLProgram? program, WebGLShader? shader);
void disable(GLenum cap);
void disableVertexAttribArray(GLuint index);
void drawArrays(GLenum mode, GLint first, GLsizei count);
@@ -538,8 +537,8 @@
void enableVertexAttribArray(GLuint index);
void finish();
void flush();
- void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer? renderbuffer);
- void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture? texture, GLint level);
+ [CallWith=ScriptState] void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer? renderbuffer);
+ [CallWith=ScriptState] void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture? texture, GLint level);
void frontFace(GLenum mode);
void generateMipmap(GLenum target);
@@ -581,7 +580,7 @@
[CallWith=ScriptState] any getVertexAttrib(GLuint index, GLenum pname);
- GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname);
+ GLintptr getVertexAttribOffset(GLuint index, GLenum pname);
void hint(GLenum target, GLenum mode);
GLboolean isBuffer(WebGLBuffer? buffer);
@@ -616,28 +615,31 @@
// Supported forms:
// FIXME: should be union type
// https://www.khronos.org/bugzilla/show_bug.cgi?id=1172
- [RaisesException] void texImage2D(
- GLenum target, GLint level, GLenum internalformat,
+ void texImage2D(
+ GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type, ArrayBufferView? pixels);
- [RaisesException] void texImage2D(
- GLenum target, GLint level, GLenum internalformat,
+ void texImage2D(
+ GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, ImageData? pixels);
[RaisesException] void texImage2D(
- GLenum target, GLint level, GLenum internalformat,
+ GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, HTMLImageElement image);
[RaisesException] void texImage2D(
- GLenum target, GLint level, GLenum internalformat,
+ GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, HTMLCanvasElement canvas);
[RaisesException] void texImage2D(
- GLenum target, GLint level, GLenum internalformat,
+ GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, HTMLVideoElement video);
+ [RaisesException] void texImage2D(
+ GLenum target, GLint level, GLint internalformat,
+ GLenum format, GLenum type, ImageBitmap bitmap);
- [RaisesException] void texSubImage2D(
+ void texSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, ArrayBufferView? pixels);
- [RaisesException] void texSubImage2D(
+ void texSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, ImageData? pixels);
[RaisesException] void texSubImage2D(
@@ -649,30 +651,33 @@
[RaisesException] void texSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, HTMLVideoElement video);
+ [RaisesException] void texSubImage2D(
+ GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLenum format, GLenum type, ImageBitmap bitmap);
void uniform1f(WebGLUniformLocation? location, GLfloat x);
- void uniform1fv(WebGLUniformLocation? location, Float32Array v);
+ void uniform1fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v);
void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform1i(WebGLUniformLocation? location, GLint x);
- void uniform1iv(WebGLUniformLocation? location, Int32Array v);
+ void uniform1iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v);
void uniform1iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
- void uniform2fv(WebGLUniformLocation? location, Float32Array v);
+ void uniform2fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v);
void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
- void uniform2iv(WebGLUniformLocation? location, Int32Array v);
+ void uniform2iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v);
void uniform2iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
- void uniform3fv(WebGLUniformLocation? location, Float32Array v);
+ void uniform3fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v);
void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
- void uniform3iv(WebGLUniformLocation? location, Int32Array v);
+ void uniform3iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v);
void uniform3iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
- void uniform4fv(WebGLUniformLocation? location, Float32Array v);
+ void uniform4fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v);
void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
- void uniform4iv(WebGLUniformLocation? location, Int32Array v);
+ void uniform4iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v);
void uniform4iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array array);
@@ -682,7 +687,7 @@
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array array);
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> array);
- void useProgram(WebGLProgram? program);
+ [CallWith=ScriptState] void useProgram(WebGLProgram? program);
void validateProgram(WebGLProgram? program);
void vertexAttrib1f(GLuint indx, GLfloat x);
@@ -697,8 +702,8 @@
void vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void vertexAttrib4fv(GLuint indx, Float32Array values);
void vertexAttrib4fv(GLuint indx, sequence<GLfloat> values);
- void vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized,
- GLsizei stride, GLintptr offset);
+ [CallWith=ScriptState] void vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized,
+ GLsizei stride, GLintptr offset);
void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
};
diff --git a/modules/webgl/WebGLSampler.idl b/modules/webgl/WebGLSampler.idl
index 565f3d6..30e10e2 100644
--- a/modules/webgl/WebGLSampler.idl
+++ b/modules/webgl/WebGLSampler.idl
@@ -4,6 +4,6 @@
[
RuntimeEnabled=UnsafeES3APIs,
- WillBeGarbageCollected
+ GarbageCollected
] interface WebGLSampler {
-};
\ No newline at end of file
+};
diff --git a/modules/webgl/WebGLShader.idl b/modules/webgl/WebGLShader.idl
index 1d48fd6..2d17020 100644
--- a/modules/webgl/WebGLShader.idl
+++ b/modules/webgl/WebGLShader.idl
@@ -24,6 +24,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLShader {
};
diff --git a/modules/webgl/WebGLShaderPrecisionFormat.idl b/modules/webgl/WebGLShaderPrecisionFormat.idl
index f9531c5..20364ed 100644
--- a/modules/webgl/WebGLShaderPrecisionFormat.idl
+++ b/modules/webgl/WebGLShaderPrecisionFormat.idl
@@ -25,7 +25,7 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLShaderPrecisionFormat {
readonly attribute long rangeMin;
readonly attribute long rangeMax;
diff --git a/modules/webgl/WebGLSync.idl b/modules/webgl/WebGLSync.idl
index a401e20..1ba4a8e 100644
--- a/modules/webgl/WebGLSync.idl
+++ b/modules/webgl/WebGLSync.idl
@@ -4,6 +4,6 @@
[
RuntimeEnabled=UnsafeES3APIs,
- WillBeGarbageCollected
+ GarbageCollected
] interface WebGLSync {
-};
\ No newline at end of file
+};
diff --git a/modules/webgl/WebGLTexture.idl b/modules/webgl/WebGLTexture.idl
index 7a1583c..850e448 100644
--- a/modules/webgl/WebGLTexture.idl
+++ b/modules/webgl/WebGLTexture.idl
@@ -24,6 +24,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLTexture {
};
diff --git a/modules/background_sync/SyncRegistrationOptions.idl b/modules/webgl/WebGLTimerQueryEXT.idl
similarity index 63%
rename from modules/background_sync/SyncRegistrationOptions.idl
rename to modules/webgl/WebGLTimerQueryEXT.idl
index 6e1abbc..d6223da 100644
--- a/modules/background_sync/SyncRegistrationOptions.idl
+++ b/modules/webgl/WebGLTimerQueryEXT.idl
@@ -3,7 +3,7 @@
// found in the LICENSE file.
[
- RuntimeEnabled=BackgroundSyncV2,
-] dictionary SyncRegistrationOptions {
- DOMString tag;
+ NoInterfaceObject,
+ GarbageCollected,
+] interface WebGLTimerQueryEXT {
};
diff --git a/modules/webgl/WebGLTransformFeedback.idl b/modules/webgl/WebGLTransformFeedback.idl
index bdf26ab..88f4617 100644
--- a/modules/webgl/WebGLTransformFeedback.idl
+++ b/modules/webgl/WebGLTransformFeedback.idl
@@ -4,6 +4,6 @@
[
RuntimeEnabled=UnsafeES3APIs,
- WillBeGarbageCollected
+ GarbageCollected
] interface WebGLTransformFeedback {
-};
\ No newline at end of file
+};
diff --git a/modules/webgl/WebGLUniformLocation.idl b/modules/webgl/WebGLUniformLocation.idl
index bac3601..dd6a43e 100644
--- a/modules/webgl/WebGLUniformLocation.idl
+++ b/modules/webgl/WebGLUniformLocation.idl
@@ -25,6 +25,6 @@
*/
[
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLUniformLocation {
};
diff --git a/modules/webgl/WebGLVertexArrayObject.idl b/modules/webgl/WebGLVertexArrayObject.idl
index bb7ad25..4a29ca9 100644
--- a/modules/webgl/WebGLVertexArrayObject.idl
+++ b/modules/webgl/WebGLVertexArrayObject.idl
@@ -4,6 +4,6 @@
[
RuntimeEnabled=UnsafeES3APIs,
- WillBeGarbageCollected
+ GarbageCollected
] interface WebGLVertexArrayObject {
};
diff --git a/modules/webgl/WebGLVertexArrayObjectOES.idl b/modules/webgl/WebGLVertexArrayObjectOES.idl
index 2a9e5bc..e1a533f 100644
--- a/modules/webgl/WebGLVertexArrayObjectOES.idl
+++ b/modules/webgl/WebGLVertexArrayObjectOES.idl
@@ -25,6 +25,6 @@
[
NoInterfaceObject,
- WillBeGarbageCollected,
+ GarbageCollected,
] interface WebGLVertexArrayObjectOES {
};
diff --git a/modules/webmidi/MIDIAccess.idl b/modules/webmidi/MIDIAccess.idl
index a65381d..7cebf53 100644
--- a/modules/webmidi/MIDIAccess.idl
+++ b/modules/webmidi/MIDIAccess.idl
@@ -29,7 +29,7 @@
*/
[
- ActiveDOMObject,
+ DependentLifetime,
] interface MIDIAccess : EventTarget {
readonly attribute MIDIInputMap inputs;
readonly attribute MIDIOutputMap outputs;
diff --git a/modules/webmidi/MIDIOptions.idl b/modules/webmidi/MIDIOptions.idl
index 4be1426..9df8a96 100644
--- a/modules/webmidi/MIDIOptions.idl
+++ b/modules/webmidi/MIDIOptions.idl
@@ -6,4 +6,5 @@
dictionary MIDIOptions {
boolean sysex;
+ // TODO(crbug.com/502127): Add bool software to follow the latest spec.
};
diff --git a/modules/webmidi/MIDIPort.idl b/modules/webmidi/MIDIPort.idl
index 726fd01..0f44867 100644
--- a/modules/webmidi/MIDIPort.idl
+++ b/modules/webmidi/MIDIPort.idl
@@ -45,7 +45,7 @@
};
[
- ActiveDOMObject,
+ DependentLifetime,
GarbageCollected,
] interface MIDIPort : EventTarget {
readonly attribute MIDIPortConnectionState connection;
diff --git a/modules/websockets/WebSocket.idl b/modules/websockets/WebSocket.idl
index 47a8c2e..ee12816 100644
--- a/modules/websockets/WebSocket.idl
+++ b/modules/websockets/WebSocket.idl
@@ -34,12 +34,10 @@
enum BinaryType { "blob", "arraybuffer" };
[
- ActiveDOMObject,
- // FIXME: Spec has DOMString[]. https://www.w3.org/Bugs/Public/show_bug.cgi?id=28102
+ DependentLifetime,
Constructor(DOMString url, optional (DOMString or sequence<DOMString>) protocols),
ConstructorCallWith=ExecutionContext,
Exposed=(Window,Worker),
- TypeChecking=Interface,
RaisesException=Constructor,
GarbageCollected,
ImplementedAs=DOMWebSocket,
diff --git a/modules/webusb/NavigatorUSB.idl b/modules/webusb/NavigatorUSB.idl
new file mode 100644
index 0000000..d916a0e
--- /dev/null
+++ b/modules/webusb/NavigatorUSB.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#device-enumeration
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] partial interface Navigator {
+ readonly attribute USB usb;
+};
diff --git a/modules/webusb/USB.idl b/modules/webusb/USB.idl
new file mode 100644
index 0000000..2c7489c
--- /dev/null
+++ b/modules/webusb/USB.idl
@@ -0,0 +1,16 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#device-enumeration
+
+[
+ GarbageCollected,
+ NoInterfaceObject,
+ RuntimeEnabled=WebUSB,
+] interface USB : EventTarget {
+ attribute EventHandler onconnect;
+ attribute EventHandler ondisconnect;
+ [CallWith=ScriptState] Promise<sequence<USBDevice>> getDevices();
+ [CallWith=ScriptState] Promise<sequence<USBDevice>> requestDevice(USBDeviceRequestOptions options);
+};
diff --git a/modules/webusb/USBAlternateInterface.idl b/modules/webusb/USBAlternateInterface.idl
new file mode 100644
index 0000000..cbf37fa
--- /dev/null
+++ b/modules/webusb/USBAlternateInterface.idl
@@ -0,0 +1,19 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#interfaces
+
+[
+ Constructor(USBInterface deviceInterface, octet alternateSetting),
+ RaisesException=Constructor,
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBAlternateInterface {
+ readonly attribute octet alternateSetting;
+ readonly attribute octet interfaceClass;
+ readonly attribute octet interfaceSubclass;
+ readonly attribute octet interfaceProtocol;
+ readonly attribute DOMString? interfaceName;
+ readonly attribute sequence<USBEndpoint> endpoints;
+};
diff --git a/modules/webusb/USBConfiguration.idl b/modules/webusb/USBConfiguration.idl
new file mode 100644
index 0000000..3cd0ec9
--- /dev/null
+++ b/modules/webusb/USBConfiguration.idl
@@ -0,0 +1,16 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#configurations
+
+[
+ Constructor(USBDevice device, octet configurationValue),
+ RaisesException=Constructor,
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBConfiguration {
+ readonly attribute octet configurationValue;
+ readonly attribute DOMString? configurationName;
+ readonly attribute sequence<USBInterface> interfaces;
+};
diff --git a/modules/webusb/USBConnectionEvent.idl b/modules/webusb/USBConnectionEvent.idl
new file mode 100644
index 0000000..beaba0e
--- /dev/null
+++ b/modules/webusb/USBConnectionEvent.idl
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#events
+
+[
+ Constructor(DOMString type, optional USBConnectionEventInit eventInitDict),
+ RuntimeEnabled=WebUSB,
+] interface USBConnectionEvent : Event {
+ readonly attribute USBDevice device;
+};
diff --git a/modules/background_sync/PeriodicSyncEventInit.idl b/modules/webusb/USBConnectionEventInit.idl
similarity index 60%
rename from modules/background_sync/PeriodicSyncEventInit.idl
rename to modules/webusb/USBConnectionEventInit.idl
index 60d2b72..797cf73 100644
--- a/modules/background_sync/PeriodicSyncEventInit.idl
+++ b/modules/webusb/USBConnectionEventInit.idl
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-dictionary PeriodicSyncEventInit : ExtendableEventInit {
- required PeriodicSyncRegistration registration;
+// http://wicg.github.io/webusb/#events
+
+dictionary USBConnectionEventInit : EventInit {
+ USBDevice device;
};
diff --git a/modules/webusb/USBControlTransferParameters.idl b/modules/webusb/USBControlTransferParameters.idl
new file mode 100644
index 0000000..9c7d550
--- /dev/null
+++ b/modules/webusb/USBControlTransferParameters.idl
@@ -0,0 +1,24 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+enum USBRequestType {
+ "standard",
+ "class",
+ "vendor"
+};
+
+enum USBRecipient {
+ "device",
+ "interface",
+ "endpoint",
+ "other",
+};
+
+dictionary USBControlTransferParameters {
+ required USBRequestType requestType;
+ required USBRecipient recipient;
+ required octet request;
+ required unsigned short value;
+ required unsigned short index;
+};
diff --git a/modules/webusb/USBDevice.idl b/modules/webusb/USBDevice.idl
new file mode 100644
index 0000000..6d38461
--- /dev/null
+++ b/modules/webusb/USBDevice.idl
@@ -0,0 +1,51 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#idl-def-usbtransferstatus
+
+enum USBTransferStatus {
+ "ok",
+ "stall",
+ "babble"
+};
+
+// http://wicg.github.io/webusb/#device-usage
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBDevice {
+ readonly attribute DOMString guid;
+ readonly attribute octet usbVersionMajor;
+ readonly attribute octet usbVersionMinor;
+ readonly attribute octet usbVersionSubminor;
+ readonly attribute octet deviceClass;
+ readonly attribute octet deviceSubclass;
+ readonly attribute octet deviceProtocol;
+ readonly attribute unsigned short vendorId;
+ readonly attribute unsigned short productId;
+ readonly attribute octet deviceVersionMajor;
+ readonly attribute octet deviceVersionMinor;
+ readonly attribute octet deviceVersionSubminor;
+ readonly attribute DOMString? manufacturerName;
+ readonly attribute DOMString? productName;
+ readonly attribute DOMString? serialNumber;
+ readonly attribute sequence<USBConfiguration> configurations;
+
+ [CallWith=ScriptState] Promise<void> open();
+ [CallWith=ScriptState] Promise<void> close();
+ [CallWith=ScriptState] Promise<void> getConfiguration();
+ [CallWith=ScriptState] Promise<void> setConfiguration(octet configurationValue);
+ [CallWith=ScriptState] Promise<void> claimInterface(octet interfaceNumber);
+ [CallWith=ScriptState] Promise<void> releaseInterface(octet interfaceNumber);
+ [CallWith=ScriptState] Promise<void> setInterface(octet interfaceNumber, octet alternateSetting);
+ [CallWith=ScriptState] Promise<USBInTransferResult> controlTransferIn(USBControlTransferParameters setup, unsigned short length);
+ [CallWith=ScriptState] Promise<USBOutTransferResult> controlTransferOut(USBControlTransferParameters setup, optional BufferSource data);
+ [CallWith=ScriptState] Promise<void> clearHalt(octet endpointNumber);
+ [CallWith=ScriptState] Promise<USBInTransferResult> transferIn(octet endpointNumber, unsigned long length);
+ [CallWith=ScriptState] Promise<USBOutTransferResult> transferOut(octet endpointNumber, BufferSource data);
+ [CallWith=ScriptState] Promise<USBIsochronousInTransferResult> isochronousTransferIn(octet endpointNumber, sequence<unsigned long> packetLengths);
+ [CallWith=ScriptState] Promise<UsbIsochronousOutTransferResult> isochronousTransferOut(octet endpointNumber, BufferSource data, sequence<unsigned long> packetLengths);
+ [CallWith=ScriptState] Promise<void> reset();
+};
diff --git a/modules/webusb/USBDeviceFilter.idl b/modules/webusb/USBDeviceFilter.idl
new file mode 100644
index 0000000..5d59379
--- /dev/null
+++ b/modules/webusb/USBDeviceFilter.idl
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#device-enumeration
+
+dictionary USBDeviceFilter {
+ unsigned short vendorId;
+ unsigned short productId;
+ octet classCode;
+ octet subclassCode;
+ octet protocolCode;
+};
diff --git a/modules/webusb/USBDeviceRequestOptions.idl b/modules/webusb/USBDeviceRequestOptions.idl
new file mode 100644
index 0000000..eea3c39
--- /dev/null
+++ b/modules/webusb/USBDeviceRequestOptions.idl
@@ -0,0 +1,9 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#device-enumeration
+
+dictionary USBDeviceRequestOptions {
+ required sequence<USBDeviceFilter> filters;
+};
diff --git a/modules/webusb/USBEndpoint.idl b/modules/webusb/USBEndpoint.idl
new file mode 100644
index 0000000..9124e6d
--- /dev/null
+++ b/modules/webusb/USBEndpoint.idl
@@ -0,0 +1,28 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#endpoints
+
+enum USBDirection {
+ "in",
+ "out"
+};
+
+enum USBEndpointType {
+ "bulk",
+ "interrupt",
+ "isochronous"
+};
+
+[
+ Constructor(USBAlternateInterface alternate, octet endpointNumber, USBDirection direction),
+ RaisesException=Constructor,
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBEndpoint {
+ readonly attribute octet endpointNumber;
+ readonly attribute USBDirection direction;
+ readonly attribute USBEndpointType type;
+ readonly attribute unsigned long packetSize;
+};
diff --git a/modules/webusb/USBInTransferResult.idl b/modules/webusb/USBInTransferResult.idl
new file mode 100644
index 0000000..2251b1d
--- /dev/null
+++ b/modules/webusb/USBInTransferResult.idl
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#idl-def-usbintransferresult
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBInTransferResult {
+ readonly attribute DataView data;
+ readonly attribute USBTransferStatus status;
+};
diff --git a/modules/webusb/USBInterface.idl b/modules/webusb/USBInterface.idl
new file mode 100644
index 0000000..54e3734
--- /dev/null
+++ b/modules/webusb/USBInterface.idl
@@ -0,0 +1,15 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#interfaces
+
+[
+ Constructor(USBConfiguration configuration, octet interfaceNumber),
+ RaisesException=Constructor,
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBInterface {
+ readonly attribute octet interfaceNumber;
+ readonly attribute sequence<USBAlternateInterface> alternates;
+};
diff --git a/modules/webusb/USBIsochronousInTransferPacket.idl b/modules/webusb/USBIsochronousInTransferPacket.idl
new file mode 100644
index 0000000..3129bde
--- /dev/null
+++ b/modules/webusb/USBIsochronousInTransferPacket.idl
@@ -0,0 +1,13 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://wicg.github.io/webusb/#idl-def-usbisochronousintransferpacket
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBIsochronousInTransferPacket {
+ readonly attribute USBTransferStatus status;
+ readonly attribute DataView data;
+};
diff --git a/modules/webusb/USBIsochronousInTransferResult.idl b/modules/webusb/USBIsochronousInTransferResult.idl
new file mode 100644
index 0000000..139856f
--- /dev/null
+++ b/modules/webusb/USBIsochronousInTransferResult.idl
@@ -0,0 +1,13 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://wicg.github.io/webusb/#idl-def-usbisochronousintransferresult
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBIsochronousInTransferResult {
+ readonly attribute DataView data;
+ readonly attribute sequence<USBIsochronousInTransferPacket> packets;
+};
diff --git a/modules/webusb/USBIsochronousOutTransferPacket.idl b/modules/webusb/USBIsochronousOutTransferPacket.idl
new file mode 100644
index 0000000..c6789c3
--- /dev/null
+++ b/modules/webusb/USBIsochronousOutTransferPacket.idl
@@ -0,0 +1,13 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://wicg.github.io/webusb/#idl-def-usbisochronousouttransferpacket
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBIsochronousOutTransferPacket {
+ readonly attribute USBTransferStatus status;
+ readonly attribute unsigned long bytesWritten;
+};
diff --git a/modules/webusb/USBIsochronousOutTransferResult.idl b/modules/webusb/USBIsochronousOutTransferResult.idl
new file mode 100644
index 0000000..aebd8e1
--- /dev/null
+++ b/modules/webusb/USBIsochronousOutTransferResult.idl
@@ -0,0 +1,12 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://wicg.github.io/webusb/#idl-def-usbisochronousouttransferresult
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBIsochronousOutTransferResult {
+ readonly attribute sequence<USBIsochronousOutTransferPacket> packets;
+};
diff --git a/modules/webusb/USBOutTransferResult.idl b/modules/webusb/USBOutTransferResult.idl
new file mode 100644
index 0000000..b43587a
--- /dev/null
+++ b/modules/webusb/USBOutTransferResult.idl
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// http://wicg.github.io/webusb/#idl-def-usbouttransferresult
+
+[
+ GarbageCollected,
+ RuntimeEnabled=WebUSB,
+] interface USBOutTransferResult {
+ readonly attribute unsigned long bytesWritten;
+ readonly attribute USBTransferStatus status;
+};
diff --git a/modules/worklet/WindowWorklet.idl b/modules/worklet/WindowWorklet.idl
new file mode 100644
index 0000000..8b98be2
--- /dev/null
+++ b/modules/worklet/WindowWorklet.idl
@@ -0,0 +1,10 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+[
+ ImplementedAs=DOMWindowWorklet,
+ RuntimeEnabled=Worklet,
+] partial interface Window {
+ [CallWith=ExecutionContext] readonly attribute Worklet renderWorklet;
+};
diff --git a/modules/worklet/Worklet.idl b/modules/worklet/Worklet.idl
new file mode 100644
index 0000000..0744c69
--- /dev/null
+++ b/modules/worklet/Worklet.idl
@@ -0,0 +1,13 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://drafts.css-houdini.org/worklets/#worklet
+
+[
+ DependentLifetime,
+ GarbageCollected,
+ RuntimeEnabled=Worklet,
+] interface Worklet {
+ [CallWith=ScriptState] Promise<void> import(DOMString url);
+};
diff --git a/modules/worklet/WorkletGlobalScope.idl b/modules/worklet/WorkletGlobalScope.idl
new file mode 100644
index 0000000..f3ceb1e
--- /dev/null
+++ b/modules/worklet/WorkletGlobalScope.idl
@@ -0,0 +1,13 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// https://drafts.css-houdini.org/worklets/#workletglobalscope
+
+[
+ Exposed=Worklet,
+ Global=Worklet,
+ RuntimeEnabled=Worklet,
+ WillBeGarbageCollected,
+] interface WorkletGlobalScope {
+};