| Index: chrome/test/data/extensions/api_test/tabs/basics/move.js
|
| ===================================================================
|
| --- chrome/test/data/extensions/api_test/tabs/basics/move.js (revision 0)
|
| +++ chrome/test/data/extensions/api_test/tabs/basics/move.js (revision 0)
|
| @@ -0,0 +1,128 @@
|
| +// 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.
|
| +
|
| +var firstWindowId;
|
| +var secondWindowId;
|
| +var moveTabIds = {};
|
| +
|
| +chrome.test.runTests([
|
| + // Do a series of moves and removes so that we get the following
|
| + //
|
| + // Before:
|
| + // Window1: (newtab),a,b,c,d,e
|
| + // Window2: (newtab)
|
| + //
|
| + // After:
|
| + // Window1: (newtab),a
|
| + // Window2: b,(newtab)
|
| + function setupLetterPages() {
|
| + var pages = ["chrome://newtab/", pageUrl('a'), pageUrl('b'),
|
| + pageUrl('c'), pageUrl('d'), pageUrl('e')];
|
| + createWindow(pages, {}, pass(function(winId, tabIds) {
|
| + firstWindowId = winId;
|
| + moveTabIds['a'] = tabIds[1];
|
| + moveTabIds['b'] = tabIds[2];
|
| + moveTabIds['c'] = tabIds[3];
|
| + moveTabIds['d'] = tabIds[4];
|
| + moveTabIds['e'] = tabIds[5];
|
| + createWindow(["chrome://newtab/"], {}, pass(function(winId, tabIds) {
|
| + secondWindowId = winId;
|
| + }));
|
| + chrome.tabs.getAllInWindow(firstWindowId, pass(function(tabs) {
|
| + assertEq(pages.length, tabs.length);
|
| + for (var i in tabs) {
|
| + assertEq(pages[i], tabs[i].url);
|
| + }
|
| + }));
|
| + }));
|
| + },
|
| +
|
| + function move() {
|
| + // Check that the tab/window state is what we expect after doing moves.
|
| + function checkMoveResults() {
|
| + chrome.tabs.getAllInWindow(firstWindowId, pass(function(tabs) {
|
| + assertEq(4, tabs.length);
|
| + assertEq("chrome://newtab/", tabs[0].url);
|
| + assertEq(pageUrl("a"), tabs[1].url);
|
| + assertEq(pageUrl("e"), tabs[2].url);
|
| + assertEq(pageUrl("c"), tabs[3].url);
|
| +
|
| + chrome.tabs.getAllInWindow(secondWindowId, pass(function(tabs) {
|
| + assertEq(3, tabs.length);
|
| + assertEq(pageUrl("b"), tabs[0].url);
|
| + assertEq("chrome://newtab/", tabs[1].url);
|
| + assertEq(pageUrl("d"), tabs[2].url);
|
| + }));
|
| + }));
|
| + }
|
| +
|
| + chrome.tabs.move(moveTabIds['b'], {"windowId": secondWindowId, "index": 0},
|
| + pass(function(tabB) {
|
| + chrome.test.assertEq(0, tabB.index);
|
| + chrome.tabs.move(moveTabIds['e'], {"index": 2},
|
| + pass(function(tabE) {
|
| + chrome.test.assertEq(2, tabE.index);
|
| + chrome.tabs.move(moveTabIds['d'], {"windowId": secondWindowId,
|
| + "index": 2}, pass(function(tabD) {
|
| + chrome.test.assertEq(2, tabD.index);
|
| + checkMoveResults();
|
| + }));
|
| + }));
|
| + }));
|
| + },
|
| +
|
| + function remove() {
|
| + chrome.tabs.remove(moveTabIds["d"], pass(function() {
|
| + chrome.tabs.getAllInWindow(secondWindowId,
|
| + pass(function(tabs) {
|
| + assertEq(2, tabs.length);
|
| + assertEq(pageUrl("b"), tabs[0].url);
|
| + assertEq("chrome://newtab/", tabs[1].url);
|
| + }));
|
| + }));
|
| + },
|
| +
|
| + function moveMultipleTabs() {
|
| + chrome.tabs.move([moveTabIds['e'], moveTabIds['c']],
|
| + {windowId: secondWindowId, index: 1},
|
| + pass(function(tabsA) {
|
| + assertEq(2, tabsA.length);
|
| + assertEq(secondWindowId, tabsA[0].windowId);
|
| + assertEq(pageUrl('e'), tabsA[0].url);
|
| + assertEq(1, tabsA[0].index);
|
| + assertEq(secondWindowId, tabsA[1].windowId);
|
| + assertEq(pageUrl('c'), tabsA[1].url);
|
| + assertEq(2, tabsA[1].index);
|
| + chrome.tabs.query({windowId: secondWindowId}, pass(function(tabsB) {
|
| + assertEq(4, tabsB.length);
|
| + }));
|
| + }));
|
| + },
|
| +
|
| + function removeMultipleTabs() {
|
| + chrome.tabs.remove([moveTabIds['e'], moveTabIds['c']], pass(function() {
|
| + chrome.tabs.query({windowId: secondWindowId}, pass(function(tabs) {
|
| + assertEq(2, tabs.length);
|
| + assertEq(pageUrl("b"), tabs[0].url);
|
| + assertEq("chrome://newtab/", tabs[1].url);
|
| + }));
|
| + }));
|
| + },
|
| +
|
| + // Make sure we don't crash when the index is out of range.
|
| + function moveToInvalidTab() {
|
| + var error_msg = "Invalid value for argument 2. Property 'index': " +
|
| + "Value must not be less than 0.";
|
| + try {
|
| + chrome.tabs.move(moveTabIds['b'], {index: -1}, function(tab) {
|
| + chrome.test.fail("Moved a tab to an invalid index");
|
| + });
|
| + } catch (e) {
|
| + assertEq(error_msg, e.message);
|
| + }
|
| + chrome.tabs.move(moveTabIds['b'], {index: 10000}, pass(function(tabB) {
|
| + assertEq(1, tabB.index);
|
| + }));
|
| + }
|
| +]);
|
|
|