summaryrefslogtreecommitdiffstats
path: root/chrome/test
diff options
context:
space:
mode:
authorcreis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-13 22:24:14 +0000
committercreis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-13 22:24:14 +0000
commit6ec6313db465cf63b31344307df78f2baf394dce (patch)
tree6c8913551b5a1b85cd2712d0424030823644c51d /chrome/test
parent0c328d95376293dac03e78bbe6bac625b5e9fdbb (diff)
downloadchromium_src-6ec6313db465cf63b31344307df78f2baf394dce.zip
chromium_src-6ec6313db465cf63b31344307df78f2baf394dce.tar.gz
chromium_src-6ec6313db465cf63b31344307df78f2baf394dce.tar.bz2
Revert 62458 - Expands the chrome.experimental.processes extension API.
Adds an onUpdated event that reports process metrics from the TaskManager, and modifies the TaskManager to support multiple independent observers. BUG=32302 TEST=ExtensionApiTest.Processes browsertest TEST=process_monitor sample extension Review URL: http://codereview.chromium.org/3597016 TBR=jrg@google.com git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62464 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test')
-rw-r--r--chrome/test/data/extensions/api_test/permissions/enabled/background.html4
-rw-r--r--chrome/test/data/extensions/api_test/processes/a.html (renamed from chrome/test/data/extensions/api_test/processes/api/a.html)0
-rw-r--r--chrome/test/data/extensions/api_test/processes/api/test.js151
-rw-r--r--chrome/test/data/extensions/api_test/processes/b.html (renamed from chrome/test/data/extensions/api_test/processes/api/b.html)0
-rw-r--r--chrome/test/data/extensions/api_test/processes/manifest.json (renamed from chrome/test/data/extensions/api_test/processes/api/manifest.json)0
-rw-r--r--chrome/test/data/extensions/api_test/processes/onupdated/background.html7
-rw-r--r--chrome/test/data/extensions/api_test/processes/onupdated/manifest.json7
-rw-r--r--chrome/test/data/extensions/api_test/processes/test.html (renamed from chrome/test/data/extensions/api_test/processes/api/test.html)0
-rw-r--r--chrome/test/data/extensions/api_test/processes/test.js91
9 files changed, 93 insertions, 167 deletions
diff --git a/chrome/test/data/extensions/api_test/permissions/enabled/background.html b/chrome/test/data/extensions/api_test/permissions/enabled/background.html
index 633600d..eb186e3 100644
--- a/chrome/test/data/extensions/api_test/permissions/enabled/background.html
+++ b/chrome/test/data/extensions/api_test/permissions/enabled/background.html
@@ -11,8 +11,8 @@ chrome.test.runTests([
// experimental, this test needs to be updated.
chrome.tabs.getSelected(null, function(tab) {
try {
- chrome.experimental.processes.getProcessIdForTab(
- tab.id, pass(function(pid) {}));
+ chrome.experimental.processes.getProcessForTab(
+ tab.id, pass(function(process) {}));
} catch (e) {
chrome.test.fail();
}
diff --git a/chrome/test/data/extensions/api_test/processes/api/a.html b/chrome/test/data/extensions/api_test/processes/a.html
index dcd442e..dcd442e 100644
--- a/chrome/test/data/extensions/api_test/processes/api/a.html
+++ b/chrome/test/data/extensions/api_test/processes/a.html
diff --git a/chrome/test/data/extensions/api_test/processes/api/test.js b/chrome/test/data/extensions/api_test/processes/api/test.js
deleted file mode 100644
index d6cc307..0000000
--- a/chrome/test/data/extensions/api_test/processes/api/test.js
+++ /dev/null
@@ -1,151 +0,0 @@
-// Processes API test for Chrome.
-// browser_tests.exe --gtest_filter=ExtensionApiTest.Processes
-
-var pass = chrome.test.callbackPass;
-var fail = chrome.test.callbackFail;
-var assertEq = chrome.test.assertEq;
-var assertTrue = chrome.test.assertTrue;
-var listenOnce = chrome.test.listenOnce;
-
-var tabs = [];
-
-function createTab(index, url) {
- chrome.tabs.create({"url": url}, pass(function(tab) {
- tabs[index] = tab;
- }));
-}
-
-var getProcessId = chrome.experimental.processes.getProcessIdForTab;
-
-function pageUrl(letter) {
- return chrome.extension.getURL(letter + ".html");
-}
-
-chrome.test.runTests([
- function setupProcessTests() {
- // Open 4 tabs for test, then wait and create a 5th
- createTab(0, "about:blank");
- createTab(1, pageUrl("a"));
- createTab(2, pageUrl("b"));
- createTab(3, "chrome://newtab/");
-
- // Wait for all loads to complete.
- var completedCount = 0;
- var onUpdatedCompleted = chrome.test.listenForever(
- chrome.tabs.onUpdated,
- function(changedTabId, changeInfo, changedTab) {
- if (changedTab.status == "complete") {
- completedCount++;
-
- // Once the NTP finishes loading, create another one. This ensures
- // both NTPs end up in the same process.
- if (changedTabId == tabs[3].id) {
- createTab(4, "chrome://newtab/");
- }
- }
-
- // Once all tabs are done loading, continue with the next test.
- if (completedCount == 4) {
- onUpdatedCompleted();
- }
- }
- );
-
- },
-
- function extensionPageInOwnProcess() {
- getProcessId(tabs[0].id, pass(function(pid0) {
- getProcessId(tabs[1].id, pass(function(pid1) {
- // about:blank and extension page should not share a process
- assertTrue(pid0 != pid1);
- }));
- }));
- },
-
- function extensionPagesShareProcess() {
- getProcessId(tabs[1].id, pass(function(pid1) {
- getProcessId(tabs[2].id, pass(function(pid2) {
- // Pages from same extension should share a process
- assertEq(pid1, pid2);
- }));
- }));
- },
-
- function newTabPageInOwnProcess() {
- getProcessId(tabs[0].id, pass(function(pid0) {
- getProcessId(tabs[3].id, pass(function(pid3) {
- // NTP should not share a process with current tabs
- assertTrue(pid0 != pid3);
- }));
- }));
- },
-
- function newTabPagesShareProcess() {
- getProcessId(tabs[3].id, pass(function(pid3) {
- getProcessId(tabs[4].id, pass(function(pid4) {
- // Multiple NTPs should share a process
- assertEq(pid3, pid4);
- }));
- }));
- },
-
- function idsInUpdateEvent() {
- listenOnce(chrome.experimental.processes.onUpdated, function(processes) {
- // onUpdated should return a valid dictionary of processes,
- // indexed by process ID.
- var pids = Object.keys(processes);
- assertEq(5, pids.length);
-
- // Should be able to look up process object by ID.
- assertTrue(processes[pids[0]].id == pids[0]);
- assertTrue(processes[pids[0]].id != processes[pids[1]].id);
-
- getProcessId(tabs[0].id, pass(function(pidTab0) {
- // Process ID for tab 0 should be listed in pids.
- assertTrue(processes[pidTab0] != undefined);
- assertEq("renderer", processes[pidTab0].type);
- }));
- });
- },
-
- function typesInUpdateEvent() {
- listenOnce(chrome.experimental.processes.onUpdated, function(processes) {
- // Check types: 1 browser, 3 renderers, and 1 extension
- var browserCount = 0;
- var rendererCount = 0;
- var extensionCount = 0;
- for (pid in processes) {
- switch (processes[pid].type) {
- case "browser":
- browserCount++;
- break;
- case "renderer":
- rendererCount++;
- break;
- case "extension":
- extensionCount++;
- break;
- default:
- fail("Unexpected process type:" + processes[pid].type);
- }
- }
- assertEq(1, browserCount);
- assertEq(3, rendererCount);
- assertEq(1, extensionCount);
- });
- },
-
- function propertiesOfProcesses() {
- listenOnce(chrome.experimental.processes.onUpdated, function(processes) {
- for (pid in processes) {
- var process = processes[pid];
- assertTrue("id" in process);
- assertTrue("type" in process);
- assertTrue("cpu" in process);
- assertTrue("network" in process);
- assertTrue("sharedMemory" in process);
- assertTrue("privateMemory" in process);
- }
- });
- },
-]);
diff --git a/chrome/test/data/extensions/api_test/processes/api/b.html b/chrome/test/data/extensions/api_test/processes/b.html
index 7bff50a..7bff50a 100644
--- a/chrome/test/data/extensions/api_test/processes/api/b.html
+++ b/chrome/test/data/extensions/api_test/processes/b.html
diff --git a/chrome/test/data/extensions/api_test/processes/api/manifest.json b/chrome/test/data/extensions/api_test/processes/manifest.json
index 44fcdfb..44fcdfb 100644
--- a/chrome/test/data/extensions/api_test/processes/api/manifest.json
+++ b/chrome/test/data/extensions/api_test/processes/manifest.json
diff --git a/chrome/test/data/extensions/api_test/processes/onupdated/background.html b/chrome/test/data/extensions/api_test/processes/onupdated/background.html
deleted file mode 100644
index 5ff8d04..0000000
--- a/chrome/test/data/extensions/api_test/processes/onupdated/background.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<script>
-// Add a simple listener to onUpdated to ensure it does not conflict with the
-// task manager.
-chrome.experimental.processes.onUpdated.addListener(function(processes) {
- console.log("Received update.");
-});
-</script>
diff --git a/chrome/test/data/extensions/api_test/processes/onupdated/manifest.json b/chrome/test/data/extensions/api_test/processes/onupdated/manifest.json
deleted file mode 100644
index 9810b2a..0000000
--- a/chrome/test/data/extensions/api_test/processes/onupdated/manifest.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "processes onupdated test",
- "description": "extension that listens to processes.onUpdated",
- "version": "0.1",
- "background_page": "background.html",
- "permissions": [ "tabs", "experimental" ]
-}
diff --git a/chrome/test/data/extensions/api_test/processes/api/test.html b/chrome/test/data/extensions/api_test/processes/test.html
index 46f4d74..46f4d74 100644
--- a/chrome/test/data/extensions/api_test/processes/api/test.html
+++ b/chrome/test/data/extensions/api_test/processes/test.html
diff --git a/chrome/test/data/extensions/api_test/processes/test.js b/chrome/test/data/extensions/api_test/processes/test.js
new file mode 100644
index 0000000..ecdcaf8
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/processes/test.js
@@ -0,0 +1,91 @@
+// Processes API test for Chrome.
+// browser_tests.exe --gtest_filter=ExtensionApiTest.Processes
+
+var pass = chrome.test.callbackPass;
+var fail = chrome.test.callbackFail;
+var assertEq = chrome.test.assertEq;
+var assertTrue = chrome.test.assertTrue;
+
+var tabs = [];
+
+function createTab(index, url) {
+ chrome.tabs.create({"url": url}, pass(function(tab) {
+ tabs[index] = tab;
+ }));
+}
+
+var getProcess = chrome.experimental.processes.getProcessForTab;
+
+function pageUrl(letter) {
+ return chrome.extension.getURL(letter + ".html");
+}
+
+chrome.test.runTests([
+ function setupProcessTests() {
+ // Open 4 tabs for test, then wait and create a 5th
+ createTab(0, "about:blank");
+ createTab(1, pageUrl("a"));
+ createTab(2, pageUrl("b"));
+ createTab(3, "chrome://newtab/");
+
+ // Wait for all loads to complete.
+ var completedCount = 0;
+ var onUpdatedCompleted = chrome.test.listenForever(
+ chrome.tabs.onUpdated,
+ function(changedTabId, changeInfo, changedTab) {
+ if (changedTab.status == "complete") {
+ completedCount++;
+
+ // Once the NTP finishes loading, create another one. This ensures
+ // both NTPs end up in the same process.
+ if (changedTabId == tabs[3].id) {
+ createTab(4, "chrome://newtab/");
+ }
+ }
+
+ // Once all tabs are done loading, continue with the next test.
+ if (completedCount == 4) {
+ onUpdatedCompleted();
+ }
+ }
+ );
+
+ },
+
+ function extensionPageInOwnProcess() {
+ getProcess(tabs[0].id, pass(function(process0) {
+ getProcess(tabs[1].id, pass(function(process1) {
+ // about:blank and extension page should not share a process
+ assertTrue(process0.id != process1.id);
+ }));
+ }));
+ },
+
+ function extensionPagesShareProcess() {
+ getProcess(tabs[1].id, pass(function(process1) {
+ getProcess(tabs[2].id, pass(function(process2) {
+ // Pages from same extension should share a process
+ assertEq(process1.id, process2.id);
+ }));
+ }));
+ },
+
+ function newTabPageInOwnProcess() {
+ getProcess(tabs[0].id, pass(function(process0) {
+ getProcess(tabs[3].id, pass(function(process3) {
+ // NTP should not share a process with current tabs
+ assertTrue(process0.id != process3.id);
+ }));
+ }));
+ },
+
+ function newTabPagesShareProcess() {
+ getProcess(tabs[3].id, pass(function(process3) {
+ getProcess(tabs[4].id, pass(function(process4) {
+ // Multiple NTPs should share a process
+ assertEq(process3.id, process4.id);
+ }));
+ }));
+ },
+
+]);