| Index: chrome/test/data/extensions/api_test/activity_log_private/friend/reply.js
|
| diff --git a/chrome/test/data/extensions/api_test/activity_log_private/friend/reply.js b/chrome/test/data/extensions/api_test/activity_log_private/friend/reply.js
|
| index 7b1168b6a5e71246eab5e060367ab141964b259f..0c843ba66424bbf16524843e1790dd1445a08ed7 100644
|
| --- a/chrome/test/data/extensions/api_test/activity_log_private/friend/reply.js
|
| +++ b/chrome/test/data/extensions/api_test/activity_log_private/friend/reply.js
|
| @@ -4,7 +4,6 @@
|
|
|
| var defaultUrl = 'http://www.google.com';
|
|
|
| -
|
| // Utility function to open a URL in a new tab. If the useIncognito global is
|
| // true, the URL is opened in a new incognito window, otherwise it is opened in
|
| // a new tab in the current window. Alternatively, whether to use incognito
|
| @@ -23,89 +22,62 @@ function openTab(url, incognito) {
|
|
|
| // Makes an API call.
|
| function makeApiCall() {
|
| + resetStatus();
|
| chrome.cookies.set({
|
| 'url': 'https://www.cnn.com',
|
| 'name': 'activity_log_test_cookie',
|
| 'value': 'abcdefg'
|
| });
|
| - setCompleted('makeApiCall');
|
| + appendCompleted('makeApiCall');
|
| }
|
|
|
| // Makes an API call that has a custom binding.
|
| function makeSpecialApiCalls() {
|
| + resetStatus();
|
| var url = chrome.extension.getURL('image/cat.jpg');
|
| var noparam = chrome.extension.getViews();
|
| - setCompleted('makeSpecialApiCalls');
|
| + appendCompleted('makeSpecialApiCalls');
|
| }
|
|
|
| // Checks that we don't double-log calls that go through setHandleRequest
|
| // *and* the ExtensionFunction machinery.
|
| function checkNoDoubleLogging() {
|
| + resetStatus();
|
| chrome.omnibox.setDefaultSuggestion({description: 'hello world'});
|
| - setCompleted('checkNoDoubleLogging');
|
| + appendCompleted('checkNoDoubleLogging');
|
| }
|
|
|
| // Check whether we log calls to chrome.app.*;
|
| function checkAppCalls() {
|
| + resetStatus();
|
| var callback = function() {};
|
| chrome.app.getDetails();
|
| var b = chrome.app.isInstalled;
|
| var c = chrome.app.installState(callback);
|
| - setCompleted('checkAppCalls');
|
| + appendCompleted('checkAppCalls');
|
| }
|
|
|
| // Makes an API call that the extension doesn't have permission for.
|
| // Don't add the management permission or this test won't test the code path.
|
| function makeBlockedApiCall() {
|
| + resetStatus();
|
| try {
|
| var allExtensions = chrome.management.getAll();
|
| } catch (err) { }
|
| - setCompleted('makeBlockedApiCall');
|
| + appendCompleted('makeBlockedApiCall');
|
| }
|
|
|
| -// Injects a content script.
|
| -function injectContentScript() {
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'file': 'google_cs.js'},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('injectContentScript');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| -
|
| -// Injects a blob of script into a page.
|
| -function injectScriptBlob() {
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': 'document.write("g o o g l e");'},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('injectScriptBlob');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| +function callObjectMethod() {
|
| + resetStatus();
|
| + var storageArea = chrome.storage.sync;
|
| + storageArea.clear();
|
| + appendCompleted('callObjectMethod');
|
| }
|
|
|
| // Modifies the headers sent and received in an HTTP request using the
|
| // webRequest API.
|
| function doWebRequestModifications() {
|
| + resetStatus();
|
| // Install a webRequest handler that will add an HTTP header to the outgoing
|
| // request for the main page.
|
| function doModifyHeaders(details) {
|
| @@ -149,49 +121,10 @@ function doWebRequestModifications() {
|
| if (changeInfo['status'] === 'complete' &&
|
| tab.url.match(/google\.com/g)) {
|
| chrome.webRequest.onBeforeSendHeaders.removeListener(doModifyHeaders);
|
| - // TODO(karenlees): you added this line in debugging, make sure it is
|
| - // really needed.
|
| chrome.webRequest.onHeadersReceived.removeListener(doModifyHeaders);
|
| chrome.tabs.onUpdated.removeListener(closeTab);
|
| chrome.tabs.remove(tabId);
|
| - setCompleted('doWebRequestModifications');
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| -
|
| -function getSetObjectProperties() {
|
| - chrome.tabs.onUpdated.addListener(
|
| - function getTabProperties(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - console.log(tab.id + ' ' + tab.index + ' ' + tab.url);
|
| - tab.index = 3333333333333333333;
|
| - chrome.tabs.onUpdated.removeListener(getTabProperties);
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('getSetObjectProperties');
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| -
|
| -function callObjectMethod() {
|
| - var storageArea = chrome.storage.sync;
|
| - storageArea.clear();
|
| - setCompleted('callObjectMethod()');
|
| -}
|
| -
|
| -function sendMessageToCS() {
|
| - chrome.tabs.onUpdated.addListener(
|
| - function messageCS(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.sendMessage(tabId, 'hellooooo!');
|
| - chrome.tabs.onUpdated.removeListener(messageCS);
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('sendMessageToCS');
|
| + appendCompleted('doWebRequestModifications');
|
| }
|
| }
|
| );
|
| @@ -199,37 +132,41 @@ function sendMessageToCS() {
|
| }
|
|
|
| function sendMessageToSelf() {
|
| + resetStatus();
|
| try {
|
| chrome.runtime.sendMessage('hello hello');
|
| - setCompleted('sendMessageToSelf');
|
| + appendCompleted('sendMessageToSelf');
|
| } catch (err) {
|
| setError(err + ' in function: sendMessageToSelf');
|
| }
|
| }
|
|
|
| function sendMessageToOther() {
|
| + resetStatus();
|
| try {
|
| chrome.runtime.sendMessage('ocacnieaapoflmkebkeaidpgfngocapl',
|
| 'knock knock',
|
| function response() {
|
| console.log("who's there?");
|
| + appendCompleted('sendMessageToOther');
|
| });
|
| - setCompleted('sendMessageToOther');
|
| } catch (err) {
|
| setError(err + ' in function: sendMessageToOther');
|
| }
|
| }
|
|
|
| function connectToOther() {
|
| + resetStatus();
|
| try {
|
| chrome.runtime.connect('ocacnieaapoflmkebkeaidpgfngocapl');
|
| - setCompleted('connectToOther');
|
| + appendCompleted('connectToOther');
|
| } catch (err) {
|
| setError(err + ' in function:connectToOther');
|
| }
|
| }
|
|
|
| function tabIdTranslation() {
|
| + resetStatus();
|
| var tabIds = [-1, -1];
|
|
|
| // Test the case of a single int
|
| @@ -238,7 +175,7 @@ function tabIdTranslation() {
|
| if (changeInfo['status'] === 'complete' &&
|
| tab.url.match(/google\.com/g)) {
|
| chrome.tabs.executeScript(
|
| - //tab.id,
|
| + tabId,
|
| {'file': 'google_cs.js'},
|
| function() {
|
| chrome.tabs.onUpdated.removeListener(testSingleInt);
|
| @@ -253,200 +190,46 @@ function tabIdTranslation() {
|
| chrome.tabs.onUpdated.addListener(
|
| function testArray(tabId, changeInfo, tab) {
|
| if (changeInfo['status'] === 'complete' && tab.url.match(/google\.be/g)) {
|
| - //chrome.tabs.move(tabId, {'index': -1});
|
| + chrome.tabs.move(tabId, {'index': -1});
|
| tabIds[1] = tabId;
|
| chrome.tabs.onUpdated.removeListener(testArray);
|
| chrome.tabs.remove(tabIds);
|
| - setCompleted('tabIdTranslation');
|
| - }
|
| - }
|
| - );
|
| -
|
| - openTab(defaultUrl);
|
| -}
|
| -
|
| -// DOM API TEST METHODS -- PUT YOUR TESTS BELOW HERE
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -
|
| -// Does an XHR from this [privileged] context.
|
| -function doBackgroundXHR() {
|
| - var request = new XMLHttpRequest();
|
| - request.open('POST', defaultUrl, false);
|
| - request.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
|
| - try {
|
| - request.send();
|
| - } catch (err) {
|
| - // doesn't matter if it works or not; should be recorded either way
|
| - }
|
| - setCompleted('doBackgroundXHR');
|
| -}
|
| -
|
| -// Does an XHR from inside a content script.
|
| -function doContentScriptXHR() {
|
| - var code = 'var request = new XMLHttpRequest(); ' +
|
| - 'request.open("POST", "http://www.cnn.com", false); ' +
|
| - 'request.setRequestHeader("Content-type", ' +
|
| - ' "text/plain;charset=UTF-8"); ' +
|
| - 'request.send(); ' +
|
| - 'document.write("sent an XHR");';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doContentScriptXHR');
|
| - });
|
| + appendCompleted('tabIdTranslation');
|
| }
|
| }
|
| );
|
| - openTab(defaultUrl);
|
| -}
|
|
|
| -// Accesses the Location object from inside a content script.
|
| -function doLocationAccess() {
|
| - var code = 'window.location = "http://www.google.com/#foo"; ' +
|
| - 'document.location = "http://www.google.com/#bar"; ' +
|
| - 'var loc = window.location; ' +
|
| - 'loc.assign("http://www.google.com/#fo"); ' +
|
| - 'loc.replace("http://www.google.com/#bar");';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doLocationAccess');
|
| - });
|
| - }
|
| - }
|
| - );
|
| openTab(defaultUrl);
|
| }
|
|
|
| -// Mutates the DOM tree from inside a content script.
|
| -function doDOMMutation1() {
|
| - var code = 'var d1 = document.createElement("div"); ' +
|
| - 'var d2 = document.createElement("div"); ' +
|
| - 'document.body.appendChild(d1); ' +
|
| - 'document.body.insertBefore(d2, d1); ' +
|
| - 'document.body.replaceChild(d1, d2);';
|
| +function executeApiCallsOnTabUpdated() {
|
| + resetStatus();
|
| chrome.tabs.onUpdated.addListener(
|
| function callback(tabId, changeInfo, tab) {
|
| if (changeInfo['status'] === 'complete' &&
|
| tab.url.match(/google\.com/g)) {
|
| chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doDOMMutation1');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
|
|
| -function doDOMMutation2() {
|
| - var code = 'document.write("Hello using document.write"); ' +
|
| - 'document.writeln("Hello using document.writeln"); ' +
|
| - 'document.body.innerHTML = "Hello using innerHTML";';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doDOMMutation2');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| -
|
| -// Accesses the HTML5 Navigator API from inside a content script.
|
| -function doNavigatorAPIAccess() {
|
| - var code = 'var geo = navigator.geolocation; ' +
|
| - 'var successCallback = function(x) { }; ' +
|
| - 'var errorCallback = function(x) { }; ' +
|
| - 'geo.getCurrentPosition(successCallback, errorCallback); ';
|
| - 'var id = geo.watchPosition(successCallback, errorCallback);';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doNavigatorAPIAccess');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| + // Send a message.
|
| + chrome.tabs.sendMessage(tabId, 'hellooooo!');
|
| + appendCompleted('sendMessageToCS');
|
|
|
| -// Accesses the HTML5 WebStorage API from inside a content script.
|
| -function doWebStorageAPIAccess1() {
|
| - var code = 'var store = window.sessionStorage; ' +
|
| - 'store.setItem("foo", 42); ' +
|
| - 'var val = store.getItem("foo"); ' +
|
| - 'store.removeItem("foo"); ' +
|
| - 'store.clear();';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| + // Inject a content script
|
| chrome.tabs.executeScript(
|
| tab.id,
|
| - {'code': code},
|
| + {'file': 'google_cs.js'},
|
| function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doWebStorageAPIAccess1');
|
| + appendCompleted('injectContentScript');
|
| });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
|
|
| -// Accesses local storage from inside a content script.
|
| -function doWebStorageAPIAccess2() {
|
| - var code = 'var store = window.localStorage; ' +
|
| - 'store.setItem("foo", 42); ' +
|
| - 'var val = store.getItem("foo"); ' +
|
| - 'store.removeItem("foo"); ' +
|
| - 'store.clear();';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| + // Injects a blob of script into a page and cleans up the tab when
|
| + // finished.
|
| chrome.tabs.executeScript(
|
| tab.id,
|
| - {'code': code},
|
| + {'code': 'document.write("g o o g l e");'},
|
| function() {
|
| + appendCompleted('injectScriptBlob');
|
| chrome.tabs.remove(tabId);
|
| - setCompleted('doWebStorageAPIAccess2');
|
| });
|
| }
|
| }
|
| @@ -454,90 +237,104 @@ function doWebStorageAPIAccess2() {
|
| openTab(defaultUrl);
|
| }
|
|
|
| -// Accesses the HTML5 Notification API from inside a content script.
|
| -function doNotificationAPIAccess() {
|
| - var code = 'try {' +
|
| - ' webkitNotifications.createNotification("myIcon.png", ' +
|
| - ' "myTitle", ' +
|
| - ' "myContent");' +
|
| - '} catch (e) {}';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doNotifcationAPIAccess');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
|
|
| -// Accesses the HTML5 ApplicationCache API from inside a content script.
|
| -function doApplicationCacheAPIAccess() {
|
| - var code = 'var appCache = window.applicationCache;';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doApplictionCacheAPIAccess');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| +// DOM API TEST METHODS -- PUT YOUR TESTS BELOW HERE
|
| +////////////////////////////////////////////////////////////////////////////////
|
|
|
| -// Accesses the HTML5 WebDatabase API from inside a content script.
|
| -function doWebDatabaseAPIAccess() {
|
| - var code = 'var db = openDatabase("testdb", "1.0", "test database", ' +
|
| - ' 1024 * 1024);';
|
| - chrome.tabs.onUpdated.addListener(
|
| - function callback(tabId, changeInfo, tab) {
|
| - if (changeInfo['status'] === 'complete' &&
|
| - tab.url.match(/google\.com/g)) {
|
| - chrome.tabs.onUpdated.removeListener(callback);
|
| - chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doWebDatabaseAPIAccess');
|
| - });
|
| - }
|
| - }
|
| - );
|
| - openTab(defaultUrl);
|
| -}
|
| +// Does an XHR from this [privileged] context.
|
| +function doBackgroundXHR() {
|
| + resetStatus();
|
| + var request = new XMLHttpRequest();
|
| + request.open('POST', defaultUrl, false);
|
| + request.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
|
| + try {
|
| + request.send();
|
| + } catch (err) {
|
| + // doesn't matter if it works or not; should be recorded either way
|
| + }
|
| + appendCompleted('doBackgroundXHR');
|
| +}
|
| +
|
| +function executeDOMChangesOnTabUpdated() {
|
| + resetStatus();
|
| + code = '';
|
| +
|
| + // Accesses the Location object from inside a content script.
|
| + code = 'window.location = "http://www.google.com/#foo"; ' +
|
| + 'document.location = "http://www.google.com/#bar"; ' +
|
| + 'var loc = window.location; ' +
|
| + 'loc.assign("http://www.google.com/#fo"); ' +
|
| + 'loc.replace("http://www.google.com/#bar");';
|
| +
|
| + // Mutates the DOM tree from inside a content script.
|
| + code += 'var d1 = document.createElement("div"); ' +
|
| + 'var d2 = document.createElement("div"); ' +
|
| + 'document.body.appendChild(d1); ' +
|
| + 'document.body.insertBefore(d2, d1); ' +
|
| + 'document.body.replaceChild(d1, d2);';
|
| +
|
| + code += 'document.write("Hello using document.write"); ' +
|
| + 'document.writeln("Hello using document.writeln"); ' +
|
| + 'document.body.innerHTML = "Hello using innerHTML";';
|
| +
|
| + // Accesses the HTML5 Navigator API from inside a content script.
|
| + code += 'var geo = navigator.geolocation; ' +
|
| + 'var successCallback = function(x) { }; ' +
|
| + 'var errorCallback = function(x) { }; ' +
|
| + 'geo.getCurrentPosition(successCallback, errorCallback); ' +
|
| + 'var id = geo.watchPosition(successCallback, errorCallback);';
|
| +
|
| + // Accesses the HTML5 WebStorage API from inside a content script.
|
| + code += 'var store = window.sessionStorage; ' +
|
| + 'store.setItem("foo", 42); ' +
|
| + 'var val = store.getItem("foo"); ' +
|
| + 'store.removeItem("foo"); ' +
|
| + 'store.clear();';
|
| +
|
| + // Same but for localStorage.
|
| + code += 'var store = window.localStorage; ' +
|
| + 'store.setItem("foo", 42); ' +
|
| + 'var val = store.getItem("foo"); ' +
|
| + 'store.removeItem("foo"); ' +
|
| + 'store.clear();';
|
| +
|
| + // Accesses the HTML5 Notification API from inside a content script.
|
| + code += 'try {' +
|
| + ' webkitNotifications.createNotification("myIcon.png", ' +
|
| + ' "myTitle", ' +
|
| + ' "myContent");' +
|
| + '} catch (e) {}';
|
| +
|
| + // Accesses the HTML5 ApplicationCache API from inside a content script.
|
| + code += 'var appCache = window.applicationCache;';
|
| +
|
| + // Accesses the HTML5 WebDatabase API from inside a content script.
|
| + code += 'var db = openDatabase("testdb", "1.0", "test database", ' +
|
| + ' 1024 * 1024);';
|
| +
|
| + // Accesses the HTML5 Canvas API from inside a content script.
|
| + code += 'var testCanvas = document.createElement("canvas"); ' +
|
| + 'var testContext = testCanvas.getContext("2d");';
|
| +
|
| + // Does an XHR from inside a content script.
|
| + code += 'var request = new XMLHttpRequest(); ' +
|
| + 'request.open("POST", "http://www.cnn.com", false); ' +
|
| + 'request.setRequestHeader("Content-type", ' +
|
| + ' "text/plain;charset=UTF-8"); ' +
|
| + 'request.send(); ' +
|
| + 'document.write("sent an XHR");';
|
|
|
| -// Accesses the HTML5 Canvas API from inside a content script.
|
| -function doCanvasAPIAccess() {
|
| - var code = 'var testCanvas = document.createElement("canvas"); ' +
|
| - 'var testContext = testCanvas.getContext("2d");';
|
| chrome.tabs.onUpdated.addListener(
|
| function callback(tabId, changeInfo, tab) {
|
| if (changeInfo['status'] === 'complete' &&
|
| tab.url.match(/google\.com/g)) {
|
| chrome.tabs.onUpdated.removeListener(callback);
|
| chrome.tabs.executeScript(
|
| - tab.id,
|
| - {'code': code},
|
| - function() {
|
| - chrome.tabs.remove(tabId);
|
| - setCompleted('doCanvasAPIAccess');
|
| - });
|
| + tabId, {'code': code},
|
| + function() {
|
| + chrome.tabs.remove(tabId);
|
| + appendCompleted('executeDOMChangesOnTabUpdated');
|
| + });
|
| }
|
| }
|
| );
|
| @@ -548,31 +345,18 @@ function doCanvasAPIAccess() {
|
| var fnMap = {};
|
| fnMap['api_call'] = makeApiCall;
|
| fnMap['special_call'] = makeSpecialApiCalls;
|
| -fnMap['blocked_call'] = makeBlockedApiCall;
|
| -fnMap['inject_cs'] = injectContentScript;
|
| -fnMap['inject_blob'] = injectScriptBlob;
|
| -fnMap['webrequest'] = doWebRequestModifications;
|
| fnMap['double'] = checkNoDoubleLogging;
|
| fnMap['app_bindings'] = checkAppCalls;
|
| -fnMap['object_properties'] = getSetObjectProperties;
|
| +fnMap['blocked_call'] = makeBlockedApiCall;
|
| fnMap['object_methods'] = callObjectMethod;
|
| -fnMap['message_cs'] = sendMessageToCS;
|
| fnMap['message_self'] = sendMessageToSelf;
|
| fnMap['message_other'] = sendMessageToOther;
|
| fnMap['connect_other'] = connectToOther;
|
| -fnMap['tab_ids'] = tabIdTranslation;
|
| fnMap['background_xhr'] = doBackgroundXHR;
|
| -fnMap['cs_xhr'] = doContentScriptXHR;
|
| -fnMap['location_access'] = doLocationAccess;
|
| -fnMap['dom_mutation1'] = doDOMMutation1;
|
| -fnMap['dom_mutation2'] = doDOMMutation2;
|
| -fnMap['navigator_access'] = doNavigatorAPIAccess;
|
| -fnMap['web_storage_access1'] = doWebStorageAPIAccess1;
|
| -fnMap['web_storage_access2'] = doWebStorageAPIAccess2;
|
| -fnMap['notification_access'] = doNotificationAPIAccess;
|
| -fnMap['application_cache_access'] = doApplicationCacheAPIAccess;
|
| -fnMap['web_database_access'] = doWebDatabaseAPIAccess;
|
| -fnMap['canvas_access'] = doCanvasAPIAccess;
|
| +fnMap['webrequest'] = doWebRequestModifications;
|
| +fnMap['tab_ids'] = tabIdTranslation;
|
| +fnMap['dom_tab_updated'] = executeDOMChangesOnTabUpdated;
|
| +fnMap['api_tab_updated'] = executeApiCallsOnTabUpdated;
|
|
|
| // Setup function mapping for the automated tests.
|
| try {
|
| @@ -602,16 +386,29 @@ function $(o) {
|
| }
|
|
|
| var completed = 0;
|
| -function setCompleted(str) {
|
| - completed++;
|
| +function resetStatus(str) {
|
| + completed = 0;
|
| if ($('status') != null) {
|
| - $('status').innerText = 'Completed ' + str;
|
| + $('status').innerText = '';
|
| }
|
| - console.log('[SUCCESS] ' + str);
|
| }
|
|
|
| -function setError(str) {
|
| - $('status').innerText = 'Error: ' + str;
|
| +function appendCompleted(str) {
|
| + if ($('status') != null) {
|
| + if (completed > 0) {
|
| + $('status').innerText += ', ' + str;
|
| + } else {
|
| + $('status').innerText = 'Completed: ' + str;
|
| + }
|
| + }
|
| + completed += 1;
|
| + console.log('Completed ' + str);
|
| +}
|
| +
|
| +function appendError(str) {
|
| + if ($('status') != null) {
|
| + $('status').innerText += 'Error: ' + str;
|
| + }
|
| }
|
|
|
| // Set up the event listeners for use in manual run mode.
|
| @@ -621,10 +418,12 @@ function setupEvents() {
|
| $(key).addEventListener('click', fnMap[key]);
|
| }
|
| }
|
| - $('incognito_checkbox').addEventListener(
|
| - 'click',
|
| - function() { useIncognito = $('incognito_checkbox').checked; });
|
| - setCompleted('setup events');
|
| + if ($('incognito_checkbox') != null) {
|
| + $('incognito_checkbox').addEventListener(
|
| + 'click',
|
| + function() { useIncognito = $('incognito_checkbox').checked; });
|
| + }
|
| completed = 0;
|
| + appendCompleted('setup events');
|
| }
|
| document.addEventListener('DOMContentLoaded', setupEvents);
|
|
|