Diff
Modified: trunk/PerformanceTests/Animometer/resources/debug-runner/tests.js (197906 => 197907)
--- trunk/PerformanceTests/Animometer/resources/debug-runner/tests.js 2016-03-10 01:10:09 UTC (rev 197906)
+++ trunk/PerformanceTests/Animometer/resources/debug-runner/tests.js 2016-03-10 01:35:18 UTC (rev 197907)
@@ -162,10 +162,6 @@
name: "CSS bouncing SVG images"
},
{
- url: "bouncing-particles/bouncing-css-images.html?particleWidth=80&particleHeight=80&imageSrc=../resources/yin-yang.png",
- name: "CSS bouncing PNG images"
- },
- {
url: "text/layering-text.html",
name: "CSS layering text"
},
Modified: trunk/PerformanceTests/Animometer/resources/runner/tests.js (197906 => 197907)
--- trunk/PerformanceTests/Animometer/resources/runner/tests.js 2016-03-10 01:10:09 UTC (rev 197906)
+++ trunk/PerformanceTests/Animometer/resources/runner/tests.js 2016-03-10 01:35:18 UTC (rev 197907)
@@ -21,6 +21,10 @@
name: "Canvas arcs"
},
{
+ url: "master/leaves.html",
+ name: "Leaves"
+ },
+ {
url: "master/canvas-stage.html?pathType=linePath&lineJoin=round&lineCap=round",
name: "Canvas line path, round join"
},
Added: trunk/PerformanceTests/Animometer/tests/master/leaves.html (0 => 197907)
--- trunk/PerformanceTests/Animometer/tests/master/leaves.html (rev 0)
+++ trunk/PerformanceTests/Animometer/tests/master/leaves.html 2016-03-10 01:35:18 UTC (rev 197907)
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <link rel="stylesheet" type="text/css" href=""
+ <style>
+ #stage {
+ background-color: #23282B;
+ }
+ #stage img {
+ position: absolute;
+ }
+ </style>
+</head>
+<body>
+ <div id="stage"></div>
+ <script src=""
+ <script src=""
+ <script src=""
+ <script src=""
+ <script src=""
+ <script src=""
+ <script src=""
+</body>
+</html>
Added: trunk/PerformanceTests/Animometer/tests/master/resources/compass100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/compass100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/console100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/console100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/contribute100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/contribute100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/debugger100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/debugger100.png
___________________________________________________________________
Added: svn:mime-type
Modified: trunk/PerformanceTests/Animometer/tests/master/resources/dom-particles.js (197906 => 197907)
--- trunk/PerformanceTests/Animometer/tests/master/resources/dom-particles.js 2016-03-10 01:10:09 UTC (rev 197906)
+++ trunk/PerformanceTests/Animometer/tests/master/resources/dom-particles.js 2016-03-10 01:35:18 UTC (rev 197907)
@@ -12,6 +12,14 @@
reset: function()
{
Particle.prototype.reset.call(this);
+
+ var emitLocation = this.stage.emitLocation[Stage.randomInt(0, this.stage.emitLocation.length - 1)];
+ this.position = new Point(emitLocation.x, emitLocation.y);
+
+ var angle = Stage.randomInt(0, this.stage.emitSteps) / this.stage.emitSteps * Math.PI * 2 + Stage.dateCounterValue(100) * this.stage.emissionSpin;
+ this.velocity = new Point(Math.sin(angle), Math.cos(angle))
+ .multiply(Stage.random(.5, 2.5));
+
this.element.style.width = this.size.x + "px";
this.element.style.height = this.size.y + "px";
this.element.style.backgroundColor = Stage.rotatingColor(2000, .7, .45);
Added: trunk/PerformanceTests/Animometer/tests/master/resources/inspector100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/inspector100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/layout100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/layout100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/leaves.js (0 => 197907)
--- trunk/PerformanceTests/Animometer/tests/master/resources/leaves.js (rev 0)
+++ trunk/PerformanceTests/Animometer/tests/master/resources/leaves.js 2016-03-10 01:35:18 UTC (rev 197907)
@@ -0,0 +1,139 @@
+(function() {
+
+Leaf = Utilities.createSubclass(Particle,
+ function(stage)
+ {
+ this.element = document.createElement("img");
+ this.element.setAttribute("src", stage.images[Stage.randomInt(0, stage.images.length - 1)].src);
+ var sizeString = this.sizeMinimum + "px";
+ this.element.style.width = sizeString;
+ this.element.style.height = sizeString;
+ stage.element.appendChild(this.element);
+
+ Particle.call(this, stage);
+ }, {
+
+ sizeMinimum: 25,
+ sizeRange: 0,
+
+ reset: function()
+ {
+ Particle.prototype.reset.call(this);
+ this._life = Stage.randomInt(20, 100);
+ this._position = new Point(Stage.random(-this.size.width, this.maxPosition.x), Stage.random(-this.size.height, this.maxPosition.y));
+ this._velocity = new Point(Stage.random(-6, -2), .1 * this.size.y + Stage.random(-1, 1));
+ },
+
+ animate: function(timeDelta)
+ {
+ this.rotater.next(timeDelta);
+
+ this._position.x += this._velocity.x + 8 * this.stage.focusX;
+ this._position.y += this._velocity.y;
+
+ this._life--;
+ if (!this._life || this._position.y > this.stage.size.y)
+ this.reset();
+
+ if (this._position.x < -this.size.width || this._position.x > this.maxPosition.x)
+ this._position.x = (this._position.x + this.maxPosition.x) % this.maxPosition.x;
+ this.move();
+ },
+
+ move: function()
+ {
+ this.element.style.transform = "translate(" + this._position.x + "px, " + this._position.y + "px)" + this.rotater.rotateZ();
+ }
+});
+
+Utilities.extendObject(ParticlesStage.prototype, {
+
+ imageSrcs: [
+ "compass",
+ "console",
+ "contribute",
+ "debugger",
+ "inspector",
+ "layout",
+ "performance",
+ "script",
+ "shortcuts",
+ "standards",
+ "storage",
+ "styles",
+ "timeline"
+ ],
+ images: [],
+
+ initialize: function(benchmark)
+ {
+ Stage.prototype.initialize.call(this, benchmark);
+
+ var lastPromise;
+ var images = this.images;
+ this.imageSrcs.forEach(function(imageSrc) {
+ var promise = this._loadImage("resources/" + imageSrc + "100.png");
+ if (!lastPromise)
+ lastPromise = promise;
+ else {
+ lastPromise = lastPromise.then(function(img) {
+ images.push(img);
+ return promise;
+ });
+ }
+ }, this);
+
+ lastPromise.then(function(img) {
+ images.push(img);
+ benchmark.readyPromise.resolve();
+ });
+ },
+
+ _loadImage: function(src) {
+ var img = new Image;
+ var promise = new SimplePromise;
+
+ img._onload_ = function(e) {
+ promise.resolve(e.target);
+ };
+
+ img.src = ""
+ return promise;
+ },
+
+ animate: function(timeDelta)
+ {
+ this.focusX = 0.5 + 0.5 * Math.sin(Stage.dateFractionalValue(10000) * Math.PI * 2);
+ timeDelta /= 4;
+ this.particles.forEach(function(particle) {
+ particle.animate(timeDelta);
+ });
+ },
+
+ createParticle: function()
+ {
+ return new Leaf(this);
+ },
+
+ willRemoveParticle: function(particle)
+ {
+ particle.element.remove();
+ }
+});
+
+LeavesBenchmark = Utilities.createSubclass(Benchmark,
+ function(options)
+ {
+ Benchmark.call(this, new ParticlesStage(), options);
+ }, {
+
+ waitUntilReady: function() {
+ this.readyPromise = new SimplePromise;
+ return this.readyPromise;
+ }
+
+});
+
+window.benchmarkClass = LeavesBenchmark;
+
+})();
Modified: trunk/PerformanceTests/Animometer/tests/master/resources/particles.js (197906 => 197907)
--- trunk/PerformanceTests/Animometer/tests/master/resources/particles.js 2016-03-10 01:10:09 UTC (rev 197906)
+++ trunk/PerformanceTests/Animometer/tests/master/resources/particles.js 2016-03-10 01:35:18 UTC (rev 197907)
@@ -8,59 +8,55 @@
Particle.prototype =
{
+ sizeMinimum: 40,
+ sizeRange: 10,
+
reset: function()
{
- var randSize = Math.pow(Pseudo.random(), 4) * 10 + 40;
+ var randSize = Math.round(Math.pow(Pseudo.random(), 4) * this.sizeRange + this.sizeMinimum);
this.size = new Point(randSize, randSize);
this.maxPosition = this.stage.size.subtract(this.size);
-
- var emitLocation = this.stage.emitLocation[Stage.randomInt(0, this.stage.emitLocation.length - 1)];
- this.position = new Point(emitLocation.x, emitLocation.y);
-
- var angle = Stage.randomInt(0, this.stage.emitSteps) / this.stage.emitSteps * Math.PI * 2 + Stage.dateCounterValue(100) * this.stage.emissionSpin;
- this._velocity = new Point(Math.sin(angle), Math.cos(angle))
- .multiply(Stage.random(.5, 2.5));
},
animate: function(timeDelta)
{
this.rotater.next(timeDelta);
- this.position = this.position.add(this._velocity.multiply(timeDelta));
- this._velocity.y += 0.03;
+ this.position = this.position.add(this.velocity.multiply(timeDelta));
+ this.velocity.y += 0.03;
// If particle is going to move off right side
if (this.position.x > this.maxPosition.x) {
- if (this._velocity.x > 0)
- this._velocity.x *= -1;
+ if (this.velocity.x > 0)
+ this.velocity.x *= -1;
this.position.x = this.maxPosition.x;
} else if (this.position.x < 0) {
// If particle is going to move off left side
- if (this._velocity.x < 0)
- this._velocity.x *= -1;
+ if (this.velocity.x < 0)
+ this.velocity.x *= -1;
this.position.x = 0;
}
// If particle is going to move off bottom side
if (this.position.y > this.maxPosition.y) {
// Adjust direction but maintain magnitude
- var magnitude = this._velocity.length();
- this._velocity.x *= 1.5 + .005 * this.size.x;
- this._velocity = this._velocity.normalize().multiply(magnitude);
- if (Math.abs(this._velocity.y) < 0.7)
+ var magnitude = this.velocity.length();
+ this.velocity.x *= 1.5 + .005 * this.size.x;
+ this.velocity = this.velocity.normalize().multiply(magnitude);
+ if (Math.abs(this.velocity.y) < 0.7)
this.reset();
else {
- if (this._velocity.y > 0)
- this._velocity.y *= -0.999;
+ if (this.velocity.y > 0)
+ this.velocity.y *= -0.999;
this.position.y = this.maxPosition.y;
}
} else if (this.position.y < 0) {
// If particle is going to move off top side
- var magnitude = this._velocity.length();
- this._velocity.x *= 1.5 + .005 * this.size.x;
- this._velocity = this._velocity.normalize().multiply(magnitude);
- if (this._velocity.y < 0)
- this._velocity.y *= -0.998;
+ var magnitude = this.velocity.length();
+ this.velocity.x *= 1.5 + .005 * this.size.x;
+ this.velocity = this.velocity.normalize().multiply(magnitude);
+ if (this.velocity.y < 0)
+ this.velocity.y *= -0.998;
this.position.y = 0;
}
@@ -79,9 +75,9 @@
this.particles = [];
}, {
- initialize: function(benchmark, options)
+ initialize: function(benchmark)
{
- Stage.prototype.initialize.call(this, benchmark, options);
+ Stage.prototype.initialize.call(this, benchmark);
this.emissionSpin = Stage.random(0, 3);
this.emitSteps = Stage.randomInt(4, 6);
this.emitLocation = [
@@ -93,7 +89,6 @@
animate: function(timeDelta)
{
- var offset = Stage.dateFractionalValue();
timeDelta /= 4;
this.particles.forEach(function(particle) {
particle.animate(timeDelta);
Added: trunk/PerformanceTests/Animometer/tests/master/resources/performance100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/performance100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/script100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/script100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/shortcuts100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/shortcuts100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/standards100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/standards100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/storage100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/storage100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/styles100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/styles100.png
___________________________________________________________________
Added: svn:mime-type
Added: trunk/PerformanceTests/Animometer/tests/master/resources/timeline100.png
(Binary files differ)
Property changes on: trunk/PerformanceTests/Animometer/tests/master/resources/timeline100.png
___________________________________________________________________
Added: svn:mime-type
Modified: trunk/PerformanceTests/ChangeLog (197906 => 197907)
--- trunk/PerformanceTests/ChangeLog 2016-03-10 01:10:09 UTC (rev 197906)
+++ trunk/PerformanceTests/ChangeLog 2016-03-10 01:35:18 UTC (rev 197907)
@@ -1,3 +1,47 @@
+2016-03-09 Jon Lee <[email protected]>
+
+ Add a new image test
+ https://bugs.webkit.org/show_bug.cgi?id=155232
+
+ Reviewed by Dean Jackson.
+ Provisionally reviewed by Said Abou-Hallawa.
+
+ The image test renders PNGs and moves them with translate and rotate
+ transforms. Each particle has a lifetime, and when the lifetime ends or
+ the particle goes offscreen, it resets itself somewhere on the stage.
+
+ * Animometer/resources/debug-runner/tests.js: Remove the CSS bouncing PNG
+ images test, because this one tests the same technique.
+ * Animometer/resources/runner/tests.js: Added here as "Leaves".
+ * Animometer/tests/master/leaves.html: Added.
+ * Animometer/tests/master/resources/particles.js: Refactor out the parts
+ specific to the DOM particles test. Consequently make velocity a public
+ member.
+ (initialize): The options parameter is never used, so remove it.
+ (animate): Remove unused local variable.
+ * Animometer/tests/master/resources/leaves.js: Maintains a focal point that
+ moves back and forth across the canvas. That point affects the velocity
+ of the particles. When the focal point is on the leftmost side, it is
+ between [-6, -2], and set in reset(). When the focal point is on the rightmost
+ side, it will be from [2, 6].
+ * Animometer/tests/master/resources/dom-particles.js: Move JS specific to
+ this test here from particles.js.
+
+ New images.
+ * Animometer/tests/master/resources/compass100.png: Added.
+ * Animometer/tests/master/resources/console100.png: Added.
+ * Animometer/tests/master/resources/contribute100.png: Added.
+ * Animometer/tests/master/resources/debugger100.png: Added.
+ * Animometer/tests/master/resources/inspector100.png: Added.
+ * Animometer/tests/master/resources/layout100.png: Added.
+ * Animometer/tests/master/resources/performance100.png: Added.
+ * Animometer/tests/master/resources/script100.png: Added.
+ * Animometer/tests/master/resources/shortcuts100.png: Added.
+ * Animometer/tests/master/resources/standards100.png: Added.
+ * Animometer/tests/master/resources/storage100.png: Added.
+ * Animometer/tests/master/resources/styles100.png: Added.
+ * Animometer/tests/master/resources/timeline100.png: Added.
+
2016-03-03 Jon Lee <[email protected]>
Add ability to retrieve raw data from release harness