Chromium Code Reviews| Index: pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart |
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart |
| index 6a8381564379138dd1b8e1aed7cc4575122b3c6f..3feb1bb764f7ad9c4301db332af203a085fb1d5a 100644 |
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart |
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart |
| @@ -40,9 +40,10 @@ class ClassEmitter extends CodeEmitterHelper { |
| ClassBuilder builder = new ClassBuilder(classElement, namer); |
| builder.superName = superName; |
| - emitClassConstructor(classElement, builder, onlyForRti: onlyForRti); |
| + emitPrecompiledConstructor(classElement, onlyForRti: onlyForRti); |
| emitFields(classElement, builder, onlyForRti: onlyForRti); |
| - emitClassGettersSetters(classElement, builder, onlyForRti: onlyForRti); |
| + emitCheckedClassSetters(classElement, builder, onlyForRti: onlyForRti); |
| + emitClassGettersSettersForCSP(classElement, builder, onlyForRti: onlyForRti); |
|
floitsch
2015/01/19 13:40:31
Long line.
zarah
2015/01/20 09:10:53
Done.
|
| emitInstanceMembers(classElement, builder, onlyForRti: onlyForRti); |
| emitter.typeTestEmitter.emitIsTests(classElement, builder); |
| if (additionalProperties != null) { |
| @@ -62,22 +63,26 @@ class ClassEmitter extends CodeEmitterHelper { |
| emitClassBuilderWithReflectionData( |
| className, classElement, builder, properties); |
| } |
| - |
| - void emitClassConstructor(ClassElement classElement, |
| - ClassBuilder builder, |
| + /** |
| + * Emits the precompiled constructor when in CSP mode. |
| + */ |
| + void emitPrecompiledConstructor(ClassElement classElement, |
| {bool onlyForRti: false}) { |
| List<String> fields = <String>[]; |
| - if (!onlyForRti && !classElement.isNative) { |
| - visitFields(classElement, false, |
| - (Element member, |
| - String name, |
| - String accessorName, |
| - bool needsGetter, |
| - bool needsSetter, |
| - bool needsCheckedSetter) { |
| - fields.add(name); |
| - }); |
| - } |
| + |
| + if (!compiler.useContentSecurityPolicy |
|
floitsch
2015/01/19 13:40:32
Are you sure this is correct?
I think we still ne
zarah
2015/01/20 09:10:53
Done.
|
| + || onlyForRti |
| + || classElement.isNative) return; |
| + |
| + visitFields(classElement, false, |
| + (Element member, |
| + String name, |
| + String accessorName, |
| + bool needsGetter, |
| + bool needsSetter, |
| + bool needsCheckedSetter) { |
| + fields.add(name); |
| + }); |
| jsAst.Expression constructorAst = |
| _stubGenerator.generateClassConstructor(classElement, fields); |
| @@ -218,7 +223,8 @@ class ClassEmitter extends CodeEmitterHelper { |
| return fieldsAdded; |
| } |
| - void emitClassGettersSetters(ClassElement classElement, |
| + /// Emits checked setters for fields. |
| + void emitCheckedClassSetters(ClassElement classElement, |
| ClassBuilder builder, |
| {bool onlyForRti: false}) { |
| if (onlyForRti) return; |
| @@ -235,11 +241,30 @@ class ClassEmitter extends CodeEmitterHelper { |
| assert(!needsSetter); |
| generateCheckedSetter(member, name, accessorName, builder); |
| } |
| + }); |
| + }); |
| + } |
| + |
| + /// Emits getters/setters for fields if compiling in CSP mode. |
| + void emitClassGettersSettersForCSP(ClassElement classElement, |
|
floitsch
2015/01/19 13:40:31
Should be consistent.
Either rename emitPrecompile
zarah
2015/01/20 09:10:53
Done.
|
| + ClassBuilder builder, |
| + {bool onlyForRti: false}) { |
| + |
| + if (!compiler.useContentSecurityPolicy || onlyForRti) return; |
| + |
| + visitFields(classElement, false, |
| + (VariableElement member, |
| + String name, |
| + String accessorName, |
| + bool needsGetter, |
| + bool needsSetter, |
| + bool needsCheckedSetter) { |
| + compiler.withCurrentElement(member, () { |
| if (needsGetter) { |
| - generateGetter(member, name, accessorName, builder); |
| + generateGetterForCSP(member, name, accessorName, builder); |
| } |
| if (needsSetter) { |
| - generateSetter(member, name, accessorName, builder); |
| + generateSetterForCSP(member, name, accessorName, builder); |
| } |
| }); |
| }); |
| @@ -506,7 +531,7 @@ class ClassEmitter extends CodeEmitterHelper { |
| member, setterName, builder, isGetter: false); |
| } |
| - void generateGetter(Element member, String fieldName, String accessorName, |
| + void generateGetterForCSP(Element member, String fieldName, String accessorName, |
|
floitsch
2015/01/19 13:40:31
I would rename to "emitGetterForCSP".
I use "gene
floitsch
2015/01/19 13:40:31
long line.
zarah
2015/01/20 09:10:53
Done.
zarah
2015/01/20 09:10:53
Done.
|
| ClassBuilder builder) { |
| jsAst.Expression function = |
| _stubGenerator.generateGetter(member, fieldName); |
| @@ -525,7 +550,7 @@ class ClassEmitter extends CodeEmitterHelper { |
| } |
| } |
| - void generateSetter(Element member, String fieldName, String accessorName, |
| + void generateSetterForCSP(Element member, String fieldName, String accessorName, |
|
floitsch
2015/01/19 13:40:32
long line.
zarah
2015/01/20 09:10:53
Done.
|
| ClassBuilder builder) { |
| jsAst.Expression function = |
| _stubGenerator.generateSetter(member, fieldName); |