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

Side by Side Diff: lib/html/scripts/htmlrenamer.py

Issue 11175014: Use CheckSecurityForNode to filter out insecure calls (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 2 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
« no previous file with comments | « lib/html/dartium/html_dartium.dart ('k') | lib/html/scripts/systemhtml.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 5
6 html_interface_renames = { 6 html_interface_renames = {
7 'DOMCoreException': 'DOMException', 7 'DOMCoreException': 'DOMException',
8 'DOMFormData': 'FormData', 8 'DOMFormData': 'FormData',
9 'DOMWindow': 'LocalWindow', 9 'DOMWindow': 'LocalWindow',
10 'History': 'LocalHistory', 10 'History': 'LocalHistory',
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 "Node.get:prefix", 258 "Node.get:prefix",
259 "Node.set:prefix", 259 "Node.set:prefix",
260 "Node.get:DOCUMENT_POSITION_PRECEDING", 260 "Node.get:DOCUMENT_POSITION_PRECEDING",
261 "Node.get:nodeValue", 261 "Node.get:nodeValue",
262 "Node.set:nodeValue", 262 "Node.set:nodeValue",
263 "Node.get:CDATA_SECTION_NODE", 263 "Node.get:CDATA_SECTION_NODE",
264 "Node.get:nodeName", 264 "Node.get:nodeName",
265 "Node.lookupPrefix", 265 "Node.lookupPrefix",
266 "Node.get:PROCESSING_INSTRUCTION_NODE", 266 "Node.get:PROCESSING_INSTRUCTION_NODE",
267 'ShadowRoot.getElementsByTagNameNS', 267 'ShadowRoot.getElementsByTagNameNS',
268 "IFrameElement.get:contentDocument",
269 "LocalWindow.get:frameElement",
270 "LocalWindow.get:frames", 268 "LocalWindow.get:frames",
blois 2012/10/19 21:06:35 There are a couple of filters for getSVGDocument i
vsm 2012/10/19 23:14:16 Thanks, I think I got everything now. On 2012/10/
271 "LocalWindow.get:length", 269 "LocalWindow.get:length",
272 "LocalWindow.webkitCancelRequestAnimationFrame", 270 "LocalWindow.webkitCancelRequestAnimationFrame",
273 "WheelEvent.wheelDelta", 271 "WheelEvent.wheelDelta",
274 ]) 272 ])
275 273
276 class HtmlRenamer(object): 274 class HtmlRenamer(object):
277 def __init__(self, database): 275 def __init__(self, database):
278 self._database = database 276 self._database = database
279 277
280 def RenameInterface(self, interface): 278 def RenameInterface(self, interface):
281 if interface.id.startswith('HTML'): 279 if interface.id.startswith('HTML'):
282 if any(interface.id in ['Element', 'Document'] 280 if any(interface.id in ['Element', 'Document']
283 for interface in self._database.Hierarchy(interface)): 281 for interface in self._database.Hierarchy(interface)):
284 return interface.id[len('HTML'):] 282 return interface.id[len('HTML'):]
285 elif interface.id in html_interface_renames: 283 elif interface.id in html_interface_renames:
286 return html_interface_renames[interface.id] 284 return html_interface_renames[interface.id]
287 return interface.id 285 return interface.id
288 286
289 def RenameMember(self, interface_name, member, member_prefix=''): 287 def RenameMember(self, interface_name, member_node, member, member_prefix=''):
290 """ 288 """
291 Returns the name of the member in the HTML library or None if the member is 289 Returns the name of the member in the HTML library or None if the member is
292 suppressed in the HTML library 290 suppressed in the HTML library
293 """ 291 """
294 interface = self._database.GetInterface(interface_name) 292 interface = self._database.GetInterface(interface_name)
295 293
296 if self._FindMatch(interface, member, member_prefix, _removed_html_members): 294 if self._FindMatch(interface, member, member_prefix, _removed_html_members):
297 return None 295 return None
298 296
297 if 'CheckSecurityForNode' in member_node.ext_attrs:
298 return None
299
299 name = self._FindMatch(interface, member, member_prefix, 300 name = self._FindMatch(interface, member, member_prefix,
300 _renamed_html_members) 301 _renamed_html_members)
301 target_name = _renamed_html_members[name] if name else member 302 target_name = _renamed_html_members[name] if name else member
302 if self._FindMatch(interface, member, member_prefix, _private_html_members): 303 if self._FindMatch(interface, member, member_prefix, _private_html_members):
303 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName 304 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName
304 target_name = '$dom_' + target_name 305 target_name = '$dom_' + target_name
305 return target_name 306 return target_name
306 307
307 def _FindMatch(self, interface, member, member_prefix, candidates): 308 def _FindMatch(self, interface, member, member_prefix, candidates):
308 for interface in self._database.Hierarchy(interface): 309 for interface in self._database.Hierarchy(interface):
309 html_interface_name = self.RenameInterface(interface) 310 html_interface_name = self.RenameInterface(interface)
310 member_name = html_interface_name + '.' + member 311 member_name = html_interface_name + '.' + member
311 if member_name in candidates: 312 if member_name in candidates:
312 return member_name 313 return member_name
313 member_name = html_interface_name + '.' + member_prefix + member 314 member_name = html_interface_name + '.' + member_prefix + member
314 if member_name in candidates: 315 if member_name in candidates:
315 return member_name 316 return member_name
OLDNEW
« no previous file with comments | « lib/html/dartium/html_dartium.dart ('k') | lib/html/scripts/systemhtml.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698