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

Side by Side Diff: Source/devtools/front_end/timeline/TimelineUIUtils.js

Issue 731293006: Implement style invalidation tracking (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address reviewer comments, cleanup Created 6 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/timeline/TimelineModel.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 732
733 /** 733 /**
734 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 734 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations
735 */ 735 */
736 function groupInvalidationsByCause(invalidations) 736 function groupInvalidationsByCause(invalidations)
737 { 737 {
738 var causeToInvalidationMap = {}; 738 var causeToInvalidationMap = {};
739 for (var index = 0; index < invalidations.length; index++) { 739 for (var index = 0; index < invalidations.length; index++) {
740 var invalidation = invalidations[index]; 740 var invalidation = invalidations[index];
741 var causeKey = ""; 741 var causeKey = "";
742 if (invalidation.cause && invalidation.cause.reason) 742 if (invalidation.cause.reason)
743 causeKey += invalidation.cause.reason + "."; 743 causeKey += invalidation.cause.reason + ".";
744 if (invalidation.cause && invalidation.cause.stackTrace) { 744 if (invalidation.cause.stackTrace) {
745 invalidation.cause.stackTrace.forEach(function(stackFrame) { 745 invalidation.cause.stackTrace.forEach(function(stackFrame) {
746 causeKey += stackFrame["functionName"] + "."; 746 causeKey += stackFrame["functionName"] + ".";
747 causeKey += stackFrame["scriptId"] + "."; 747 causeKey += stackFrame["scriptId"] + ".";
748 causeKey += stackFrame["url"] + "."; 748 causeKey += stackFrame["url"] + ".";
749 causeKey += stackFrame["lineNumber"] + "."; 749 causeKey += stackFrame["lineNumber"] + ".";
750 causeKey += stackFrame["columnNumber"] + "."; 750 causeKey += stackFrame["columnNumber"] + ".";
751 }); 751 });
752 } 752 }
753 753
754 if (causeToInvalidationMap[causeKey]) 754 if (causeToInvalidationMap[causeKey])
(...skipping 10 matching lines...) Expand all
765 */ 765 */
766 function appendInvalidationGroup(parentElement, invalidations) 766 function appendInvalidationGroup(parentElement, invalidations)
767 { 767 {
768 var row = parentElement.createChild("div", "invalidations-group section" ); 768 var row = parentElement.createChild("div", "invalidations-group section" );
769 var header = row.createChild("div", "header"); 769 var header = row.createChild("div", "header");
770 header.addEventListener("click", function() { 770 header.addEventListener("click", function() {
771 toggleDetails(header, invalidations); 771 toggleDetails(header, invalidations);
772 }); 772 });
773 773
774 var first = invalidations[0]; 774 var first = invalidations[0];
775 var reason = first.cause && first.cause.reason; 775 var reason = first.cause.reason;
776 var topFrame = first.cause && first.cause.stackTrace && first.cause.stac kTrace[0]; 776 var topFrame = first.cause.stackTrace && first.cause.stackTrace[0];
777 777
778 if (reason) 778 if (reason)
779 header.createTextChild(WebInspector.UIString("%s for ", reason)); 779 header.createTextChild(WebInspector.UIString("%s for ", reason));
780 else 780 else
781 header.createTextChild(WebInspector.UIString("Unknown cause for ")); 781 header.createTextChild(WebInspector.UIString("Unknown cause for "));
782 782
783 appendTruncatedNodeList(header, invalidations); 783 appendTruncatedNodeList(header, invalidations);
784 784
785 if (topFrame) { 785 if (topFrame) {
786 header.createTextChild(WebInspector.UIString(". ")); 786 header.createTextChild(WebInspector.UIString(". "));
(...skipping 22 matching lines...) Expand all
809 } 809 }
810 } 810 }
811 811
812 /** 812 /**
813 * @param {!Element} parentElement 813 * @param {!Element} parentElement
814 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 814 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations
815 */ 815 */
816 function appendTruncatedNodeList(parentElement, invalidations) 816 function appendTruncatedNodeList(parentElement, invalidations)
817 { 817 {
818 var invalidationNodes = []; 818 var invalidationNodes = [];
819 invalidations.forEach(function(invalidation) { 819 var invalidationNodeIdMap = {};
820 for (var i = 0; i < invalidations.length; i++) {
821 var invalidation = invalidations[i];
820 var invalidationNode = createInvalidationNode(invalidation, false); 822 var invalidationNode = createInvalidationNode(invalidation, false);
821 if (invalidationNode) 823 if (invalidationNode && !invalidationNodeIdMap[invalidation.nodeId]) {
822 invalidationNodes.push(invalidationNode); 824 invalidationNodes.push(invalidationNode);
823 }); 825 invalidationNodeIdMap[invalidation.nodeId] = true;
826 }
827 }
824 828
825 if (invalidationNodes.length === 1) { 829 if (invalidationNodes.length === 1) {
826 parentElement.appendChild(invalidationNodes[0]); 830 parentElement.appendChild(invalidationNodes[0]);
827 } else if (invalidationNodes.length === 2) { 831 } else if (invalidationNodes.length === 2) {
828 parentElement.appendChild(invalidationNodes[0]); 832 parentElement.appendChild(invalidationNodes[0]);
829 parentElement.createTextChild(WebInspector.UIString(" and ")); 833 parentElement.createTextChild(WebInspector.UIString(" and "));
830 parentElement.appendChild(invalidationNodes[1]); 834 parentElement.appendChild(invalidationNodes[1]);
831 } else if (invalidationNodes.length >= 3) { 835 } else if (invalidationNodes.length >= 3) {
832 parentElement.appendChild(invalidationNodes[0]); 836 parentElement.appendChild(invalidationNodes[0]);
833 parentElement.createTextChild(WebInspector.UIString(", ")); 837 parentElement.createTextChild(WebInspector.UIString(", "));
834 parentElement.appendChild(invalidationNodes[1]); 838 parentElement.appendChild(invalidationNodes[1]);
835 parentElement.createTextChild(WebInspector.UIString(", and %s others ", invalidationNodes.length - 2)); 839 parentElement.createTextChild(WebInspector.UIString(", and %s others ", invalidationNodes.length - 2));
836 } 840 }
837 } 841 }
838 842
839 /** 843 /**
840 * @param {!Element} parentElement
841 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations
842 */
843 function appendNodeList(parentElement, invalidations)
844 {
845 var firstNode = true;
846 invalidations.forEach(function(invalidation) {
847 var invalidationNode = createInvalidationNode(invalidation, true);
848 if (invalidationNode) {
849 if (!firstNode)
850 parentElement.createTextChild(WebInspector.UIString(", "));
851 parentElement.appendChild(invalidationNode);
852 firstNode = false;
853 }
854 });
855 }
856
857 /**
858 * @param {!Element} header 844 * @param {!Element} header
859 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 845 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations
860 */ 846 */
861 function toggleDetails(header, invalidations) 847 function toggleDetails(header, invalidations)
862 { 848 {
863 var wasExpanded = header.classList.contains("expanded"); 849 var wasExpanded = header.classList.contains("expanded");
864 header.classList.toggle("expanded", !wasExpanded); 850 header.classList.toggle("expanded", !wasExpanded);
865 header.parentElement.classList.toggle("expanded", !wasExpanded); 851 header.parentElement.classList.toggle("expanded", !wasExpanded);
866 852
867 if (wasExpanded) { 853 if (wasExpanded) {
868 var content = header.nextElementSibling; 854 var content = header.nextElementSibling;
869 if (content) 855 if (content)
870 content.remove(); 856 content.remove();
871 } else { 857 } else {
872 createInvalidationGroupDetails(header.parentElement, invalidations); 858 createInvalidationGroupDetails(header.parentElement, invalidations);
873 } 859 }
874 } 860 }
875 861
876 /** 862 /**
877 * @param {!Element} parentElement 863 * @param {!Element} parentElement
878 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 864 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations
879 */ 865 */
880 function createInvalidationGroupDetails(parentElement, invalidations) 866 function createInvalidationGroupDetails(parentElement, invalidations)
881 { 867 {
882 var content = parentElement.createChild("div", "content"); 868 var content = parentElement.createChild("div", "content");
883 869
884 var first = invalidations[0]; 870 var first = invalidations[0];
885 if (first.cause && first.cause.stackTrace) { 871 if (first.cause.stackTrace) {
886 var stack = content.createChild("div"); 872 var stack = content.createChild("div");
887 stack.createTextChild(WebInspector.UIString("Stack trace:")); 873 stack.createTextChild(WebInspector.UIString("Stack trace:"));
888 contentHelper.createChildStackTraceElement(stack, first.cause.stackT race); 874 contentHelper.createChildStackTraceElement(stack, first.cause.stackT race);
889 } 875 }
890 876
891 content.createTextChild(invalidations.length > 1 ? WebInspector.UIString ("Nodes:") : WebInspector.UIString("Node:")); 877 content.createTextChild(invalidations.length > 1 ? WebInspector.UIString ("Nodes:") : WebInspector.UIString("Node:"));
892 var nodeList = content.createChild("div", "node-list timeline-details-vi ew-row-stack-trace"); 878 var nodeList = content.createChild("div", "node-list timeline-details-vi ew-row-stack-trace");
893 appendNodeList(nodeList, invalidations); 879 appendDetailedNodeList(nodeList, invalidations);
880 }
881
882 /**
883 * @param {!Element} parentElement
884 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations
885 */
886 function appendDetailedNodeList(parentElement, invalidations)
887 {
888 var firstNode = true;
889 for (var i = 0; i < invalidations.length; i++) {
890 var invalidation = invalidations[i];
891 var invalidationNode = createInvalidationNode(invalidation, true);
892 if (invalidationNode) {
893 if (!firstNode)
894 parentElement.createTextChild(WebInspector.UIString(", "));
895 firstNode = false;
896
897 parentElement.appendChild(invalidationNode);
898
899 var extraData = invalidation.extraData ? ", " + invalidation.ext raData : "";
900 if (invalidation.changedId) {
901 parentElement.createTextChild(WebInspector.UIString("(change d id to \"%s\"%s)", invalidation.changedId, extraData));
902 } else if (invalidation.changedClass) {
903 parentElement.createTextChild(WebInspector.UIString("(change d class to \"%s\"%s)", invalidation.changedClass, extraData));
904 } else if (invalidation.changedAttribute) {
905 parentElement.createTextChild(WebInspector.UIString("(change d attribute to \"%s\"%s)", invalidation.changedAttribute, extraData));
906 } else if (invalidation.changedPseudo) {
907 parentElement.createTextChild(WebInspector.UIString("(change d pesudo to \"%s\"%s)", invalidation.changedPseudo, extraData));
908 } else if (invalidation.selectorPart) {
909 parentElement.createTextChild(WebInspector.UIString("(change d \"%s\"%s)", invalidation.selectorPart, extraData));
910 }
911 }
912 }
894 } 913 }
895 } 914 }
896 915
897 /** 916 /**
898 * @param {!WebInspector.TracingModel.Event} event 917 * @param {!WebInspector.TracingModel.Event} event
899 * @param {!WebInspector.Target} target 918 * @param {!WebInspector.Target} target
900 * @param {function(?Array.<number>, ?Array.<number>)} callback 919 * @param {function(?Array.<number>, ?Array.<number>)} callback
901 */ 920 */
902 WebInspector.TimelineUIUtils._pushInvalidationNodeIdsToFrontend = function(event , target, callback) 921 WebInspector.TimelineUIUtils._pushInvalidationNodeIdsToFrontend = function(event , target, callback)
903 { 922 {
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after
1489 * @param {!ConsoleAgent.CallFrame} stackFrame 1508 * @param {!ConsoleAgent.CallFrame} stackFrame
1490 */ 1509 */
1491 appendStackFrame: function(parentElement, stackFrame) 1510 appendStackFrame: function(parentElement, stackFrame)
1492 { 1511 {
1493 parentElement.createTextChild(WebInspector.beautifyFunctionName(stackFra me.functionName)); 1512 parentElement.createTextChild(WebInspector.beautifyFunctionName(stackFra me.functionName));
1494 parentElement.createTextChild(" @ "); 1513 parentElement.createTextChild(" @ ");
1495 var urlElement = this._linkifier.linkifyScriptLocation(this._target, sta ckFrame.scriptId, stackFrame.url, stackFrame.lineNumber - 1, stackFrame.columnNu mber - 1); 1514 var urlElement = this._linkifier.linkifyScriptLocation(this._target, sta ckFrame.scriptId, stackFrame.url, stackFrame.lineNumber - 1, stackFrame.columnNu mber - 1);
1496 parentElement.appendChild(urlElement); 1515 parentElement.appendChild(urlElement);
1497 } 1516 }
1498 } 1517 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelineModel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698