| Index: chrome/test/data/extensions/api_test/app_background_page/no_js/test.js
|
| ===================================================================
|
| --- chrome/test/data/extensions/api_test/app_background_page/no_js/test.js (revision 131819)
|
| +++ chrome/test/data/extensions/api_test/app_background_page/no_js/test.js (working copy)
|
| @@ -7,9 +7,14 @@
|
| // AppBackgroundPageApiTest.NoJsBackgroundPage code).
|
| // - The return value of the window.open call is null (since the background
|
| // page is not scriptable)
|
| +// - Attempts to call window.open(...., "background") again will not result in
|
| +// existing background page being closed and a new one being re-opened.
|
|
|
| var pagePrefix =
|
| 'http://a.com:PORT/files/extensions/api_test/app_background_page/no_js';
|
| +var launchUrl;
|
| +var launchTabId;
|
| +var backgroundPageLoaded = false;
|
|
|
| // Dispatch "tunneled" functions from the live web pages to this testing page.
|
| chrome.extension.onRequest.addListener(function(request) {
|
| @@ -33,9 +38,13 @@
|
| // config is requested before onload, then sometimes onload has already
|
| // fired by the time chrome.test.getConfig()'s callback runs.
|
| chrome.test.getConfig(function(config) {
|
| - var launchUrl =
|
| + launchUrl =
|
| pagePrefix.replace(/PORT/, config.testServer.port) + '/launch.html';
|
| - chrome.tabs.create({ 'url': launchUrl });
|
| + chrome.tabs.create(
|
| + {url: launchUrl},
|
| + function(tab) {
|
| + launchTabId = tab.id;
|
| + });
|
| });
|
| }
|
|
|
| @@ -44,5 +53,25 @@
|
| }
|
|
|
| function onBackgroundPageLoaded() {
|
| - chrome.test.notifyPass();
|
| + if (backgroundPageLoaded) {
|
| + chrome.test.notifyFail('Background page loaded more than once.');
|
| + return;
|
| + }
|
| +
|
| + backgroundPageLoaded = true;
|
| +
|
| + // Close the existing page and re-open it, which will try to call
|
| + // window.open(..., "background") again.
|
| + chrome.tabs.remove(
|
| + launchTabId,
|
| + function() {
|
| + chrome.tabs.create(
|
| + {url: launchUrl },
|
| + function(tab) {
|
| + // We wait for a bit before declaring the test as passed, since
|
| + // it might take a while for the additional background contents
|
| + // to be recreated.
|
| + setTimeout(chrome.test.notifyPass, 2000);
|
| + });
|
| + });
|
| }
|
|
|