diff options
author | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-27 01:56:38 +0000 |
---|---|---|
committer | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-27 01:56:38 +0000 |
commit | 54edcea75724b0cf2d883768c247ac448f2b408e (patch) | |
tree | cea214954500c7670cfea9962975f55e974636fc | |
parent | bd7f7c2253054db0a01f7004459964bd07ac55bb (diff) | |
download | chromium_src-54edcea75724b0cf2d883768c247ac448f2b408e.zip chromium_src-54edcea75724b0cf2d883768c247ac448f2b408e.tar.gz chromium_src-54edcea75724b0cf2d883768c247ac448f2b408e.tar.bz2 |
Add a test for the workaround for bug 89967.
BUG=89967
TEST=no
R=abarth@chromium.org
Review URL: http://codereview.chromium.org/7497024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94234 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed, 60 insertions, 0 deletions
diff --git a/chrome/browser/extensions/window_open_apitest.cc b/chrome/browser/extensions/window_open_apitest.cc index 44fbfc1..58c0346 100644 --- a/chrome/browser/extensions/window_open_apitest.cc +++ b/chrome/browser/extensions/window_open_apitest.cc @@ -171,3 +171,7 @@ class WindowOpenPanelTest : public ExtensionApiTest { IN_PROC_BROWSER_TEST_F(WindowOpenPanelTest, WindowOpenPanel) { ASSERT_TRUE(RunExtensionTest("window_open/panel")) << message_; } + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, WindowOpener) { + ASSERT_TRUE(RunExtensionTest("window_open/opener")) << message_; +} diff --git a/chrome/test/data/extensions/api_test/window_open/opener/check-opener.html b/chrome/test/data/extensions/api_test/window_open/opener/check-opener.html new file mode 100644 index 0000000..67b0bb5 --- /dev/null +++ b/chrome/test/data/extensions/api_test/window_open/opener/check-opener.html @@ -0,0 +1,3 @@ +<script> +chrome.extension.getBackgroundPage().onCheckOpenerLoaded(window); +</script> diff --git a/chrome/test/data/extensions/api_test/window_open/opener/manifest.json b/chrome/test/data/extensions/api_test/window_open/opener/manifest.json new file mode 100644 index 0000000..8216af6 --- /dev/null +++ b/chrome/test/data/extensions/api_test/window_open/opener/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "chrome.windows.create() and window.opener behavior", + "version": "0.1", + "description": "Tests the window.opener property can be preserved with certain combinations of chrome.windows.create and window.open.", + "background_page": "test.html", + "permissions": ["tabs"] +} diff --git a/chrome/test/data/extensions/api_test/window_open/opener/set-name.html b/chrome/test/data/extensions/api_test/window_open/opener/set-name.html new file mode 100644 index 0000000..44d7314 --- /dev/null +++ b/chrome/test/data/extensions/api_test/window_open/opener/set-name.html @@ -0,0 +1,4 @@ +<script> +window.name = 'target-window'; +chrome.extension.getBackgroundPage().onSetNameLoaded(window); +</script> diff --git a/chrome/test/data/extensions/api_test/window_open/opener/test.html b/chrome/test/data/extensions/api_test/window_open/opener/test.html new file mode 100644 index 0000000..9e25ec6 --- /dev/null +++ b/chrome/test/data/extensions/api_test/window_open/opener/test.html @@ -0,0 +1,42 @@ +<script> +chrome.test.runTests([ + // Tests that even though window.opener is not set when using + // chrome.windows.create directly, the same effect can be achieved by creating + // a window, giving it a name, and then targetting that window via + // window.open(). + function checkOpener() { + // Make sure that we wait for the load callbacks to fire. + var testCompleted = chrome.test.callbackAdded(); + var testWindowId; + + window.onSetNameLoaded = function(testWindow) { + // It's not technically required for window.opener to be null when using + // chrome.windows.create, but that is the current expected behavior (and + // the reason why the window.name/open() workaround is necessary). + chrome.test.assertTrue(testWindow.opener == null); + window.open('check-opener.html', 'target-window'); + }; + + window.onCheckOpenerLoaded = function(testWindow) { + // The opener should now be set... + chrome.test.assertTrue(testWindow.opener != null); + // ...and the test window should only have one tab (because it was + // targetted via the "target-window" name). + chrome.tabs.getAllInWindow( + testWindowId, + chrome.test.callbackPass(function(tabs) { + chrome.test.assertEq(1, tabs.length); + chrome.test.assertEq( + chrome.extension.getURL('check-opener.html'), tabs[0].url); + testCompleted(); + })); + }; + + chrome.windows.create( + {'url': 'set-name.html'}, + chrome.test.callbackPass(function(win) { + testWindowId = win.id; + })); + } +]); +</script> |