Index: chrome/test/data/extensions/api_test/processes/api/test.js |
=================================================================== |
--- chrome/test/data/extensions/api_test/processes/api/test.js (revision 0) |
+++ chrome/test/data/extensions/api_test/processes/api/test.js (working copy) |
@@ -5,6 +5,7 @@ |
var fail = chrome.test.callbackFail; |
var assertEq = chrome.test.assertEq; |
var assertTrue = chrome.test.assertTrue; |
+var listenOnce = chrome.test.listenOnce; |
var tabs = []; |
@@ -14,7 +15,7 @@ |
})); |
} |
-var getProcess = chrome.experimental.processes.getProcessForTab; |
+var getProcessId = chrome.experimental.processes.getProcessIdForTab; |
function pageUrl(letter) { |
return chrome.extension.getURL(letter + ".html"); |
@@ -53,39 +54,98 @@ |
}, |
function extensionPageInOwnProcess() { |
- getProcess(tabs[0].id, pass(function(process0) { |
- getProcess(tabs[1].id, pass(function(process1) { |
+ 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(process0.id != process1.id); |
+ assertTrue(pid0 != pid1); |
})); |
})); |
}, |
function extensionPagesShareProcess() { |
- getProcess(tabs[1].id, pass(function(process1) { |
- getProcess(tabs[2].id, pass(function(process2) { |
+ getProcessId(tabs[1].id, pass(function(pid1) { |
+ getProcessId(tabs[2].id, pass(function(pid2) { |
// Pages from same extension should share a process |
- assertEq(process1.id, process2.id); |
+ assertEq(pid1, pid2); |
})); |
})); |
}, |
function newTabPageInOwnProcess() { |
- getProcess(tabs[0].id, pass(function(process0) { |
- getProcess(tabs[3].id, pass(function(process3) { |
+ getProcessId(tabs[0].id, pass(function(pid0) { |
+ getProcessId(tabs[3].id, pass(function(pid3) { |
// NTP should not share a process with current tabs |
- assertTrue(process0.id != process3.id); |
+ assertTrue(pid0 != pid3); |
})); |
})); |
}, |
function newTabPagesShareProcess() { |
- getProcess(tabs[3].id, pass(function(process3) { |
- getProcess(tabs[4].id, pass(function(process4) { |
+ getProcessId(tabs[3].id, pass(function(pid3) { |
+ getProcessId(tabs[4].id, pass(function(pid4) { |
// Multiple NTPs should share a process |
- assertEq(process3.id, process4.id); |
+ 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); |
+ } |
+ }); |
+ }, |
]); |