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

Side by Side Diff: third_party/WebKit/LayoutTests/inspector/profiler/heap-snapshot-test.js

Issue 2493373002: DevTools: rename WebInspector into modules. (Closed)
Patch Set: for bots Created 4 years, 1 month 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
OLDNEW
1 var initialize_HeapSnapshotTest = function() { 1 var initialize_HeapSnapshotTest = function() {
2 2
3 InspectorTest.preloadPanel("profiles"); 3 InspectorTest.preloadPanel("profiles");
4 4
5 InspectorTest.createHeapSnapshotMockFactories = function() { 5 InspectorTest.createHeapSnapshotMockFactories = function() {
6 6
7 InspectorTest.createJSHeapSnapshotMockObject = function() 7 InspectorTest.createJSHeapSnapshotMockObject = function()
8 { 8 {
9 return { 9 return {
10 _rootNodeIndex: 0, 10 _rootNodeIndex: 0,
(...skipping 30 matching lines...) Expand all
41 containmentEdges: new Uint32Array([ 41 containmentEdges: new Uint32Array([
42 2, 6, 3, // 0: shortcut 'a' to node 'A' 42 2, 6, 3, // 0: shortcut 'a' to node 'A'
43 1, 7, 6, // 3: property 'b' to node 'B' 43 1, 7, 6, // 3: property 'b' to node 'B'
44 0, 1, 6, // 6: element '1' to node 'B' 44 0, 1, 6, // 6: element '1' to node 'B'
45 1, 8, 9, // 9: property 'ac' to node 'C' 45 1, 8, 9, // 9: property 'ac' to node 'C'
46 1, 9, 9, // 12: property 'bc' to node 'C' 46 1, 9, 9, // 12: property 'bc' to node 'C'
47 1, 10, 12, // 15: property 'bd' to node 'D' 47 1, 10, 12, // 15: property 'bd' to node 'D'
48 1, 11, 15]),// 18: property 'ce' to node 'E' 48 1, 11, 15]),// 18: property 'ce' to node 'E'
49 strings: ["", "A", "B", "C", "D", "E", "a", "b", "ac", "bc", "bd", "ce"] , 49 strings: ["", "A", "B", "C", "D", "E", "a", "b", "ac", "bc", "bd", "ce"] ,
50 _firstEdgeIndexes: new Uint32Array([0, 6, 12, 18, 21, 21, 21]), 50 _firstEdgeIndexes: new Uint32Array([0, 6, 12, 18, 21, 21, 21]),
51 createNode: WebInspector.JSHeapSnapshot.prototype.createNode, 51 createNode: HeapSnapshotWorker.JSHeapSnapshot.prototype.createNode,
52 createEdge: WebInspector.JSHeapSnapshot.prototype.createEdge, 52 createEdge: HeapSnapshotWorker.JSHeapSnapshot.prototype.createEdge,
53 createRetainingEdge: WebInspector.JSHeapSnapshot.prototype.createRetaini ngEdge 53 createRetainingEdge: HeapSnapshotWorker.JSHeapSnapshot.prototype.createR etainingEdge
54 }; 54 };
55 }; 55 };
56 56
57 InspectorTest.createHeapSnapshotMockRaw = function() 57 InspectorTest.createHeapSnapshotMockRaw = function()
58 { 58 {
59 // Effectively the same graph as in createJSHeapSnapshotMockObject, 59 // Effectively the same graph as in createJSHeapSnapshotMockObject,
60 // but having full set of fields. 60 // but having full set of fields.
61 // 61 //
62 // A triple in parentheses indicates node index, self size and 62 // A triple in parentheses indicates node index, self size and
63 // retained size. 63 // retained size.
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 var meta = rawSnapshot.snapshot.meta; 327 var meta = rawSnapshot.snapshot.meta;
328 rawSnapshot.snapshot.edge_count = rawSnapshot.edges.length / meta.edge_f ields.length; 328 rawSnapshot.snapshot.edge_count = rawSnapshot.edges.length / meta.edge_f ields.length;
329 rawSnapshot.snapshot.node_count = rawSnapshot.nodes.length / meta.node_f ields.length; 329 rawSnapshot.snapshot.node_count = rawSnapshot.nodes.length / meta.node_f ields.length;
330 330
331 return rawSnapshot; 331 return rawSnapshot;
332 }, 332 },
333 333
334 createJSHeapSnapshot: function() 334 createJSHeapSnapshot: function()
335 { 335 {
336 var parsedSnapshot = InspectorTest._postprocessHeapSnapshotMock(this.gen erateSnapshot()); 336 var parsedSnapshot = InspectorTest._postprocessHeapSnapshotMock(this.gen erateSnapshot());
337 return new WebInspector.JSHeapSnapshot(parsedSnapshot, new WebInspector. HeapSnapshotProgress()); 337 return new HeapSnapshotWorker.JSHeapSnapshot(parsedSnapshot, new HeapSna pshotWorker.HeapSnapshotProgress());
338 }, 338 },
339 339
340 _registerNode: function(node) 340 _registerNode: function(node)
341 { 341 {
342 this._nodes.push(node); 342 this._nodes.push(node);
343 return this._nodes.length - 1; 343 return this._nodes.length - 1;
344 }, 344 },
345 345
346 lookupNodeType: function(typeName) 346 lookupNodeType: function(typeName)
347 { 347 {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 411
412 InspectorTest.createHeapSnapshotMockFactories(); 412 InspectorTest.createHeapSnapshotMockFactories();
413 413
414 414
415 InspectorTest.startProfilerTest = function(callback) 415 InspectorTest.startProfilerTest = function(callback)
416 { 416 {
417 InspectorTest.addResult("Profiler was enabled."); 417 InspectorTest.addResult("Profiler was enabled.");
418 // We mock out HeapProfilerAgent -- as DRT runs in single-process mode, Insp ector 418 // We mock out HeapProfilerAgent -- as DRT runs in single-process mode, Insp ector
419 // and test share the same heap. Taking a snapshot takes too long for a test , 419 // and test share the same heap. Taking a snapshot takes too long for a test ,
420 // so we provide synthetic snapshots. 420 // so we provide synthetic snapshots.
421 InspectorTest._panelReset = InspectorTest.override(WebInspector.panels.profi les, "_reset", function(){}, true); 421 InspectorTest._panelReset = InspectorTest.override(UI.panels.profiles, "_res et", function(){}, true);
422 InspectorTest.addSniffer(WebInspector.HeapSnapshotView.prototype, "show", In spectorTest._snapshotViewShown, true); 422 InspectorTest.addSniffer(Profiler.HeapSnapshotView.prototype, "show", Inspec torTest._snapshotViewShown, true);
423 423
424 // Reduce the number of populated nodes to speed up testing. 424 // Reduce the number of populated nodes to speed up testing.
425 WebInspector.HeapSnapshotContainmentDataGrid.prototype.defaultPopulateCount = function() { return 10; }; 425 Profiler.HeapSnapshotContainmentDataGrid.prototype.defaultPopulateCount = fu nction() { return 10; };
426 WebInspector.HeapSnapshotConstructorsDataGrid.prototype.defaultPopulateCount = function() { return 10; }; 426 Profiler.HeapSnapshotConstructorsDataGrid.prototype.defaultPopulateCount = f unction() { return 10; };
427 WebInspector.HeapSnapshotDiffDataGrid.prototype.defaultPopulateCount = funct ion() { return 5; }; 427 Profiler.HeapSnapshotDiffDataGrid.prototype.defaultPopulateCount = function( ) { return 5; };
428 InspectorTest.addResult("Detailed heap profiles were enabled."); 428 InspectorTest.addResult("Detailed heap profiles were enabled.");
429 InspectorTest.safeWrap(callback)(); 429 InspectorTest.safeWrap(callback)();
430 }; 430 };
431 431
432 InspectorTest.completeProfilerTest = function() 432 InspectorTest.completeProfilerTest = function()
433 { 433 {
434 // There is no way to disable detailed heap profiles. 434 // There is no way to disable detailed heap profiles.
435 InspectorTest.addResult(""); 435 InspectorTest.addResult("");
436 InspectorTest.addResult("Profiler was disabled."); 436 InspectorTest.addResult("Profiler was disabled.");
437 InspectorTest.completeTest(); 437 InspectorTest.completeTest();
(...skipping 10 matching lines...) Expand all
448 if (completeTestStack) 448 if (completeTestStack)
449 InspectorTest.addResult("FAIL: test already completed at " + com pleteTestStack); 449 InspectorTest.addResult("FAIL: test already completed at " + com pleteTestStack);
450 InspectorTest.completeProfilerTest(); 450 InspectorTest.completeProfilerTest();
451 completeTestStack = new Error().stack; 451 completeTestStack = new Error().stack;
452 return; 452 return;
453 } 453 }
454 454
455 var nextTest = testSuiteTests.shift(); 455 var nextTest = testSuiteTests.shift();
456 InspectorTest.addResult(""); 456 InspectorTest.addResult("");
457 InspectorTest.addResult("Running: " + /function\s([^(]*)/.exec(nextTest) [1]); 457 InspectorTest.addResult("Running: " + /function\s([^(]*)/.exec(nextTest) [1]);
458 InspectorTest._panelReset.call(WebInspector.panels.profiles); 458 InspectorTest._panelReset.call(UI.panels.profiles);
459 InspectorTest.safeWrap(nextTest)(runner, runner); 459 InspectorTest.safeWrap(nextTest)(runner, runner);
460 } 460 }
461 461
462 InspectorTest.startProfilerTest(runner); 462 InspectorTest.startProfilerTest(runner);
463 }; 463 };
464 464
465 InspectorTest.assertColumnContentsEqual = function(reference, actual) 465 InspectorTest.assertColumnContentsEqual = function(reference, actual)
466 { 466 {
467 var length = Math.min(reference.length, actual.length); 467 var length = Math.min(reference.length, actual.length);
468 for (var i = 0; i < length; ++i) 468 for (var i = 0; i < length; ++i)
(...skipping 22 matching lines...) Expand all
491 name: function (data) { return data; }, 491 name: function (data) { return data; },
492 id: function (data) { return parseInt(data, 10); } 492 id: function (data) { return parseInt(data, 10); }
493 }[sortType]; 493 }[sortType];
494 494
495 if (!extractor) { 495 if (!extractor) {
496 InspectorTest.addResult("Invalid sort type: " + sortType); 496 InspectorTest.addResult("Invalid sort type: " + sortType);
497 return; 497 return;
498 } 498 }
499 499
500 var acceptableComparisonResult; 500 var acceptableComparisonResult;
501 if (sortOrder === WebInspector.DataGrid.Order.Ascending) { 501 if (sortOrder === UI.DataGrid.Order.Ascending) {
502 acceptableComparisonResult = -1; 502 acceptableComparisonResult = -1;
503 } else if (sortOrder === WebInspector.DataGrid.Order.Descending) { 503 } else if (sortOrder === UI.DataGrid.Order.Descending) {
504 acceptableComparisonResult = 1; 504 acceptableComparisonResult = 1;
505 } else { 505 } else {
506 InspectorTest.addResult("Invalid sort order: " + sortOrder); 506 InspectorTest.addResult("Invalid sort order: " + sortOrder);
507 return; 507 return;
508 } 508 }
509 509
510 for (var i = 0; i < contents.length - 1; ++i) { 510 for (var i = 0; i < contents.length - 1; ++i) {
511 var a = extractor(contents[i]); 511 var a = extractor(contents[i]);
512 var b = extractor(contents[i + 1]); 512 var b = extractor(contents[i + 1]);
513 var result = simpleComparator(a, b); 513 var result = simpleComparator(a, b);
514 if (result !== 0 && result !== acceptableComparisonResult) { 514 if (result !== 0 && result !== acceptableComparisonResult) {
515 InspectorTest.addResult("Elements " + i + " and " + (i + 1) + " are out of order: " + a + " " + b + " (" + sortOrder + ")"); 515 InspectorTest.addResult("Elements " + i + " and " + (i + 1) + " are out of order: " + a + " " + b + " (" + sortOrder + ")");
516 } 516 }
517 } 517 }
518 }; 518 };
519 519
520 InspectorTest.clickColumn = function(column, callback) 520 InspectorTest.clickColumn = function(column, callback)
521 { 521 {
522 callback = InspectorTest.safeWrap(callback); 522 callback = InspectorTest.safeWrap(callback);
523 var cell = this._currentGrid()._headerTableHeaders[column.id]; 523 var cell = this._currentGrid()._headerTableHeaders[column.id];
524 var event = { target: { enclosingNodeOrSelfWithNodeName: function() { return cell; } } }; 524 var event = { target: { enclosingNodeOrSelfWithNodeName: function() { return cell; } } };
525 525
526 function sortingComplete() 526 function sortingComplete()
527 { 527 {
528 InspectorTest._currentGrid().removeEventListener(WebInspector.HeapSnapsh otSortableDataGrid.Events.SortingComplete, sortingComplete, this); 528 InspectorTest._currentGrid().removeEventListener(Profiler.HeapSnapshotSo rtableDataGrid.Events.SortingComplete, sortingComplete, this);
529 InspectorTest.assertEquals(column.id, this._currentGrid().sortColumnId() , "unexpected sorting"); 529 InspectorTest.assertEquals(column.id, this._currentGrid().sortColumnId() , "unexpected sorting");
530 column.sort = this._currentGrid().sortOrder(); 530 column.sort = this._currentGrid().sortOrder();
531 function callCallback() 531 function callCallback()
532 { 532 {
533 callback(column); 533 callback(column);
534 } 534 }
535 setTimeout(callCallback, 0); 535 setTimeout(callCallback, 0);
536 } 536 }
537 InspectorTest._currentGrid().addEventListener(WebInspector.HeapSnapshotSorta bleDataGrid.Events.SortingComplete, sortingComplete, this); 537 InspectorTest._currentGrid().addEventListener(Profiler.HeapSnapshotSortableD ataGrid.Events.SortingComplete, sortingComplete, this);
538 this._currentGrid()._clickInHeaderCell(event); 538 this._currentGrid()._clickInHeaderCell(event);
539 }; 539 };
540 540
541 InspectorTest.clickRowAndGetRetainers = function(row, callback) 541 InspectorTest.clickRowAndGetRetainers = function(row, callback)
542 { 542 {
543 callback = InspectorTest.safeWrap(callback); 543 callback = InspectorTest.safeWrap(callback);
544 var event = { 544 var event = {
545 target: { 545 target: {
546 enclosingNodeOrSelfWithNodeName: function() { return row._element; } , 546 enclosingNodeOrSelfWithNodeName: function() { return row._element; } ,
547 selectedNode: row 547 selectedNode: row
548 } 548 }
549 }; 549 };
550 this._currentGrid()._mouseDownInDataTable(event); 550 this._currentGrid()._mouseDownInDataTable(event);
551 var rootNode = InspectorTest.currentProfileView()._retainmentDataGrid.rootNo de(); 551 var rootNode = InspectorTest.currentProfileView()._retainmentDataGrid.rootNo de();
552 function populateComplete() 552 function populateComplete()
553 { 553 {
554 rootNode.removeEventListener(WebInspector.HeapSnapshotGridNode.Events.Po pulateComplete, populateComplete, this); 554 rootNode.removeEventListener(Profiler.HeapSnapshotGridNode.Events.Popula teComplete, populateComplete, this);
555 callback(rootNode); 555 callback(rootNode);
556 } 556 }
557 rootNode.addEventListener(WebInspector.HeapSnapshotGridNode.Events.PopulateC omplete, populateComplete, this); 557 rootNode.addEventListener(Profiler.HeapSnapshotGridNode.Events.PopulateCompl ete, populateComplete, this);
558 }; 558 };
559 559
560 InspectorTest.clickShowMoreButton = function(buttonName, row, callback) 560 InspectorTest.clickShowMoreButton = function(buttonName, row, callback)
561 { 561 {
562 callback = InspectorTest.safeWrap(callback); 562 callback = InspectorTest.safeWrap(callback);
563 var parent = row.parent; 563 var parent = row.parent;
564 function populateComplete() 564 function populateComplete()
565 { 565 {
566 parent.removeEventListener(WebInspector.HeapSnapshotGridNode.Events.Popu lateComplete, populateComplete, this); 566 parent.removeEventListener(Profiler.HeapSnapshotGridNode.Events.Populate Complete, populateComplete, this);
567 function callCallback() 567 function callCallback()
568 { 568 {
569 callback(parent); 569 callback(parent);
570 } 570 }
571 setTimeout(callCallback, 0); 571 setTimeout(callCallback, 0);
572 } 572 }
573 parent.addEventListener(WebInspector.HeapSnapshotGridNode.Events.PopulateCom plete, populateComplete, this); 573 parent.addEventListener(Profiler.HeapSnapshotGridNode.Events.PopulateComplet e, populateComplete, this);
574 row[buttonName].click(); 574 row[buttonName].click();
575 }; 575 };
576 576
577 InspectorTest.columnContents = function(column, row) 577 InspectorTest.columnContents = function(column, row)
578 { 578 {
579 // Make sure invisible nodes are removed from the view port. 579 // Make sure invisible nodes are removed from the view port.
580 this._currentGrid().updateVisibleNodes(); 580 this._currentGrid().updateVisibleNodes();
581 var columnOrdinal = InspectorTest.viewColumns().indexOf(column); 581 var columnOrdinal = InspectorTest.viewColumns().indexOf(column);
582 var result = []; 582 var result = [];
583 var parent = row || this._currentGrid().rootNode(); 583 var parent = row || this._currentGrid().rootNode();
(...skipping 18 matching lines...) Expand all
602 ++result; 602 ++result;
603 } 603 }
604 return result; 604 return result;
605 }; 605 };
606 606
607 InspectorTest.expandRow = function(row, callback) 607 InspectorTest.expandRow = function(row, callback)
608 { 608 {
609 callback = InspectorTest.safeWrap(callback); 609 callback = InspectorTest.safeWrap(callback);
610 function populateComplete() 610 function populateComplete()
611 { 611 {
612 row.removeEventListener(WebInspector.HeapSnapshotGridNode.Events.Populat eComplete, populateComplete, this); 612 row.removeEventListener(Profiler.HeapSnapshotGridNode.Events.PopulateCom plete, populateComplete, this);
613 function callCallback() 613 function callCallback()
614 { 614 {
615 callback(row); 615 callback(row);
616 } 616 }
617 setTimeout(callCallback, 0); 617 setTimeout(callCallback, 0);
618 } 618 }
619 row.addEventListener(WebInspector.HeapSnapshotGridNode.Events.PopulateComple te, populateComplete, this); 619 row.addEventListener(Profiler.HeapSnapshotGridNode.Events.PopulateComplete, populateComplete, this);
620 (function expand() 620 (function expand()
621 { 621 {
622 if (row.hasChildren) 622 if (row.hasChildren)
623 row.expand(); 623 row.expand();
624 else 624 else
625 setTimeout(expand, 0); 625 setTimeout(expand, 0);
626 })(); 626 })();
627 }; 627 };
628 628
629 InspectorTest.findAndExpandGCRoots = function(callback) 629 InspectorTest.findAndExpandGCRoots = function(callback)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 for (var node = parent.children[0]; node; node = node.traverseNextNode(true, parent, true)) { 669 for (var node = parent.children[0]; node; node = node.traverseNextNode(true, parent, true)) {
670 if (matcher(node)) 670 if (matcher(node))
671 return node; 671 return node;
672 } 672 }
673 return null; 673 return null;
674 }; 674 };
675 675
676 InspectorTest.switchToView = function(title, callback) 676 InspectorTest.switchToView = function(title, callback)
677 { 677 {
678 callback = InspectorTest.safeWrap(callback); 678 callback = InspectorTest.safeWrap(callback);
679 var view = WebInspector.panels.profiles.visibleView; 679 var view = UI.panels.profiles.visibleView;
680 view._changePerspectiveAndWait(title, callback); 680 view._changePerspectiveAndWait(title, callback);
681 // Increase the grid container height so the viewport don't limit the number of nodes. 681 // Increase the grid container height so the viewport don't limit the number of nodes.
682 InspectorTest._currentGrid().scrollContainer.style.height = "10000px"; 682 InspectorTest._currentGrid().scrollContainer.style.height = "10000px";
683 }; 683 };
684 684
685 InspectorTest.takeAndOpenSnapshot = function(generator, callback) 685 InspectorTest.takeAndOpenSnapshot = function(generator, callback)
686 { 686 {
687 callback = InspectorTest.safeWrap(callback); 687 callback = InspectorTest.safeWrap(callback);
688 var snapshot = generator(); 688 var snapshot = generator();
689 var profileType = WebInspector.ProfileTypeRegistry.instance.heapSnapshotProf ileType; 689 var profileType = Profiler.ProfileTypeRegistry.instance.heapSnapshotProfileT ype;
690 function pushGeneratedSnapshot(reportProgress, callback2) 690 function pushGeneratedSnapshot(reportProgress, callback2)
691 { 691 {
692 var profile = profileType.profileBeingRecorded(); 692 var profile = profileType.profileBeingRecorded();
693 if (reportProgress) { 693 if (reportProgress) {
694 profileType._reportHeapSnapshotProgress({data: {done: 50, total: 100 , finished: false}}); 694 profileType._reportHeapSnapshotProgress({data: {done: 50, total: 100 , finished: false}});
695 profileType._reportHeapSnapshotProgress({data: {done: 100, total: 10 0, finished: true}}); 695 profileType._reportHeapSnapshotProgress({data: {done: 100, total: 10 0, finished: true}});
696 } 696 }
697 snapshot.snapshot.typeId = "HEAP"; 697 snapshot.snapshot.typeId = "HEAP";
698 profileType._addHeapSnapshotChunk({data: JSON.stringify(snapshot)}); 698 profileType._addHeapSnapshotChunk({data: JSON.stringify(snapshot)});
699 setTimeout(callback2, 0); 699 setTimeout(callback2, 0);
700 } 700 }
701 InspectorTest.override(InspectorTest.HeapProfilerAgent, "takeHeapSnapshot", pushGeneratedSnapshot); 701 InspectorTest.override(InspectorTest.HeapProfilerAgent, "takeHeapSnapshot", pushGeneratedSnapshot);
702 InspectorTest._takeAndOpenSnapshotCallback = callback; 702 InspectorTest._takeAndOpenSnapshotCallback = callback;
703 profileType._takeHeapSnapshot(function() { }); 703 profileType._takeHeapSnapshot(function() { });
704 }; 704 };
705 705
706 InspectorTest.viewColumns = function() 706 InspectorTest.viewColumns = function()
707 { 707 {
708 return InspectorTest._currentGrid()._columnsArray; 708 return InspectorTest._currentGrid()._columnsArray;
709 }; 709 };
710 710
711 InspectorTest.currentProfileView = function() 711 InspectorTest.currentProfileView = function()
712 { 712 {
713 return WebInspector.panels.profiles.visibleView; 713 return UI.panels.profiles.visibleView;
714 }; 714 };
715 715
716 InspectorTest._currentGrid = function() 716 InspectorTest._currentGrid = function()
717 { 717 {
718 return this.currentProfileView()._dataGrid; 718 return this.currentProfileView()._dataGrid;
719 }; 719 };
720 720
721 InspectorTest._snapshotViewShown = function() 721 InspectorTest._snapshotViewShown = function()
722 { 722 {
723 if (InspectorTest._takeAndOpenSnapshotCallback) { 723 if (InspectorTest._takeAndOpenSnapshotCallback) {
724 var callback = InspectorTest._takeAndOpenSnapshotCallback; 724 var callback = InspectorTest._takeAndOpenSnapshotCallback;
725 InspectorTest._takeAndOpenSnapshotCallback = null; 725 InspectorTest._takeAndOpenSnapshotCallback = null;
726 var dataGrid = this._dataGrid; 726 var dataGrid = this._dataGrid;
727 function sortingComplete() 727 function sortingComplete()
728 { 728 {
729 dataGrid.removeEventListener(WebInspector.HeapSnapshotSortableDataGr id.Events.SortingComplete, sortingComplete, null); 729 dataGrid.removeEventListener(Profiler.HeapSnapshotSortableDataGrid.E vents.SortingComplete, sortingComplete, null);
730 callback(); 730 callback();
731 } 731 }
732 dataGrid.addEventListener(WebInspector.HeapSnapshotSortableDataGrid.Even ts.SortingComplete, sortingComplete, null); 732 dataGrid.addEventListener(Profiler.HeapSnapshotSortableDataGrid.Events.S ortingComplete, sortingComplete, null);
733 } 733 }
734 }; 734 };
735 735
736 }; 736 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698