@@ -88,8 +88,28 @@ class StripSubresourceHintsFilterTest :
8888 public StripSubresourceHintsFilterTestBase {
8989};
9090
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 {
93113 protected:
94114 virtual void CustomSetup () {
95115 options ()->set_css_preserve_urls (false );
@@ -148,7 +168,7 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceNoLink) {
148168
149169TEST_F (StripSubresourceHintsFilterTest, SingleResourceValidLink) {
150170 const char *source =
151- " <head><link rel=\" subresource\" src =\" /test.gif\" /></head>"
171+ " <head><link rel=\" subresource\" href =\" /test.gif\" /></head>"
152172 " <body><img src=\" 1.jpg\" /></body>" ;
153173 const char *rewritten =
154174 " <head></head>"
@@ -158,7 +178,7 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceValidLink) {
158178
159179TEST_F (StripSubresourceHintsFilterTest, SingleResourceValidPreloadLink) {
160180 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>"
162182 " <body><img src=\" 1.jpg\" /></body>" ;
163183 const char *rewritten =
164184 " <head></head>"
@@ -169,7 +189,7 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceValidPreloadLink) {
169189TEST_F (StripSubresourceHintsFilterTest, SingleResourceExternalLink) {
170190 const char *source =
171191 " <head>"
172- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
192+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
173193 " </head>"
174194 " <body><img src=\" 1.jpg\" /></body>" ;
175195 ValidateStripSubresourceHint (source, source);
@@ -178,21 +198,21 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceExternalLink) {
178198TEST_F (StripSubresourceHintsFilterTest, MultiResourceMixedLinks) {
179199 const char *source =
180200 " <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\" />"
183203 " </head>"
184204 " <body><img src=\" 1.jpg\" /></body>" ;
185205 const char *rewritten =
186206 " <head>"
187- " <link rel=\" subresource\" src =\" http://www.example.com/test.gif\" />"
207+ " <link rel=\" subresource\" href =\" http://www.example.com/test.gif\" />"
188208 " </head>"
189209 " <body><img src=\" 1.jpg\" /></body>" ;
190210 ValidateStripSubresourceHint (source, rewritten);
191211}
192212
193213TEST_F (StripSubresourceHintsFilterTest, SingleResourceRewriteDomain) {
194214 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\" />"
196216 " </head>"
197217 " <body><img src=\" 1.jpg\" /></body>" ;
198218 const char *rewritten =
@@ -203,30 +223,32 @@ TEST_F(StripSubresourceHintsFilterTest, SingleResourceRewriteDomain) {
203223
204224TEST_F (StripSubresourceHintsFilterTest, SingleResourceDisallow) {
205225 const char *source =
206- " <head><link rel=\" subresource\" src =\" /dontdropme/test.gif\" />"
226+ " <head><link rel=\" subresource\" href =\" /dontdropme/test.gif\" />"
207227 " </head>"
208228 " <body><img src=\" 1.jpg\" /></body>" ;
209229 const char *rewritten =
210- " <head><link rel=\" subresource\" src =\" /dontdropme/test.gif\" />"
230+ " <head><link rel=\" subresource\" href =\" /dontdropme/test.gif\" />"
211231 " </head>"
212232 " <body><img src=\" 1.jpg\" /></body>" ;
213233 ValidateStripSubresourceHint (source, rewritten);
214234}
215235
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) {
218240 const char *source =
219241 " <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\" />"
224246 " </head>"
225247 " <body><img src=\" 1.jpg\" /></body>" ;
226248 const char *rewritten =
227249 " <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\" />"
230252 " </head>"
231253 " <body><img src=\" 1.jpg\" /></body>" ;
232254 ValidateStripSubresourceHint (source, rewritten);
@@ -238,23 +260,59 @@ TEST_F(StripSubresourceHintsFilterTestFullPreserve,
238260 MultiResourcePreserveAll) {
239261 const char *source =
240262 " <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\" />"
245267 " </head>"
246268 " <body><img src=\" 1.jpg\" /></body>" ;
247269 const char *rewritten =
248270 " <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\" />"
253275 " </head>"
254276 " <body><img src=\" 1.jpg\" /></body>" ;
255277 ValidateStripSubresourceHint (source, rewritten);
256278}
257279
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+
258316TEST_F (StripSubresourceHintsFilterTestDisabled,
259317 PreserveSubResourceHintsIsTrue) {
260318 can_modify_urls_filter_->set_can_modify_urls (true );
@@ -266,10 +324,10 @@ TEST_F(StripSubresourceHintsFilterTestDisabled,
266324 can_modify_urls_filter_->set_can_modify_urls (true );
267325 const char *source =
268326 " <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\" />"
273331 " </head>"
274332 " <body><img src=\" 1.jpg\" /></body>" ;
275333 ValidateStripSubresourceHint (source, source);
@@ -279,18 +337,18 @@ TEST_F(StripSubresourceHintsFilterTestRewriteLevelPassthrough,
279337 MultiResource) {
280338 const char *source =
281339 " <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\" />"
286344 " </head>"
287345 " <body></body>" ;
288346 const char *rewritten =
289347 " <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\" />"
294352 " </head>"
295353 " <body></body>" ;
296354 ValidateExpected (" multi_resource" , source, rewritten);
@@ -300,16 +358,16 @@ TEST_F(StripSubresourceHintsFilterTestRewriteLevelCoreFilters,
300358 MultiResource) {
301359 const char *source =
302360 " <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\" />"
307365 " </head>"
308366 " <body></body>" ;
309367 const char *rewritten =
310368 " <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\" />"
313371 " </head>"
314372 " <body></body>" ;
315373 ValidateExpected (" multi_resource" , source, rewritten);
0 commit comments