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

Unified Diff: chrome/test/data/extensions/api_test/incognito/split/background.js

Issue 8758008: Move another block 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/incognito/split/background.js
===================================================================
--- chrome/test/data/extensions/api_test/incognito/split/background.js (revision 0)
+++ chrome/test/data/extensions/api_test/incognito/split/background.js (revision 0)
@@ -0,0 +1,156 @@
+// 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 pass = chrome.test.callbackPass;
+var assertEq = chrome.test.assertEq;
+var assertTrue = chrome.test.assertTrue;
+
+var win, tab;
+var inIncognitoContext = chrome.extension.inIncognitoContext;
+
+// Lifted from the bookmarks api_test.
+function compareNode(left, right) {
+ //chrome.test.log("compareNode()");
+ //chrome.test.log(JSON.stringify(left, null, 2));
+ //chrome.test.log(JSON.stringify(right, null, 2));
+ // TODO(erikkay): do some comparison of dateAdded
+ if (left.id != right.id)
+ return "id mismatch: " + left.id + " != " + right.id;
+ if (left.title != right.title) {
+ // TODO(erikkay): This resource dependency still isn't working reliably.
+ // See bug 19866.
+ // return "title mismatch: " + left.title + " != " + right.title;
+ chrome.test.log("title mismatch: " + left.title + " != " + right.title);
+ }
+ if (left.url != right.url)
+ return "url mismatch: " + left.url + " != " + right.url;
+ if (left.index != right.index)
+ return "index mismatch: " + left.index + " != " + right.index;
+ return true;
+}
+
+// Listen to some events to make sure we don't get events from the other
+// profile.
+
+chrome.tabs.onUpdated.addListener(function(id, info, tab) {
+ if (inIncognitoContext != tab.incognito) {
+ chrome.test.notifyFail(
+ "[FAIL] Split-mode incognito test received an event for " +
+ (tab.incognito ? "an incognito" : "a normal") +
+ " tab in the wrong profile.");
+ }
+});
+
+chrome.extension.onRequest.addListener(
+ function(request, sender, sendResponse) {
+ if (inIncognitoContext != sender.tab.incognito) {
+ chrome.test.notifyFail(
+ "[FAIL] Split-mode incognito test received a message from " +
+ (sender.tab.incognito ? "an incognito" : "a normal") +
+ " tab in the wrong profile.");
+ }
+});
+
+chrome.test.getConfig(function(config) {
+ chrome.test.runTests([
+ function setupWindows() {
+ // The test harness should have set us up with 2 windows: 1 incognito
+ // and 1 regular. Since we are in split mode, we should only see the
+ // window for our profile.
+ chrome.windows.getAll({populate: true}, pass(function(windows) {
+ assertEq(1, windows.length);
+
+ win = windows[0];
+ tab = win.tabs[0];
+ assertEq(inIncognitoContext, win.incognito);
+ }));
+ },
+
+ // Tests that we can update an incognito tab and get the event for it.
+ function tabUpdate() {
+ var newUrl = "about:blank";
+
+ // Prepare the event listeners first.
+ var done = chrome.test.listenForever(chrome.tabs.onUpdated,
+ function(id, info, tab) {
+ assertEq(tab.id, id);
+ assertEq(inIncognitoContext, tab.incognito);
+ assertEq(newUrl, tab.url);
+ if (info.status == "complete")
+ done();
+ });
+
+ // Update our tab.
+ chrome.tabs.update(tab.id, {"url": newUrl}, pass());
+ },
+
+ // Tests content script injection to verify that the script can tell its
+ // in incongnito.
+ function contentScriptTestIncognito() {
+ var testUrl = "http://localhost:PORT/files/extensions/test_file.html"
+ .replace(/PORT/, config.testServer.port);
+
+ // Test that chrome.extension.inIncognitoContext is true for incognito
+ // tabs.
+ chrome.tabs.create({windowId: win.id, url: testUrl},
+ pass(function(tab) {
+ chrome.tabs.executeScript(tab.id,
+ {code: 'chrome.extension.sendRequest({' +
+ ' inIncognitoContext: chrome.extension.inIncognitoContext' +
+ '});'},
+ pass(function() {
+ assertEq(undefined, chrome.extension.lastError);
+ }));
+ }));
+
+ var done = chrome.test.listenForever(chrome.extension.onRequest,
+ function(request, sender, sendResponse) {
+ assertEq(inIncognitoContext, request.inIncognitoContext);
+ sendResponse();
+ done();
+ });
+ },
+
+ // Tests that we can receive bookmarks events in both extension processes.
+ function bookmarkCreate() {
+ // Each process will create 1 bookmark, but expects to see updates from
+ // the other process.
+ var nodeNormal = {parentId:"1", title:"normal", url:"http://google.com/"};
+ var nodeIncog = {parentId:"1", title:"incog", url:"http://google.com/"};
+ var node = inIncognitoContext ? nodeIncog : nodeNormal;
+ var count = 0;
+ var done = chrome.test.listenForever(chrome.bookmarks.onCreated,
+ function(id, created) {
+ node = (created.title == nodeNormal.title) ? nodeNormal : nodeIncog;
+ node.id = created.id;
+ node.index = created.index;
+ chrome.test.assertEq(id, node.id);
+ chrome.test.assertTrue(compareNode(node, created));
+ if (++count == 2) {
+ chrome.test.log("Bookmarks created. Incognito=" +
+ inIncognitoContext);
+ done();
+ }
+ });
+ var message =
+ inIncognitoContext ? "waiting_incognito" : "waiting";
+ chrome.test.sendMessage(message, pass(function() {
+ chrome.bookmarks.create(node, pass(function(results) {
+ node.id = results.id; // since we couldn't know this going in
+ node.index = results.index;
+ chrome.test.assertTrue(compareNode(node, results),
+ "created node != source");
+ }));
+ }));
+ },
+
+ // Tests that we can set cookies in both processes.
+ function setDocumentCookie() {
+ document.cookie = "k=v";
+ chrome.test.assertTrue(document.cookie.indexOf("k=v") != -1);
+ chrome.test.succeed();
+ }
+ ]);
+
+});

Powered by Google App Engine
This is Rietveld 408576698