summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/square-with-colorspin-profile.pngbin0 -> 542 bytes
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/tex-image-and-sub-image-image-bitmap-utils.js50
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-blob.html45
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-canvas.html7
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-bitmap.html7
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-data.html7
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image.html7
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-video.html7
-rw-r--r--third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp5
-rw-r--r--third_party/WebKit/Source/core/imagebitmap/ImageBitmapOptions.idl4
10 files changed, 96 insertions, 43 deletions
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/square-with-colorspin-profile.png b/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/square-with-colorspin-profile.png
new file mode 100644
index 0000000..5c8927c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/square-with-colorspin-profile.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/tex-image-and-sub-image-image-bitmap-utils.js b/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/tex-image-and-sub-image-image-bitmap-utils.js
index fe6e884..fc01d51 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/tex-image-and-sub-image-image-bitmap-utils.js
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/resources/tex-image-and-sub-image-image-bitmap-utils.js
@@ -13,7 +13,7 @@ function checkCanvasRect(buf, x, y, width, height, color, tolerance, bufWidth, r
}
}
-function runOneIteration(useTexSubImage2D, bindingTarget, program, bitmap, flipY, premultiplyAlpha, retVal)
+function runOneIteration(useTexSubImage2D, bindingTarget, program, bitmap, flipY, premultiplyAlpha, retVal, colorspace = 'empty')
{
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// Enable writes to the RGBA channels
@@ -61,12 +61,21 @@ function runOneIteration(useTexSubImage2D, bindingTarget, program, bitmap, flipY
var bl = greenColor;
var br = premultiplyAlpha ? ((retVal.alpha == 0.5) ? halfGreen : (retVal.alpha == 1) ? greenColor : blackColor) : greenColor;
+ var blueColor = [0, 0, 255];
+ if (colorspace == 'none') {
+ tl = tr = bl = br = blueColor;
+ } else if (colorspace == 'default' || colorspace == 'notprovided') {
+ tl = tr = bl = br = redColor;
+ }
+
var loc;
if (bindingTarget == gl.TEXTURE_CUBE_MAP) {
loc = gl.getUniformLocation(program, "face");
}
var tolerance = (retVal.alpha == 0) ? 0 : 3;
+ if (colorspace == 'default' || colorspace == 'none' || colorspace == 'notprovided')
+ tolerance = 13; // For linux and win, the tolerance can be 8.
for (var tt = 0; tt < targets.length; ++tt) {
if (bindingTarget == gl.TEXTURE_CUBE_MAP) {
gl.uniform1i(loc, targets[tt]);
@@ -89,27 +98,40 @@ function runOneIteration(useTexSubImage2D, bindingTarget, program, bitmap, flipY
function runTestOnBindingTarget(bindingTarget, program, bitmaps, retVal) {
var cases = [
- { sub: false },
- { sub: true },
+ { sub: false, bitmap: bitmaps.defaultOption, flipY: false, premultiply: true, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.defaultOption, flipY: false, premultiply: true, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.noFlipYPremul, flipY: false, premultiply: true, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.noFlipYPremul, flipY: false, premultiply: true, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.noFlipYDefault, flipY: false, premultiply: true, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.noFlipYDefault, flipY: false, premultiply: true, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.noFlipYUnpremul, flipY: false, premultiply: false, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.noFlipYUnpremul, flipY: false, premultiply: false, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.flipYPremul, flipY: true, premultiply: true, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.flipYPremul, flipY: true, premultiply: true, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.flipYDefault, flipY: true, premultiply: true, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.flipYDefault, flipY: true, premultiply: true, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.flipYUnpremul, flipY: true, premultiply: false, colorspace: 'empty' },
+ { sub: true, bitmap: bitmaps.flipYUnpremul, flipY: true, premultiply: false, colorspace: 'empty' },
+ { sub: false, bitmap: bitmaps.colorspaceDef, flipY: false, premultiply: true, colorspace: retVal.colorspaceEffect ? 'notprovided' : 'empty' },
+ { sub: true, bitmap: bitmaps.colorspaceDef, flipY: false, premultiply: true, colorspace: retVal.colorspaceEffect ? 'notprovided' : 'empty' },
+ { sub: false, bitmap: bitmaps.colorspaceNone, flipY: false, premultiply: true, colorspace: retVal.colorspaceEffect ? 'none' : 'empty' },
+ { sub: true, bitmap: bitmaps.colorspaceNone, flipY: false, premultiply: true, colorspace: retVal.colorspaceEffect ? 'none' : 'empty' },
+ { sub: false, bitmap: bitmaps.colorspaceDefault, flipY: false, premultiply: true, colorspace: retVal.colorspaceEffect ? 'default' : 'empty' },
+ { sub: true, bitmap: bitmaps.colorspaceDefault, flipY: false, premultiply: true, colorspace: retVal.colorspaceEffect ? 'default' : 'empty' },
];
for (var i in cases) {
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.defaultOption, false, true, retVal);
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.noFlipYPremul, false, true, retVal);
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.noFlipYDefault, false, true, retVal);
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.noFlipYUnpremul, false, false, retVal);
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.flipYPremul, true, true, retVal);
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.flipYDefault, true, true, retVal);
- runOneIteration(cases[i].sub, bindingTarget, program, bitmaps.flipYUnpremul, true, false, retVal);
+ runOneIteration(cases[i].sub, bindingTarget, program, cases[i].bitmap, cases[i].flipY,
+ cases[i].premultiply, retVal, cases[i].colorspace);
}
}
-function runTest(bitmaps, alphaVal)
+function runTest(bitmaps, alphaVal, colorspaceEffective)
{
- var retVal = {testPassed: true, alpha: alphaVal};
+ var retVal = {testPassed: true, alpha: alphaVal, colorspaceEffect: colorspaceEffective};
var program = tiu.setupTexturedQuad(gl, internalFormat);
runTestOnBindingTarget(gl.TEXTURE_2D, program, bitmaps, retVal);
-// program = tiu.setupTexturedQuadWithCubeMap(gl, internalFormat);
-// runTestOnBindingTarget(gl.TEXTURE_CUBE_MAP, program, bitmaps, retVal);
+ program = tiu.setupTexturedQuadWithCubeMap(gl, internalFormat);
+ runTestOnBindingTarget(gl.TEXTURE_CUBE_MAP, program, bitmaps, retVal);
return retVal.testPassed;
}
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-blob.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-blob.html
index a3b109c..055cb09 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-blob.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-blob.html
@@ -21,7 +21,8 @@ var blackColor = [0, 0, 0];
var halfRed = [128, 0, 0];
var halfGreen = [0, 128, 0];
-var blob = null;
+var blob1 = null;
+var blob2 = null;
function promiseRejected()
{
@@ -43,16 +44,19 @@ function generateTest()
gl.clearColor(0,0,0,1);
gl.clearDepth(1);
- var p1 = createImageBitmap(blob).then(function(imageBitmap) { bitmaps.defaultOption = imageBitmap });
- var p2 = createImageBitmap(blob, {imageOrientation: "none", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.noFlipYPremul = imageBitmap });
- var p3 = createImageBitmap(blob, {imageOrientation: "none", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.noFlipYDefault = imageBitmap });
- var p4 = createImageBitmap(blob, {imageOrientation: "none", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.noFlipYUnpremul = imageBitmap });
- var p5 = createImageBitmap(blob, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
- var p6 = createImageBitmap(blob, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
- var p7 = createImageBitmap(blob, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
- Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(function() {
+ var p1 = createImageBitmap(blob1).then(function(imageBitmap) { bitmaps.defaultOption = imageBitmap });
+ var p2 = createImageBitmap(blob1, {imageOrientation: "none", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.noFlipYPremul = imageBitmap });
+ var p3 = createImageBitmap(blob1, {imageOrientation: "none", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.noFlipYDefault = imageBitmap });
+ var p4 = createImageBitmap(blob1, {imageOrientation: "none", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.noFlipYUnpremul = imageBitmap });
+ var p5 = createImageBitmap(blob1, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
+ var p6 = createImageBitmap(blob1, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
+ var p7 = createImageBitmap(blob1, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
+ var p8 = createImageBitmap(blob2).then(function(imageBitmap) { bitmaps.colorspaceDef = imageBitmap });
+ var p9 = createImageBitmap(blob2, {colorspaceConversion: "none"}).then(function(imageBitmap) { bitmaps.colorspaceNone = imageBitmap });
+ var p10 = createImageBitmap(blob2, {colorspaceConversion: "default"}).then(function(imageBitmap) { bitmaps.colorspaceDefault = imageBitmap });
+ Promise.all([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]).then(function() {
var alphaVal = 0.5;
- var testPassed = runTest(bitmaps, alphaVal);
+ var testPassed = runTest(bitmaps, alphaVal, true);
if (testPassed)
pass();
finishJSTest();
@@ -68,13 +72,20 @@ function init()
testRunner.overridePreference("WebKitWebGLEnabled", "1");
testRunner.dumpAsText();
}
- var xhr = new XMLHttpRequest();
- xhr.open("GET", 'resources/red-green-semi-transparent.png');
- xhr.responseType = 'blob';
- xhr.send();
- xhr.onload = function() {
- blob = xhr.response;
- generateTest();
+ var xhr1 = new XMLHttpRequest();
+ xhr1.open("GET", 'resources/red-green-semi-transparent.png');
+ xhr1.responseType = 'blob';
+ xhr1.send();
+ xhr1.onload = function() {
+ blob1 = xhr1.response;
+ var xhr2 = new XMLHttpRequest();
+ xhr2.open("GET", 'resources/square-with-colorspin-profile.png');
+ xhr2.responseType = 'blob';
+ xhr2.send();
+ xhr2.onload = function() {
+ blob2 = xhr2.response;
+ generateTest();
+ }
}
}
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-canvas.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-canvas.html
index 74dd83c..97cd5fd 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-canvas.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-canvas.html
@@ -69,9 +69,12 @@ function generateTest()
var p5 = createImageBitmap(testCanvas, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
var p6 = createImageBitmap(testCanvas, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
var p7 = createImageBitmap(testCanvas, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
- Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(function() {
+ var p8 = createImageBitmap(testCanvas).then(function(imageBitmap) { bitmaps.colorspaceDef = imageBitmap });
+ var p9 = createImageBitmap(testCanvas, {colorspaceConversion: "none"}).then(function(imageBitmap) { bitmaps.colorspaceNone = imageBitmap });
+ var p10 = createImageBitmap(testCanvas, {colorspaceConversion: "default"}).then(function(imageBitmap) { bitmaps.colorspaceDefault = imageBitmap });
+ Promise.all([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]).then(function() {
var alphaVal = 0.5;
- var testPassed = runTest(bitmaps, alphaVal);
+ var testPassed = runTest(bitmaps, alphaVal, false);
if (testPassed)
pass();
finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-bitmap.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-bitmap.html
index d3116d0..75928662 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-bitmap.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-bitmap.html
@@ -59,9 +59,12 @@ function generateTest()
var p5 = createImageBitmap(bitmap, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
var p6 = createImageBitmap(bitmap, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
var p7 = createImageBitmap(bitmap, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
- Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(function() {
+ var p8 = createImageBitmap(bitmap).then(function(imageBitmap) { bitmaps.colorspaceDef = imageBitmap });
+ var p9 = createImageBitmap(bitmap, {colorspaceConversion: "none"}).then(function(imageBitmap) { bitmaps.colorspaceNone = imageBitmap });
+ var p10 = createImageBitmap(bitmap, {colorspaceConversion: "default"}).then(function(imageBitmap) { bitmaps.colorspaceDefault = imageBitmap });
+ Promise.all([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]).then(function() {
var alphaVal = 0;
- var testPassed = runTest(bitmaps, alphaVal);
+ var testPassed = runTest(bitmaps, alphaVal, false);
if (testPassed)
pass();
finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-data.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-data.html
index 60c3c38..deaf45d 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-data.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image-data.html
@@ -56,9 +56,12 @@ function generateTest()
var p5 = createImageBitmap(imageData, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
var p6 = createImageBitmap(imageData, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
var p7 = createImageBitmap(imageData, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
- Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(function() {
+ var p8 = createImageBitmap(imageData).then(function(imageBitmap) { bitmaps.colorspaceDef = imageBitmap });
+ var p9 = createImageBitmap(imageData, {colorspaceConversion: "none"}).then(function(imageBitmap) { bitmaps.colorspaceNone = imageBitmap });
+ var p10 = createImageBitmap(imageData, {colorspaceConversion: "default"}).then(function(imageBitmap) { bitmaps.colorspaceDefault = imageBitmap });
+ Promise.all([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]).then(function() {
var alphaVal = 0;
- var testPassed = runTest(bitmaps, alphaVal);
+ var testPassed = runTest(bitmaps, alphaVal, false);
if (testPassed)
pass();
finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image.html
index 93e1b34..185ca8f 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-image.html
@@ -50,9 +50,12 @@ function generateTest()
var p5 = createImageBitmap(image, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
var p6 = createImageBitmap(image, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
var p7 = createImageBitmap(image, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
- Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(function() {
+ var p8 = createImageBitmap(image).then(function(imageBitmap) { bitmaps.colorspaceDef = imageBitmap });
+ var p9 = createImageBitmap(image, {colorspaceConversion: "none"}).then(function(imageBitmap) { bitmaps.colorspaceNone = imageBitmap });
+ var p10 = createImageBitmap(image, {colorspaceConversion: "default"}).then(function(imageBitmap) { bitmaps.colorspaceDefault = imageBitmap });
+ Promise.all([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]).then(function() {
var alphaVal = 0.5;
- var testPassed = runTest(bitmaps, alphaVal);
+ var testPassed = runTest(bitmaps, alphaVal, false);
if (testPassed)
pass();
finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-video.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-video.html
index f0ee8c8..77b3450 100644
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-video.html
+++ b/third_party/WebKit/LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-image-bitmap-from-video.html
@@ -50,9 +50,12 @@ function generateTest()
var p5 = createImageBitmap(video, {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then(function(imageBitmap) { bitmaps.flipYPremul = imageBitmap });
var p6 = createImageBitmap(video, {imageOrientation: "flipY", premultiplyAlpha: "default"}).then(function(imageBitmap) { bitmaps.flipYDefault = imageBitmap });
var p7 = createImageBitmap(video, {imageOrientation: "flipY", premultiplyAlpha: "none"}).then(function(imageBitmap) { bitmaps.flipYUnpremul = imageBitmap });
- Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(function() {
+ var p8 = createImageBitmap(video).then(function(imageBitmap) { bitmaps.colorspaceDef = imageBitmap });
+ var p9 = createImageBitmap(video, {colorspaceConversion: "none"}).then(function(imageBitmap) { bitmaps.colorspaceNone = imageBitmap });
+ var p10 = createImageBitmap(video, {colorspaceConversion: "default"}).then(function(imageBitmap) { bitmaps.colorspaceDefault = imageBitmap });
+ Promise.all([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]).then(function() {
var alphaVal = 1;
- var testPassed = runTest(bitmaps, alphaVal);
+ var testPassed = runTest(bitmaps, alphaVal, false);
if (testPassed)
pass();
finishJSTest();
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
index 9c36630..acfb0f08 100644
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
@@ -222,7 +222,10 @@ void ImageBitmapFactories::ImageBitmapLoader::decodeImageOnDecoderThread(WebTask
ImageDecoder::AlphaOption alphaOp = ImageDecoder::AlphaPremultiplied;
if (m_options.premultiplyAlpha() == "none")
alphaOp = ImageDecoder::AlphaNotPremultiplied;
- OwnPtr<ImageDecoder> decoder(ImageDecoder::create(*sharedBuffer, alphaOp, ImageDecoder::GammaAndColorProfileApplied));
+ ImageDecoder::GammaAndColorProfileOption colorspaceOp = ImageDecoder::GammaAndColorProfileApplied;
+ if (m_options.colorspaceConversion() == "none")
+ colorspaceOp = ImageDecoder::GammaAndColorProfileIgnored;
+ OwnPtr<ImageDecoder> decoder(ImageDecoder::create(*sharedBuffer, alphaOp, colorspaceOp));
RefPtr<SkImage> frame;
if (decoder) {
decoder->setData(sharedBuffer.get(), true);
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapOptions.idl b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapOptions.idl
index 3ed9742..56f842e 100644
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapOptions.idl
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapOptions.idl
@@ -6,7 +6,9 @@
[RuntimeEnabled=ExperimentalCanvasFeatures] enum ImageOrientation { "none", "flipY" };
[RuntimeEnabled=ExperimentalCanvasFeatures] enum PremultiplyAlpha { "none", "premultiply", "default" };
+[RuntimeEnabled=ExperimentalCanvasFeatures] enum ColorspaceConversion { "none", "default" };
dictionary ImageBitmapOptions {
- [RuntimeEnabled=ExperimentalCanvasFeatures] PremultiplyAlpha premultiplyAlpha = "default";
[RuntimeEnabled=ExperimentalCanvasFeatures] ImageOrientation imageOrientation = "none";
+ [RuntimeEnabled=ExperimentalCanvasFeatures] PremultiplyAlpha premultiplyAlpha = "default";
+ [RuntimeEnabled=ExperimentalCanvasFeatures] ColorspaceConversion colorspaceConversion = "default";
};