summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-27 01:56:38 +0000
committermihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-27 01:56:38 +0000
commit54edcea75724b0cf2d883768c247ac448f2b408e (patch)
treecea214954500c7670cfea9962975f55e974636fc
parentbd7f7c2253054db0a01f7004459964bd07ac55bb (diff)
downloadchromium_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
-rw-r--r--chrome/browser/extensions/window_open_apitest.cc4
-rw-r--r--chrome/test/data/extensions/api_test/window_open/opener/check-opener.html3
-rw-r--r--chrome/test/data/extensions/api_test/window_open/opener/manifest.json7
-rw-r--r--chrome/test/data/extensions/api_test/window_open/opener/set-name.html4
-rw-r--r--chrome/test/data/extensions/api_test/window_open/opener/test.html42
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>