| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
| 4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
| 5 import logging | 5 import logging |
| 6 import monitored | 6 import monitored |
| 7 import re | 7 import re |
| 8 | 8 |
| 9 html_interface_renames = monitored.Dict('htmlrenamer.html_interface_renames', { | 9 html_interface_renames = monitored.Dict('htmlrenamer.html_interface_renames', { |
| 10 'CDATASection': 'CDataSection', | 10 'CDATASection': 'CDataSection', |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 'WorkerContext.webkitRequestFileSystemSync': 'requestFileSystemSync', | 160 'WorkerContext.webkitRequestFileSystemSync': 'requestFileSystemSync', |
| 161 'WorkerContext.webkitResolveLocalFileSystemSyncURL': | 161 'WorkerContext.webkitResolveLocalFileSystemSyncURL': |
| 162 'resolveLocalFileSystemSyncUrl', | 162 'resolveLocalFileSystemSyncUrl', |
| 163 'WorkerContext.webkitResolveLocalFileSystemURL': | 163 'WorkerContext.webkitResolveLocalFileSystemURL': |
| 164 'resolveLocalFileSystemUrl', | 164 'resolveLocalFileSystemUrl', |
| 165 }) | 165 }) |
| 166 | 166 |
| 167 # Members and classes from the dom that should be removed completely from | 167 # Members and classes from the dom that should be removed completely from |
| 168 # dart:html. These could be expressed in the IDL instead but expressing this | 168 # dart:html. These could be expressed in the IDL instead but expressing this |
| 169 # as a simple table instead is more concise. | 169 # as a simple table instead is more concise. |
| 170 # Syntax is: ClassName.(get\.|set\.)?MemberName | 170 # Syntax is: ClassName.(get\:|set\:|call\:|on\:)?MemberName |
| 171 # Using get: and set: is optional and should only be used when a getter needs | 171 # Using get: and set: is optional and should only be used when a getter needs |
| 172 # to be suppressed but not the setter, etc. | 172 # to be suppressed but not the setter, etc. |
| 173 # TODO(jacobr): cleanup and augment this list. | 173 # TODO(jacobr): cleanup and augment this list. |
| 174 _removed_html_members = monitored.Set('htmlrenamer._removed_html_members', [ | 174 _removed_html_members = monitored.Set('htmlrenamer._removed_html_members', [ |
| 175 'Attr.*', | 175 'Attr.*', |
| 176 'CanvasRenderingContext2D.clearShadow', | 176 'CanvasRenderingContext2D.clearShadow', |
| 177 'CanvasRenderingContext2D.drawImageFromRect', | 177 'CanvasRenderingContext2D.drawImageFromRect', |
| 178 'CanvasRenderingContext2D.setAlpha', | 178 'CanvasRenderingContext2D.setAlpha', |
| 179 'CanvasRenderingContext2D.setCompositeOperation', | 179 'CanvasRenderingContext2D.setCompositeOperation', |
| 180 'CanvasRenderingContext2D.setFillColor', | 180 'CanvasRenderingContext2D.setFillColor', |
| 181 'CanvasRenderingContext2D.setLineCap', | 181 'CanvasRenderingContext2D.setLineCap', |
| 182 'CanvasRenderingContext2D.setLineJoin', | 182 'CanvasRenderingContext2D.setLineJoin', |
| 183 'CanvasRenderingContext2D.setLineWidth', | 183 'CanvasRenderingContext2D.setLineWidth', |
| 184 'CanvasRenderingContext2D.setMiterLimit', | 184 'CanvasRenderingContext2D.setMiterLimit', |
| 185 'CanvasRenderingContext2D.setShadow', | 185 'CanvasRenderingContext2D.setShadow', |
| 186 'CanvasRenderingContext2D.setStrokeColor', | 186 'CanvasRenderingContext2D.setStrokeColor', |
| 187 'DOMWindow.blur', | 187 'DOMWindow.call:blur', |
| 188 'DOMWindow.clientInformation', | 188 'DOMWindow.clientInformation', |
| 189 'DOMWindow.focus', | 189 'DOMWindow.call:focus', |
| 190 'DOMWindow.get:frames', | 190 'DOMWindow.get:frames', |
| 191 'DOMWindow.get:length', | 191 'DOMWindow.get:length', |
| 192 'DOMWindow.prompt', | 192 'DOMWindow.prompt', |
| 193 'DOMWindow.webkitCancelRequestAnimationFrame', | 193 'DOMWindow.webkitCancelRequestAnimationFrame', |
| 194 'DOMWindow.webkitIndexedDB', | 194 'DOMWindow.webkitIndexedDB', |
| 195 'Document.adoptNode', | 195 'Document.adoptNode', |
| 196 'Document.alinkColor', | 196 'Document.alinkColor', |
| 197 'Document.all', | 197 'Document.all', |
| 198 'Document.applets', | 198 'Document.applets', |
| 199 'Document.bgColor', | 199 'Document.bgColor', |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 | 447 |
| 448 | 448 |
| 449 def RenameMember(self, interface_name, member_node, member, member_prefix='', | 449 def RenameMember(self, interface_name, member_node, member, member_prefix='', |
| 450 dartify_name=True): | 450 dartify_name=True): |
| 451 """ | 451 """ |
| 452 Returns the name of the member in the HTML library or None if the member is | 452 Returns the name of the member in the HTML library or None if the member is |
| 453 suppressed in the HTML library | 453 suppressed in the HTML library |
| 454 """ | 454 """ |
| 455 interface = self._database.GetInterface(interface_name) | 455 interface = self._database.GetInterface(interface_name) |
| 456 | 456 |
| 457 if self._FindMatch(interface, member, member_prefix, _removed_html_members): | 457 if self.ShouldSuppressMember(interface, member, member_prefix): |
| 458 return None | 458 return None |
| 459 | 459 |
| 460 if 'CheckSecurityForNode' in member_node.ext_attrs: | 460 if 'CheckSecurityForNode' in member_node.ext_attrs: |
| 461 return None | 461 return None |
| 462 | 462 |
| 463 name = self._FindMatch(interface, member, member_prefix, | 463 name = self._FindMatch(interface, member, member_prefix, |
| 464 _renamed_html_members) | 464 _renamed_html_members) |
| 465 | 465 |
| 466 target_name = _renamed_html_members[name] if name else member | 466 target_name = _renamed_html_members[name] if name else member |
| 467 if self._FindMatch(interface, member, member_prefix, _private_html_members): | 467 if self._FindMatch(interface, member, member_prefix, _private_html_members): |
| 468 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName | 468 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName |
| 469 target_name = '$dom_' + target_name | 469 target_name = '$dom_' + target_name |
| 470 | 470 |
| 471 if dartify_name: | 471 if dartify_name: |
| 472 target_name = self._DartifyMemberName(target_name) | 472 target_name = self._DartifyMemberName(target_name) |
| 473 return target_name | 473 return target_name |
| 474 | 474 |
| 475 def ShouldSuppressMember(self, interface, member, member_prefix=''): |
| 476 """ Returns true if the member should be suppressed.""" |
| 477 if self._FindMatch(interface, member, member_prefix, |
| 478 _removed_html_members): |
| 479 return True |
| 480 return False |
| 481 |
| 475 def _FindMatch(self, interface, member, member_prefix, candidates): | 482 def _FindMatch(self, interface, member, member_prefix, candidates): |
| 476 for interface in self._database.Hierarchy(interface): | 483 for interface in self._database.Hierarchy(interface): |
| 477 member_name = interface.id + '.' + member | 484 member_name = interface.id + '.' + member |
| 478 if member_name in candidates: | 485 if member_name in candidates: |
| 479 return member_name | 486 return member_name |
| 480 member_name = interface.id + '.' + member_prefix + member | 487 member_name = interface.id + '.' + member_prefix + member |
| 481 if member_name in candidates: | 488 if member_name in candidates: |
| 482 return member_name | 489 return member_name |
| 483 member_name = interface.id + '.*' | 490 member_name = interface.id + '.*' |
| 484 if member_name in candidates: | 491 if member_name in candidates: |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 | 523 |
| 517 # We're looking for a sequence of letters which start with capital letter | 524 # We're looking for a sequence of letters which start with capital letter |
| 518 # then a series of caps and finishes with either the end of the string or | 525 # then a series of caps and finishes with either the end of the string or |
| 519 # a capital letter. | 526 # a capital letter. |
| 520 # The [0-9] check is for names such as 2D or 3D | 527 # The [0-9] check is for names such as 2D or 3D |
| 521 # The following test cases should match as: | 528 # The following test cases should match as: |
| 522 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue | 529 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue |
| 523 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) | 530 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) |
| 524 # IFrameElement: (I)()(F)rameElement (no change) | 531 # IFrameElement: (I)()(F)rameElement (no change) |
| 525 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) | 532 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) |
| OLD | NEW |