Add a Leaks Viewer tool to build.webkit.org
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Mar 2011 18:50:39 +0000 (18:50 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Mar 2011 18:50:39 +0000 (18:50 +0000)
commitef0a11a97f65957faa149b597728df0647dc617a
treebec126bdf68dcc45185af56f1674c522edf7172f
parent69fc56fec9d099385b35021b4753f29ff4919103
Add a Leaks Viewer tool to build.webkit.org

This tool parses leaks from the files generated by the leaks bot and displays them in a
view similar to the Web Inspector's Profiles pane (in fact, it uses the Web Inspector's
code).

The URL of the leaks file can be entered in a prompt when the tools is first shown, or can
be passed to the tool via the "url" query parameter.

Only one leaks file can be viewed at a time for now. Only the number of leaks, as opposed to
the number of leaked bytes, is shown. And this tool has made apparent some bugs in the Web
Inspector's Heavy profile view. But it's still pretty useful as-is.

Fixes <http://webkit.org/b/56028> Would like a Shark-like tool for viewing leaks from leak bots

Reviewed by Darin Adler.

* BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css: Added.
(#url-prompt-container): This is the dark overlay that is shown behind the URL prompt.
(#url-prompt): This is the prompt itself.

(#loading-indicator):
(#loading-indicator > img):
These show a spinner in the bottom-right when we're loading a leaks file.

(.percent-time-status-bar-item): Hide the Percent button since we never want to show leaks
as percentages.

* BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js: Added.
(LeaksViewer.loaded): Initialize ourselves and start loading the leaks file (or prompt for a
URL if one wasn't given to us as a query parameter).

(LeaksViewer.get loading):
(LeaksViewer.set loading):
(LeaksViewer.get url):
(LeaksViewer.set url):
Pretty simple accessors.

(LeaksViewer.urlPromptButtonClicked): Start loading the URL from the prompt and hide the
prompt.
(LeaksViewer._displayURLPrompt): Show the prompt and focus the URL input.
(LeaksViewer._loadLeaksFromURL): Start fetching the leaks file. When we've retrieved the
file, hand it off to a Web Worker that will parse it into a fake "profile", then hand off
the profile to the Web Inspector code once it's been created.
(LeaksViewer._loadingStatusChanged): Update our loading indicator and title.
(LeaksViewer._setLoadingIndicatorHidden): Simply hide or show the indicator.
(LeaksViewer._updateTitle): Set our title based on our URL and loading status.
(getResource): Helper function to fetch a resource via XHR and pass it to a callback.

* BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js: Added.
(WebInspector.UIString): Just a simple implementation since this tool isn't localized.
(ProfilerAgent.getProfile): Store the callback.
(ProfilerAgent.profileReady): Call the callback.
(monkeyPatchInspectorObjects): Fix up WebInspector.ProfileDataGridNode to show the self leak
count and total leak counts as real values, not percentages or milliseconds.

* BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Worker.js: Added.
(onmessage): Create a profile based on the leaks file and pass it back to our caller.
(parseLeaks): Extract call stacks out of a leaks file.
(createNode): Helper function to create a new empty profile node.
(createProfile): Take the leak stacks and turn them into a fake "profile" for consumption by
WebInspector.ProfileView.

* BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80651 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css [new file with mode: 0644]
Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js [new file with mode: 0644]
Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js [new file with mode: 0644]
Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Worker.js [new file with mode: 0644]
Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html [new file with mode: 0644]
Tools/ChangeLog