Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: tools/dom/scripts/htmlrenamer.py

Issue 19820007: Fixes for Blink roll. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Minors fixes Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 12 matching lines...) Expand all
23 23
24 html_interface_renames = monitored.Dict('htmlrenamer.html_interface_renames', 24 html_interface_renames = monitored.Dict('htmlrenamer.html_interface_renames',
25 dict({ 25 dict({
26 'Attr': '_Attr', 26 'Attr': '_Attr',
27 'CDATASection': 'CDataSection', 27 'CDATASection': 'CDataSection',
28 'Clipboard': 'DataTransfer', 28 'Clipboard': 'DataTransfer',
29 'Database': 'SqlDatabase', # Avoid conflict with Index DB's Database. 29 'Database': 'SqlDatabase', # Avoid conflict with Index DB's Database.
30 'DatabaseSync': 'SqlDatabaseSync', 30 'DatabaseSync': 'SqlDatabaseSync',
31 'DOMApplicationCache': 'ApplicationCache', 31 'DOMApplicationCache': 'ApplicationCache',
32 'DOMFileSystem': 'FileSystem', 32 'DOMFileSystem': 'FileSystem',
33 'DOMPoint': '_DomPoint', 33 'WebKitPoint': '_DomPoint',
34 'Entity': '_Entity', # Not sure if we want to expose this yet, may conflict with other libs. 34 'Entity': '_Entity', # Not sure if we want to expose this yet, may conflict with other libs.
35 'EntryCallback': '_EntryCallback', 35 'EntryCallback': '_EntryCallback',
36 'EntriesCallback': '_EntriesCallback', 36 'EntriesCallback': '_EntriesCallback',
37 'ErrorCallback': '_ErrorCallback', 37 'ErrorCallback': '_ErrorCallback',
38 'FileCallback': '_FileCallback', 38 'FileCallback': '_FileCallback',
39 'FileSystemCallback': '_FileSystemCallback', 39 'FileSystemCallback': '_FileSystemCallback',
40 'FileWriterCallback': '_FileWriterCallback', 40 'FileWriterCallback': '_FileWriterCallback',
41 'HTMLDocument' : 'HtmlDocument', 41 'HTMLDocument' : 'HtmlDocument',
42 'IDBFactory': 'IdbFactory', # Manual to avoid name conflicts. 42 'IDBFactory': 'IdbFactory', # Manual to avoid name conflicts.
43 'NamedNodeMap': '_NamedNodeMap', 43 'NamedNodeMap': '_NamedNodeMap',
44 'NavigatorUserMediaErrorCallback': '_NavigatorUserMediaErrorCallback', 44 'NavigatorUserMediaErrorCallback': '_NavigatorUserMediaErrorCallback',
45 'NavigatorUserMediaSuccessCallback': '_NavigatorUserMediaSuccessCallback', 45 'NavigatorUserMediaSuccessCallback': '_NavigatorUserMediaSuccessCallback',
46 'NotificationPermissionCallback': '_NotificationPermissionCallback', 46 'NotificationPermissionCallback': '_NotificationPermissionCallback',
47 'PositionCallback': '_PositionCallback', 47 'PositionCallback': '_PositionCallback',
48 'PositionErrorCallback': '_PositionErrorCallback', 48 'PositionErrorCallback': '_PositionErrorCallback',
49 'RTCDTMFSender': 'RtcDtmfSender', 49 'RTCDTMFSender': 'RtcDtmfSender',
50 'RTCDTMFToneChangeEvent': 'RtcDtmfToneChangeEvent', 50 'RTCDTMFToneChangeEvent': 'RtcDtmfToneChangeEvent',
51 'RTCErrorCallback': '_RtcErrorCallback', 51 'RTCErrorCallback': '_RtcErrorCallback',
52 'RTCSessionDescriptionCallback': '_RtcSessionDescriptionCallback', 52 'RTCSessionDescriptionCallback': '_RtcSessionDescriptionCallback',
53 'SVGDocument': 'SvgDocument', # Manual to avoid name conflicts. 53 'SVGDocument': 'SvgDocument', # Manual to avoid name conflicts.
54 'SVGElement': 'SvgElement', # Manual to avoid name conflicts. 54 'SVGElement': 'SvgElement', # Manual to avoid name conflicts.
55 'SVGException': 'SvgException', # Manual of avoid conflict with Exception. 55 'SVGException': 'SvgException', # Manual of avoid conflict with Exception.
56 'SVGGradientElement': '_GradientElement', 56 'SVGGradientElement': '_GradientElement',
57 'SVGSVGElement': 'SvgSvgElement', # Manual to avoid name conflicts. 57 'SVGSVGElement': 'SvgSvgElement', # Manual to avoid name conflicts.
58 'Stream': 'FileStream',
58 'StringCallback': '_StringCallback', 59 'StringCallback': '_StringCallback',
59 'WebGLVertexArrayObjectOES': 'VertexArrayObject', 60 'WebGLVertexArrayObjectOES': 'VertexArrayObject',
60 'XMLHttpRequest': 'HttpRequest', 61 'XMLHttpRequest': 'HttpRequest',
61 'XMLHttpRequestProgressEvent': 'HttpRequestProgressEvent', 62 'XMLHttpRequestProgressEvent': 'HttpRequestProgressEvent',
62 'XMLHttpRequestUpload': 'HttpRequestUpload', 63 'XMLHttpRequestUpload': 'HttpRequestUpload',
63 }, **typed_array_renames)) 64 }, **typed_array_renames))
64 65
65 # Interfaces that are suppressed, but need to still exist for Dartium and to 66 # Interfaces that are suppressed, but need to still exist for Dartium and to
66 # properly wrap DOM objects if/when encountered. 67 # properly wrap DOM objects if/when encountered.
67 _removed_html_interfaces = [ 68 _removed_html_interfaces = [
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 'SVGGlyphElement', 109 'SVGGlyphElement',
109 'SVGGlyphRefElement', 110 'SVGGlyphRefElement',
110 'SVGHKernElement', 111 'SVGHKernElement',
111 'SVGMPathElement', 112 'SVGMPathElement',
112 'SVGPaint', 113 'SVGPaint',
113 'SVGMissingGlyphElement', 114 'SVGMissingGlyphElement',
114 'SVGTRefElement', 115 'SVGTRefElement',
115 'SVGVKernElement', 116 'SVGVKernElement',
116 'SharedWorker', # Workers 117 'SharedWorker', # Workers
117 'SharedWorkerContext', # Workers 118 'SharedWorkerContext', # Workers
119 'WebKitMediaSource',
120 'WebKitSourceBuffer',
121 'WebKitSourceBufferList',
118 'WorkerContext', # Workers 122 'WorkerContext', # Workers
119 'WorkerLocation', # Workers 123 'WorkerLocation', # Workers
120 'WorkerNavigator', # Workers 124 'WorkerNavigator', # Workers
121 ] 125 ]
122 126
123 for interface in _removed_html_interfaces: 127 for interface in _removed_html_interfaces:
124 html_interface_renames[interface] = '_' + interface 128 html_interface_renames[interface] = '_' + interface
125 129
126 convert_to_future_members = monitored.Set( 130 convert_to_future_members = monitored.Set(
127 'htmlrenamer.converted_to_future_members', [ 131 'htmlrenamer.converted_to_future_members', [
128 'AudioContext.decodeAudioData', 132 'AudioContext.decodeAudioData',
129 'DataTransferItem.getAsString', 133 'DataTransferItem.getAsString',
130 'DirectoryEntry.getDirectory', 134 'DirectoryEntry.getDirectory',
131 'DirectoryEntry.getFile', 135 'DirectoryEntry.getFile',
132 'DirectoryEntry.removeRecursively', 136 'DirectoryEntry.removeRecursively',
133 'DirectoryReader.readEntries', 137 'DirectoryReader.readEntries',
134 'DOMWindow.webkitRequestFileSystem', 138 'Window.webkitRequestFileSystem',
135 'DOMWindow.webkitResolveLocalFileSystemURL', 139 'Window.webkitResolveLocalFileSystemURL',
136 'Entry.copyTo', 140 'Entry.copyTo',
137 'Entry.getMetadata', 141 'Entry.getMetadata',
138 'Entry.getParent', 142 'Entry.getParent',
139 'Entry.moveTo', 143 'Entry.moveTo',
140 'Entry.remove', 144 'Entry.remove',
141 'FileEntry.createWriter', 145 'FileEntry.createWriter',
142 'FileEntry.file', 146 'FileEntry.file',
143 'Notification.requestPermission', 147 'Notification.requestPermission',
144 'NotificationCenter.requestPermission', 148 'NotificationCenter.requestPermission',
145 'RTCPeerConnection.setLocalDescription', 149 'RTCPeerConnection.setLocalDescription',
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 'Document.webkitHidden', 193 'Document.webkitHidden',
190 'Document.webkitIsFullScreen', 194 'Document.webkitIsFullScreen',
191 'Document.webkitPointerLockElement', 195 'Document.webkitPointerLockElement',
192 'Document.webkitVisibilityState', 196 'Document.webkitVisibilityState',
193 197
194 'DocumentFragment.querySelector', 198 'DocumentFragment.querySelector',
195 'DocumentFragment.querySelectorAll', 199 'DocumentFragment.querySelectorAll',
196 'Element.childElementCount', 200 'Element.childElementCount',
197 'Element.children', 201 'Element.children',
198 'Element.firstElementChild', 202 'Element.firstElementChild',
203 'ParentNode.childElementCount',
204 'ParentNode.children',
205 'ParentNode.firstElementChild',
199 'Element.getAttribute', 206 'Element.getAttribute',
200 'Element.getAttributeNS', 207 'Element.getAttributeNS',
201 'Element.getElementsByTagName', 208 'Element.getElementsByTagName',
202 'Element.hasAttribute', 209 'Element.hasAttribute',
203 'Element.hasAttributeNS', 210 'Element.hasAttributeNS',
204 'Element.lastElementChild', 211 'ParentNode.lastElementChild',
205 'Element.querySelectorAll', 212 'Element.querySelectorAll',
206 'Element.removeAttribute', 213 'Element.removeAttribute',
207 'Element.removeAttributeNS', 214 'Element.removeAttributeNS',
208 'Element.scrollIntoView', 215 'Element.scrollIntoView',
209 'Element.scrollIntoViewIfNeeded', 216 'Element.scrollIntoViewIfNeeded',
210 'Element.setAttributeNS', 217 'Element.setAttributeNS',
211 'Element.setAttribute', 218 'Element.setAttribute',
212 'Element.setAttributeNS', 219 'Element.setAttributeNS',
213 'ElementTraversal.childElementCount', 220 'ElementTraversal.childElementCount',
214 'ElementTraversal.firstElementChild', 221 'ElementTraversal.firstElementChild',
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 'Touch.screenY', 298 'Touch.screenY',
292 'TouchEvent.initTouchEvent', 299 'TouchEvent.initTouchEvent',
293 'UIEvent.charCode', 300 'UIEvent.charCode',
294 'UIEvent.initUIEvent', 301 'UIEvent.initUIEvent',
295 'UIEvent.keyCode', 302 'UIEvent.keyCode',
296 'UIEvent.layerX', 303 'UIEvent.layerX',
297 'UIEvent.layerY', 304 'UIEvent.layerY',
298 'UIEvent.pageX', 305 'UIEvent.pageX',
299 'UIEvent.pageY', 306 'UIEvent.pageY',
300 'WheelEvent.initWebKitWheelEvent', 307 'WheelEvent.initWebKitWheelEvent',
301 'DOMWindow.getComputedStyle', 308 'Window.getComputedStyle',
302 'DOMWindow.moveTo', 309 'Window.moveTo',
303 ]) 310 ])
304 311
305 # Members from the standard dom that exist in the dart:html library with 312 # Members from the standard dom that exist in the dart:html library with
306 # identical functionality but with cleaner names. 313 # identical functionality but with cleaner names.
307 renamed_html_members = monitored.Dict('htmlrenamer.renamed_html_members', { 314 renamed_html_members = monitored.Dict('htmlrenamer.renamed_html_members', {
308 'CanvasRenderingContext2D.drawImage': '_drawImage', 315 'CanvasRenderingContext2D.drawImage': '_drawImage',
309 'CSSKeyframesRule.insertRule': 'appendRule', 316 'CSSKeyframesRule.insertRule': 'appendRule',
310 'CSSStyleDeclaration.getPropertyValue': '_getPropertyValue', 317 'CSSStyleDeclaration.getPropertyValue': '_getPropertyValue',
311 'CSSStyleDeclaration.setProperty': '_setProperty', 318 'CSSStyleDeclaration.setProperty': '_setProperty',
312 'DirectoryEntry.getDirectory': '_getDirectory', 319 'DirectoryEntry.getDirectory': '_getDirectory',
313 'DirectoryEntry.getFile': '_getFile', 320 'DirectoryEntry.getFile': '_getFile',
314 'Document.createCDATASection': 'createCDataSection', 321 'Document.createCDATASection': 'createCDataSection',
315 'Document.defaultView': 'window', 322 'Document.defaultView': 'window',
316 'Document.querySelector': 'query', 323 'Document.querySelector': 'query',
317 'DOMWindow.CSS': 'css', 324 'Window.CSS': 'css',
318 'DOMWindow.clearTimeout': '_clearTimeout', 325 'Window.clearTimeout': '_clearTimeout',
319 'DOMWindow.clearInterval': '_clearInterval', 326 'Window.clearInterval': '_clearInterval',
320 'DOMWindow.setTimeout': '_setTimeout', 327 'Window.setTimeout': '_setTimeout',
321 'DOMWindow.setInterval': '_setInterval', 328 'Window.setInterval': '_setInterval',
322 'DOMWindow.webkitConvertPointFromNodeToPage': '_convertPointFromNodeToPage', 329 'Window.webkitConvertPointFromNodeToPage': '_convertPointFromNodeToPage',
323 'DOMWindow.webkitConvertPointFromPageToNode': '_convertPointFromPageToNode', 330 'Window.webkitConvertPointFromPageToNode': '_convertPointFromPageToNode',
324 'DOMWindow.webkitNotifications': 'notifications', 331 'Window.webkitNotifications': 'notifications',
325 'DOMWindow.webkitRequestFileSystem': '_requestFileSystem', 332 'Window.webkitRequestFileSystem': '_requestFileSystem',
326 'DOMWindow.webkitResolveLocalFileSystemURL': 'resolveLocalFileSystemUrl', 333 'Window.webkitResolveLocalFileSystemURL': 'resolveLocalFileSystemUrl',
327 'Element.querySelector': 'query', 334 'Element.querySelector': 'query',
328 'Element.webkitCreateShadowRoot': 'createShadowRoot', 335 'Element.webkitCreateShadowRoot': 'createShadowRoot',
329 'Element.webkitMatchesSelector' : 'matches', 336 'Element.webkitMatchesSelector' : 'matches',
330 'MutationObserver.observe': '_observe', 337 'MutationObserver.observe': '_observe',
331 'Navigator.webkitGetUserMedia': '_getUserMedia', 338 'Navigator.webkitGetUserMedia': '_getUserMedia',
332 'Node.appendChild': 'append', 339 'Node.appendChild': 'append',
333 'Node.cloneNode': 'clone', 340 'Node.cloneNode': 'clone',
334 'Node.nextSibling': 'nextNode', 341 'Node.nextSibling': 'nextNode',
335 'Node.ownerDocument': 'document', 342 'Node.ownerDocument': 'document',
336 'Node.parentElement': 'parent', 343 'Node.parentElement': 'parent',
(...skipping 29 matching lines...) Expand all
366 'IDBDatabase.transaction(DOMStringList storeNames, DOMString mode)': 373 'IDBDatabase.transaction(DOMStringList storeNames, DOMString mode)':
367 'transactionStores', 374 'transactionStores',
368 'IDBDatabase.transaction(sequence<DOMString> storeNames, DOMString mode)': 375 'IDBDatabase.transaction(sequence<DOMString> storeNames, DOMString mode)':
369 'transactionList', 376 'transactionList',
370 'IDBDatabase.transaction(DOMString storeName, DOMString mode)': 377 'IDBDatabase.transaction(DOMString storeName, DOMString mode)':
371 'transactionStore', 378 'transactionStore',
372 'RTCDataChannel.send(ArrayBuffer data)': 'sendByteBuffer', 379 'RTCDataChannel.send(ArrayBuffer data)': 'sendByteBuffer',
373 'RTCDataChannel.send(ArrayBufferView data)': 'sendTypedData', 380 'RTCDataChannel.send(ArrayBufferView data)': 'sendTypedData',
374 'RTCDataChannel.send(Blob data)': 'sendBlob', 381 'RTCDataChannel.send(Blob data)': 'sendBlob',
375 'RTCDataChannel.send(DOMString data)': 'sendString', 382 'RTCDataChannel.send(DOMString data)': 'sendString',
383 'SourceBuffer.appendBuffer(ArrayBufferView view)': 'appendBufferView',
376 'URL.createObjectURL(WebKitMediaSource source)': 384 'URL.createObjectURL(WebKitMediaSource source)':
385 '_createObjectUrlFromWebKitMediaSource',
386 'URL.createObjectURL(MediaSource source)':
377 'createObjectUrlFromSource', 387 'createObjectUrlFromSource',
378 'URL.createObjectURL(MediaStream stream)': 'createObjectUrlFromStream', 388 'URL.createObjectURL(MediaStream stream)': 'createObjectUrlFromStream',
379 'URL.createObjectURL(Blob blob)': 'createObjectUrlFromBlob', 389 'URL.createObjectURL(Blob blob)': 'createObjectUrlFromBlob',
380 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' 390 'WebGLRenderingContext.texImage2D(unsigned long target, long level, '
381 'unsigned long internalformat, unsigned long format, unsigned long ' 391 'unsigned long internalformat, unsigned long format, unsigned long '
382 'type, ImageData pixels)': 'texImage2DImageData', 392 'type, ImageData pixels)': 'texImage2DImageData',
383 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' 393 'WebGLRenderingContext.texImage2D(unsigned long target, long level, '
384 'unsigned long internalformat, unsigned long format, unsigned long ' 394 'unsigned long internalformat, unsigned long format, unsigned long '
385 'type, HTMLImageElement image)': 'texImage2DImage', 395 'type, HTMLImageElement image)': 'texImage2DImage',
386 'WebGLRenderingContext.texImage2D(unsigned long target, long level, ' 396 'WebGLRenderingContext.texImage2D(unsigned long target, long level, '
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 'CanvasRenderingContext2D.setAlpha', 463 'CanvasRenderingContext2D.setAlpha',
454 'CanvasRenderingContext2D.setCompositeOperation', 464 'CanvasRenderingContext2D.setCompositeOperation',
455 'CanvasRenderingContext2D.setFillColor', 465 'CanvasRenderingContext2D.setFillColor',
456 'CanvasRenderingContext2D.setLineCap', 466 'CanvasRenderingContext2D.setLineCap',
457 'CanvasRenderingContext2D.setLineJoin', 467 'CanvasRenderingContext2D.setLineJoin',
458 'CanvasRenderingContext2D.setLineWidth', 468 'CanvasRenderingContext2D.setLineWidth',
459 'CanvasRenderingContext2D.setMiterLimit', 469 'CanvasRenderingContext2D.setMiterLimit',
460 'CanvasRenderingContext2D.setShadow', 470 'CanvasRenderingContext2D.setShadow',
461 'CanvasRenderingContext2D.setStrokeColor', 471 'CanvasRenderingContext2D.setStrokeColor',
462 'CharacterData.remove', 472 'CharacterData.remove',
463 'DOMWindow.call:blur', 473 'Window.call:blur',
464 'DOMWindow.call:focus', 474 'Window.call:focus',
465 'DOMWindow.clientInformation', 475 'Window.clientInformation',
466 'DOMWindow.get:frames', 476 'Window.get:frames',
467 'DOMWindow.get:length', 477 'Window.get:length',
468 'DOMWindow.on:beforeUnload', 478 'Window.on:beforeUnload',
469 'DOMWindow.pagePopupController', 479 'Window.pagePopupController',
470 'DOMWindow.prompt', 480 'Window.prompt',
471 'DOMWindow.webkitCancelAnimationFrame', 481 'Window.webkitCancelAnimationFrame',
472 'DOMWindow.webkitCancelRequestAnimationFrame', 482 'Window.webkitCancelRequestAnimationFrame',
473 'DOMWindow.webkitIndexedDB', 483 'Window.webkitIndexedDB',
474 'DOMWindow.webkitRequestAnimationFrame', 484 'Window.webkitRequestAnimationFrame',
475 'Document.alinkColor', 485 'Document.alinkColor',
476 'Document.all', 486 'Document.all',
477 'Document.applets', 487 'Document.applets',
478 'Document.bgColor', 488 'Document.bgColor',
479 'Document.clear', 489 'Document.clear',
480 'Document.createAttribute', 490 'Document.createAttribute',
481 'Document.createAttributeNS', 491 'Document.createAttributeNS',
482 'Document.createComment', 492 'Document.createComment',
483 'Document.createExpression', 493 'Document.createExpression',
484 'Document.createNSResolver', 494 'Document.createNSResolver',
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 'SVGStyledElement.getPresentationAttribute', 714 'SVGStyledElement.getPresentationAttribute',
705 'WheelEvent.wheelDelta', 715 'WheelEvent.wheelDelta',
706 'WorkerContext.webkitIndexedDB', 716 'WorkerContext.webkitIndexedDB',
707 # TODO(jacobr): should these be removed? 717 # TODO(jacobr): should these be removed?
708 'Document.close', 718 'Document.close',
709 'Document.hasFocus', 719 'Document.hasFocus',
710 ]) 720 ])
711 721
712 # Manual dart: library name lookup. 722 # Manual dart: library name lookup.
713 _library_names = monitored.Dict('htmlrenamer._library_names', { 723 _library_names = monitored.Dict('htmlrenamer._library_names', {
714 'DOMWindow': 'html', 724 'Window': 'html',
715 'Database': 'web_sql', 725 'Database': 'web_sql',
716 'Navigator': 'html', 726 'Navigator': 'html',
717 'WorkerContext': 'html', 727 'WorkerContext': 'html',
718 }) 728 })
719 729
720 class HtmlRenamer(object): 730 class HtmlRenamer(object):
721 def __init__(self, database): 731 def __init__(self, database):
722 self._database = database 732 self._database = database
723 733
724 def RenameInterface(self, interface): 734 def RenameInterface(self, interface):
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 864
855 # We're looking for a sequence of letters which start with capital letter 865 # We're looking for a sequence of letters which start with capital letter
856 # then a series of caps and finishes with either the end of the string or 866 # then a series of caps and finishes with either the end of the string or
857 # a capital letter. 867 # a capital letter.
858 # The [0-9] check is for names such as 2D or 3D 868 # The [0-9] check is for names such as 2D or 3D
859 # The following test cases should match as: 869 # The following test cases should match as:
860 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue 870 # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue
861 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change) 871 # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change)
862 # IFrameElement: (I)()(F)rameElement (no change) 872 # IFrameElement: (I)()(F)rameElement (no change)
863 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name) 873 return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698