| Index: chrome/test/data/prerender/prerender_events_common.js
|
| diff --git a/chrome/test/data/prerender/prerender_events_common.js b/chrome/test/data/prerender/prerender_events_common.js
|
| index 6d125e1e0a20ef9ee82fe263d2b282db2c47c048..7903b3eddd9cb69bdf70d35beee5e208a9e1d90d 100644
|
| --- a/chrome/test/data/prerender/prerender_events_common.js
|
| +++ b/chrome/test/data/prerender/prerender_events_common.js
|
| @@ -10,98 +10,71 @@
|
| // Currently only errors with the ordering of Prerender events are caught.
|
| var hadPrerenderEventErrors = false;
|
|
|
| -var receivedPrerenderEvents = {
|
| - 'webkitprerenderstart': [],
|
| - 'webkitprerenderdomcontentloaded': [],
|
| - 'webkitprerenderload': [],
|
| - 'webkitprerenderstop': [],
|
| -}
|
| -// A list of callbacks to be called on every prerender event. Each callback
|
| -// returns true if it should never be called again, or false to remain in the
|
| -// list and be called on future events. These are used to implement
|
| -// WaitForPrerenderEventCount.
|
| -var prerenderEventCallbacks = [];
|
| +var receivedPrerenderStartEvents = [];
|
| +var receivedPrerenderLoadEvents = [];
|
| +var receivedPrerenderDomContentLoadedEvents = [];
|
| +var receivedPrerenderStopEvents = [];
|
|
|
| -function GetPrerenderEventCount(index, type) {
|
| - return receivedPrerenderEvents[type][index] || 0;
|
| +function PrerenderStartHandler(index) {
|
| + if (receivedPrerenderStartEvents[index] ||
|
| + receivedPrerenderLoadEvents[index] ||
|
| + receivedPrerenderStopEvents[index]) {
|
| + hadPrerenderEventErrors = true;
|
| + return;
|
| + }
|
| + receivedPrerenderStartEvents[index] = true;
|
| }
|
|
|
| -function PrerenderEventHandler(index, ev) {
|
| - // Check for errors.
|
| - if (ev.type == 'webkitprerenderstart') {
|
| - // No event may preceed start.
|
| - if (GetPrerenderEventCount(index, 'webkitprerenderstart') ||
|
| - GetPrerenderEventCount(index, 'webkitprerenderdomcontentloaded') ||
|
| - GetPrerenderEventCount(index, 'webkitprerenderload') ||
|
| - GetPrerenderEventCount(index, 'webkitprerenderstop')) {
|
| - hadPrerenderEventErrors = true;
|
| - }
|
| - } else {
|
| - // There may be multiple load or domcontentloaded events, but they must not
|
| - // come after start and must come before stop. And there may be at most one
|
| - // start. Note that stop may be delivered without any load events.
|
| - if (!GetPrerenderEventCount(index, 'webkitprerenderstart') ||
|
| - GetPrerenderEventCount(index, 'webkitprerenderstop')) {
|
| - hadPrerenderEventErrors = true;
|
| - }
|
| +function PrerenderLoadHandler(index) {
|
| + if (!receivedPrerenderStartEvents[index] ||
|
| + receivedPrerenderStopEvents[index]) {
|
| + hadPrerenderEventErrors = true;
|
| + return;
|
| }
|
| -
|
| - // Update count.
|
| - receivedPrerenderEvents[ev.type][index] =
|
| - (receivedPrerenderEvents[ev.type][index] || 0) + 1;
|
| -
|
| - // Run all callbacks. Remove the ones that are done.
|
| - prerenderEventCallbacks = prerenderEventCallbacks.filter(function(callback) {
|
| - return !callback();
|
| - });
|
| + if (!receivedPrerenderLoadEvents[index])
|
| + receivedPrerenderLoadEvents[index] = 0;
|
| + receivedPrerenderLoadEvents[index]++;
|
| }
|
|
|
| -// Calls |callback| when at least |count| instances of event |type| have been
|
| -// observed for prerender |index|.
|
| -function WaitForPrerenderEventCount(index, type, count, callback) {
|
| - var checkCount = function() {
|
| - if (GetPrerenderEventCount(index, type) >= count) {
|
| - callback();
|
| - return true;
|
| - }
|
| - return false;
|
| - };
|
| - if (!checkCount())
|
| - prerenderEventCallbacks.push(checkCount);
|
| +function PrerenderDomContentLoadedHandler(index) {
|
| + if (!receivedPrerenderStartEvents[index] ||
|
| + receivedPrerenderStopEvents[index]) {
|
| + hadPrerenderEventErrors = true;
|
| + return;
|
| + }
|
| + if (!receivedPrerenderDomContentLoadedEvents[index])
|
| + receivedPrerenderDomContentLoadedEvents[index] = 0;
|
| + receivedPrerenderDomContentLoadedEvents[index]++;
|
| +}
|
| +
|
| +function PrerenderStopHandler(index) {
|
| + if (!receivedPrerenderStartEvents[index] ||
|
| + receivedPrerenderStopEvents[index]) {
|
| + hadPrerenderEventErrors = true;
|
| + return;
|
| + }
|
| + receivedPrerenderStopEvents[index] = true;
|
| }
|
|
|
| function AddEventHandlersToLinkElement(link, index) {
|
| link.addEventListener('webkitprerenderstart',
|
| - PrerenderEventHandler.bind(null, index), false);
|
| + PrerenderStartHandler.bind(null, index), false);
|
| + link.addEventListener('webkitprerenderload',
|
| + PrerenderLoadHandler.bind(null, index), false);
|
| link.addEventListener('webkitprerenderdomcontentloaded',
|
| - PrerenderEventHandler.bind(null, index), false);
|
| - link.addEventListener('webkitprerenderload',
|
| - PrerenderEventHandler.bind(null, index), false);
|
| + PrerenderDomContentLoadedHandler.bind(null, index),
|
| + false);
|
| link.addEventListener('webkitprerenderstop',
|
| - PrerenderEventHandler.bind(null, index), false);
|
| + PrerenderStopHandler.bind(null, index), false);
|
| }
|
|
|
| function AddPrerender(url, index) {
|
| var link = document.createElement('link');
|
| - link.id = 'prerenderElement' + index;
|
| link.rel = 'prerender';
|
| link.href = url;
|
| AddEventHandlersToLinkElement(link, index);
|
| document.body.appendChild(link);
|
| return link;
|
| -}
|
| -
|
| -function RemoveLinkElement(index) {
|
| - var link = document.getElementById('prerenderElement' + index);
|
| - link.parentElement.removeChild(link);
|
| -}
|
| -
|
| -function ExtractGetParameterBadlyAndInsecurely(param, defaultValue) {
|
| - var re = RegExp('[&?]' + param + '=([^&?#]*)');
|
| - var result = re.exec(document.location);
|
| - if (result)
|
| - return result[1];
|
| - return defaultValue;
|
| }
|
|
|
| function AddAnchor(href, target) {
|
|
|