diff options
author | creis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-13 22:24:14 +0000 |
---|---|---|
committer | creis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-13 22:24:14 +0000 |
commit | 6ec6313db465cf63b31344307df78f2baf394dce (patch) | |
tree | 6c8913551b5a1b85cd2712d0424030823644c51d /chrome/test | |
parent | 0c328d95376293dac03e78bbe6bac625b5e9fdbb (diff) | |
download | chromium_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.html | 4 | ||||
-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.js | 151 | ||||
-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.html | 7 | ||||
-rw-r--r-- | chrome/test/data/extensions/api_test/processes/onupdated/manifest.json | 7 | ||||
-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.js | 91 |
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); + })); + })); + }, + +]); |