Memory cache live resources repeatedly purged during painting
[WebKit-https.git] / LayoutTests / http / tests / cache / disk-cache / resources / cache-test.js
index d765dd8..76a8b8e 100644 (file)
@@ -38,10 +38,15 @@ function makeHeaderValue(value)
     return value;
 }
 
-function generateTestURL(test)
+function generateTestURL(test, includeBody, expiresInFutureIn304)
 {
+    includeBody = typeof includeBody !== 'undefined' ? includeBody : true;
+    expiresInFutureIn304 = typeof expiresInFutureIn304 !== 'undefined' ? expiresInFutureIn304 : false;
     var uniqueTestId = Math.floor((Math.random() * 1000000000000));
-    var testURL = "resources/generate-response.cgi?uniqueId=" + uniqueTestId++ + "&Content-type=text/plain";
+    var testURL = "resources/generate-response.cgi?include-body=" + (includeBody ? "1" : "0");
+    if (expiresInFutureIn304)
+        testURL += "&expires-in-future-in-304=1";
+    testURL += "&uniqueId=" + uniqueTestId++ + "&Content-type=text/plain";
     for (var header in test.responseHeaders)
         testURL += '&' + header + '=' + makeHeaderValue(test.responseHeaders[header]);
     return testURL;
@@ -50,7 +55,7 @@ function generateTestURL(test)
 function loadResource(test, onload)
 {
     if (!test.url)
-        test.url = generateTestURL(test);
+        test.url = generateTestURL(test, test.includeBody, test.expiresInFutureIn304);
 
     test.xhr = new XMLHttpRequest();
     test.xhr.onload = onload;
@@ -64,6 +69,9 @@ function loadResource(test, onload)
 
 function loadResources(tests, completetion)
 {
+    // Otherwise we just get responses from the memory cache.
+    internals.clearMemoryCache();
+    
     var pendingCount = tests.length;
     for (var i = 0; i < tests.length; ++i) {
         loadResource(tests[i], function (ev) {
@@ -79,6 +87,8 @@ function printResults(tests)
     for (var i = 0; i < tests.length; ++i) {
         var test = tests[i];
         debug("response headers: " + JSON.stringify(test.responseHeaders));
+        if (test.expiresInFutureIn304)
+            debug("response's 'Expires' header is overriden by future date in 304 response");
         if (test.requestHeaders)
             debug("request headers: " + JSON.stringify(test.requestHeaders));
         responseSource = internals.xhrResponseSource(test.xhr);
@@ -90,8 +100,6 @@ function printResults(tests)
 function runTests(tests, completionHandler)
 {
     loadResources(tests, function () {
-        // Otherwise we just get responses from the memory cache.
-        internals.clearMemoryCache();
         // Wait a bit so things settle down in the disk cache.
         setTimeout(function () {
             loadResources(tests, function () {
@@ -115,8 +123,9 @@ function mergeFields(field, componentField)
     }
 }
 
-function generateTests(testMatrix)
+function generateTests(testMatrix, includeBody)
 {
+    includeBody = typeof includeBody !== 'undefined' ? includeBody : true;
     var tests = [];
 
     var testCount = 1;
@@ -138,6 +147,7 @@ function generateTests(testMatrix)
                 mergeFields(test[field], component[field]);
             }
         }
+        test.includeBody = includeBody;
         tests.push(test);
     }
     return tests;