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

Unified Diff: chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js

Issue 10134041: Add test data for spaceport benchmark. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js
diff --git a/chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js b/chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js
new file mode 100644
index 0000000000000000000000000000000000000000..aed3b939361d0aa9d88dd5f833004ddbadb7368b
--- /dev/null
+++ b/chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js
@@ -0,0 +1,83 @@
+define([ 'util/ensureCallback', 'features', 'Modernizr', 'sprites/container' ], function (ensureCallback, features, Modernizr, container) {
+ function RenderContext(sourceData, frameData) {
+ if (!Modernizr.csstransforms3d) {
+ return;
+ }
+
+ this.sourceData = sourceData;
+
+ this.transformData = frameData.map(function (objectTransforms) {
+ return objectTransforms.map(function (t) {
+ return t.cssTransform3d;
+ });
+ });
+
+ this.elements = frameData[0].map(function () {
+ var el = document.createElement('div');
+ el.style.position = 'absolute';
+ el.style.top = '0';
+ el.style.left = '0';
+ el.style.display = 'block';
+ el.style[features.transformOriginStyleProperty] = '0 0';
+ return el;
+ });
+
+ this.containerElement = container();
+ }
+
+ RenderContext.prototype.load = function load(callback) {
+ callback = ensureCallback(callback);
+
+ if (!Modernizr.csstransforms3d) {
+ callback(new Error('Not supported'));
+ return;
+ }
+
+ this.elements.forEach(function (element) {
+ this.containerElement.appendChild(element);
+ }, this);
+
+ document.body.appendChild(this.containerElement);
+
+ callback(null);
+ };
+
+ RenderContext.prototype.unload = function unload() {
+ this.containerElement.parentNode.removeChild(this.containerElement);
+
+ this.elements.forEach(function (element) {
+ if (element.parentNode) {
+ element.parentNode.removeChild(element);
+ }
+ });
+ };
+
+ var transformStyleProperty = features.transformStyleProperty;
+
+ RenderContext.prototype.renderFrame = function renderFrame(frameIndex) {
+ var transforms = this.transformData[frameIndex];
+ var elements = this.elements;
+ var count = elements.length;
+
+ var frameInfo = this.sourceData.getFrameInfo(frameIndex);
+
+ var i;
+ for (i = 0; i < count; ++i) {
+ var element = elements[i];
+ var backgroundImage = 'url(' + frameInfo.sheetImage.src + ')';
+ if (element.style.backgroundImage !== backgroundImage) {
+ // Chrome has flickering issues without this check
+ element.style.backgroundImage = backgroundImage;
+ }
+
+ element.style[transformStyleProperty] = transforms[i];
+ element.style.backgroundPosition = -frameInfo.x + 'px ' + -frameInfo.y + 'px';
+ element.style.width = frameInfo.width + 'px';
+ element.style.height = frameInfo.height + 'px';
+ }
+ };
+
+ return function (sourceData, frameData) {
+ return new RenderContext(sourceData, frameData);
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698