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

Side by Side Diff: client/dom/scripts/dartgenerator.py

Issue 9138007: Frog DOM changes to support OLS on Storage objects (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Some more cleanup Created 8 years, 11 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 | « client/dom/generated/src/frog/Storage.dart ('k') | no next file » | 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) 2011, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2011, 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 """This module generates Dart APIs from the IDL database.""" 6 """This module generates Dart APIs from the IDL database."""
7 7
8 import emitter 8 import emitter
9 import idlnode 9 import idlnode
10 import logging 10 import logging
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 # browsers, but are otherwise identical. The alternates are tried in order and 129 # browsers, but are otherwise identical. The alternates are tried in order and
130 # the first one defined is used. 130 # the first one defined is used.
131 # 131 #
132 # This can be probably be removed when Chrome renames initWebKitWheelEvent to 132 # This can be probably be removed when Chrome renames initWebKitWheelEvent to
133 # initWheelEvent. 133 # initWheelEvent.
134 # 134 #
135 _alternate_methods = { 135 _alternate_methods = {
136 ('WheelEvent', 'initWheelEvent'): ['initWebKitWheelEvent', 'initWheelEvent'] 136 ('WheelEvent', 'initWheelEvent'): ['initWebKitWheelEvent', 'initWheelEvent']
137 } 137 }
138 138
139 #
140 # Unexpandable types require special support for
141 # dartObjectLocalStorage. Normally, in the overlay dom, it is
142 # implemented as an expando field. For these types, we cannot use an
143 # expando. Instead, we define a specialized getter and setter.
144 #
145 _frog_unexpandable_types = {
146 # (type name, field name) -> Replacement text
147 ('Storage', 'dartObjectLocalStorage'): '''
148 var get dartObjectLocalStorage() native """
149
150 if (this === window.localStorage)
151 return window._dartLocalStorageLocalStorage;
152 else if (this === window.sessionStorage)
153 return window._dartSessionStorageLocalStorage;
154 else
155 throw new UnsupportedOperationException('Cannot dartObjectLocalStorage for unknown Storage object.');
156
157 """ {
158 throw new UnsupportedOperationException('');
159 }
160
161 void set dartObjectLocalStorage(var value) native """
162
163 if (this === window.localStorage)
164 window._dartLocalStorageLocalStorage = value;
165 else if (this === window.sessionStorage)
166 window._dartSessionStorageLocalStorage = value;
167 else
168 throw new UnsupportedOperationException('Cannot dartObjectLocalStorage for unknown Storage object.');
169
170 """ {
171 throw new UnsupportedOperationException('');
172 }
173 ''',
174 }
175
139 def _MatchSourceFilter(filter, thing): 176 def _MatchSourceFilter(filter, thing):
140 if not filter: 177 if not filter:
141 return True 178 return True
142 else: 179 else:
143 return any(token in thing.annotations for token in filter) 180 return any(token in thing.annotations for token in filter)
144 181
145 def _IsDartListType(type): 182 def _IsDartListType(type):
146 return type == 'List' or type.startswith('List<') 183 return type == 'List' or type.startswith('List<')
147 184
148 def _IsDartCollectionType(type): 185 def _IsDartCollectionType(type):
(...skipping 1674 matching lines...) Expand 10 before | Expand all | Expand 10 after
1823 '\n' 1860 '\n'
1824 'class $CLASS$BASE$IMPLEMENTS native "$NATIVE" {\n' 1861 'class $CLASS$BASE$IMPLEMENTS native "$NATIVE" {\n'
1825 '$!MEMBERS' 1862 '$!MEMBERS'
1826 '$!ADDITIONS' 1863 '$!ADDITIONS'
1827 '}\n', 1864 '}\n',
1828 CLASS=self._class_name, BASE=extends, 1865 CLASS=self._class_name, BASE=extends,
1829 INTERFACE=interface_name, 1866 INTERFACE=interface_name,
1830 IMPLEMENTS=implements, 1867 IMPLEMENTS=implements,
1831 NATIVE=native_spec) 1868 NATIVE=native_spec)
1832 1869
1833 if interface_name in _constructable_types.keys(): 1870 if interface_name in _constructable_types:
1834 self._members_emitter.Emit( 1871 self._members_emitter.Emit(
1835 ' $NAME($PARAMS) native;\n\n', 1872 ' $NAME($PARAMS) native;\n\n',
1836 NAME=interface_name, 1873 NAME=interface_name,
1837 PARAMS=_constructable_types[interface_name]) 1874 PARAMS=_constructable_types[interface_name])
1838 1875
1839 element_type = MaybeTypedArrayElementType(interface) 1876 element_type = MaybeTypedArrayElementType(interface)
1840 if element_type: 1877 if element_type:
1841 self.AddTypedArrayConstructors(element_type) 1878 self.AddTypedArrayConstructors(element_type)
1842 1879
1843 if not base: 1880 if not base:
1844 # Emit shared base functionality here as we have no common base type. 1881 # Emit shared base functionality here as we have no common base type.
1882 if (interface_name, 'dartObjectLocalStorage') in _frog_unexpandable_types:
1883 ols_code = _frog_unexpandable_types[(interface_name,
1884 'dartObjectLocalStorage')]
1885 self._base_emitter.Emit(ols_code)
1886 else:
1887 self._base_emitter.Emit(
1888 '\n'
1889 ' var dartObjectLocalStorage;\n')
1845 self._base_emitter.Emit( 1890 self._base_emitter.Emit(
1846 '\n' 1891 '\n'
1847 ' var dartObjectLocalStorage;\n'
1848 '\n'
1849 ' String get typeName() native;\n') 1892 ' String get typeName() native;\n')
1850 1893
1851 def _ImplClassName(self, type_name): 1894 def _ImplClassName(self, type_name):
1852 return type_name 1895 return type_name
1853 1896
1854 def FinishInterface(self): 1897 def FinishInterface(self):
1855 """.""" 1898 """."""
1856 pass 1899 pass
1857 1900
1858 def AddConstant(self, constant): 1901 def AddConstant(self, constant):
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 Arguments: 1995 Arguments:
1953 info: An OperationInfo object. 1996 info: An OperationInfo object.
1954 """ 1997 """
1955 # TODO(vsm): Handle overloads. 1998 # TODO(vsm): Handle overloads.
1956 self._members_emitter.Emit( 1999 self._members_emitter.Emit(
1957 '\n' 2000 '\n'
1958 ' $TYPE $NAME($ARGS) native;\n', 2001 ' $TYPE $NAME($ARGS) native;\n',
1959 TYPE=info.type_name, 2002 TYPE=info.type_name,
1960 NAME=info.name, 2003 NAME=info.name,
1961 ARGS=info.arg_implementation_declaration) 2004 ARGS=info.arg_implementation_declaration)
OLDNEW
« no previous file with comments | « client/dom/generated/src/frog/Storage.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698