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 typed_array_renames = { | 9 typed_array_renames = { |
10 'ArrayBuffer': 'ByteBuffer', | 10 'ArrayBuffer': 'ByteBuffer', |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
144 'RTCPeerConnection.setLocalDescription', | 144 'RTCPeerConnection.setLocalDescription', |
145 'RTCPeerConnection.setRemoteDescription', | 145 'RTCPeerConnection.setRemoteDescription', |
146 'StorageInfo.requestQuota', | 146 'StorageInfo.requestQuota', |
147 'WorkerContext.webkitResolveLocalFileSystemURL', | 147 'WorkerContext.webkitResolveLocalFileSystemURL', |
148 'WorkerContext.webkitRequestFileSystem', | 148 'WorkerContext.webkitRequestFileSystem', |
149 ]) | 149 ]) |
150 | 150 |
151 # Members from the standard dom that should not be exposed publicly in dart:html | 151 # Members from the standard dom that should not be exposed publicly in dart:html |
152 # but need to be exposed internally to implement dart:html on top of a standard | 152 # but need to be exposed internally to implement dart:html on top of a standard |
153 # browser. | 153 # browser. |
154 _private_html_members = monitored.Set('htmlrenamer._private_html_members', [ | 154 private_html_members = monitored.Set('htmlrenamer.private_html_members', [ |
155 'AudioNode.connect', | |
155 'CanvasRenderingContext2D.arc', | 156 'CanvasRenderingContext2D.arc', |
156 'CompositionEvent.initCompositionEvent', | 157 'CompositionEvent.initCompositionEvent', |
157 'CustomEvent.initCustomEvent', | 158 'CustomEvent.initCustomEvent', |
158 'DeviceOrientationEvent.initDeviceOrientationEvent', | 159 'DeviceOrientationEvent.initDeviceOrientationEvent', |
159 'Document.createElement', | 160 'Document.createElement', |
160 'Document.createElementNS', | 161 'Document.createElementNS', |
161 'Document.createEvent', | 162 'Document.createEvent', |
162 'Document.createNodeIterator', | 163 'Document.createNodeIterator', |
163 'Document.createRange', | 164 'Document.createRange', |
164 'Document.createTextNode', | 165 'Document.createTextNode', |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
341 'URL.createObjectURL': 'createObjectUrl', | 342 'URL.createObjectURL': 'createObjectUrl', |
342 'URL.revokeObjectURL': 'revokeObjectUrl', | 343 'URL.revokeObjectURL': 'revokeObjectUrl', |
343 'WebGLRenderingContext.texImage2D': '_texImage2D', | 344 'WebGLRenderingContext.texImage2D': '_texImage2D', |
344 'WebGLRenderingContext.texSubImage2D': '_texSubImageImage2D', | 345 'WebGLRenderingContext.texSubImage2D': '_texSubImageImage2D', |
345 'WheelEvent.wheelDeltaX': '_wheelDeltaX', | 346 'WheelEvent.wheelDeltaX': '_wheelDeltaX', |
346 'WheelEvent.wheelDeltaY': '_wheelDeltaY', | 347 'WheelEvent.wheelDeltaY': '_wheelDeltaY', |
347 #'WorkerContext.webkitRequestFileSystem': '_requestFileSystem', | 348 #'WorkerContext.webkitRequestFileSystem': '_requestFileSystem', |
348 #'WorkerContext.webkitRequestFileSystemSync': '_requestFileSystemSync', | 349 #'WorkerContext.webkitRequestFileSystemSync': '_requestFileSystemSync', |
349 }) | 350 }) |
350 | 351 |
352 # Members that have multiple definitions, but their types are vary, so we rename | |
353 # them to make them distinct. | |
354 renamed_overloads = monitored.Dict('htmldartgenreator.renamed_overloads', { | |
355 'AudioContext.createBuffer(ArrayBuffer buffer, boolean mixToMono)': | |
356 'createBufferFromBuffer', | |
357 'CSS.supports(DOMString conditionText)': 'supportsCondition', | |
358 'CanvasRenderingContext2D.createPattern(HTMLImageElement image, ' | |
359 'DOMString repetitionType)': 'createPatternFromImage', | |
360 'DataTransferItemList.add(File file)': 'addFile', | |
361 'DataTransferItemList.add(DOMString data, DOMString type)': 'addData', | |
362 'FormData.append(DOMString name, Blob value, DOMString filename)': | |
Emily Fortuna
2013/07/02 22:27:30
also removed due to dartium error. (see below)
| |
363 'appendBlob', | |
364 'IDBDatabase.transaction(DOMStringList storeNames, DOMString mode)': | |
365 'transactionStores', | |
366 'IDBDatabase.transaction(sequence<DOMString> storeNames, DOMString mode)': | |
367 'transactionList', | |
368 'IDBDatabase.transaction(DOMString storeName, DOMString mode)': | |
369 'transactionStore', | |
370 'RTCDataChannel.send(ArrayBuffer data)': 'sendByteBuffer', | |
371 'RTCDataChannel.send(ArrayBufferView data)': 'sendTypedData', | |
372 'RTCDataChannel.send(Blob data)': 'sendBlob', | |
373 'RTCDataChannel.send(DOMString data)': 'sendString', | |
374 'URL.createObjectURL(WebKitMediaSource source)': | |
375 'createObjectUrlFromSource', | |
376 'URL.createObjectURL(MediaStream stream)': 'createObjectUrlFromStream', | |
377 'URL.createObjectURL(Blob blob)': 'createObjectUrlFromBlob', | |
378 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' | |
379 'unsigned long internalformat, long width, long height, long border, ' | |
380 'unsigned long format, unsigned long type, ArrayBufferView pixels)': | |
381 'texImage2DTypedData', | |
382 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' | |
383 'unsigned long internalformat, unsigned long format, unsigned long ' | |
384 'type, HTMLImageElement image)': 'texImage2DImage', | |
385 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' | |
386 'unsigned long internalformat, unsigned long format, unsigned long ' | |
387 'type, HTMLCanvasElement canvas)': 'texImage2DCanvas', | |
388 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' | |
389 'unsigned long internalformat, unsigned long format, unsigned long ' | |
390 'type, HTMLVideoElement video)': 'texImage2DVideo', | |
391 'WebGLRenderingContext.texSubImage2D(unsigned long target, long level, ' | |
392 'long xoffset, long yoffset, long width, long height, unsigned long ' | |
393 'format, unsigned long type, ArrayBufferView pixels)': | |
394 'texSubImage2DTypedData', | |
395 'WebGLRenderingContext.texSubImage2D(unsigned long target, long level, ' | |
396 'long xoffset, long yoffset, unsigned long format, unsigned long type, ' | |
397 'HTMLImageElement image)': 'texSubImage2DImage', | |
398 'WebGLRenderingContext.texSubImage2D(unsigned long target, long level, ' | |
399 'long xoffset, long yoffset, unsigned long format, unsigned long type, ' | |
400 'HTMLCanvasElement canvas)': 'texSubImage2DCanvas', | |
401 'WebGLRenderingContext.texSubImage2D(unsigned long target, long level, ' | |
402 'long xoffset, long yoffset, unsigned long format, unsigned long type, ' | |
403 'HTMLVideoElement video)': 'texSubImage2DVideo', | |
404 'WebGLRenderingContext.bufferData(unsigned long target, ArrayBuffer data, ' | |
405 'unsigned long usage)': 'bufferByteData', | |
406 'WebGLRenderingContext.bufferData(unsigned long target, ' | |
407 'ArrayBufferView data, unsigned long usage)': 'bufferTypedData', | |
408 'WebGLRenderingContext.bufferSubData(unsigned long target, ' | |
409 'long long offset, ArrayBuffer data)': 'bufferSubByteData', | |
410 'WebGLRenderingContext.bufferSubData(unsigned long target, ' | |
411 'long long offset, ArrayBufferView data)': 'bufferSubTypedData', | |
412 'WebSocket.send(ArrayBuffer data)': 'sendByteBuffer', | |
Emily Fortuna
2013/07/02 22:27:30
these renames were removed to avoid a dartium erro
| |
413 'WebSocket.send(ArrayBufferView data)': 'sendTypeData', | |
414 'WebSocket.send(DOMString data)': 'sendString', | |
415 'WebSocket.send(Blob data)': 'sendBlob' | |
416 }) | |
417 | |
418 # Members that have multiple definitions, but their types are identical (only | |
419 # number of arguments vary), so we do not rename them as a _raw method. | |
420 keep_overloaded_members = monitored.Set( | |
421 'htmldartgenerator.keep_overloaded_members', [ | |
422 'AudioBufferSourceNode.start', | |
423 'CanvasRenderingContext2D.putImageData', | |
424 'CanvasRenderingContext2D.webkitPutImageDataHD', | |
425 'DataTransferItemList.add', | |
426 'HTMLInputElement.setRangeText', | |
427 'HTMLTextAreaElement.setRangeText', | |
428 'IDBDatabase.transaction', | |
429 'RTCDataChannel.send', | |
430 'URL.createObjectURL', | |
431 'WebSocket.send', | |
432 'XMLHttpRequest.send' | |
433 ]) | |
434 | |
351 for member in convert_to_future_members: | 435 for member in convert_to_future_members: |
352 if member in renamed_html_members: | 436 if member in renamed_html_members: |
353 renamed_html_members[member] = '_' + renamed_html_members[member] | 437 renamed_html_members[member] = '_' + renamed_html_members[member] |
354 else: | 438 else: |
355 renamed_html_members[member] = '_' + member[member.find('.') + 1 :] | 439 renamed_html_members[member] = '_' + member[member.find('.') + 1 :] |
356 | 440 |
357 # Members and classes from the dom that should be removed completely from | 441 # Members and classes from the dom that should be removed completely from |
358 # dart:html. These could be expressed in the IDL instead but expressing this | 442 # dart:html. These could be expressed in the IDL instead but expressing this |
359 # as a simple table instead is more concise. | 443 # as a simple table instead is more concise. |
360 # Syntax is: ClassName.(get\:|set\:|call\:|on\:)?MemberName | 444 # Syntax is: ClassName.(get\:|set\:|call\:|on\:)?MemberName |
361 # Using get: and set: is optional and should only be used when a getter needs | 445 # Using get: and set: is optional and should only be used when a getter needs |
362 # to be suppressed but not the setter, etc. | 446 # to be suppressed but not the setter, etc. |
363 # TODO(jacobr): cleanup and augment this list. | 447 # TODO(jacobr): cleanup and augment this list. |
364 _removed_html_members = monitored.Set('htmlrenamer._removed_html_members', [ | 448 removed_html_members = monitored.Set('htmlrenamer.removed_html_members', [ |
365 'AudioBufferSourceNode.looping', # TODO(vsm): Use deprecated IDL annotation | 449 'AudioBufferSourceNode.looping', # TODO(vsm): Use deprecated IDL annotation |
366 'CSSStyleDeclaration.getPropertyCSSValue', | 450 'CSSStyleDeclaration.getPropertyCSSValue', |
367 'CanvasRenderingContext2D.clearShadow', | 451 'CanvasRenderingContext2D.clearShadow', |
368 'CanvasRenderingContext2D.drawImageFromRect', | 452 'CanvasRenderingContext2D.drawImageFromRect', |
369 'CanvasRenderingContext2D.setAlpha', | 453 'CanvasRenderingContext2D.setAlpha', |
370 'CanvasRenderingContext2D.setCompositeOperation', | 454 'CanvasRenderingContext2D.setCompositeOperation', |
371 'CanvasRenderingContext2D.setFillColor', | 455 'CanvasRenderingContext2D.setFillColor', |
372 'CanvasRenderingContext2D.setLineCap', | 456 'CanvasRenderingContext2D.setLineCap', |
373 'CanvasRenderingContext2D.setLineJoin', | 457 'CanvasRenderingContext2D.setLineJoin', |
374 'CanvasRenderingContext2D.setLineWidth', | 458 'CanvasRenderingContext2D.setLineWidth', |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
668 if self.ShouldSuppressMember(interface, member, member_prefix): | 752 if self.ShouldSuppressMember(interface, member, member_prefix): |
669 return None | 753 return None |
670 | 754 |
671 if 'CheckSecurityForNode' in member_node.ext_attrs: | 755 if 'CheckSecurityForNode' in member_node.ext_attrs: |
672 return None | 756 return None |
673 | 757 |
674 name = self._FindMatch(interface, member, member_prefix, | 758 name = self._FindMatch(interface, member, member_prefix, |
675 renamed_html_members) | 759 renamed_html_members) |
676 | 760 |
677 target_name = renamed_html_members[name] if name else member | 761 target_name = renamed_html_members[name] if name else member |
678 if self._FindMatch(interface, member, member_prefix, _private_html_members): | 762 if self._FindMatch(interface, member, member_prefix, private_html_members): |
679 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName | 763 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName |
680 target_name = '$dom_' + target_name | 764 target_name = '$dom_' + target_name |
681 | 765 |
682 if not name and target_name.startswith('webkit'): | 766 if not name and target_name.startswith('webkit'): |
683 target_name = member[len('webkit'):] | 767 target_name = member[len('webkit'):] |
684 target_name = target_name[:1].lower() + target_name[1:] | 768 target_name = target_name[:1].lower() + target_name[1:] |
685 | 769 |
686 if dartify_name: | 770 if dartify_name: |
687 target_name = self._DartifyMemberName(target_name) | 771 target_name = self._DartifyMemberName(target_name) |
688 return target_name | 772 return target_name |
689 | 773 |
690 def ShouldSuppressMember(self, interface, member, member_prefix=''): | 774 def ShouldSuppressMember(self, interface, member, member_prefix=''): |
691 """ Returns true if the member should be suppressed.""" | 775 """ Returns true if the member should be suppressed.""" |
692 if self._FindMatch(interface, member, member_prefix, | 776 if self._FindMatch(interface, member, member_prefix, removed_html_members): |
693 _removed_html_members): | |
694 return True | 777 return True |
695 if interface.id in _removed_html_interfaces: | 778 if interface.id in _removed_html_interfaces: |
696 return True | 779 return True |
697 return False | 780 return False |
698 | 781 |
699 def ShouldSuppressInterface(self, interface): | 782 def ShouldSuppressInterface(self, interface): |
700 """ Returns true if the interface should be suppressed.""" | 783 """ Returns true if the interface should be suppressed.""" |
701 if interface.id in _removed_html_interfaces: | 784 if interface.id in _removed_html_interfaces: |
702 return True | 785 return True |
703 | 786 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
772 | 855 |
773 # We're looking for a sequence of letters which start with capital letter | 856 # We're looking for a sequence of letters which start with capital letter |
774 # then a series of caps and finishes with either the end of the string or | 857 # then a series of caps and finishes with either the end of the string or |
775 # a capital letter. | 858 # a capital letter. |
776 # The [0-9] check is for names such as 2D or 3D | 859 # The [0-9] check is for names such as 2D or 3D |
777 # The following test cases should match as: | 860 # The following test cases should match as: |
778 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue | 861 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue |
779 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) | 862 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) |
780 # IFrameElement: (I)()(F)rameElement (no change) | 863 # IFrameElement: (I)()(F)rameElement (no change) |
781 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) | 864 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) |
OLD | NEW |