Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: Source/core/fetch/ResourceFetcherTest.cpp

Issue 930323002: Upgrade: Send a 'Prefer' header for feature detection. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rename? Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/fetch/ResourceFetcher.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 void expectUpgrade(const char* input, WebURLRequest::RequestContext requestC ontext, WebURLRequest::FrameType frameType, const char* expected) 75 void expectUpgrade(const char* input, WebURLRequest::RequestContext requestC ontext, WebURLRequest::FrameType frameType, const char* expected)
76 { 76 {
77 KURL inputURL(ParsedURLString, input); 77 KURL inputURL(ParsedURLString, input);
78 KURL expectedURL(ParsedURLString, expected); 78 KURL expectedURL(ParsedURLString, expected);
79 79
80 FetchRequest fetchRequest = FetchRequest(ResourceRequest(inputURL), Fetc hInitiatorInfo()); 80 FetchRequest fetchRequest = FetchRequest(ResourceRequest(inputURL), Fetc hInitiatorInfo());
81 fetchRequest.mutableResourceRequest().setRequestContext(requestContext); 81 fetchRequest.mutableResourceRequest().setRequestContext(requestContext);
82 fetchRequest.mutableResourceRequest().setFrameType(frameType); 82 fetchRequest.mutableResourceRequest().setFrameType(frameType);
83 83
84 fetcher->maybeUpgradeInsecureRequestURL(fetchRequest); 84 fetcher->upgradeInsecureRequest(fetchRequest);
85 85
86 EXPECT_STREQ(expectedURL.string().utf8().data(), fetchRequest.resourceRe quest().url().string().utf8().data()); 86 EXPECT_STREQ(expectedURL.string().utf8().data(), fetchRequest.resourceRe quest().url().string().utf8().data());
87 EXPECT_EQ(expectedURL.protocol(), fetchRequest.resourceRequest().url().p rotocol()); 87 EXPECT_EQ(expectedURL.protocol(), fetchRequest.resourceRequest().url().p rotocol());
88 EXPECT_EQ(expectedURL.host(), fetchRequest.resourceRequest().url().host( )); 88 EXPECT_EQ(expectedURL.host(), fetchRequest.resourceRequest().url().host( ));
89 EXPECT_EQ(expectedURL.port(), fetchRequest.resourceRequest().url().port( )); 89 EXPECT_EQ(expectedURL.port(), fetchRequest.resourceRequest().url().port( ));
90 EXPECT_EQ(expectedURL.hasPort(), fetchRequest.resourceRequest().url().ha sPort()); 90 EXPECT_EQ(expectedURL.hasPort(), fetchRequest.resourceRequest().url().ha sPort());
91 EXPECT_EQ(expectedURL.path(), fetchRequest.resourceRequest().url().path( )); 91 EXPECT_EQ(expectedURL.path(), fetchRequest.resourceRequest().url().path( ));
92 } 92 }
93 93
94 void expectPreferHeader(const char* input, WebURLRequest::FrameType frameTyp e, bool shouldPrefer)
95 {
96 KURL inputURL(ParsedURLString, input);
97
98 FetchRequest fetchRequest = FetchRequest(ResourceRequest(inputURL), Fetc hInitiatorInfo());
99 fetchRequest.mutableResourceRequest().setRequestContext(WebURLRequest::R equestContextScript);
100 fetchRequest.mutableResourceRequest().setFrameType(frameType);
101
102 fetcher->upgradeInsecureRequest(fetchRequest);
103
104 EXPECT_STREQ(shouldPrefer ? "return=secure-representation" : "",
105 fetchRequest.resourceRequest().httpHeaderField("Prefer").utf8().data ());
106 }
107
94 KURL secureURL; 108 KURL secureURL;
95 RefPtr<SecurityOrigin> exampleOrigin; 109 RefPtr<SecurityOrigin> exampleOrigin;
96 RefPtr<SecurityOrigin> secureOrigin; 110 RefPtr<SecurityOrigin> secureOrigin;
97 111
98 // We don't use the DocumentLoader directly in any tests, but need to keep i t around as long 112 // We don't use the DocumentLoader directly in any tests, but need to keep i t around as long
99 // as the ResourceFetcher and Document live due to indirect usage. 113 // as the ResourceFetcher and Document live due to indirect usage.
100 RefPtr<DocumentLoader> documentLoader; 114 RefPtr<DocumentLoader> documentLoader;
101 RefPtrWillBePersistent<ResourceFetcher> fetcher; 115 RefPtrWillBePersistent<ResourceFetcher> fetcher;
102 RefPtrWillBePersistent<Document> document; 116 RefPtrWillBePersistent<Document> document;
103 }; 117 };
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 201
188 expectUpgrade("https://example.test/image.png", "https://example.test/image. png"); 202 expectUpgrade("https://example.test/image.png", "https://example.test/image. png");
189 expectUpgrade("https://example.test:80/image.png", "https://example.test:80/ image.png"); 203 expectUpgrade("https://example.test:80/image.png", "https://example.test:80/ image.png");
190 expectUpgrade("https://example.test:1212/image.png", "https://example.test:1 212/image.png"); 204 expectUpgrade("https://example.test:1212/image.png", "https://example.test:1 212/image.png");
191 205
192 expectUpgrade("ftp://example.test/image.png", "ftp://example.test/image.png" ); 206 expectUpgrade("ftp://example.test/image.png", "ftp://example.test/image.png" );
193 expectUpgrade("ftp://example.test:21/image.png", "ftp://example.test:21/imag e.png"); 207 expectUpgrade("ftp://example.test:21/image.png", "ftp://example.test:21/imag e.png");
194 expectUpgrade("ftp://example.test:1212/image.png", "ftp://example.test:1212/ image.png"); 208 expectUpgrade("ftp://example.test:1212/image.png", "ftp://example.test:1212/ image.png");
195 } 209 }
196 210
211 TEST_F(ResourceFetcherTest, SendPreferHeader)
212 {
213 struct TestCase {
214 const char* toRequest;
215 WebURLRequest::FrameType frameType;
216 bool shouldPrefer;
217 } tests[] = {
218 { "http://example.test/page.html", WebURLRequest::FrameTypeAuxiliary, tr ue },
219 { "http://example.test/page.html", WebURLRequest::FrameTypeNested, true },
220 { "http://example.test/page.html", WebURLRequest::FrameTypeNone, false } ,
221 { "http://example.test/page.html", WebURLRequest::FrameTypeTopLevel, tru e },
222 { "https://example.test/page.html", WebURLRequest::FrameTypeAuxiliary, f alse },
223 { "https://example.test/page.html", WebURLRequest::FrameTypeNested, fals e },
224 { "https://example.test/page.html", WebURLRequest::FrameTypeNone, false },
225 { "https://example.test/page.html", WebURLRequest::FrameTypeTopLevel, fa lse }
226 };
227
228 for (auto test : tests) {
229 document->setInsecureContentPolicy(SecurityContext::InsecureContentDoNot Upgrade);
230 expectPreferHeader(test.toRequest, test.frameType, test.shouldPrefer);
231
232 document->setInsecureContentPolicy(SecurityContext::InsecureContentUpgra de);
233 expectPreferHeader(test.toRequest, test.frameType, test.shouldPrefer);
234
235 document->setInsecureContentPolicy(SecurityContext::InsecureContentMonit or);
236 expectPreferHeader(test.toRequest, test.frameType, test.shouldPrefer);
237 }
238 }
239
197 } // namespace 240 } // namespace
OLDNEW
« no previous file with comments | « Source/core/fetch/ResourceFetcher.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698