Revert "Bug 1950748 part 3: Don't return a caret inside an editor when no editor is focused. r=morgan" as requested for causing accessibility crashes (bug 1977012).
This reverts commit aaf970807d281c28c1e937491719d996cb11648a.
This reverts commit f5f2e3cf4d34c2430372ba790d77620837d56b75.
This reverts commit 5565c5899c32c0b0f5446561a21c5b6499fd44c6.
<!--Copyright (c) 2019 The Khronos Group Inc.Use of this source code is governed by an MIT-style license that can befound in the LICENSE.txt file.--><!DOCTYPE html><html><head><metacharset="utf-8"><linkrel="stylesheet"href="../../resources/js-test-style.css"/><scriptsrc="../../js/js-test-pre.js"></script><scriptsrc="../../js/desktop-gl-constants.js"></script><scriptsrc="../../js/webgl-test-utils.js"></script></head><body><divid="description"></div><divid="console"></div><script>"use strict";description("Tests texture uploads with ArrayBufferView+offsets");varwtu=WebGLTestUtils;vargl=wtu.create3DContext(null,undefined,2);console.log(gl.getParameter(gl.VERSION));////functionarrToStr(arr){return"["+arr.map(x=>x.toString()).join(", ")+"]";}functionshouldBeWas(shouldBe,was,info){vartext="Should be "+shouldBe+", was "+was+".";if(info){text=info+": "+text;}if(shouldBe==was){testPassed(text);returntrue;}else{testFailed(text);returnfalse;}}functionshouldBeWasArr(shouldBe,was,info){if(shouldBe.length!=was.length){testFailed("Length should be "+shouldBe.length+", was "+was.length+".");returnfalse;}returnshouldBeWas(arrToStr(shouldBe),arrToStr(was),info);}////// TexturesvarfibArr=[0,1,1,2,3,5,8,13,21,34,55,89,144,233,];varfb=gl.createFramebuffer();functionprobeWithBadOffset(fnTest,info){fnTest(+(-1|0));if(!gl.getError()){testFailed("Does not support "+info+" with offsets into views.");returnfalse;}returntrue;}// fn(view, offset, expectedError, expectedResult)do{varreadPixelView=newUint8Array(4);vartestView=newUint8Array(fibArr);functiontestTexOrSubImage(funcName,fnTexOrSubImage){debug("");debug(funcName);varfnProbe=function(viewOffset){fnTexOrSubImage(gl.RGBA,gl.UNSIGNED_BYTE,testView,viewOffset);};if(!probeWithBadOffset(fnProbe,funcName))return;for(vari=0;i<=testView.length+1;i++){debug("offset="+i);fnTexOrSubImage(gl.RGBA,gl.UNSIGNED_BYTE,testView,i);vareffectiveViewLen=testView.length-i;if(effectiveViewLen>=4){wtu.glErrorShouldBe(gl,gl.NO_ERROR);gl.readPixels(0,0,1,1,gl.RGBA,gl.UNSIGNED_BYTE,readPixelView);wtu.glErrorShouldBe(gl,gl.NO_ERROR);shouldBeWasArr(testView.slice(i,i+4),readPixelView);}else{wtu.glErrorShouldBe(gl,gl.INVALID_OPERATION);}}debug("");varyellow565=(0x1f<<11)|(0x3f<<5);varcyan565=(0x3f<<5)|0x1f;vararr565=[yellow565,cyan565];varview565=newUint16Array(arr565);functionrgb888to565(arr888){return((arr888[0]>>3)<<11)|((arr888[1]>>2)<<5)|(arr888[2]>>3);}for(vari=0;i<=arr565.length+1;i++){debug("rgb565, offset="+i);fnTexOrSubImage(gl.RGB,gl.UNSIGNED_SHORT_5_6_5,view565,i);vareffectiveViewLen=arr565.length-i;if(effectiveViewLen>=1){wtu.glErrorShouldBe(gl,gl.NO_ERROR);gl.readPixels(0,0,1,1,gl.RGBA,gl.UNSIGNED_BYTE,readPixelView);debug(arrToStr(readPixelView));wtu.glErrorShouldBe(gl,gl.NO_ERROR);shouldBeWas(arr565[i],rgb888to565(readPixelView));}else{wtu.glErrorShouldBe(gl,gl.INVALID_OPERATION);}}}varfn2D=function(format,type,view,viewOffset){gl.texImage2D(gl.TEXTURE_2D,0,format,1,1,0,format,type,view,viewOffset);}varfnSub2D=function(format,type,view,viewOffset){gl.texImage2D(gl.TEXTURE_2D,0,format,1,1,0,format,type,null);gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,1,1,format,type,view,viewOffset);}varfn3D=function(format,type,view,viewOffset){gl.texImage3D(gl.TEXTURE_3D,0,format,1,1,1,0,format,type,view,viewOffset);}varfnSub3D=function(format,type,view,viewOffset){gl.texImage3D(gl.TEXTURE_3D,0,format,1,1,1,0,format,type,null);gl.texSubImage3D(gl.TEXTURE_3D,0,0,0,0,1,1,1,format,type,view,viewOffset);}////vartex2d=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,tex2d);gl.bindFramebuffer(gl.FRAMEBUFFER,fb);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,tex2d,0);testTexOrSubImage("texImage2D",fn2D);testTexOrSubImage("texSubImage2D",fnSub2D);////vartex3d=gl.createTexture();gl.bindTexture(gl.TEXTURE_3D,tex3d);gl.texImage3D(gl.TEXTURE_3D,0,gl.RGBA,1,1,1,0,gl.RGBA,gl.UNSIGNED_BYTE,null);gl.bindFramebuffer(gl.FRAMEBUFFER,fb);gl.framebufferTextureLayer(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,tex3d,0,0);testTexOrSubImage("texImage3D",fn3D);testTexOrSubImage("texSubImage3D",fnSub3D);}while(false);do{varcompressedFormat=0;varcompressedByteCount;if(gl.getExtension("WEBGL_compressed_texture_s3tc")){vare=gl.getExtension("WEBGL_compressed_texture_s3tc");compressedFormat=e.COMPRESSED_RGB_S3TC_DXT1_EXT;compressedByteCount=8;}elseif(gl.getExtension("WEBGL_compressed_texture_etc")){vare=gl.getExtension("WEBGL_compressed_texture_etc");compressedFormat=e.COMPRESSED_RGB8_ETC2;compressedByteCount=8;}else{debug("No compressed texture format found. Skipping compressedTex(Sub)Image tests.");break;}////varview=newUint8Array(compressedByteCount+1);varfn2D=function(viewOffset){gl.compressedTexImage2D(gl.TEXTURE_2D,0,compressedFormat,4,4,0,view,viewOffset,compressedByteCount);};varfnSub2D=function(viewOffset){gl.compressedTexImage2D(gl.TEXTURE_2D,0,compressedFormat,4,4,0,view,0,compressedByteCount);gl.compressedTexSubImage2D(gl.TEXTURE_2D,0,0,0,4,4,compressedFormat,view,viewOffset,compressedByteCount);};varfn3D=function(viewOffset){gl.compressedTexImage3D(gl.TEXTURE_2D_ARRAY,0,compressedFormat,4,4,1,0,view,viewOffset,compressedByteCount);};varfnSub3D=function(viewOffset){gl.compressedTexImage3D(gl.TEXTURE_2D_ARRAY,0,compressedFormat,4,4,1,0,view,0,compressedByteCount);gl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY,0,0,0,0,4,4,1,compressedFormat,view,viewOffset,compressedByteCount);};////vartestFunc=function(funcName,fnToTest){debug("");debug(funcName);if(!probeWithBadOffset(fnToTest,funcName))return;varviewLength=view.length;varsubViewLength=compressedByteCount;for(vari=0;i<=viewLength+1;i++){debug("offset="+i);fnToTest(i);vareffectiveViewLen=viewLength-i;if(effectiveViewLen>=subViewLength){wtu.glErrorShouldBe(gl,gl.NO_ERROR);}else{wtu.glErrorShouldBe(gl,gl.INVALID_VALUE);}}};vartex2d=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,tex2d);testFunc("compressedTexImage2D",fn2D);testFunc("compressedTexSubImage2D",fnSub2D);vartex3d=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D_ARRAY,tex3d);testFunc("compressedTexImage3D",fn3D);testFunc("compressedTexSubImage3D",fnSub3D);}while(false);do{debug("");debug("readPixels");gl.bindFramebuffer(gl.FRAMEBUFFER,null);vartestColor=[10,20,30,40];gl.clearColor(testColor[0]/255.0,testColor[1]/255.0,testColor[2]/255.0,testColor[3]/255.0);gl.clear(gl.COLOR_BUFFER_BIT);varreadPixelView=newUint8Array(6);functiondoReadPixels(viewOffset){gl.readPixels(0,0,1,1,gl.RGBA,gl.UNSIGNED_BYTE,readPixelView,viewOffset);returnreadPixelView;}if(!probeWithBadOffset(doReadPixels,"doReadPixels"))break;for(vari=0;i<=readPixelView.length+1;i++){debug("offset="+i);varres=doReadPixels(i);vareffectiveViewLen=readPixelView.length-i;if(effectiveViewLen>=4){wtu.glErrorShouldBe(gl,gl.NO_ERROR);shouldBeWasArr(testColor,res.slice(i,i+4));}elseif(effectiveViewLen>=0){wtu.glErrorShouldBe(gl,gl.INVALID_OPERATION);}else{wtu.glErrorShouldBe(gl,gl.INVALID_VALUE);}}}while(false);debug("")varsuccessfullyParsed=true;</script><scriptsrc="../../js/js-test-post.js"></script></body></html>