Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1021)

Unified Diff: resources/inspector/ProfilesPanel.js

Issue 853002: Updating the Chromium reference build for Windows. The continuous... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/reference_builds/chrome/
Patch Set: Added the symbol files back. Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « resources/inspector/ProfileView.js ('k') | resources/inspector/PropertiesSection.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: resources/inspector/ProfilesPanel.js
===================================================================
--- resources/inspector/ProfilesPanel.js (revision 33840)
+++ resources/inspector/ProfilesPanel.js (working copy)
@@ -1,536 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-const UserInitiatedProfileName = "org.webkit.profiles.user-initiated";
-
-WebInspector.ProfileType = function(id, name)
-{
- this._id = id;
- this._name = name;
-}
-
-WebInspector.ProfileType.URLRegExp = /webkit-profile:\/\/(.+)\/(.+)#([0-9]+)/;
-
-WebInspector.ProfileType.prototype = {
- get buttonTooltip()
- {
- return "";
- },
-
- get buttonStyle()
- {
- return undefined;
- },
-
- get buttonCaption()
- {
- return this.name;
- },
-
- get id()
- {
- return this._id;
- },
-
- get name()
- {
- return this._name;
- },
-
- buttonClicked: function()
- {
- },
-
- viewForProfile: function(profile)
- {
- if (!profile._profileView)
- profile._profileView = this.createView(profile);
- return profile._profileView;
- },
-
- // Must be implemented by subclasses.
- createView: function(profile)
- {
- throw new Error("Needs implemented.");
- },
-
- // Must be implemented by subclasses.
- createSidebarTreeElementForProfile: function(profile)
- {
- throw new Error("Needs implemented.");
- }
-}
-
-WebInspector.ProfilesPanel = function()
-{
- WebInspector.Panel.call(this, true);
-
- this.element.addStyleClass("profiles");
- this._profileTypesByIdMap = {};
- this._profileTypeButtonsByIdMap = {};
-
- var panelEnablerHeading = WebInspector.UIString("You need to enable profiling before you can use the Profiles panel.");
- var panelEnablerDisclaimer = WebInspector.UIString("Enabling profiling will make scripts run slower.");
- var panelEnablerButton = WebInspector.UIString("Enable Profiling");
- this.panelEnablerView = new WebInspector.PanelEnablerView("profiles", panelEnablerHeading, panelEnablerDisclaimer, panelEnablerButton);
- this.panelEnablerView.addEventListener("enable clicked", this._enableProfiling, this);
-
- this.element.appendChild(this.panelEnablerView.element);
-
- this.profileViews = document.createElement("div");
- this.profileViews.id = "profile-views";
- this.element.appendChild(this.profileViews);
-
- this.enableToggleButton = new WebInspector.StatusBarButton("", "enable-toggle-status-bar-item");
- this.enableToggleButton.addEventListener("click", this._toggleProfiling.bind(this), false);
-
- this.profileViewStatusBarItemsContainer = document.createElement("div");
- this.profileViewStatusBarItemsContainer.id = "profile-view-status-bar-items";
-
- this._profiles = [];
- this.reset();
-}
-
-WebInspector.ProfilesPanel.prototype = {
- toolbarItemClass: "profiles",
-
- get toolbarItemLabel()
- {
- return WebInspector.UIString("Profiles");
- },
-
- get statusBarItems()
- {
- function clickHandler(profileType, buttonElement)
- {
- profileType.buttonClicked.call(profileType);
- this.updateProfileTypeButtons();
- }
-
- var items = [this.enableToggleButton.element];
- // FIXME: Generate a single "combo-button".
- for (var typeId in this._profileTypesByIdMap) {
- var profileType = this.getProfileType(typeId);
- if (profileType.buttonStyle) {
- var button = new WebInspector.StatusBarButton(profileType.buttonTooltip, profileType.buttonStyle, profileType.buttonCaption);
- this._profileTypeButtonsByIdMap[typeId] = button.element;
- button.element.addEventListener("click", clickHandler.bind(this, profileType, button.element), false);
- items.push(button.element);
- }
- }
- items.push(this.profileViewStatusBarItemsContainer);
- return items;
- },
-
- show: function()
- {
- WebInspector.Panel.prototype.show.call(this);
- if (this._shouldPopulateProfiles)
- this._populateProfiles();
- },
-
- populateInterface: function()
- {
- if (this.visible)
- this._populateProfiles();
- else
- this._shouldPopulateProfiles = true;
- },
-
- profilerWasEnabled: function()
- {
- this.reset();
- this.populateInterface();
- },
-
- profilerWasDisabled: function()
- {
- this.reset();
- },
-
- reset: function()
- {
- for (var i = 0; i < this._profiles.length; ++i)
- delete this._profiles[i]._profileView;
-
- delete this.currentQuery;
- this.searchCanceled();
-
- this._profiles = [];
- this._profilesIdMap = {};
- this._profileGroups = {};
- this._profileGroupsForLinks = {}
-
- this.sidebarTreeElement.removeStyleClass("some-expandable");
-
- for (var typeId in this._profileTypesByIdMap)
- this.getProfileType(typeId).treeElement.removeChildren();
-
- this.profileViews.removeChildren();
-
- this.profileViewStatusBarItemsContainer.removeChildren();
-
- this._updateInterface();
- },
-
- registerProfileType: function(profileType)
- {
- this._profileTypesByIdMap[profileType.id] = profileType;
- profileType.treeElement = new WebInspector.SidebarSectionTreeElement(profileType.name, null, true);
- this.sidebarTree.appendChild(profileType.treeElement);
- profileType.treeElement.expand();
- },
-
- _makeKey: function(text, profileTypeId)
- {
- return escape(text) + '/' + escape(profileTypeId);
- },
-
- addProfileHeader: function(typeId, profile)
- {
- var profileType = this.getProfileType(typeId);
- var sidebarParent = profileType.treeElement;
- var small = false;
- var alternateTitle;
-
- profile.__profilesPanelProfileType = profileType;
- this._profiles.push(profile);
- this._profilesIdMap[this._makeKey(profile.uid, typeId)] = profile;
-
- if (profile.title.indexOf(UserInitiatedProfileName) !== 0) {
- var profileTitleKey = this._makeKey(profile.title, typeId);
- if (!(profileTitleKey in this._profileGroups))
- this._profileGroups[profileTitleKey] = [];
-
- var group = this._profileGroups[profileTitleKey];
- group.push(profile);
-
- if (group.length === 2) {
- // Make a group TreeElement now that there are 2 profiles.
- group._profilesTreeElement = new WebInspector.ProfileGroupSidebarTreeElement(profile.title);
-
- // Insert at the same index for the first profile of the group.
- var index = sidebarParent.children.indexOf(group[0]._profilesTreeElement);
- sidebarParent.insertChild(group._profilesTreeElement, index);
-
- // Move the first profile to the group.
- var selected = group[0]._profilesTreeElement.selected;
- sidebarParent.removeChild(group[0]._profilesTreeElement);
- group._profilesTreeElement.appendChild(group[0]._profilesTreeElement);
- if (selected) {
- group[0]._profilesTreeElement.select();
- group[0]._profilesTreeElement.reveal();
- }
-
- group[0]._profilesTreeElement.small = true;
- group[0]._profilesTreeElement.mainTitle = WebInspector.UIString("Run %d", 1);
-
- this.sidebarTreeElement.addStyleClass("some-expandable");
- }
-
- if (group.length >= 2) {
- sidebarParent = group._profilesTreeElement;
- alternateTitle = WebInspector.UIString("Run %d", group.length);
- small = true;
- }
- }
-
- var profileTreeElement = profileType.createSidebarTreeElementForProfile(profile);
- profileTreeElement.small = small;
- if (alternateTitle)
- profileTreeElement.mainTitle = alternateTitle;
- profile._profilesTreeElement = profileTreeElement;
-
- sidebarParent.appendChild(profileTreeElement);
- if (!this.visibleView)
- this.showProfile(profile);
- },
-
- showProfile: function(profile)
- {
- if (!profile)
- return;
-
- if (this.visibleView)
- this.visibleView.hide();
-
- var view = profile.__profilesPanelProfileType.viewForProfile(profile);
-
- view.show(this.profileViews);
-
- profile._profilesTreeElement.select(true);
- profile._profilesTreeElement.reveal();
-
- this.visibleView = view;
-
- this.profileViewStatusBarItemsContainer.removeChildren();
-
- var statusBarItems = view.statusBarItems;
- for (var i = 0; i < statusBarItems.length; ++i)
- this.profileViewStatusBarItemsContainer.appendChild(statusBarItems[i]);
- },
-
- showView: function(view)
- {
- this.showProfile(view.profile);
- },
-
- getProfileType: function(typeId)
- {
- return this._profileTypesByIdMap[typeId];
- },
-
- showProfileForURL: function(url)
- {
- var match = url.match(WebInspector.ProfileType.URLRegExp);
- if (!match)
- return;
- this.showProfile(this._profilesIdMap[this._makeKey(match[3], match[1])]);
- },
-
- updateProfileTypeButtons: function()
- {
- for (var typeId in this._profileTypeButtonsByIdMap) {
- var buttonElement = this._profileTypeButtonsByIdMap[typeId];
- var profileType = this.getProfileType(typeId);
- buttonElement.className = profileType.buttonStyle;
- buttonElement.title = profileType.buttonTooltip;
- // FIXME: Apply profileType.buttonCaption once captions are added to button controls.
- }
- },
-
- closeVisibleView: function()
- {
- if (this.visibleView)
- this.visibleView.hide();
- delete this.visibleView;
- },
-
- displayTitleForProfileLink: function(title, typeId)
- {
- title = unescape(title);
- if (title.indexOf(UserInitiatedProfileName) === 0) {
- title = WebInspector.UIString("Profile %d", title.substring(UserInitiatedProfileName.length + 1));
- } else {
- var titleKey = this._makeKey(title, typeId);
- if (!(titleKey in this._profileGroupsForLinks))
- this._profileGroupsForLinks[titleKey] = 0;
-
- groupNumber = ++this._profileGroupsForLinks[titleKey];
-
- if (groupNumber > 2)
- // The title is used in the console message announcing that a profile has started so it gets
- // incremented twice as often as it's displayed
- title += " " + WebInspector.UIString("Run %d", groupNumber / 2);
- }
-
- return title;
- },
-
- get searchableViews()
- {
- var views = [];
-
- const visibleView = this.visibleView;
- if (visibleView && visibleView.performSearch)
- views.push(visibleView);
-
- var profilesLength = this._profiles.length;
- for (var i = 0; i < profilesLength; ++i) {
- var view = this._profiles[i].viewForProfile();
- if (!view.performSearch || view === visibleView)
- continue;
- views.push(view);
- }
-
- return views;
- },
-
- searchMatchFound: function(view, matches)
- {
- view.profile._profilesTreeElement.searchMatches = matches;
- },
-
- searchCanceled: function(startingNewSearch)
- {
- WebInspector.Panel.prototype.searchCanceled.call(this, startingNewSearch);
-
- if (!this._profiles)
- return;
-
- for (var i = 0; i < this._profiles.length; ++i) {
- var profile = this._profiles[i];
- profile._profilesTreeElement.searchMatches = 0;
- }
- },
-
- resize: function()
- {
- var visibleView = this.visibleView;
- if (visibleView && "resize" in visibleView)
- visibleView.resize();
- },
-
- _updateInterface: function()
- {
- // FIXME: Replace ProfileType-specific button visibility changes by a single ProfileType-agnostic "combo-button" visibility change.
- if (InspectorController.profilerEnabled()) {
- this.enableToggleButton.title = WebInspector.UIString("Profiling enabled. Click to disable.");
- this.enableToggleButton.toggled = true;
- for (var typeId in this._profileTypeButtonsByIdMap)
- this._profileTypeButtonsByIdMap[typeId].removeStyleClass("hidden");
- this.profileViewStatusBarItemsContainer.removeStyleClass("hidden");
- this.panelEnablerView.visible = false;
- } else {
- this.enableToggleButton.title = WebInspector.UIString("Profiling disabled. Click to enable.");
- this.enableToggleButton.toggled = false;
- for (var typeId in this._profileTypeButtonsByIdMap)
- this._profileTypeButtonsByIdMap[typeId].addStyleClass("hidden");
- this.profileViewStatusBarItemsContainer.addStyleClass("hidden");
- this.panelEnablerView.visible = true;
- }
- },
-
- _enableProfiling: function()
- {
- if (InspectorController.profilerEnabled())
- return;
- this._toggleProfiling(this.panelEnablerView.alwaysEnabled);
- },
-
- _toggleProfiling: function(optionalAlways)
- {
- if (InspectorController.profilerEnabled())
- InspectorController.disableProfiler(true);
- else
- InspectorController.enableProfiler(!!optionalAlways);
- },
-
- _populateProfiles: function()
- {
- // FIXME: This code needs to be adjusted when more profiling types are added.
- // Currently defaults to CPU profiles.
- var cpuProfiles = this.getProfileType(WebInspector.CPUProfileType.TypeId).treeElement;
- if (cpuProfiles.children.length)
- return;
-
- function populateCallback(profileHeaders) {
- profileHeaders.sort(function(a, b) { return a.uid - b.uid; });
- var profileHeadersLength = profileHeaders.length;
- for (var i = 0; i < profileHeadersLength; ++i)
- WebInspector.addProfileHeader(profileHeaders[i]);
- }
-
- var callId = WebInspector.Callback.wrap(populateCallback);
- InspectorController.getProfileHeaders(callId);
-
- delete this._shouldPopulateProfiles;
- },
-
- setMainViewWidth: function(width)
- {
- this.profileViews.style.left = width + "px";
- this.profileViewStatusBarItemsContainer.style.left = width + "px";
- }
-}
-
-WebInspector.ProfilesPanel.prototype.__proto__ = WebInspector.Panel.prototype;
-
-WebInspector.ProfileSidebarTreeElement = function(profile)
-{
- this.profile = profile;
-
- if (this.profile.title.indexOf(UserInitiatedProfileName) === 0)
- this._profileNumber = this.profile.title.substring(UserInitiatedProfileName.length + 1);
-
- WebInspector.SidebarTreeElement.call(this, "profile-sidebar-tree-item", "", "", profile, false);
-
- this.refreshTitles();
-}
-
-WebInspector.ProfileSidebarTreeElement.prototype = {
- onselect: function()
- {
- WebInspector.panels.profiles.showProfile(this.profile);
- },
-
- get mainTitle()
- {
- if (this._mainTitle)
- return this._mainTitle;
- if (this.profile.title.indexOf(UserInitiatedProfileName) === 0)
- return WebInspector.UIString("Profile %d", this._profileNumber);
- return this.profile.title;
- },
-
- set mainTitle(x)
- {
- this._mainTitle = x;
- this.refreshTitles();
- },
-
- get subtitle()
- {
- // There is no subtitle.
- },
-
- set subtitle(x)
- {
- // Can't change subtitle.
- },
-
- set searchMatches(matches)
- {
- if (!matches) {
- if (!this.bubbleElement)
- return;
- this.bubbleElement.removeStyleClass("search-matches");
- this.bubbleText = "";
- return;
- }
-
- this.bubbleText = matches;
- this.bubbleElement.addStyleClass("search-matches");
- }
-}
-
-WebInspector.ProfileSidebarTreeElement.prototype.__proto__ = WebInspector.SidebarTreeElement.prototype;
-
-WebInspector.ProfileGroupSidebarTreeElement = function(title, subtitle)
-{
- WebInspector.SidebarTreeElement.call(this, "profile-group-sidebar-tree-item", title, subtitle, null, true);
-}
-
-WebInspector.ProfileGroupSidebarTreeElement.prototype = {
- onselect: function()
- {
- WebInspector.panels.profiles.showProfile(this.children[this.children.length - 1].profile);
- }
-}
-
-WebInspector.ProfileGroupSidebarTreeElement.prototype.__proto__ = WebInspector.SidebarTreeElement.prototype;
-
-WebInspector.didGetProfileHeaders = WebInspector.Callback.processCallback;
-WebInspector.didGetProfile = WebInspector.Callback.processCallback;
« no previous file with comments | « resources/inspector/ProfileView.js ('k') | resources/inspector/PropertiesSection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698