OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |