| 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', |
| 11 'Clipboard': 'DataTransfer', | 11 'Clipboard': 'DataTransfer', |
| 12 'Database': 'SqlDatabase', # Avoid conflict with Index DB's Database. | 12 'Database': 'SqlDatabase', # Avoid conflict with Index DB's Database. |
| 13 'DatabaseSync': 'SqlDatabaseSync', | 13 'DatabaseSync': 'SqlDatabaseSync', |
| 14 'DOMApplicationCache': 'ApplicationCache', | 14 'DOMApplicationCache': 'ApplicationCache', |
| 15 'DOMCoreException': 'DomException', | 15 'DOMCoreException': 'DomException', |
| 16 'DOMFileSystem': 'FileSystem', | 16 'DOMFileSystem': 'FileSystem', |
| 17 'DOMFileSystemSync': 'FileSystemSync', | |
| 18 'DOMFormData': 'FormData', | 17 'DOMFormData': 'FormData', |
| 19 'DOMURL': 'Url', | 18 'DOMURL': 'Url', |
| 20 'DOMWindow': 'Window', | 19 'DOMWindow': 'Window', |
| 21 'EntryCallback': '_EntryCallback', | 20 'EntryCallback': '_EntryCallback', |
| 22 'EntriesCallback': '_EntriesCallback', | 21 'EntriesCallback': '_EntriesCallback', |
| 23 'ErrorCallback': '_ErrorCallback', | 22 'ErrorCallback': '_ErrorCallback', |
| 24 'FileCallback': '_FileCallback', | 23 'FileCallback': '_FileCallback', |
| 25 'FileSystemCallback': '_FileSystemCallback', | 24 'FileSystemCallback': '_FileSystemCallback', |
| 26 'FileWriterCallback': '_FileWriterCallback', | 25 'FileWriterCallback': '_FileWriterCallback', |
| 27 'HTMLDocument' : 'HtmlDocument', | 26 'HTMLDocument' : 'HtmlDocument', |
| (...skipping 27 matching lines...) Expand all Loading... |
| 55 'WebKitTransitionEvent': '_WebKitTransitionEvent', | 54 'WebKitTransitionEvent': '_WebKitTransitionEvent', |
| 56 'XMLHttpRequest': 'HttpRequest', | 55 'XMLHttpRequest': 'HttpRequest', |
| 57 'XMLHttpRequestException': 'HttpRequestException', | 56 'XMLHttpRequestException': 'HttpRequestException', |
| 58 'XMLHttpRequestProgressEvent': 'HttpRequestProgressEvent', | 57 'XMLHttpRequestProgressEvent': 'HttpRequestProgressEvent', |
| 59 'XMLHttpRequestUpload': 'HttpRequestUpload', | 58 'XMLHttpRequestUpload': 'HttpRequestUpload', |
| 60 }) | 59 }) |
| 61 | 60 |
| 62 # Interfaces that are suppressed, but need to still exist for Dartium and to | 61 # Interfaces that are suppressed, but need to still exist for Dartium and to |
| 63 # properly wrap DOM objects if/when encountered. | 62 # properly wrap DOM objects if/when encountered. |
| 64 _removed_html_interfaces = [ | 63 _removed_html_interfaces = [ |
| 64 'DOMFileSystemSync', # Workers |
| 65 'DatabaseSync', # Workers |
| 66 'DedicatedWorkerContext', # Workers |
| 67 'DirectoryEntrySync', # Workers |
| 68 'DirectoryReaderSync', # Workers |
| 69 'EntrySync', # Workers |
| 70 'FileEntrySync', # Workers |
| 71 'FileReaderSync', # Workers |
| 72 'FileWriterSync', # Workers |
| 65 'HTMLAppletElement', | 73 'HTMLAppletElement', |
| 66 'HTMLBaseFontElement', | 74 'HTMLBaseFontElement', |
| 67 'HTMLDirectoryElement', | 75 'HTMLDirectoryElement', |
| 68 'HTMLFontElement', | 76 'HTMLFontElement', |
| 69 'HTMLFrameElement', | 77 'HTMLFrameElement', |
| 70 'HTMLFrameSetElement', | 78 'HTMLFrameSetElement', |
| 71 'HTMLMarqueeElement', | 79 'HTMLMarqueeElement', |
| 72 'IDBAny', | 80 'IDBAny', |
| 81 'SQLTransactionSync', # Workers |
| 82 'SQLTransactionSyncCallback', # Workers |
| 73 'SVGAltGlyphDefElement', # Webkit only. | 83 'SVGAltGlyphDefElement', # Webkit only. |
| 74 'SVGAltGlyphItemElement', # Webkit only. | 84 'SVGAltGlyphItemElement', # Webkit only. |
| 75 'SVGAnimateColorElement', # Deprecated. Use AnimateElement instead. | 85 'SVGAnimateColorElement', # Deprecated. Use AnimateElement instead. |
| 76 'SVGComponentTransferFunctionElement', # Currently not supported anywhere. | 86 'SVGComponentTransferFunctionElement', # Currently not supported anywhere. |
| 77 'SVGCursorElement', # Webkit only. | 87 'SVGCursorElement', # Webkit only. |
| 78 'SVGGradientElement', # Currently not supported anywhere. | |
| 79 'SVGFEDropShadowElement', # Webkit only for the following: | 88 'SVGFEDropShadowElement', # Webkit only for the following: |
| 80 'SVGFontElement', | 89 'SVGFontElement', |
| 81 'SVGFontFaceElement', | 90 'SVGFontFaceElement', |
| 82 'SVGFontFaceFormatElement', | 91 'SVGFontFaceFormatElement', |
| 83 'SVGFontFaceNameElement', | 92 'SVGFontFaceNameElement', |
| 84 'SVGFontFaceSrcElement', | 93 'SVGFontFaceSrcElement', |
| 85 'SVGFontFaceUriElement', | 94 'SVGFontFaceUriElement', |
| 86 'SVGGlyphElement', | 95 'SVGGlyphElement', |
| 87 'SVGGlyphRefElement', | 96 'SVGGlyphRefElement', |
| 97 'SVGGradientElement', # Currently not supported anywhere. |
| 88 'SVGHKernElement', | 98 'SVGHKernElement', |
| 99 'SVGMPathElement', |
| 89 'SVGMissingGlyphElement', | 100 'SVGMissingGlyphElement', |
| 90 'SVGMPathElement', | |
| 91 'SVGTRefElement', | 101 'SVGTRefElement', |
| 92 'SVGVKernElement', | 102 'SVGVKernElement', |
| 103 'SharedWorker', # Workers |
| 104 'SharedWorkerContext', # Workers |
| 105 'WorkerContext', # Workers |
| 106 'WorkerLocation', # Workers |
| 107 'WorkerNavigator', # Workers |
| 93 ] | 108 ] |
| 94 | 109 |
| 95 for interface in _removed_html_interfaces: | 110 for interface in _removed_html_interfaces: |
| 96 html_interface_renames[interface] = '_' + interface | 111 html_interface_renames[interface] = '_' + interface |
| 97 | 112 |
| 98 convert_to_future_members = monitored.Set( | 113 convert_to_future_members = monitored.Set( |
| 99 'htmlrenamer.converted_to_future_members', [ | 114 'htmlrenamer.converted_to_future_members', [ |
| 100 'DataTransferItem.getAsString', | 115 'DataTransferItem.getAsString', |
| 101 'DirectoryEntry.getDirectory', | 116 'DirectoryEntry.getDirectory', |
| 102 'DirectoryEntry.getFile', | 117 'DirectoryEntry.getFile', |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 'Node.appendChild': 'append', | 314 'Node.appendChild': 'append', |
| 300 'Node.cloneNode': 'clone', | 315 'Node.cloneNode': 'clone', |
| 301 'Node.nextSibling': 'nextNode', | 316 'Node.nextSibling': 'nextNode', |
| 302 'Node.ownerDocument': 'document', | 317 'Node.ownerDocument': 'document', |
| 303 'Node.parentElement': 'parent', | 318 'Node.parentElement': 'parent', |
| 304 'Node.previousSibling': 'previousNode', | 319 'Node.previousSibling': 'previousNode', |
| 305 'Node.textContent': 'text', | 320 'Node.textContent': 'text', |
| 306 'RTCPeerConnection.createAnswer': '_createAnswer', | 321 'RTCPeerConnection.createAnswer': '_createAnswer', |
| 307 'RTCPeerConnection.createOffer': '_createOffer', | 322 'RTCPeerConnection.createOffer': '_createOffer', |
| 308 'StorageInfo.queryUsageAndQuota': '_queryUsageAndQuota', | 323 'StorageInfo.queryUsageAndQuota': '_queryUsageAndQuota', |
| 309 'SVGComponentTransferFunctionElement.offset': 'gradientOffset', | |
| 310 'SVGElement.className': '$dom_svgClassName', | 324 'SVGElement.className': '$dom_svgClassName', |
| 311 'SVGStopElement.offset': 'gradientOffset', | 325 'SVGStopElement.offset': 'gradientOffset', |
| 312 'WorkerContext.webkitRequestFileSystem': '_requestFileSystem', | 326 #'WorkerContext.webkitRequestFileSystem': '_requestFileSystem', # Workers |
| 313 'WorkerContext.webkitRequestFileSystemSync': '_requestFileSystemSync', | 327 #'WorkerContext.webkitRequestFileSystemSync': '_requestFileSystemSync', # Wo
rkers |
| 314 'WorkerContext.webkitResolveLocalFileSystemSyncURL': | |
| 315 'resolveLocalFileSystemSyncUrl', | |
| 316 'WorkerContext.webkitResolveLocalFileSystemURL': | |
| 317 'resolveLocalFileSystemUrl', | |
| 318 }) | 328 }) |
| 319 | 329 |
| 320 for member in convert_to_future_members: | 330 for member in convert_to_future_members: |
| 321 if member in renamed_html_members: | 331 if member in renamed_html_members: |
| 322 renamed_html_members[member] = '_' + renamed_html_members[member] | 332 renamed_html_members[member] = '_' + renamed_html_members[member] |
| 323 else: | 333 else: |
| 324 renamed_html_members[member] = '_' + member[member.find('.') + 1 :] | 334 renamed_html_members[member] = '_' + member[member.find('.') + 1 :] |
| 325 | 335 |
| 326 # Members and classes from the dom that should be removed completely from | 336 # Members and classes from the dom that should be removed completely from |
| 327 # dart:html. These could be expressed in the IDL instead but expressing this | 337 # dart:html. These could be expressed in the IDL instead but expressing this |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 'DOMWindow': 'html', | 614 'DOMWindow': 'html', |
| 605 'Navigator': 'html', | 615 'Navigator': 'html', |
| 606 'WorkerContext': 'html', | 616 'WorkerContext': 'html', |
| 607 }) | 617 }) |
| 608 | 618 |
| 609 class HtmlRenamer(object): | 619 class HtmlRenamer(object): |
| 610 def __init__(self, database): | 620 def __init__(self, database): |
| 611 self._database = database | 621 self._database = database |
| 612 | 622 |
| 613 def RenameInterface(self, interface): | 623 def RenameInterface(self, interface): |
| 624 if 'Callback' in interface.ext_attrs: |
| 625 if interface.id in _removed_html_interfaces: |
| 626 return None |
| 627 |
| 614 if interface.id in html_interface_renames: | 628 if interface.id in html_interface_renames: |
| 615 return html_interface_renames[interface.id] | 629 return html_interface_renames[interface.id] |
| 616 elif interface.id.startswith('HTML'): | 630 elif interface.id.startswith('HTML'): |
| 617 if any(interface.id in ['Element', 'Document'] | 631 if any(interface.id in ['Element', 'Document'] |
| 618 for interface in self._database.Hierarchy(interface)): | 632 for interface in self._database.Hierarchy(interface)): |
| 619 return interface.id[len('HTML'):] | 633 return interface.id[len('HTML'):] |
| 620 return self.DartifyTypeName(interface.id) | 634 return self.DartifyTypeName(interface.id) |
| 621 | 635 |
| 622 | 636 |
| 623 def RenameMember(self, interface_name, member_node, member, member_prefix='', | 637 def RenameMember(self, interface_name, member_node, member, member_prefix='', |
| (...skipping 24 matching lines...) Expand all Loading... |
| 648 | 662 |
| 649 if dartify_name: | 663 if dartify_name: |
| 650 target_name = self._DartifyMemberName(target_name) | 664 target_name = self._DartifyMemberName(target_name) |
| 651 return target_name | 665 return target_name |
| 652 | 666 |
| 653 def ShouldSuppressMember(self, interface, member, member_prefix=''): | 667 def ShouldSuppressMember(self, interface, member, member_prefix=''): |
| 654 """ Returns true if the member should be suppressed.""" | 668 """ Returns true if the member should be suppressed.""" |
| 655 if self._FindMatch(interface, member, member_prefix, | 669 if self._FindMatch(interface, member, member_prefix, |
| 656 _removed_html_members): | 670 _removed_html_members): |
| 657 return True | 671 return True |
| 672 if interface.id in _removed_html_interfaces: |
| 673 return True |
| 658 return False | 674 return False |
| 659 | 675 |
| 660 def _FindMatch(self, interface, member, member_prefix, candidates): | 676 def _FindMatch(self, interface, member, member_prefix, candidates): |
| 661 for interface in self._database.Hierarchy(interface): | 677 for interface in self._database.Hierarchy(interface): |
| 662 member_name = interface.id + '.' + member | 678 member_name = interface.id + '.' + member |
| 663 if member_name in candidates: | 679 if member_name in candidates: |
| 664 return member_name | 680 return member_name |
| 665 member_name = interface.id + '.' + member_prefix + member | 681 member_name = interface.id + '.' + member_prefix + member |
| 666 if member_name in candidates: | 682 if member_name in candidates: |
| 667 return member_name | 683 return member_name |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 | 729 |
| 714 # We're looking for a sequence of letters which start with capital letter | 730 # We're looking for a sequence of letters which start with capital letter |
| 715 # then a series of caps and finishes with either the end of the string or | 731 # then a series of caps and finishes with either the end of the string or |
| 716 # a capital letter. | 732 # a capital letter. |
| 717 # The [0-9] check is for names such as 2D or 3D | 733 # The [0-9] check is for names such as 2D or 3D |
| 718 # The following test cases should match as: | 734 # The following test cases should match as: |
| 719 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue | 735 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue |
| 720 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) | 736 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) |
| 721 # IFrameElement: (I)()(F)rameElement (no change) | 737 # IFrameElement: (I)()(F)rameElement (no change) |
| 722 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) | 738 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) |
| OLD | NEW |