| // Copyright 2011 The Chromium Authors |
| // 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 fail = chrome.test.callbackFail; |
| var assertEq = chrome.test.assertEq; |
| var assertTrue = chrome.test.assertTrue; |
| var relativePath = |
| '/extensions/api_test/executescript/basic/test_executescript.html'; |
| var testUrl = 'http://a.com:PORT' + relativePath; |
| var testFailureUrl = 'http://b.com:PORT' + relativePath; |
| var firstEnter = true; |
| |
| chrome.test.getConfig(function(config) { |
| testUrl = testUrl.replace(/PORT/, config.testServer.port); |
| testFailureUrl = testFailureUrl.replace(/PORT/, config.testServer.port); |
| |
| chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { |
| if (changeInfo.status != 'complete') |
| return; |
| if (!firstEnter) { |
| return; |
| } |
| firstEnter = false; |
| |
| chrome.test.runTests([ |
| |
| function executeJavaScriptCodeShouldSucceed() { |
| var script_file = {}; |
| script_file.code = "document.title = 'executeScript';"; |
| chrome.tabs.executeScript(tabId, script_file, function() { |
| chrome.tabs.get(tabId, pass(function(tab) { |
| assertEq('executeScript', tab.title); |
| })); |
| }); |
| }, |
| |
| function executeJavaScriptFileShouldSucceed() { |
| var script_file = {}; |
| script_file.file = 'script1.js'; |
| chrome.tabs.executeScript(tabId, script_file, function() { |
| chrome.tabs.get(tabId, pass(function(tab) { |
| assertEq('executeScript1', tab.title); |
| })); |
| }); |
| }, |
| |
| function insertCSSTextShouldSucceed() { |
| var css_file = {}; |
| css_file.code = "p {display:none;}"; |
| chrome.tabs.insertCSS(tabId, css_file, function() { |
| var script_file = {}; |
| script_file.file = 'script3.js'; |
| chrome.tabs.executeScript(tabId, script_file, function() { |
| chrome.tabs.get(tabId, pass(function(tab) { |
| assertEq('none', tab.title); |
| })); |
| }); |
| }); |
| }, |
| |
| function insertCSSFileShouldSucceed() { |
| var css_file = {}; |
| css_file.file = '1.css'; |
| chrome.tabs.insertCSS(tabId, css_file, function() { |
| var script_file = {}; |
| script_file.file = 'script2.js'; |
| chrome.tabs.executeScript(tabId, script_file, function() { |
| chrome.tabs.get(tabId, pass(function(tab) { |
| assertEq('block', tab.title); |
| })); |
| }); |
| }); |
| }, |
| |
| function insertCSSTextShouldNotAffectDOM() { |
| chrome.tabs.insertCSS(tabId, {code: 'p {display: none}'}, function() { |
| chrome.tabs.executeScript( |
| tabId, |
| {code: 'document.title = document.styleSheets.length'}, |
| function() { |
| chrome.tabs.get(tabId, pass(function(tab) { |
| assertEq('0', tab.title); |
| })); |
| }); |
| }); |
| }, |
| |
| function executeJavaScriptCodeShouldFail() { |
| var doneListening = |
| chrome.test.listenForever(chrome.tabs.onUpdated, onUpdated); |
| chrome.tabs.update(tabId, {url: testFailureUrl}); |
| |
| function onUpdated(updatedTabId, changeInfo, tab) { |
| if (updatedTabId !== tabId || tab.status != 'complete' || |
| tab.url != testFailureUrl) |
| return; |
| var script_file = {}; |
| script_file.code = "document.title = 'executeScript';"; |
| // The error message should contain the URL of the site for which it |
| // failed because the extension has the tabs permission. |
| chrome.tabs.executeScript(tabId, script_file, fail( |
| 'Cannot access contents of url "' + testFailureUrl + |
| '". Extension manifest must request permission to access this ' + |
| 'host.')); |
| doneListening(); |
| } |
| }, |
| |
| function executeJavaScriptWithNoneValueShouldFail() { |
| var script_file = {}; |
| chrome.tabs.executeScript(tabId, script_file, fail( |
| 'No source code or file specified.')); |
| }, |
| |
| function executeJavaScriptWithTwoValuesShouldFail() { |
| var script_file = {}; |
| script_file.file = 'script1.js'; |
| script_file.code = 'var test = 1;'; |
| chrome.tabs.executeScript(tabId, script_file, fail( |
| 'Code and file should not be specified ' + |
| 'at the same time in the second argument.')); |
| } |
| ]); |
| }); |
| |
| chrome.tabs.create({ url: testUrl }); |
| }); |