Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5694)

Unified Diff: chrome/test/data/extensions/api_test/tabs/basics/pinned.js

Issue 8762014: Move another set of extension tests to manifest_version 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/tabs/basics/pinned.js
===================================================================
--- chrome/test/data/extensions/api_test/tabs/basics/pinned.js (revision 0)
+++ chrome/test/data/extensions/api_test/tabs/basics/pinned.js (revision 0)
@@ -0,0 +1,85 @@
+// 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;
+
+chrome.test.runTests([
+ function setupWindow() {
+ createWindow(["about:blank", "chrome://newtab/", pageUrl("a")], {},
+ pass(function(winId, tabIds) {
+ firstWindowId = winId;
+ }));
+ },
+
+ function createPinned() {
+ var winOptions = {"windowId": firstWindowId, "pinned": true};
+ var onUpdatedCompleted = chrome.test.listenForever(
+ chrome.tabs.onUpdated,
+ function(tabId, changeInfo, tab) {
+ if ('pinned' in changeInfo) {
+ assertEq(false, changeInfo.pinned);
+ assertEq(false, tab.pinned);
+ onUpdatedCompleted();
+ }
+ }
+ );
+ chrome.tabs.create(winOptions, pass(function(tab) {
+ assertEq(true, tab.pinned);
+ chrome.tabs.update(tab.id, {"pinned":false}, pass(function() {
+ // Leave a clean slate for the next test.
+ chrome.tabs.remove(tab.id);
+ }));
+ }));
+ },
+
+ function updatePinned() {
+ // A helper function that (un)pins a tab and verifies that both the callback
+ // and the chrome.tabs.onUpdated event listeners are called.
+ var pinTab = function(id, pinnedState, callback) {
+ var onUpdatedCompleted = chrome.test.listenForever(
+ chrome.tabs.onUpdated,
+ function(tabId, changeInfo, tab) {
+ if ('pinned' in changeInfo) {
+ assertEq(tabId, id);
+ assertEq(pinnedState, tab.pinned);
+ onUpdatedCompleted();
+ if (callback)
+ callback(tab);
+ }
+ }
+ );
+ chrome.tabs.update(id, { "pinned": pinnedState }, pass(function(tab) {
+ assertEq(pinnedState, tab.pinned);
+ }));
+ };
+
+ // We pin and unpin these tabs because the TabStripModelObserver used to
+ // have multiple notification code paths depending on the tab moves as a
+ // result of being pinned or unpinned.
+ // This works as follows:
+ // 1. Pin first tab (does not move, pinning)
+ // 2. Pin 3rd tab (moves to 2nd tab, pinning)
+ // 3. Unpin 1st tab (moves to 2nd tab, unpinning)
+ // 4. Unpin (new) 1st tab (does not move. unpinning)
+ chrome.tabs.getAllInWindow(firstWindowId,
+ pass(function(tabs) {
+ assertEq(tabs.length, 3);
+ for (var i = 0; i < tabs.length; i++)
+ assertEq(false, tabs[i].pinned);
+
+ pinTab(tabs[0].id, true, function(tab) {
+ assertEq(tabs[0].index, tab.index);
+ pinTab(tabs[2].id, true, function(tab) {
+ assertEq(1, tab.index);
+ pinTab(tabs[0].id, false, function(tab) {
+ assertEq(1, tab.index);
+ pinTab(tabs[2].id, false, function (tab) {
+ assertEq(0, tab.index);
+ });
+ });
+ });
+ });
+ }));
+ }
+]);

Powered by Google App Engine
This is Rietveld 408576698