3 <title>Service Worker: Memory Cache
</title>
4 <script src=
"../../resources/testharness.js"></script>
5 <script src=
"../../resources/testharnessreport.js"></script>
6 <script src=
"../resources/test-helpers.js"></script>
10 function getJSONP(url
) {
11 var sc
= document
.createElement('script');
13 document
.body
.appendChild(sc
);
14 return new Promise(function(resolve
) {
15 // This callback function is called by appending a script element.
16 callback = function(data
) { resolve(data
); }
20 async_test(function(t
) {
21 var scope
= 'resources/memory-cache-controlled.html';
22 var worker
= 'resources/memory-cache-worker.js';
23 var json_url
= '/serviceworker/chromium/resources/memory-cache.jsonp';
28 service_worker_unregister_and_register(t
, worker
, scope
)
31 return wait_for_state(t
, r
.installing
, 'activated');
33 .then(function() { return with_iframe(scope
); })
37 // Request a json file from controlled page.
39 frame
.contentWindow
.internals
.isLoadingFromMemoryCache(json_url
),
40 'Cache for controlled page should be empty');
41 promises
.push(frame
.contentWindow
.getJSONP(json_url
));
43 // Request a json file from non-controlled page.
45 internals
.isLoadingFromMemoryCache(json_url
),
46 'Cache for non-controlled page should be empty');
47 promises
.push(getJSONP(json_url
));
49 return Promise
.all(promises
);
51 .then(function(results
) {
55 'Response for controlled page should be served by Service Worker');
59 'Response for non-controlled page should be served by network');
61 frame
.contentWindow
.internals
.isLoadingFromMemoryCache(json_url
),
62 'Response for controlled page should be cached');
64 internals
.isLoadingFromMemoryCache(json_url
),
65 'Response for non-controlled page should be cached');
67 return registration
.unregister();
72 .catch(unreached_rejection(t
));
73 }, 'Non-controlled page should not use a cache filled by Service Worker');