Bug 1973726 - Set DOM file path for webkitRelativePath. r=sefeng,geckoview-reviewers,webidl,smaug,ohall
Actually, there is no way to set webkitRelativePath from JavaScript.
Since GeckoView's folder picker handles virtual file data, we need to
set relative path from JavaScript directly.
A content URI of System storage document provider only allow file data
access from file/folder picker, so there is no way to test it on
geckoivew-junit.
Also, after landing bug 1591640, GVE always crash when using folder
picker. So this includes a fix for it.
Differential Revision: https://phabricator.services.mozilla.com/D255615
<!--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"><title>WebGL Multi-Context Sampler Test</title><linkrel="stylesheet"href="../../resources/js-test-style.css"/><scriptsrc="../../js/js-test-pre.js"></script><scriptsrc="../../js/webgl-test-utils.js"></script></head><body><canvasid="canvas_drawing"width="12"height="12"></canvas><divid="description"></div><divid="console"></div><script>"use strict";description("Tests that samplers' state doesn't leak across contexts");debug("");debug('Regression test for <a href="http://crbug.com/713127">http://crbug.com/713127</a>');functionrunTest(){varwtu=WebGLTestUtils;vargl=wtu.create3DContext("canvas_drawing",undefined,2);vartexture=null;varcolor=[0,255,0,255];if(!gl){testFailed("WebGL context does not exist");return;}testPassed("WebGL context exists");wtu.setupTexturedQuad(gl);texture=gl.createTexture();// Create a texture bigger than 1x1 so that it would need mipmaps in// order to be complete.wtu.fillTexture(gl,texture,2,2,color,0,gl.RGBA,gl.UNSIGNED_BYTE,gl.RGBA8);// Set texture parameters so that this texture is complete.gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);// Set up a secondary context with a sampler bound to texture unit// 0. This should not interfere with the primary context.varaltGL=wtu.create3DContext(undefined,undefined,2);if(!altGL){testFailed("Error creating secondary WebGL context");return;}varsampler=altGL.createSampler();// Note that the sampler's default TEXTURE_MIN_FILTER is// NEAREST_MIPMAP_LINEAR.altGL.bindSampler(0,sampler);altGL.clearColor(1,0,0,1);altGL.clear(altGL.COLOR_BUFFER_BIT);wtu.checkCanvasRect(altGL,0,0,1,1,[255,0,0,255],"should be red");// Now switch back to the main context and draw the texture.gl.clearColor(1,1,1,1);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);wtu.drawUnitQuad(gl);// The presence of the sampler on the other context should not// have interfered with the completeness of the texture.wtu.checkCanvasRect(gl,0,0,1,1,color,"should be green");wtu.glErrorShouldBe(gl,gl.NO_ERROR,"there should be no errors");}runTest();varsuccessfullyParsed=true;</script><scriptsrc="../../js/js-test-post.js"></script></body></html>