diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-01 11:59:54 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-01 11:59:54 +0000 |
commit | af3f286560a8fadb4eb6cb51c7ba2cb0f8e17a66 (patch) | |
tree | 1ed4bfb613ac7930cf33af6ba644851d771d12a5 /chrome/test | |
parent | 4bc45071c2aed54d5499f5f882368b438d4842bf (diff) | |
download | chromium_src-af3f286560a8fadb4eb6cb51c7ba2cb0f8e17a66.zip chromium_src-af3f286560a8fadb4eb6cb51c7ba2cb0f8e17a66.tar.gz chromium_src-af3f286560a8fadb4eb6cb51c7ba2cb0f8e17a66.tar.bz2 |
Fire web navigation events on reference fragment navigations.
Also, split up the API tests in single tests, so it's more unlikely that they time out.
BUG=73668,72165
TEST=web navigation api tests
Review URL: http://codereview.chromium.org/6591036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76371 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
49 files changed, 1335 insertions, 773 deletions
diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/clientRedirect/a.html b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/a.html index 3e3e11a..3e3e11a 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/clientRedirect/a.html +++ b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/a.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/clientRedirect/b.html b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/b.html index 18ecdcb..18ecdcb 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/clientRedirect/b.html +++ b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/b.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/framework.js b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/manifest.json index c04d232..c04d232 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/manifest.json +++ b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/manifest.json diff --git a/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/test.html b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/tests.js b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/tests.js new file mode 100644 index 0000000..9349bce --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/clientRedirect/tests.js @@ -0,0 +1,61 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + chrome.test.runTests([ + // Navigates to a.html that redirects to b.html (using javascript) + // after a delay of 500ms, so the initial navigation is completed and + // the redirection is marked as client_redirect. + function clientRedirect() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "client_redirect", + transitionType: "link", + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + ]); + }); +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/a.html b/chrome/test/data/extensions/api_test/webnavigation/failures/a.html index c5c157d..c5c157d 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/a.html +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/a.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/b.html b/chrome/test/data/extensions/api_test/webnavigation/failures/b.html index d6e86d8..d6e86d8 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/b.html +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/b.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation2/iframeFail/d.html b/chrome/test/data/extensions/api_test/webnavigation/failures/d.html index 466484f..466484f 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation2/iframeFail/d.html +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/d.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/failures/framework.js b/chrome/test/data/extensions/api_test/webnavigation/failures/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation2/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/failures/manifest.json index f1c777b..f1c777b 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation2/manifest.json +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/manifest.json diff --git a/chrome/test/data/extensions/api_test/webnavigation/failures/test.html b/chrome/test/data/extensions/api_test/webnavigation/failures/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/failures/tests.js b/chrome/test/data/extensions/api_test/webnavigation/failures/tests.js new file mode 100644 index 0000000..60a2012 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/failures/tests.js @@ -0,0 +1,131 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + + chrome.test.runTests([ + // Navigates to a non-existant page. + function nonExistant() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('nonexistant.html') }], + [ "onErrorOccurred", + { error: "net::ERR_FILE_NOT_FOUND", + frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('nonexistant.html') }]]); + chrome.tabs.update(tabId, { url: getURL('nonexistant.html') }); + }, + + // An page that tries to load an non-existant iframe. + function nonExistantIframe() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('d.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('d.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('d.html') }], + [ "onErrorOccurred", + { error: "net::ERR_FILE_NOT_FOUND", + frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('d.html') }]]); + chrome.tabs.update(tabId, { url: getURL('d.html') }); + }, + + // An iframe navigates to a non-existant page. + function nonExistantIframeNavigation() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "auto_subframe", + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onErrorOccurred", + { error: "net::ERR_FILE_NOT_FOUND", + frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + ]); + }); +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/forwardBack/a.html b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/a.html index 7b3462c..7b3462c 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/forwardBack/a.html +++ b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/a.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/forwardBack/b.html b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/b.html index a4270ed..a4270ed 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/forwardBack/b.html +++ b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/b.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/forwardBack/framework.js b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/forwardBack/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/manifest.json new file mode 100644 index 0000000..c04d232 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "navigation1", + "version": "1.0", + "description": "Tests the webNavigation API events (part 1).", + "permissions": ["experimental", "tabs"], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/forwardBack/test.html b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/forwardBack/tests.js b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/tests.js new file mode 100644 index 0000000..6111d57 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/forwardBack/tests.js @@ -0,0 +1,84 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + + chrome.test.runTests([ + // First navigates to a.html which redirects to to b.html which uses + // history.back() to navigate back to a.html + function forwardBack() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "client_redirect", + transitionType: "link", + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "forward_back", + transitionType: "link", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + ]); + }); +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation2/iframeFail/a.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/a.html index c5c157d..c5c157d 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation2/iframeFail/a.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/a.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation2/iframeFail/b.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/b.html index d6e86d8..d6e86d8 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation2/iframeFail/b.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/b.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/c.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/c.html index 18ecdcb..18ecdcb 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/c.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/c.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/d.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/d.html index d34a39b..d34a39b 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/d.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/d.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/e.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/e.html index 18ecdcb..18ecdcb 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/e.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/e.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/f.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/f.html index b623f77..b623f77 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/f.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/f.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/iframe/framework.js b/chrome/test/data/extensions/api_test/webnavigation/iframe/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/g.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/g.html index 18ecdcb..18ecdcb 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/iframe/g.html +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/g.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/iframe/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/iframe/manifest.json new file mode 100644 index 0000000..c04d232 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "navigation1", + "version": "1.0", + "description": "Tests the webNavigation API events (part 1).", + "permissions": ["experimental", "tabs"], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/iframe/test.html b/chrome/test/data/extensions/api_test/webnavigation/iframe/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/iframe/tests.js b/chrome/test/data/extensions/api_test/webnavigation/iframe/tests.js new file mode 100644 index 0000000..9bfc085 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/iframe/tests.js @@ -0,0 +1,184 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + + chrome.test.runTests([ + // Navigates to a.html which includes b.html as an iframe. b.html + // redirects to c.html. + function iframe() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "auto_subframe", + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onCommitted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "manual_subframe", + url: getURL('c.html') }], + [ "onDOMContentLoaded", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onCompleted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + + // Navigates to d.html which includes e.html and f.html as iframes. To be + // able to predict which iframe has which id, the iframe for f.html is + // created by javascript. f.html then navigates to g.html. + function iframeMultiple() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('d.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('d.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('e.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('d.html') }], + [ "onCommitted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "auto_subframe", + url: getURL('e.html') }], + [ "onDOMContentLoaded", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('e.html') }], + [ "onBeforeNavigate", + { frameId: 2, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('f.html') }], + [ "onCompleted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('e.html') }], + [ "onCommitted", + { frameId: 2, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "auto_subframe", + url: getURL('f.html') }], + [ "onDOMContentLoaded", + { frameId: 2, + tabId: 0, + timeStamp: 0, + url: getURL('f.html') }], + [ "onCompleted", + { frameId: 2, + tabId: 0, + timeStamp: 0, + url: getURL('f.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('d.html') }], + [ "onBeforeNavigate", + { frameId: 2, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('g.html') }], + [ "onCommitted", + { frameId: 2, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "manual_subframe", + url: getURL('g.html') }], + [ "onDOMContentLoaded", + { frameId: 2, + tabId: 0, + timeStamp: 0, + url: getURL('g.html') }], + [ "onCompleted", + { frameId: 2, + tabId: 0, + timeStamp: 0, + url: getURL('g.html') }]]); + chrome.tabs.update(tabId, { url: getURL('d.html') }); + }, + ]); + }); +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/test.html b/chrome/test/data/extensions/api_test/webnavigation/navigation1/test.html deleted file mode 100644 index 54080a7..0000000 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/test.html +++ /dev/null @@ -1,561 +0,0 @@ -<script> -var expectedEventData; -var capturedEventData; -var nextFrameId; -var frameIds; -var nextTabId; -var tabIds; - -function expect(data) { - expectedEventData = data; - capturedEventData = []; - nextFrameId = 1; - frameIds = {}; - nextTabId = 0; - tabIds = {}; -} - -function checkExpectations() { - if (capturedEventData.length < expectedEventData.length) { - return; - } - chrome.test.assertEq(JSON.stringify(expectedEventData), - JSON.stringify(capturedEventData)); - chrome.test.succeed(); -} - -function captureEvent(name, details) { - // normalize details. - if ('timeStamp' in details) { - details.timeStamp = 0; - } - if (('frameId' in details) && (details.frameId != 0)) { - if (frameIds[details.frameId] === undefined) { - frameIds[details.frameId] = nextFrameId++; - } - details.frameId = frameIds[details.frameId]; - } - if ('tabId' in details) { - if (tabIds[details.tabId] === undefined) { - tabIds[details.tabId] = nextTabId++; - } - details.tabId = tabIds[details.tabId]; - } - if ('sourceTabId' in details) { - if (tabIds[details.sourceTabId] === undefined) { - tabIds[details.sourceTabId] = nextTabId++; - } - details.sourceTabId = tabIds[details.sourceTabId]; - } - capturedEventData.push([name, details]); - checkExpectations(); -} - -chrome.experimental.webNavigation.onBeforeNavigate.addListener( - function(details) { - captureEvent("onBeforeNavigate", details); -}); - -chrome.experimental.webNavigation.onCommitted.addListener(function(details) { - captureEvent("onCommitted", details); -}); - -chrome.experimental.webNavigation.onDOMContentLoaded.addListener( - function(details) { - captureEvent("onDOMContentLoaded", details); -}); - -chrome.experimental.webNavigation.onCompleted.addListener( - function(details) { - captureEvent("onCompleted", details); -}); - -chrome.experimental.webNavigation.onBeforeRetarget.addListener( - function(details) { - captureEvent("onBeforeRetarget", details); -}); - -chrome.experimental.webNavigation.onErrorOccurred.addListener( - function(details) { - captureEvent("onErrorOccurred", details); -}); - -var getURL = chrome.extension.getURL; -chrome.tabs.getSelected(null, function(tab) { - var tabId = tab.id; - - chrome.test.runTests([ - /* Navigates to an URL */ - function simpleLoad() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('simpleLoad/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('simpleLoad/a.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('simpleLoad/a.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('simpleLoad/a.html') }]]); - chrome.tabs.update(tabId, { url: getURL('simpleLoad/a.html') }); - }, - - /* Navigates to a.html that redirects to b.html (using javascript) - after a delay of 500ms, so the initial navigation is completed and - the redirection is marked as client_redirect */ - function clientRedirect() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('clientRedirect/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('clientRedirect/a.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('clientRedirect/a.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('clientRedirect/a.html') }], - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('clientRedirect/b.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "client_redirect", - transitionType: "link", - url: getURL('clientRedirect/b.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('clientRedirect/b.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('clientRedirect/b.html') }]]); - chrome.tabs.update(tabId, { url: getURL('clientRedirect/a.html') }); - }, - - /* First navigates to a.html which redirects to to b.html which uses - history.back() to navigate back to a.html */ - function forwardBack() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('forwardBack/a.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/a.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/a.html') }], - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/b.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "client_redirect", - transitionType: "link", - url: getURL('forwardBack/b.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/b.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/b.html') }], - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "forward_back", - transitionType: "link", - url: getURL('forwardBack/a.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/a.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('forwardBack/a.html') }]]); - chrome.tabs.update(tabId, { url: getURL('forwardBack/a.html') }); - }, - - /* Navigates to a.html which includes b.html as an iframe. b.html - redirects to c.html. */ - function iframe() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('iframe/a.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/b.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/a.html') }], - [ "onCommitted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "auto_subframe", - url: getURL('iframe/b.html') }], - [ "onDOMContentLoaded", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/b.html') }], - [ "onCompleted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/b.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/a.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/c.html') }], - [ "onCommitted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "manual_subframe", - url: getURL('iframe/c.html') }], - [ "onDOMContentLoaded", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/c.html') }], - [ "onCompleted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/c.html') }]]); - chrome.tabs.update(tabId, { url: getURL('iframe/a.html') }); - }, - - /* Navigates to d.html which includes e.html and f.html as iframes. To be - able to predict which iframe has which id, the iframe for f.html is - created by javascript. f.html then navigates to g.html. */ - function iframe2() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/d.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('iframe/d.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/e.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/d.html') }], - [ "onCommitted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "auto_subframe", - url: getURL('iframe/e.html') }], - [ "onDOMContentLoaded", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/e.html') }], - [ "onBeforeNavigate", - { frameId: 2, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/f.html') }], - [ "onCompleted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/e.html') }], - [ "onCommitted", - { frameId: 2, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "auto_subframe", - url: getURL('iframe/f.html') }], - [ "onDOMContentLoaded", - { frameId: 2, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/f.html') }], - [ "onCompleted", - { frameId: 2, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/f.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/d.html') }], - [ "onBeforeNavigate", - { frameId: 2, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/g.html') }], - [ "onCommitted", - { frameId: 2, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "manual_subframe", - url: getURL('iframe/g.html') }], - [ "onDOMContentLoaded", - { frameId: 2, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/g.html') }], - [ "onCompleted", - { frameId: 2, - tabId: 0, - timeStamp: 0, - url: getURL('iframe/g.html') }]]); - chrome.tabs.update(tabId, { url: getURL('iframe/d.html') }); - }, - - /* Opens a new tab from javascript. */ - function openTab() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('openTab/a.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/a.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/a.html') }], - [ "onBeforeRetarget", - { sourceTabId: 0, - sourceUrl: getURL('openTab/a.html'), - targetUrl: getURL('openTab/b.html'), - timeStamp: 0 }], - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 1, - timeStamp: 0, - url: getURL('openTab/b.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 1, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('openTab/b.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 1, - timeStamp: 0, - url: getURL('openTab/b.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 1, - timeStamp: 0, - url: getURL('openTab/b.html') }]]); - chrome.tabs.update(tabId, { url: getURL('openTab/a.html') }); - }, - - /* Opens a new tab from javascript within an iframe. */ - function openTabFrame() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/c.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('openTab/c.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/a.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/c.html') }], - [ "onCommitted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "auto_subframe", - url: getURL('openTab/a.html') }], - [ "onDOMContentLoaded", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/a.html') }], - [ "onCompleted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/a.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('openTab/c.html') }], - [ "onBeforeRetarget", - { sourceTabId: 0, - sourceUrl: getURL('openTab/a.html'), - targetUrl: getURL('openTab/b.html'), - timeStamp: 0 }], - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 1, - timeStamp: 0, - url: getURL('openTab/b.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 1, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('openTab/b.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 1, - timeStamp: 0, - url: getURL('openTab/b.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 1, - timeStamp: 0, - url: getURL('openTab/b.html') }]]); - chrome.tabs.update(tabId, { url: getURL('openTab/c.html') }); - }, - ]); -}); -</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation2/test.html b/chrome/test/data/extensions/api_test/webnavigation/navigation2/test.html deleted file mode 100644 index c3239bc..0000000 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation2/test.html +++ /dev/null @@ -1,212 +0,0 @@ -<script> -var expectedEventData; -var capturedEventData; -var nextFrameId; -var frameIds; -var nextTabId; -var tabIds; - -function expect(data) { - expectedEventData = data; - capturedEventData = []; - nextFrameId = 1; - frameIds = {}; - nextTabId = 0; - tabIds = {}; -} - -function checkExpectations() { - if (capturedEventData.length < expectedEventData.length) { - return; - } - chrome.test.assertEq(JSON.stringify(expectedEventData), - JSON.stringify(capturedEventData)); - chrome.test.succeed(); -} - -function captureEvent(name, details) { - // normalize details. - if ('timeStamp' in details) { - details.timeStamp = 0; - } - if (('frameId' in details) && (details.frameId != 0)) { - if (frameIds[details.frameId] === undefined) { - frameIds[details.frameId] = nextFrameId++; - } - details.frameId = frameIds[details.frameId]; - } - if ('tabId' in details) { - if (tabIds[details.tabId] === undefined) { - tabIds[details.tabId] = nextTabId++; - } - details.tabId = tabIds[details.tabId]; - } - if ('sourceTabId' in details) { - if (tabIds[details.sourceTabId] === undefined) { - tabIds[details.sourceTabId] = nextTabId++; - } - details.sourceTabId = tabIds[details.sourceTabId]; - } - capturedEventData.push([name, details]); - checkExpectations(); -} - -chrome.experimental.webNavigation.onBeforeNavigate.addListener( - function(details) { - captureEvent("onBeforeNavigate", details); -}); - -chrome.experimental.webNavigation.onCommitted.addListener(function(details) { - captureEvent("onCommitted", details); -}); - -chrome.experimental.webNavigation.onDOMContentLoaded.addListener( - function(details) { - captureEvent("onDOMContentLoaded", details); -}); - -chrome.experimental.webNavigation.onCompleted.addListener( - function(details) { - captureEvent("onCompleted", details); -}); - -chrome.experimental.webNavigation.onBeforeRetarget.addListener( - function(details) { - captureEvent("onBeforeRetarget", details); -}); - -chrome.experimental.webNavigation.onErrorOccurred.addListener( - function(details) { - captureEvent("onErrorOccurred", details); -}); - -var getURL = chrome.extension.getURL; -chrome.tabs.getSelected(null, function(tab) { - var tabId = tab.id; - - chrome.test.runTests([ - /* Navigates to a non-existant page. */ - function nonExistant() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('nonexistant.html') }], - [ "onErrorOccurred", - { error: "net::ERR_FILE_NOT_FOUND", - frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('nonexistant.html') }]]); - chrome.tabs.update(tabId, { url: getURL('nonexistant.html') }); - }, - - /* An page that tries to load an non-existant iframe. */ - function nonExistantIframe() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/d.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('iframeFail/d.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/c.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/d.html') }], - [ "onErrorOccurred", - { error: "net::ERR_FILE_NOT_FOUND", - frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/c.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/d.html') }]]); - chrome.tabs.update(tabId, { url: getURL('iframeFail/d.html') }); - }, - - /* An iframe navigates to a non-existant page. */ - function nonExistantIframeNavigation() { - expect([ - [ "onBeforeNavigate", - { frameId: 0, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/a.html') }], - [ "onCommitted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "link", - url: getURL('iframeFail/a.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/b.html') }], - [ "onDOMContentLoaded", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/a.html') }], - [ "onCommitted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - transitionQualifiers: "", - transitionType: "auto_subframe", - url: getURL('iframeFail/b.html') }], - [ "onDOMContentLoaded", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/b.html') }], - [ "onCompleted", - { frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/b.html') }], - [ "onCompleted", - { frameId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/a.html') }], - [ "onBeforeNavigate", - { frameId: 1, - requestId: 0, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/c.html') }], - [ "onErrorOccurred", - { error: "net::ERR_FILE_NOT_FOUND", - frameId: 1, - tabId: 0, - timeStamp: 0, - url: getURL('iframeFail/c.html') }]]); - chrome.tabs.update(tabId, { url: getURL('iframeFail/a.html') }); - }, - ]); -}); -</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/openTab/a.html b/chrome/test/data/extensions/api_test/webnavigation/openTab/a.html index fedfc5f..fedfc5f 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/openTab/a.html +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/a.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/openTab/b.html b/chrome/test/data/extensions/api_test/webnavigation/openTab/b.html index 18ecdcb..18ecdcb 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/openTab/b.html +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/b.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/openTab/c.html b/chrome/test/data/extensions/api_test/webnavigation/openTab/c.html index 369838e..369838e 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/openTab/c.html +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/c.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/openTab/framework.js b/chrome/test/data/extensions/api_test/webnavigation/openTab/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/openTab/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/openTab/manifest.json new file mode 100644 index 0000000..c04d232 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "navigation1", + "version": "1.0", + "description": "Tests the webNavigation API events (part 1).", + "permissions": ["experimental", "tabs"], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/openTab/test.html b/chrome/test/data/extensions/api_test/webnavigation/openTab/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/openTab/tests.js b/chrome/test/data/extensions/api_test/webnavigation/openTab/tests.js new file mode 100644 index 0000000..9e3848c --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/openTab/tests.js @@ -0,0 +1,145 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + + chrome.test.runTests([ + // Opens a new tab from javascript. + function openTab() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onBeforeRetarget", + { sourceTabId: 0, + sourceUrl: getURL('a.html'), + targetUrl: getURL('b.html'), + timeStamp: 0 }], + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 1, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 1, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 1, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 1, + timeStamp: 0, + url: getURL('b.html') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + + // Opens a new tab from javascript within an iframe. + function openTabFrame() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('c.html') }], + [ "onBeforeNavigate", + { frameId: 1, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onCommitted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "auto_subframe", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 1, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('c.html') }], + [ "onBeforeRetarget", + { sourceTabId: 0, + sourceUrl: getURL('a.html'), + targetUrl: getURL('b.html'), + timeStamp: 0 }], + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 1, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 1, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('b.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 1, + timeStamp: 0, + url: getURL('b.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 1, + timeStamp: 0, + url: getURL('b.html') }]]); + chrome.tabs.update(tabId, { url: getURL('c.html') }); + }, + ]); + }); +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/a.html b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/a.html new file mode 100644 index 0000000..17edd07 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/a.html @@ -0,0 +1,3 @@ +<script> + window.setTimeout('document.location = "a.html#anchor";', 500); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/framework.js b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/manifest.json new file mode 100644 index 0000000..c04d232 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "navigation1", + "version": "1.0", + "description": "Tests the webNavigation API events (part 1).", + "permissions": ["experimental", "tabs"], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/test.html b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/tests.js b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/tests.js new file mode 100644 index 0000000..c2571d35 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/referenceFragment/tests.js @@ -0,0 +1,60 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + + chrome.test.runTests([ + // Reference fragment navigation. + function referenceFragment() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html#anchor') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "client_redirect", + transitionType: "link", + url: getURL('a.html#anchor') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html#anchor') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html#anchor') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + ]); + }); +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/navigation1/simpleLoad/a.html b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/a.html index 18ecdcb..18ecdcb 100644 --- a/chrome/test/data/extensions/api_test/webnavigation/navigation1/simpleLoad/a.html +++ b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/a.html diff --git a/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/framework.js b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/framework.js new file mode 100644 index 0000000..60f574a --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/framework.js @@ -0,0 +1,80 @@ +var expectedEventData; +var capturedEventData; +var nextFrameId; +var frameIds; +var nextTabId; +var tabIds; + +function expect(data) { + expectedEventData = data; + capturedEventData = []; + nextFrameId = 1; + frameIds = {}; + nextTabId = 0; + tabIds = {}; +} + +function checkExpectations() { + if (capturedEventData.length < expectedEventData.length) { + return; + } + chrome.test.assertEq(JSON.stringify(expectedEventData), + JSON.stringify(capturedEventData)); + chrome.test.succeed(); +} + +function captureEvent(name, details) { + // normalize details. + if ('timeStamp' in details) { + details.timeStamp = 0; + } + if (('frameId' in details) && (details.frameId != 0)) { + if (frameIds[details.frameId] === undefined) { + frameIds[details.frameId] = nextFrameId++; + } + details.frameId = frameIds[details.frameId]; + } + if ('tabId' in details) { + if (tabIds[details.tabId] === undefined) { + tabIds[details.tabId] = nextTabId++; + } + details.tabId = tabIds[details.tabId]; + } + if ('sourceTabId' in details) { + if (tabIds[details.sourceTabId] === undefined) { + tabIds[details.sourceTabId] = nextTabId++; + } + details.sourceTabId = tabIds[details.sourceTabId]; + } + capturedEventData.push([name, details]); + checkExpectations(); +} + +chrome.experimental.webNavigation.onBeforeNavigate.addListener( + function(details) { + captureEvent("onBeforeNavigate", details); +}); + +chrome.experimental.webNavigation.onCommitted.addListener(function(details) { + captureEvent("onCommitted", details); +}); + +chrome.experimental.webNavigation.onDOMContentLoaded.addListener( + function(details) { + captureEvent("onDOMContentLoaded", details); +}); + +chrome.experimental.webNavigation.onCompleted.addListener( + function(details) { + captureEvent("onCompleted", details); +}); + +chrome.experimental.webNavigation.onBeforeRetarget.addListener( + function(details) { + captureEvent("onBeforeRetarget", details); +}); + +chrome.experimental.webNavigation.onErrorOccurred.addListener( + function(details) { + captureEvent("onErrorOccurred", details); +}); diff --git a/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/manifest.json b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/manifest.json new file mode 100644 index 0000000..c04d232 --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "navigation1", + "version": "1.0", + "description": "Tests the webNavigation API events (part 1).", + "permissions": ["experimental", "tabs"], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/test.html b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/test.html new file mode 100644 index 0000000..a03fe7d --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/test.html @@ -0,0 +1,5 @@ +<script src="tests.js"></script> +<script src="framework.js"></script> +<script> + runTests(); +</script> diff --git a/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/tests.js b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/tests.js new file mode 100644 index 0000000..88c6cdb --- /dev/null +++ b/chrome/test/data/extensions/api_test/webnavigation/simpleLoad/tests.js @@ -0,0 +1,37 @@ +function runTests() { + var getURL = chrome.extension.getURL; + chrome.tabs.getSelected(null, function(tab) { + var tabId = tab.id; + + chrome.test.runTests([ + // Navigates to an URL. + function simpleLoad() { + expect([ + [ "onBeforeNavigate", + { frameId: 0, + requestId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCommitted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + transitionQualifiers: "", + transitionType: "link", + url: getURL('a.html') }], + [ "onDOMContentLoaded", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }], + [ "onCompleted", + { frameId: 0, + tabId: 0, + timeStamp: 0, + url: getURL('a.html') }]]); + chrome.tabs.update(tabId, { url: getURL('a.html') }); + }, + ]); + }); +} |