chromium/third_party/blink/web_tests/fast/webgl/context-gc-custom-properties.html

<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="resources/webgl-test.js"></script>
</head>
<body>
<script>
description("Verify that the custom properties on a WebGL rendering context object are retained across GCs.");

window.jsTestIsAsync = true;

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function runTest() {
    canvas = document.createElement("canvas");
    context = create3DContext(canvas);
    context.customProperty = "value";
    extensions = [ "EXT_blend_minmax" ];
    extensionObject = null;

    shouldBeEqualToString("context.customProperty", "value");
    extensions.forEach(function(extension) {
        extensionObject = context.getExtension(extension);
        extensionObject.customProperty = "value";
        shouldBeEqualToString("extensionObject.customProperty", "value");
    });
    context = null;
    extensionObject = null;
    gc();
    context = create3DContext(canvas);
    shouldBeEqualToString("context.customProperty", "value");
    extensions.forEach(function(extension) {
        extensionObject = context.getExtension(extension);
        shouldBeEqualToString("extensionObject.customProperty", "value");
    });
    finishJSTest();
}

window.onload = runTest;
</script>
</body>
</html>