@@ -78,53 +78,11 @@ class AMP_Script_Sanitizer extends AMP_Base_Sanitizer {
78
78
protected $ kept_script_count = 0 ;
79
79
80
80
/**
81
- * Style sanitizer .
81
+ * Sanitizers .
82
82
*
83
- * @var AMP_Style_Sanitizer
83
+ * @var AMP_Base_Sanitizer[]
84
84
*/
85
- protected $ style_sanitizer ;
86
-
87
- /**
88
- * Image sanitizer.
89
- *
90
- * @var AMP_Img_Sanitizer
91
- */
92
- protected $ img_sanitizer ;
93
-
94
- /**
95
- * Video sanitizer.
96
- *
97
- * @var AMP_Video_Sanitizer
98
- */
99
- protected $ video_sanitizer ;
100
-
101
- /**
102
- * Audio sanitizer.
103
- *
104
- * @var AMP_Audio_Sanitizer
105
- */
106
- protected $ audio_sanitizer ;
107
-
108
- /**
109
- * Iframe sanitizer.
110
- *
111
- * @var AMP_Iframe_Sanitizer
112
- */
113
- protected $ iframe_sanitizer ;
114
-
115
- /**
116
- * Form sanitizer.
117
- *
118
- * @var AMP_Form_Sanitizer
119
- */
120
- protected $ form_sanitizer ;
121
-
122
- /**
123
- * Tag-and-attribute sanitizer.
124
- *
125
- * @var AMP_Tag_And_Attribute_Sanitizer
126
- */
127
- protected $ tag_and_attribute_sanitizer ;
85
+ protected $ sanitizers = [];
128
86
129
87
/**
130
88
* Init.
@@ -134,60 +92,8 @@ class AMP_Script_Sanitizer extends AMP_Base_Sanitizer {
134
92
public function init ( $ sanitizers ) {
135
93
parent ::init ( $ sanitizers );
136
94
137
- if (
138
- array_key_exists ( AMP_Style_Sanitizer::class, $ sanitizers )
139
- &&
140
- $ sanitizers [ AMP_Style_Sanitizer::class ] instanceof AMP_Style_Sanitizer
141
- ) {
142
- $ this ->style_sanitizer = $ sanitizers [ AMP_Style_Sanitizer::class ];
143
- }
144
-
145
- if (
146
- array_key_exists ( AMP_Img_Sanitizer::class, $ sanitizers )
147
- &&
148
- $ sanitizers [ AMP_Img_Sanitizer::class ] instanceof AMP_Img_Sanitizer
149
- ) {
150
- $ this ->img_sanitizer = $ sanitizers [ AMP_Img_Sanitizer::class ];
151
- }
152
-
153
- if (
154
- array_key_exists ( AMP_Video_Sanitizer::class, $ sanitizers )
155
- &&
156
- $ sanitizers [ AMP_Video_Sanitizer::class ] instanceof AMP_Video_Sanitizer
157
- ) {
158
- $ this ->video_sanitizer = $ sanitizers [ AMP_Video_Sanitizer::class ];
159
- }
160
-
161
- if (
162
- array_key_exists ( AMP_Audio_Sanitizer::class, $ sanitizers )
163
- &&
164
- $ sanitizers [ AMP_Audio_Sanitizer::class ] instanceof AMP_Audio_Sanitizer
165
- ) {
166
- $ this ->audio_sanitizer = $ sanitizers [ AMP_Audio_Sanitizer::class ];
167
- }
168
-
169
- if (
170
- array_key_exists ( AMP_Iframe_Sanitizer::class, $ sanitizers )
171
- &&
172
- $ sanitizers [ AMP_Iframe_Sanitizer::class ] instanceof AMP_Iframe_Sanitizer
173
- ) {
174
- $ this ->iframe_sanitizer = $ sanitizers [ AMP_Iframe_Sanitizer::class ];
175
- }
176
-
177
- if (
178
- array_key_exists ( AMP_Form_Sanitizer::class, $ sanitizers )
179
- &&
180
- $ sanitizers [ AMP_Form_Sanitizer::class ] instanceof AMP_Form_Sanitizer
181
- ) {
182
- $ this ->form_sanitizer = $ sanitizers [ AMP_Form_Sanitizer::class ];
183
- }
184
-
185
- if (
186
- array_key_exists ( AMP_Tag_And_Attribute_Sanitizer::class, $ sanitizers )
187
- &&
188
- $ sanitizers [ AMP_Tag_And_Attribute_Sanitizer::class ] instanceof AMP_Tag_And_Attribute_Sanitizer
189
- ) {
190
- $ this ->tag_and_attribute_sanitizer = $ sanitizers [ AMP_Tag_And_Attribute_Sanitizer::class ];
95
+ foreach ( $ sanitizers as $ sanitizer ) {
96
+ $ this ->sanitizers [ get_class ( $ sanitizer ) ] = $ sanitizer ;
191
97
}
192
98
}
193
99
@@ -213,26 +119,19 @@ public function sanitize() {
213
119
// @todo There should be an attribute on script tags that opt-in to keeping tree shaking and/or to indicate what class names need to be included.
214
120
// @todo Depending on the size of the underlying stylesheets, this may need to retain the use of external styles to prevent inlining excessive CSS. This may involve writing minified CSS to disk, or skipping style processing altogether if no selector conversions are needed.
215
121
if ( $ this ->kept_script_count > 0 ) {
216
- if ( $ this ->style_sanitizer ) {
217
- $ this ->style_sanitizer ->update_args ( [ 'skip_tree_shaking ' => true ] );
218
- }
219
- if ( $ this ->img_sanitizer ) {
220
- $ this ->img_sanitizer ->update_args ( [ 'native_img_used ' => true ] );
221
- }
222
- if ( $ this ->video_sanitizer ) {
223
- $ this ->video_sanitizer ->update_args ( [ 'native_video_used ' => true ] );
224
- }
225
- if ( $ this ->audio_sanitizer ) {
226
- $ this ->audio_sanitizer ->update_args ( [ 'native_audio_used ' => true ] );
227
- }
228
- if ( $ this ->iframe_sanitizer ) {
229
- $ this ->iframe_sanitizer ->update_args ( [ 'native_iframe_used ' => true ] );
230
- }
231
- if ( $ this ->form_sanitizer ) {
232
- $ this ->form_sanitizer ->update_args ( [ 'native_post_forms_allowed ' => true ] );
233
- }
234
- if ( $ this ->tag_and_attribute_sanitizer ) {
235
- $ this ->tag_and_attribute_sanitizer ->update_args ( [ 'prefer_bento ' => true ] );
122
+ $ sanitizer_arg_updates = [
123
+ AMP_Style_Sanitizer::class => [ 'skip_tree_shaking ' => true ],
124
+ AMP_Img_Sanitizer::class => [ 'native_img_used ' => true ],
125
+ AMP_Video_Sanitizer::class => [ 'native_video_used ' => true ],
126
+ AMP_Audio_Sanitizer::class => [ 'native_audio_used ' => true ],
127
+ AMP_Iframe_Sanitizer::class => [ 'native_iframe_used ' => true ],
128
+ AMP_Form_Sanitizer::class => [ 'native_post_forms_allowed ' => true ],
129
+ AMP_Tag_And_Attribute_Sanitizer::class => [ 'prefer_bento ' => true ],
130
+ ];
131
+ foreach ( $ sanitizer_arg_updates as $ sanitizer_class => $ sanitizer_args ) {
132
+ if ( array_key_exists ( $ sanitizer_class , $ this ->sanitizers ) ) {
133
+ $ this ->sanitizers [ $ sanitizer_class ]->update_args ( $ sanitizer_args );
134
+ }
236
135
}
237
136
}
238
137
}
0 commit comments