| Index: bindings/scripts/idl_reader.py | 
| diff --git a/bindings/scripts/idl_reader.py b/bindings/scripts/idl_reader.py | 
| index 450c73d9f29a08148fcdbded7a51264b04eae2b1..38286682420e23055e61316665b672f7b153447c 100644 | 
| --- a/bindings/scripts/idl_reader.py | 
| +++ b/bindings/scripts/idl_reader.py | 
| @@ -42,7 +42,8 @@ from interface_dependency_resolver import InterfaceDependencyResolver | 
|  | 
|  | 
| class IdlReader(object): | 
| -    def __init__(self, interfaces_info=None, outputdir=''): | 
| +    def __init__(self, interfaces_info=None, outputdir='', multi_interface=False): | 
| +        self.multi_interface = multi_interface | 
| self.extended_attribute_validator = IDLExtendedAttributeValidator() | 
|  | 
| if interfaces_info: | 
| @@ -71,23 +72,27 @@ class IdlReader(object): | 
| raise Exception('Failed to parse %s' % idl_filename) | 
| definitions = IdlDefinitions(ast) | 
|  | 
| -        # Validate file contents with filename convention | 
| -        # The Blink IDL filenaming convention is that the file | 
| -        # <interface_name>.idl MUST contain exactly 1 interface (or exception), | 
| -        # and the interface name must agree with the file's basename, | 
| -        # unless it is a partial interface. | 
| -        # (e.g., 'partial interface Foo' can be in FooBar.idl). | 
| -        number_of_interfaces = len(definitions.interfaces) | 
| -        if number_of_interfaces != 1: | 
| -            raise Exception( | 
| -                'Expected exactly 1 interface in file {0}, but found {1}' | 
| -                .format(idl_filename, number_of_interfaces)) | 
| -        interface = next(definitions.interfaces.itervalues()) | 
| -        idl_file_basename, _ = os.path.splitext(os.path.basename(idl_filename)) | 
| -        if not interface.is_partial and interface.name != idl_file_basename: | 
| -            raise Exception( | 
| -                'Interface name "{0}" disagrees with IDL file basename "{1}".' | 
| -                .format(interface.name, idl_file_basename)) | 
| +        if not self.multi_interface: | 
| +            # Validate file contents with filename convention | 
| +            # The Blink IDL filenaming convention is that the file | 
| +            # <interface_name>.idl MUST contain exactly 1 interface (or exception), | 
| +            # and the interface name must agree with the file's basename, | 
| +            # unless it is a partial interface. | 
| +            # (e.g., 'partial interface Foo' can be in FooBar.idl). | 
| +            number_of_interfaces = len(definitions.interfaces) | 
| +            if number_of_interfaces != 1: | 
| +                raise Exception( | 
| +                    'Expected exactly 1 interface in file {0}, but found {1}' | 
| +                    .format(idl_filename, number_of_interfaces)) | 
| +            interface = next(definitions.interfaces.itervalues()) | 
| +            idl_file_basename, _ = os.path.splitext(os.path.basename(idl_filename)) | 
| +            if not interface.is_partial and interface.name != idl_file_basename: | 
| +                raise Exception( | 
| +                    'Interface name "{0}" disagrees with IDL file basename "{1}".' | 
| +                    .format(interface.name, idl_file_basename)) | 
| +        else: | 
| +            if len(definitions.interfaces) > 1: | 
| +                print '----- Supplemental interfaces %s' % len(definitions.interfaces) | 
|  | 
| # Validate extended attributes | 
| if not self.extended_attribute_validator: | 
|  |