OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # | 2 # |
3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
6 | 6 |
7 """Generates CSSStyleDeclaration template file from css property definitions | 7 """Generates CSSStyleDeclaration template file from css property definitions |
8 defined in WebKit.""" | 8 defined in WebKit.""" |
9 | 9 |
10 import tempfile, os, re | 10 import tempfile, os, re |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 // The template file was generated by scripts/css_code_generator.py | 95 // The template file was generated by scripts/css_code_generator.py |
96 | 96 |
97 // Source of CSS properties: | 97 // Source of CSS properties: |
98 // %s | 98 // %s |
99 | 99 |
100 part of $LIBRARYNAME; | 100 part of $LIBRARYNAME; |
101 """ % SOURCE_PATH) | 101 """ % SOURCE_PATH) |
102 | 102 |
103 | 103 |
104 class_file.write(""" | 104 class_file.write(""" |
| 105 $if DART2JS |
105 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with | 106 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with |
106 $(CLASSNAME)Base $IMPLEMENTS { | 107 $(CLASSNAME)Base $IMPLEMENTS { |
| 108 $else |
| 109 $if JSINTEROP |
| 110 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS) class $CLASSNAME extends |
| 111 $(CLASSNAME)Base $IMPLEMENTS { |
| 112 $else |
| 113 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with |
| 114 $(CLASSNAME)Base $IMPLEMENTS { |
| 115 $endif |
| 116 $endif |
107 factory $CLASSNAME() => new CssStyleDeclaration.css(''); | 117 factory $CLASSNAME() => new CssStyleDeclaration.css(''); |
108 | 118 |
109 factory $CLASSNAME.css(String css) { | 119 factory $CLASSNAME.css(String css) { |
110 final style = new Element.tag('div').style; | 120 final style = new Element.tag('div').style; |
111 style.cssText = css; | 121 style.cssText = css; |
112 return style; | 122 return style; |
113 } | 123 } |
114 | 124 |
115 String getPropertyValue(String propertyName) { | 125 String getPropertyValue(String propertyName) { |
116 var propValue = _getPropertyValueHelper(propertyName); | 126 var propValue = _getPropertyValueHelper(propertyName); |
(...skipping 26 matching lines...) Expand all Loading... |
143 return JS('bool', '# in #', propertyName, this); | 153 return JS('bool', '# in #', propertyName, this); |
144 $else | 154 $else |
145 // You can't just check the value of a property, because there is no way | 155 // You can't just check the value of a property, because there is no way |
146 // to distinguish between property not being present in the browser and | 156 // to distinguish between property not being present in the browser and |
147 // not having a value at all. (Ultimately we'll want the native method to | 157 // not having a value at all. (Ultimately we'll want the native method to |
148 // return null if the property doesn't exist and empty string if it's | 158 // return null if the property doesn't exist and empty string if it's |
149 // defined but just doesn't have a value. | 159 // defined but just doesn't have a value. |
150 return _hasProperty(propertyName); | 160 return _hasProperty(propertyName); |
151 $endif | 161 $endif |
152 } | 162 } |
| 163 |
153 $if DARTIUM | 164 $if DARTIUM |
154 | |
155 bool _hasProperty(String propertyName) => | 165 bool _hasProperty(String propertyName) => |
| 166 $if JSINTEROP |
| 167 _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(un
wrap_jso(this), propertyName) != null; |
| 168 $else |
156 _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, proper
tyName); | 169 _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, proper
tyName); |
| 170 $endif |
157 $endif | 171 $endif |
158 | 172 |
159 @DomName('CSSStyleDeclaration.setProperty') | 173 @DomName('CSSStyleDeclaration.setProperty') |
160 void setProperty(String propertyName, String value, [String priority]) { | 174 void setProperty(String propertyName, String value, [String priority]) { |
161 return _setPropertyHelper(_browserPropertyName(propertyName), | 175 return _setPropertyHelper(_browserPropertyName(propertyName), |
162 value, priority); | 176 value, priority); |
163 } | 177 } |
164 | 178 |
165 String _browserPropertyName(String propertyName) { | 179 String _browserPropertyName(String propertyName) { |
166 String name = _readCache(propertyName); | 180 String name = _readCache(propertyName); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 @JSName('%s') | 259 @JSName('%s') |
246 String _%s; | 260 String _%s; |
247 """ % (property, camelName, camelName, | 261 """ % (property, camelName, camelName, |
248 property, camelName, camelName, | 262 property, camelName, camelName, |
249 camelName, camelName)) | 263 camelName, camelName)) |
250 | 264 |
251 class_file.write(""" | 265 class_file.write(""" |
252 $endif | 266 $endif |
253 } | 267 } |
254 | 268 |
| 269 $if DART2JS |
255 class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase { | 270 class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase { |
| 271 $else |
| 272 $if JSINTEROP |
| 273 class _CssStyleDeclarationSet extends CssStyleDeclarationBase { |
| 274 $else |
| 275 class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase { |
| 276 $endif |
| 277 $endif |
256 final Iterable<Element> _elementIterable; | 278 final Iterable<Element> _elementIterable; |
257 Iterable<CssStyleDeclaration> _elementCssStyleDeclarationSetIterable; | 279 Iterable<CssStyleDeclaration> _elementCssStyleDeclarationSetIterable; |
258 | 280 |
259 _CssStyleDeclarationSet(this._elementIterable) { | 281 _CssStyleDeclarationSet(this._elementIterable) { |
260 _elementCssStyleDeclarationSetIterable = new List.from( | 282 _elementCssStyleDeclarationSetIterable = new List.from( |
261 _elementIterable).map((e) => e.style); | 283 _elementIterable).map((e) => e.style); |
262 } | 284 } |
263 | 285 |
264 String getPropertyValue(String propertyName) => | 286 String getPropertyValue(String propertyName) => |
265 _elementCssStyleDeclarationSetIterable.first.getPropertyValue( | 287 _elementCssStyleDeclarationSetIterable.first.getPropertyValue( |
(...skipping 29 matching lines...) Expand all Loading... |
295 class_file.write(""" | 317 class_file.write(""" |
296 $endif | 318 $endif |
297 | 319 |
298 // Important note: CssStyleDeclarationSet does NOT implement every method | 320 // Important note: CssStyleDeclarationSet does NOT implement every method |
299 // available in CssStyleDeclaration. Some of the methods don't make so much | 321 // available in CssStyleDeclaration. Some of the methods don't make so much |
300 // sense in terms of having a resonable value to return when you're | 322 // sense in terms of having a resonable value to return when you're |
301 // considering a list of Elements. You will need to manually add any of the | 323 // considering a list of Elements. You will need to manually add any of the |
302 // items in the MEMBERS set if you want that functionality. | 324 // items in the MEMBERS set if you want that functionality. |
303 } | 325 } |
304 | 326 |
| 327 $if DART2JS |
305 abstract class CssStyleDeclarationBase { | 328 abstract class CssStyleDeclarationBase { |
306 String getPropertyValue(String propertyName); | 329 String getPropertyValue(String propertyName); |
307 void setProperty(String propertyName, String value, [String priority]); | 330 void setProperty(String propertyName, String value, [String priority]); |
| 331 $else |
| 332 $if JSINTEROP |
| 333 class CssStyleDeclarationBase { |
| 334 String getPropertyValue(String propertyName) => |
| 335 throw new StateError('getProperty not overridden in dart:html'); |
| 336 void setProperty(String propertyName, String value, [String priority]) => |
| 337 throw new StateError('setProperty not overridden in dart:html'); |
| 338 $else |
| 339 abstract class CssStyleDeclarationBase { |
| 340 String getPropertyValue(String propertyName); |
| 341 void setProperty(String propertyName, String value, [String priority]); |
| 342 $endif |
| 343 $endif |
308 """) | 344 """) |
309 | 345 |
310 class_lines = []; | 346 class_lines = []; |
311 | 347 |
312 seen = set() | 348 seen = set() |
313 for prop in sorted(data, key=camelCaseName): | 349 for prop in sorted(data, key=camelCaseName): |
314 camel_case_name = camelCaseName(prop) | 350 camel_case_name = camelCaseName(prop) |
315 upper_camel_case_name = camel_case_name[0].upper() + camel_case_name[1:]; | 351 upper_camel_case_name = camel_case_name[0].upper() + camel_case_name[1:]; |
316 css_name = prop.replace('-webkit-', '') | 352 css_name = prop.replace('-webkit-', '') |
317 base_css_name = prop.replace('-webkit-', '') | 353 base_css_name = prop.replace('-webkit-', '') |
(...skipping 18 matching lines...) Expand all Loading... |
336 class_lines.append(annotated[base_css_name]) | 372 class_lines.append(annotated[base_css_name]) |
337 class_lines.append(""" | 373 class_lines.append(""" |
338 void set %s(String value) { | 374 void set %s(String value) { |
339 setProperty('%s', value, ''); | 375 setProperty('%s', value, ''); |
340 } | 376 } |
341 """ % (camel_case_name, css_name)) | 377 """ % (camel_case_name, css_name)) |
342 | 378 |
343 class_file.write(''.join(class_lines)); | 379 class_file.write(''.join(class_lines)); |
344 class_file.write('}\n') | 380 class_file.write('}\n') |
345 class_file.close() | 381 class_file.close() |
OLD | NEW |