| OLD | NEW |
| 1 #!/usr/bin/perl -w | 1 #!/usr/bin/perl -w |
| 2 # | 2 # |
| 3 # Copyright (C) 2005 Apple Computer, Inc. | 3 # Copyright (C) 2005 Apple Computer, Inc. |
| 4 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 4 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |
| 5 # | 5 # |
| 6 # This file is part of WebKit | 6 # This file is part of WebKit |
| 7 # | 7 # |
| 8 # This library is free software; you can redistribute it and/or | 8 # This library is free software; you can redistribute it and/or |
| 9 # modify it under the terms of the GNU Library General Public | 9 # modify it under the terms of the GNU Library General Public |
| 10 # License as published by the Free Software Foundation; either | 10 # License as published by the Free Software Foundation; either |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 } | 127 } |
| 128 | 128 |
| 129 foreach my $idlFile (@supplementedIdlFiles) { | 129 foreach my $idlFile (@supplementedIdlFiles) { |
| 130 next if $idlFile eq $targetIdlFile; | 130 next if $idlFile eq $targetIdlFile; |
| 131 | 131 |
| 132 my $interfaceName = fileparse(basename($idlFile), ".idl"); | 132 my $interfaceName = fileparse(basename($idlFile), ".idl"); |
| 133 my $parser = IDLParser->new(!$verbose); | 133 my $parser = IDLParser->new(!$verbose); |
| 134 my $document = $parser->Parse($idlFile, $defines, $preprocessor); | 134 my $document = $parser->Parse($idlFile, $defines, $preprocessor); |
| 135 | 135 |
| 136 foreach my $interface (@{$document->interfaces}) { | 136 foreach my $interface (@{$document->interfaces}) { |
| 137 if ($interface->isPartial and $interface->name eq $targetInterfaceName)
{ | 137 if (!$interface->isPartial || $interface->name eq $targetInterfaceName)
{ |
| 138 my $targetDataNode; | 138 my $targetDataNode; |
| 139 foreach my $interface (@{$targetDocument->interfaces}) { | 139 foreach my $interface (@{$targetDocument->interfaces}) { |
| 140 if ($interface->name eq $targetInterfaceName) { | 140 if ($interface->name eq $targetInterfaceName) { |
| 141 $targetDataNode = $interface; | 141 $targetDataNode = $interface; |
| 142 last; | 142 last; |
| 143 } | 143 } |
| 144 } | 144 } |
| 145 die "Not found an interface ${targetInterfaceName} in ${targetInterf
aceName}.idl." unless defined $targetDataNode; | 145 die "Not found an interface ${targetInterfaceName} in ${targetInterf
aceName}.idl." unless defined $targetDataNode; |
| 146 | 146 |
| 147 # Support for attributes of partial interfaces. | 147 # Support for attributes of partial interfaces. |
| 148 foreach my $attribute (@{$interface->attributes}) { | 148 foreach my $attribute (@{$interface->attributes}) { |
| 149 # Record that this attribute is implemented by $interfaceName. | 149 # Record that this attribute is implemented by $interfaceName. |
| 150 $attribute->extendedAttributes->{"ImplementedBy"} = $interfaceNa
me; | 150 $attribute->extendedAttributes->{"ImplementedBy"} = $interfaceNa
me if $interface->isPartial; |
| 151 | 151 |
| 152 # Add interface-wide extended attributes to each attribute. | 152 # Add interface-wide extended attributes to each attribute. |
| 153 applyInterfaceExtendedAttributes($interface, $attribute->extende
dAttributes); | 153 applyInterfaceExtendedAttributes($interface, $attribute->extende
dAttributes); |
| 154 | 154 |
| 155 push(@{$targetDataNode->attributes}, $attribute); | 155 push(@{$targetDataNode->attributes}, $attribute); |
| 156 } | 156 } |
| 157 | 157 |
| 158 # Support for methods of partial interfaces. | 158 # Support for methods of partial interfaces. |
| 159 foreach my $function (@{$interface->functions}) { | 159 foreach my $function (@{$interface->functions}) { |
| 160 # Record that this method is implemented by $interfaceName. | 160 # Record that this method is implemented by $interfaceName. |
| 161 $function->extendedAttributes->{"ImplementedBy"} = $interfaceNam
e; | 161 $function->extendedAttributes->{"ImplementedBy"} = $interfaceNam
e if $interface->isPartial; |
| 162 | 162 |
| 163 # Add interface-wide extended attributes to each method. | 163 # Add interface-wide extended attributes to each method. |
| 164 applyInterfaceExtendedAttributes($interface, $function->extended
Attributes); | 164 applyInterfaceExtendedAttributes($interface, $function->extended
Attributes); |
| 165 | 165 |
| 166 push(@{$targetDataNode->functions}, $function); | 166 push(@{$targetDataNode->functions}, $function); |
| 167 } | 167 } |
| 168 | 168 |
| 169 # Support for constants of partial interfaces. | 169 # Support for constants of partial interfaces. |
| 170 foreach my $constant (@{$interface->constants}) { | 170 foreach my $constant (@{$interface->constants}) { |
| 171 # Record that this constant is implemented by $interfaceName. | 171 # Record that this constant is implemented by $interfaceName. |
| 172 $constant->extendedAttributes->{"ImplementedBy"} = $interfaceNam
e; | 172 $constant->extendedAttributes->{"ImplementedBy"} = $interfaceNam
e if $interface->isPartial; |
| 173 | 173 |
| 174 # Add interface-wide extended attributes to each constant. | 174 # Add interface-wide extended attributes to each constant. |
| 175 applyInterfaceExtendedAttributes($interface, $constant->extended
Attributes); | 175 applyInterfaceExtendedAttributes($interface, $constant->extended
Attributes); |
| 176 | 176 |
| 177 push(@{$targetDataNode->constants}, $constant); | 177 push(@{$targetDataNode->constants}, $constant); |
| 178 } | 178 } |
| 179 } else { | 179 } else { |
| 180 die "$idlFile is not a supplemental dependency of $targetIdlFile. Th
ere maybe a bug in the the supplemental dependency generator (preprocess_idls.py
).\n"; | 180 die "$idlFile is not a supplemental dependency of $targetIdlFile. Th
ere maybe a bug in the the supplemental dependency generator (preprocess_idls.py
).\n"; |
| 181 } | 181 } |
| 182 } | 182 } |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 last OUTER; | 304 last OUTER; |
| 305 } | 305 } |
| 306 } | 306 } |
| 307 } | 307 } |
| 308 if ($error) { | 308 if ($error) { |
| 309 die "IDL ATTRIBUTE CHECKER ERROR: $error | 309 die "IDL ATTRIBUTE CHECKER ERROR: $error |
| 310 If you want to add a new IDL attribute, you need to add it to bindings/scripts/I
DLAttributes.txt and add explanations to the Blink IDL document (http://chromium
.org/blink/webidl). | 310 If you want to add a new IDL attribute, you need to add it to bindings/scripts/I
DLAttributes.txt and add explanations to the Blink IDL document (http://chromium
.org/blink/webidl). |
| 311 "; | 311 "; |
| 312 } | 312 } |
| 313 } | 313 } |
| OLD | NEW |