Index: chrome/test/data/extensions/api_test/window_open/opener/test.js |
=================================================================== |
--- chrome/test/data/extensions/api_test/window_open/opener/test.js (revision 0) |
+++ chrome/test/data/extensions/api_test/window_open/opener/test.js (revision 0) |
@@ -0,0 +1,44 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+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; |
+ })); |
+ } |
+]); |