| Index: LayoutTests/inspector-protocol/cpu-profiler/console-profile.html
|
| diff --git a/LayoutTests/inspector-protocol/cpu-profiler/console-profile.html b/LayoutTests/inspector-protocol/cpu-profiler/console-profile.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e5ff5cb2b697a9cbfd3b24dc2c0bfe05173fa8f9
|
| --- /dev/null
|
| +++ b/LayoutTests/inspector-protocol/cpu-profiler/console-profile.html
|
| @@ -0,0 +1,77 @@
|
| +<html>
|
| +<head>
|
| +<script type="text/javascript" src="../../http/tests/inspector-protocol/resources/protocol-test.js"></script>
|
| +<script>
|
| +function collectProfiles()
|
| +{
|
| + console.profile("outer");
|
| + console.profile("inner");
|
| + console.profileEnd("outer");
|
| + console.profileEnd("inner");
|
| +}
|
| +
|
| +function test()
|
| +{
|
| + InspectorTest.fail = function(message)
|
| + {
|
| + InspectorTest.log("FAIL: " + message);
|
| + InspectorTest.completeTest();
|
| + }
|
| +
|
| + InspectorTest.sendCommand("Profiler.enable", {});
|
| + InspectorTest.sendCommand("Runtime.evaluate", { expression: "collectProfiles()"}, didCollectProfiles);
|
| +
|
| + InspectorTest.eventHandler["Profiler.addProfileHeader"] = function(messageObject)
|
| + {
|
| + InspectorTest.log("FAIL: unexpected header = " + JSON.stringify(messageObject, null, 4));
|
| + }
|
| +
|
| + function didCollectProfiles(messageObject)
|
| + {
|
| + InspectorTest.sendCommand("Profiler.getProfileHeaders", {}, didReceiveProfileHeaders);
|
| + }
|
| +
|
| + function didReceiveProfileHeaders(messageObject)
|
| + {
|
| + var headers = messageObject["result"]["headers"];
|
| + if (!headers || headers.length !== 2)
|
| + return InspectorTest.fail("Cannot retrive headers: " + JSON.stringify(messageObject, null, 4));
|
| + for (var i = 0; i < headers.length; i++) {
|
| + if (headers[i].title === "inner") {
|
| + InspectorTest.sendCommand("Profiler.getCPUProfile", { uid: headers[i].uid }, didGetProfile);
|
| + return;
|
| + }
|
| + }
|
| + InspectorTest.fail("Cannot find 'inner' profile header");
|
| + }
|
| +
|
| + function didGetProfile(messageObject)
|
| + {
|
| + InspectorTest.log("SUCCESS: retrieved 'inner' profile");
|
| + var root = messageObject.result.profile.head;
|
| + if (!findFunctionInProfile(root, "collectProfiles"))
|
| + return InspectorTest.fail("collectProfiles function not found in the profile: " + JSON.stringify(messageObject, null, 4));
|
| + InspectorTest.log("SUCCESS: found 'collectProfiles' function in the profile");
|
| + InspectorTest.sendCommand("Profiler.clearProfiles", {});
|
| + InspectorTest.completeTest();
|
| + }
|
| +
|
| + function findFunctionInProfile(node, functionName)
|
| + {
|
| + if (node.functionName === functionName)
|
| + return true;
|
| + var children = node.children;
|
| + for (var i = 0; i < children.length; ++i)
|
| + if (findFunctionInProfile(children[i], functionName))
|
| + return true;
|
| + return false;
|
| + }
|
| +}
|
| +</script>
|
| +</head>
|
| +<body onload="runTest()">
|
| +<p>
|
| +Tests that console.profile/profileEnd will record CPU profile when inspector front-end is connected.<br>
|
| +</p>
|
| +</body>
|
| +</html>
|
|
|