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

Side by Side Diff: Source/devtools/front_end/main/Tests.js

Issue 1184383002: DevTools: adopt FilmStripModel to new screenshot recorder trace format (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: promisified Created 5 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 function finish() 482 function finish()
483 { 483 {
484 test.releaseControl(); 484 test.releaseControl();
485 } 485 }
486 486
487 WebInspector.overridesSupport._deviceMetricsChangedListenerMuted = true; 487 WebInspector.overridesSupport._deviceMetricsChangedListenerMuted = true;
488 test.takeControl(); 488 test.takeControl();
489 this.waitForThrottler(WebInspector.overridesSupport._deviceMetricsThrottler, step1); 489 this.waitForThrottler(WebInspector.overridesSupport._deviceMetricsThrottler, step1);
490 }; 490 };
491 491
492 TestSuite.prototype.testScreenshotRecording = function()
493 {
494 var test = this;
495
496 function performActionsInPage(callback)
497 {
498 var count = 0;
499 var d = document.createElement("div");
500 d.style.width = "100px";
501 d.style.height = "100px";
502 d.style.position = "absolute";
503 d.style.left = "0px";
504 d.style.top = "0px";
505 document.body.appendChild(d);
506 requestAnimationFrame(frame);
507 function frame()
508 {
509 var color = [0, 0, 0];
510 color[count % 3] = 255;
511 d.style.backgroundColor = "rgb(" + color.join(",") + ")";
512 if (++count > 5)
513 requestAnimationFrame(callback);
514 else
515 requestAnimationFrame(frame);
516 }
517 }
518
519 Runtime.experiments.enableForTest("filmStripInNetworkAndTimeline");
520 var captureFilmStripSetting = WebInspector.settings.createSetting("timelineC aptureFilmStrip", false);
521 captureFilmStripSetting.set(true);
522 test.evaluateInConsole_(performActionsInPage.toString(), function() {});
523 test.invokeAsyncWithTimeline_("performActionsInPage", onTimelineDone);
524
525 function onTimelineDone()
526 {
527 captureFilmStripSetting.set(false);
528 var filmStripModel = new WebInspector.FilmStripModel(WebInspector.panels .timeline._tracingModel);
529 var frames = filmStripModel.frames();
530 console.error("Frame count: " + frames.length);
531 test.assertTrue(frames.length > 2 && typeof frames.length === "number");
alph 2015/06/17 13:47:51 We tend to not use assert in tests, but rather log
532 loadFrameImages(frames);
533 }
534
535 function loadFrameImages(frames)
536 {
537 var readyImages = [];
538 for (var frame of frames) {
539 var image = new Image();
540 image.addEventListener("load", onLoad);
541 image.src = "data:image/jpg;base64," + frame.imageData;
alph 2015/06/17 13:47:51 Ain't you just nuked imageData?
542 }
543
544 function onLoad(event)
545 {
546 readyImages.push(event.target);
547 if (readyImages.length === frames.length)
548 validateImagesAndCompleteTest(readyImages);
549 }
550 }
551
552 function validateImagesAndCompleteTest(images)
553 {
554 var canvas = document.createElement("canvas");
555 var ctx = canvas.getContext("2d");
556 for (var image of images) {
557 test.assertTrue(image.naturalWidth > 10);
alph 2015/06/17 13:47:51 ditto for assertTrue
558 test.assertTrue(image.naturalHeight > 10);
559 canvas.width = image.naturalWidth;
560 canvas.height = image.naturalHeight;
561 ctx.drawImage(image, 0, 0);
562 var data = ctx.getImageData(0, 0, 1, 1);
563 console.error("Color " + Array.prototype.join.call(data.data, ","));
564 }
565 test.releaseControl();
566 }
567
568 test.takeControl();
569 }
570
492 TestSuite.prototype.testSettings = function() 571 TestSuite.prototype.testSettings = function()
493 { 572 {
494 var test = this; 573 var test = this;
495 574
496 createSettings(); 575 createSettings();
497 test.takeControl(); 576 test.takeControl();
498 setTimeout(reset, 0); 577 setTimeout(reset, 0);
499 578
500 function createSettings() 579 function createSettings()
501 { 580 {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 if (text === "PASS") 623 if (text === "PASS")
545 this.releaseControl(); 624 this.releaseControl();
546 else if (/^FAIL/.test(text)) 625 else if (/^FAIL/.test(text))
547 this.fail(text); 626 this.fail(text);
548 } 627 }
549 628
550 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleMo del.Events.MessageAdded, onConsoleMessage, this); 629 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleMo del.Events.MessageAdded, onConsoleMessage, this);
551 this.takeControl(); 630 this.takeControl();
552 }; 631 };
553 632
633 TestSuite.prototype.invokeAsyncWithTimeline_ = function(functionName, callback)
634 {
635 var test = this;
636 test.showPanel("timeline").then(function() {
637 WebInspector.panels.timeline._model.addEventListener(WebInspector.Timeli neModel.Events.RecordingStarted, onRecordingStarted);
638 WebInspector.panels.timeline.toggleTimelineButton.element.click();
639 });
640
641 function onRecordingStarted()
642 {
643 WebInspector.panels.timeline._model.removeEventListener(WebInspector.Tim elineModel.Events.RecordingStarted, onRecordingStarted);
644 test.evaluateInConsole_(functionName + "(function() { console.log('DONE' ); });", function() {});
645 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.Conso leModel.Events.MessageAdded, onConsoleMessage, this);
alph 2015/06/17 13:47:51 Not sure, but does it make sense to addEventListen
646 }
647
648 function onConsoleMessage(event)
649 {
650 var text = event.data.messageText;
651 if (text === "DONE") {
652 WebInspector.multitargetConsoleModel.removeEventListener(WebInspecto r.ConsoleModel.Events.MessageAdded, onConsoleMessage, this);
653 pageActionsDone();
654 }
655 }
656
657 function pageActionsDone()
658 {
659 WebInspector.panels.timeline._model.addEventListener(WebInspector.Timeli neModel.Events.RecordingStopped, onRecordingStopped);
660 WebInspector.panels.timeline.toggleTimelineButton.element.click();
661 }
662
663 function onRecordingStopped()
664 {
665 WebInspector.panels.timeline._model.removeEventListener(WebInspector.Tim elineModel.Events.RecordingStopped, onRecordingStopped);
666 callback();
667 }
668 };
669
554 /** 670 /**
555 * Serializes array of uiSourceCodes to string. 671 * Serializes array of uiSourceCodes to string.
556 * @param {!Array.<!WebInspectorUISourceCode>} uiSourceCodes 672 * @param {!Array.<!WebInspectorUISourceCode>} uiSourceCodes
557 * @return {string} 673 * @return {string}
558 */ 674 */
559 TestSuite.prototype.uiSourceCodesToString_ = function(uiSourceCodes) 675 TestSuite.prototype.uiSourceCodesToString_ = function(uiSourceCodes)
560 { 676 {
561 var names = []; 677 var names = [];
562 for (var i = 0; i < uiSourceCodes.length; i++) 678 for (var i = 0; i < uiSourceCodes.length; i++)
563 names.push('"' + WebInspector.networkMapping.networkURL(uiSourceCodes[i] ) + '"'); 679 names.push('"' + WebInspector.networkMapping.networkURL(uiSourceCodes[i] ) + '"');
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 } 823 }
708 824
709 WebInspector.notifications.addEventListener(WebInspector.NotificationService.Eve nts.InspectorAgentEnabledForTests, runTests); 825 WebInspector.notifications.addEventListener(WebInspector.NotificationService.Eve nts.InspectorAgentEnabledForTests, runTests);
710 826
711 return new TestSuite(); 827 return new TestSuite();
712 828
713 } 829 }
714 830
715 if (window.uiTests) 831 if (window.uiTests)
716 window.uiTests.testSuiteReady(createTestSuite, WebInspector.TestBase); 832 window.uiTests.testSuiteReady(createTestSuite, WebInspector.TestBase);
OLDNEW
« no previous file with comments | « Source/devtools/front_end/components_lazy/FilmStripView.js ('k') | Source/devtools/front_end/sdk/TracingModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698