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

Unified Diff: chrome/test/data/extensions/api_test/messaging/connect/test.js

Issue 8763008: Move yet another block of 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/messaging/connect/test.js
===================================================================
--- chrome/test/data/extensions/api_test/messaging/connect/test.js (revision 0)
+++ chrome/test/data/extensions/api_test/messaging/connect/test.js (revision 0)
@@ -0,0 +1,170 @@
+// 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.
+
+JSON.parse = function() {
+ return "JSON.parse clobbered by extension.";
+};
+
+JSON.stringify = function() {
+ return "JSON.stringify clobbered by extension.";
+};
+
+Array.prototype.toJSON = function() {
+ return "Array.prototype.toJSON clobbered by extension.";
+};
+
+Object.prototype.toJSON = function() {
+ return "Object.prototype.toJSON clobbered by extension.";
+};
+
+// Keep track of the tab that we're running tests in, for simplicity.
+var testTab = null;
+
+chrome.test.getConfig(function(config) {
+ chrome.test.runTests([
+ function setupTestTab() {
+ chrome.test.log("Creating tab...");
+ chrome.tabs.create({
+ url: "http://localhost:PORT/files/extensions/test_file.html"
+ .replace(/PORT/, config.testServer.port)
+ }, function(tab) {
+ chrome.tabs.onUpdated.addListener(function listener(tabid, info) {
+ if (tab.id == tabid && info.status == 'complete') {
+ chrome.test.log("Created tab: " + tab.url);
+ chrome.tabs.onUpdated.removeListener(listener);
+ testTab = tab;
+ chrome.test.succeed();
+ }
+ });
+ });
+ },
+
+ // Tests that postMessage to the tab and its response works.
+ function postMessage() {
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testPostMessage: true});
+ port.onMessage.addListener(function(msg) {
+ port.disconnect();
+ chrome.test.succeed();
+ });
+ },
+
+ // Tests that port name is sent & received correctly.
+ function portName() {
+ var portName = "lemonjello";
+ var port = chrome.tabs.connect(testTab.id, {name: portName});
+ port.postMessage({testPortName: true});
+ port.onMessage.addListener(function(msg) {
+ chrome.test.assertEq(msg.portName, portName);
+ port.disconnect();
+ chrome.test.succeed();
+ });
+ },
+
+ // Tests that postMessage from the tab and its response works.
+ function postMessageFromTab() {
+ chrome.extension.onConnect.addListener(function(port) {
+ port.onMessage.addListener(function(msg) {
+ chrome.test.assertTrue(msg.testPostMessageFromTab);
+ port.postMessage({success: true, portName: port.name});
+ chrome.test.log("postMessageFromTab: got message from tab");
+ });
+ });
+
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testPostMessageFromTab: true});
+ chrome.test.log("postMessageFromTab: sent first message to tab");
+ port.onMessage.addListener(function(msg) {
+ port.disconnect();
+ chrome.test.succeed();
+ });
+ },
+
+ // Tests receiving a request from a content script and responding.
+ function sendRequestFromTab() {
+ var doneListening = chrome.test.listenForever(
+ chrome.extension.onRequest,
+ function(request, sender, sendResponse) {
+ chrome.test.assertTrue("url" in sender.tab, "no tab available.");
+ chrome.test.assertEq(sender.id, location.host);
+ if (request.step == 1) {
+ // Step 1: Page should send another request for step 2.
+ chrome.test.log("sendRequestFromTab: got step 1");
+ sendResponse({nextStep: true});
+ } else {
+ // Step 2.
+ chrome.test.assertEq(request.step, 2);
+ sendResponse();
+ doneListening();
+ }
+ });
+
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testSendRequestFromTab: true});
+ port.disconnect();
+ chrome.test.log("sendRequestFromTab: sent first message to tab");
+ },
+
+ // Tests error handling when sending a request from a content script to an
+ // invalid extension.
+ function sendRequestFromTabError() {
+ chrome.test.listenOnce(
+ chrome.extension.onRequest,
+ function(request, sender, sendResponse) {
+ if (!request.success)
+ chrome.test.fail();
+ }
+ );
+
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testSendRequestFromTabError: true});
+ port.disconnect();
+ chrome.test.log("testSendRequestFromTabError: send 1st message to tab");
+ },
+
+ // Tests error handling when connecting to an invalid extension from a
+ // content script.
+ function connectFromTabError() {
+ chrome.test.listenOnce(
+ chrome.extension.onRequest,
+ function(request, sender, sendResponse) {
+ if (!request.success)
+ chrome.test.fail();
+ }
+ );
+
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testConnectFromTabError: true});
+ port.disconnect();
+ chrome.test.log("testConnectFromTabError: sent 1st message to tab");
+ },
+
+ // Tests sending a request to a tab and receiving a response.
+ function sendRequest() {
+ chrome.tabs.sendRequest(testTab.id, {step2: 1}, function(response) {
+ chrome.test.assertTrue(response.success);
+ chrome.test.succeed();
+ });
+ },
+
+ // Tests that we get the disconnect event when the tab disconnect.
+ function disconnect() {
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testDisconnect: true});
+ port.onDisconnect.addListener(function() {
+ chrome.test.succeed();
+ });
+ },
+
+ // Tests that we get the disconnect event when the tab context closes.
+ function disconnectOnClose() {
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testDisconnectOnClose: true});
+ port.onDisconnect.addListener(function() {
+ chrome.test.succeed();
+ testTab = null; // the tab is about:blank now.
+ });
+ },
+ ]);
+});

Powered by Google App Engine
This is Rietveld 408576698