@@ -88,8 +88,28 @@ class StripSubresourceHintsFilterTest :
88
88
public StripSubresourceHintsFilterTestBase {
89
89
};
90
90
91
- class StripSubresourceHintsFilterTestPartialPreserve :
92
- public StripSubresourceHintsFilterTestBase {
91
+ class StripSubresourceHintsFilterTestPreserveStyle :
92
+ public StripSubresourceHintsFilterTestBase {
93
+ protected:
94
+ virtual void CustomSetup () {
95
+ options ()->set_css_preserve_urls (true );
96
+ options ()->set_js_preserve_urls (false );
97
+ options ()->set_image_preserve_urls (false );
98
+ }
99
+ };
100
+
101
+ class StripSubresourceHintsFilterTestPreserveScript :
102
+ public StripSubresourceHintsFilterTestBase {
103
+ protected:
104
+ virtual void CustomSetup () {
105
+ options ()->set_css_preserve_urls (false );
106
+ options ()->set_js_preserve_urls (true );
107
+ options ()->set_image_preserve_urls (false );
108
+ }
109
+ };
110
+
111
+ class StripSubresourceHintsFilterTestPreserveImage :
112
+ public StripSubresourceHintsFilterTestBase {
93
113
protected:
94
114
virtual void CustomSetup () {
95
115
options ()->set_css_preserve_urls (false );
@@ -148,7 +168,7 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceNoLink) {
148
168
149
169
TEST_F (StripSubresourceHintsFilterTest, SingleResourceValidLink) {
150
170
const char *source =
151
- " <head><link rel=\" subresource\" src =\" /test.gif\" /></head>"
171
+ " <head><link rel=\" subresource\" href =\" /test.gif\" /></head>"
152
172
" <body><img src=\" 1.jpg\" /></body>" ;
153
173
const char *rewritten =
154
174
" <head></head>"
@@ -158,7 +178,7 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceValidLink) {
158
178
159
179
TEST_F (StripSubresourceHintsFilterTest, SingleResourceValidPreloadLink) {
160
180
const char *source =
161
- " <head><link rel=\" preload\" src =\" /test.gif\" as=\" image\" /></head>"
181
+ " <head><link rel=\" preload\" href =\" /test.gif\" as=\" image\" /></head>"
162
182
" <body><img src=\" 1.jpg\" /></body>" ;
163
183
const char *rewritten =
164
184
" <head></head>"
@@ -169,7 +189,7 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceValidPreloadLink) {
169
189
TEST_F (StripSubresourceHintsFilterTest, SingleResourceExternalLink) {
170
190
const char *source =
171
191
" <head>"
172
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
192
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
173
193
" </head>"
174
194
" <body><img src=\" 1.jpg\" /></body>" ;
175
195
ValidateStripSubresourceHint (source, source);
@@ -178,21 +198,21 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceExternalLink) {
178
198
TEST_F (StripSubresourceHintsFilterTest, MultiResourceMixedLinks) {
179
199
const char *source =
180
200
" <head>"
181
- " <link rel=\" subresource\" src =\" /test.gif\" />"
182
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
201
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
202
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
183
203
" </head>"
184
204
" <body><img src=\" 1.jpg\" /></body>" ;
185
205
const char *rewritten =
186
206
" <head>"
187
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
207
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
188
208
" </head>"
189
209
" <body><img src=\" 1.jpg\" /></body>" ;
190
210
ValidateStripSubresourceHint (source, rewritten);
191
211
}
192
212
193
213
TEST_F (StripSubresourceHintsFilterTest, SingleResourceRewriteDomain) {
194
214
const char *source =
195
- " <head><link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
215
+ " <head><link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
196
216
" </head>"
197
217
" <body><img src=\" 1.jpg\" /></body>" ;
198
218
const char *rewritten =
@@ -203,30 +223,32 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceRewriteDomain) {
203
223
204
224
TEST_F (StripSubresourceHintsFilterTest, SingleResourceDisallow) {
205
225
const char *source =
206
- " <head><link rel=\" subresource\" src =\" /dontdropme/test.gif\" />"
226
+ " <head><link rel=\" subresource\" href =\" /dontdropme/test.gif\" />"
207
227
" </head>"
208
228
" <body><img src=\" 1.jpg\" /></body>" ;
209
229
const char *rewritten =
210
- " <head><link rel=\" subresource\" src =\" /dontdropme/test.gif\" />"
230
+ " <head><link rel=\" subresource\" href =\" /dontdropme/test.gif\" />"
211
231
" </head>"
212
232
" <body><img src=\" 1.jpg\" /></body>" ;
213
233
ValidateStripSubresourceHint (source, rewritten);
214
234
}
215
235
216
- TEST_F (StripSubresourceHintsFilterTestPartialPreserve,
217
- MultiResourcePreserveAll) {
236
+ // Even if you turn on preserve images, we still strip all rel=subresource hints
237
+ // because we don't know which ones are images.
238
+ TEST_F (StripSubresourceHintsFilterTestPreserveImage,
239
+ MultiSubresourcePreserveImages) {
218
240
const char *source =
219
241
" <head>"
220
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
221
- " <link rel=\" subresource\" src =\" /test.gif\" />"
222
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
223
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
242
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
243
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
244
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
245
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
224
246
" </head>"
225
247
" <body><img src=\" 1.jpg\" /></body>" ;
226
248
const char *rewritten =
227
249
" <head>"
228
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
229
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
250
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
251
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
230
252
" </head>"
231
253
" <body><img src=\" 1.jpg\" /></body>" ;
232
254
ValidateStripSubresourceHint (source, rewritten);
@@ -238,23 +260,59 @@ TEST_F(StripSubresourceHintsFilterTestFullPreserve,
238
260
MultiResourcePreserveAll) {
239
261
const char *source =
240
262
" <head>"
241
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
242
- " <link rel=\" subresource\" src =\" /test.gif\" />"
243
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
244
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
263
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
264
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
265
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
266
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
245
267
" </head>"
246
268
" <body><img src=\" 1.jpg\" /></body>" ;
247
269
const char *rewritten =
248
270
" <head>"
249
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
250
- " <link rel=\" subresource\" src =\" /test.gif\" />"
251
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
252
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
271
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
272
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
273
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
274
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
253
275
" </head>"
254
276
" <body><img src=\" 1.jpg\" /></body>" ;
255
277
ValidateStripSubresourceHint (source, rewritten);
256
278
}
257
279
280
+ // With rel=preload, if you have set preserve for a type we don't strip it.
281
+ TEST_F (StripSubresourceHintsFilterTestPreserveImage, ImagesPreserved) {
282
+ const char * source =
283
+ " <link rel=preload as=image href=a.jpg>"
284
+ " <link rel=preload as=script href=a.js>"
285
+ " <link rel=preload as=style href=a.css>" ;
286
+ const char * rewritten =
287
+ " <link rel=preload as=image href=a.jpg>" ;
288
+ ValidateStripSubresourceHint (source, rewritten);
289
+ }
290
+ TEST_F (StripSubresourceHintsFilterTestPreserveScript, ScriptsPreserved) {
291
+ const char * source =
292
+ " <link rel=preload as=image href=a.jpg>"
293
+ " <link rel=preload as=script href=a.js>"
294
+ " <link rel=preload as=style href=a.css>" ;
295
+ const char * rewritten =
296
+ " <link rel=preload as=script href=a.js>" ;
297
+ ValidateStripSubresourceHint (source, rewritten);
298
+ }
299
+ TEST_F (StripSubresourceHintsFilterTestPreserveStyle, StylesPreserved) {
300
+ const char * source =
301
+ " <link rel=preload as=image href=a.jpg>"
302
+ " <link rel=preload as=script href=a.js>"
303
+ " <link rel=preload as=style href=a.css>" ;
304
+ const char * rewritten =
305
+ " <link rel=preload as=style href=a.css>" ;
306
+ ValidateStripSubresourceHint (source, rewritten);
307
+ }
308
+
309
+ // With rel=preload we don't strip unknown types.
310
+ TEST_F (StripSubresourceHintsFilterTest, DontStripUnknownTypes) {
311
+ const char * source = " <link rel=preload as=font href=a.woff>" ;
312
+ ValidateStripSubresourceHint (source, source);
313
+ }
314
+
315
+
258
316
TEST_F (StripSubresourceHintsFilterTestDisabled,
259
317
PreserveSubResourceHintsIsTrue) {
260
318
can_modify_urls_filter_->set_can_modify_urls (true );
@@ -266,10 +324,10 @@ TEST_F(StripSubresourceHintsFilterTestDisabled,
266
324
can_modify_urls_filter_->set_can_modify_urls (true );
267
325
const char *source =
268
326
" <head>"
269
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
270
- " <link rel=\" subresource\" src =\" /test.gif\" />"
271
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
272
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
327
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
328
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
329
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
330
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
273
331
" </head>"
274
332
" <body><img src=\" 1.jpg\" /></body>" ;
275
333
ValidateStripSubresourceHint (source, source);
@@ -279,18 +337,18 @@ TEST_F(StripSubresourceHintsFilterTestRewriteLevelPassthrough,
279
337
MultiResource) {
280
338
const char *source =
281
339
" <head>"
282
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
283
- " <link rel=\" subresource\" src =\" /test.gif\" />"
284
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
285
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
340
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
341
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
342
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
343
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
286
344
" </head>"
287
345
" <body></body>" ;
288
346
const char *rewritten =
289
347
" <head>"
290
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
291
- " <link rel=\" subresource\" src =\" /test.gif\" />"
292
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
293
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
348
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
349
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
350
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
351
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
294
352
" </head>"
295
353
" <body></body>" ;
296
354
ValidateExpected (" multi_resource" , source, rewritten);
@@ -300,16 +358,16 @@ TEST_F(StripSubresourceHintsFilterTestRewriteLevelCoreFilters,
300
358
MultiResource) {
301
359
const char *source =
302
360
" <head>"
303
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
304
- " <link rel=\" subresource\" src =\" /test.gif\" />"
305
- " <link rel=\" subresource\" src =\" http://from1.test.com/test.gif\" />"
306
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
361
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
362
+ " <link rel=\" subresource\" href =\" /test.gif\" />"
363
+ " <link rel=\" subresource\" href =\" http://from1.test.com/test.gif\" />"
364
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
307
365
" </head>"
308
366
" <body></body>" ;
309
367
const char *rewritten =
310
368
" <head>"
311
- " <link rel=\" subresource\" src =\" /dontdropme.gif\" />"
312
- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
369
+ " <link rel=\" subresource\" href =\" /dontdropme.gif\" />"
370
+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
313
371
" </head>"
314
372
" <body></body>" ;
315
373
ValidateExpected (" multi_resource" , source, rewritten);
0 commit comments