gecko-dev/dom/html/HTMLCanvasElement.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

1437 строки
43 KiB
C++
Исходник Обычный вид История

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
2012-05-21 15:12:37 +04:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/dom/HTMLCanvasElement.h"
#include "gfxPrefs.h"
#include "ImageEncoder.h"
#include "jsapi.h"
#include "jsfriendapi.h"
#include "Layers.h"
#include "MediaSegment.h"
#include "mozilla/Assertions.h"
#include "mozilla/Base64.h"
#include "mozilla/CheckedInt.h"
#include "mozilla/dom/CanvasCaptureMediaStream.h"
#include "mozilla/dom/CanvasRenderingContext2D.h"
#include "mozilla/dom/Event.h"
#include "mozilla/dom/File.h"
#include "mozilla/dom/HTMLCanvasElementBinding.h"
#include "mozilla/dom/MediaStreamTrack.h"
#include "mozilla/dom/MouseEvent.h"
#include "mozilla/dom/OffscreenCanvas.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/gfx/Rect.h"
#include "mozilla/layers/AsyncCanvasRenderer.h"
#include "mozilla/layers/WebRenderCanvasRenderer.h"
#include "mozilla/layers/WebRenderUserData.h"
#include "mozilla/MouseEvents.h"
#include "mozilla/Preferences.h"
#include "mozilla/Telemetry.h"
#include "nsAttrValueInlines.h"
#include "nsContentUtils.h"
#include "nsDisplayList.h"
#include "nsDOMJSUtils.h"
#include "nsIScriptSecurityManager.h"
#include "nsITimer.h"
#include "nsIWritablePropertyBag2.h"
#include "nsIXPConnect.h"
#include "nsJSUtils.h"
#include "nsLayoutUtils.h"
#include "nsMathUtils.h"
#include "nsNetUtil.h"
#include "nsRefreshDriver.h"
#include "nsStreamUtils.h"
#include "ActiveLayerTracker.h"
#include "CanvasUtils.h"
#include "VRManagerChild.h"
#include "WebGL1Context.h"
Bug 946065 - Part 1: Move content/canvas/ to dom/ and flatten subdirectories. r=ehsan --HG-- rename : content/canvas/src/CanvasGradient.h => dom/canvas/CanvasGradient.h rename : content/canvas/src/CanvasImageCache.cpp => dom/canvas/CanvasImageCache.cpp rename : content/canvas/src/CanvasImageCache.h => dom/canvas/CanvasImageCache.h rename : content/canvas/src/CanvasPattern.h => dom/canvas/CanvasPattern.h rename : content/canvas/src/CanvasRenderingContext2D.cpp => dom/canvas/CanvasRenderingContext2D.cpp rename : content/canvas/src/CanvasRenderingContext2D.h => dom/canvas/CanvasRenderingContext2D.h rename : content/canvas/src/CanvasUtils.cpp => dom/canvas/CanvasUtils.cpp rename : content/canvas/src/CanvasUtils.h => dom/canvas/CanvasUtils.h rename : content/canvas/src/DocumentRendererChild.cpp => dom/canvas/DocumentRendererChild.cpp rename : content/canvas/public/DocumentRendererChild.h => dom/canvas/DocumentRendererChild.h rename : content/canvas/src/DocumentRendererParent.cpp => dom/canvas/DocumentRendererParent.cpp rename : content/canvas/public/DocumentRendererParent.h => dom/canvas/DocumentRendererParent.h rename : content/canvas/src/ImageData.cpp => dom/canvas/ImageData.cpp rename : content/canvas/src/ImageData.h => dom/canvas/ImageData.h rename : content/canvas/src/ImageEncoder.cpp => dom/canvas/ImageEncoder.cpp rename : content/canvas/src/ImageEncoder.h => dom/canvas/ImageEncoder.h rename : content/canvas/src/Makefile.in => dom/canvas/Makefile.in rename : content/canvas/src/MurmurHash3.cpp => dom/canvas/MurmurHash3.cpp rename : content/canvas/src/MurmurHash3.h => dom/canvas/MurmurHash3.h rename : content/canvas/src/TextMetrics.h => dom/canvas/TextMetrics.h rename : content/canvas/src/WebGL1Context.cpp => dom/canvas/WebGL1Context.cpp rename : content/canvas/src/WebGL1Context.h => dom/canvas/WebGL1Context.h rename : content/canvas/src/WebGL2Context.cpp => dom/canvas/WebGL2Context.cpp rename : content/canvas/src/WebGL2Context.h => dom/canvas/WebGL2Context.h rename : content/canvas/src/WebGLActiveInfo.cpp => dom/canvas/WebGLActiveInfo.cpp rename : content/canvas/src/WebGLActiveInfo.h => dom/canvas/WebGLActiveInfo.h rename : content/canvas/src/WebGLBuffer.cpp => dom/canvas/WebGLBuffer.cpp rename : content/canvas/src/WebGLBuffer.h => dom/canvas/WebGLBuffer.h rename : content/canvas/src/WebGLContext.cpp => dom/canvas/WebGLContext.cpp rename : content/canvas/src/WebGLContext.h => dom/canvas/WebGLContext.h rename : content/canvas/src/WebGLContextAsyncQueries.cpp => dom/canvas/WebGLContextAsyncQueries.cpp rename : content/canvas/src/WebGLContextBuffers.cpp => dom/canvas/WebGLContextBuffers.cpp rename : content/canvas/src/WebGLContextDraw.cpp => dom/canvas/WebGLContextDraw.cpp rename : content/canvas/src/WebGLContextExtensions.cpp => dom/canvas/WebGLContextExtensions.cpp rename : content/canvas/src/WebGLContextFramebufferOperations.cpp => dom/canvas/WebGLContextFramebufferOperations.cpp rename : content/canvas/src/WebGLContextGL.cpp => dom/canvas/WebGLContextGL.cpp rename : content/canvas/src/WebGLContextLossTimer.cpp => dom/canvas/WebGLContextLossTimer.cpp rename : content/canvas/src/WebGLContextNotSupported.cpp => dom/canvas/WebGLContextNotSupported.cpp rename : content/canvas/src/WebGLContextReporter.cpp => dom/canvas/WebGLContextReporter.cpp rename : content/canvas/src/WebGLContextState.cpp => dom/canvas/WebGLContextState.cpp rename : content/canvas/src/WebGLContextUtils.cpp => dom/canvas/WebGLContextUtils.cpp rename : content/canvas/src/WebGLContextUtils.h => dom/canvas/WebGLContextUtils.h rename : content/canvas/src/WebGLContextValidate.cpp => dom/canvas/WebGLContextValidate.cpp rename : content/canvas/src/WebGLContextVertexArray.cpp => dom/canvas/WebGLContextVertexArray.cpp rename : content/canvas/src/WebGLContextVertices.cpp => dom/canvas/WebGLContextVertices.cpp rename : content/canvas/src/WebGLElementArrayCache.cpp => dom/canvas/WebGLElementArrayCache.cpp rename : content/canvas/src/WebGLElementArrayCache.h => dom/canvas/WebGLElementArrayCache.h rename : content/canvas/src/WebGLExtensionBase.cpp => dom/canvas/WebGLExtensionBase.cpp rename : content/canvas/src/WebGLExtensionBlendMinMax.cpp => dom/canvas/WebGLExtensionBlendMinMax.cpp rename : content/canvas/src/WebGLExtensionColorBufferFloat.cpp => dom/canvas/WebGLExtensionColorBufferFloat.cpp rename : content/canvas/src/WebGLExtensionColorBufferHalfFloat.cpp => dom/canvas/WebGLExtensionColorBufferHalfFloat.cpp rename : content/canvas/src/WebGLExtensionCompressedTextureATC.cpp => dom/canvas/WebGLExtensionCompressedTextureATC.cpp rename : content/canvas/src/WebGLExtensionCompressedTextureETC1.cpp => dom/canvas/WebGLExtensionCompressedTextureETC1.cpp rename : content/canvas/src/WebGLExtensionCompressedTexturePVRTC.cpp => dom/canvas/WebGLExtensionCompressedTexturePVRTC.cpp rename : content/canvas/src/WebGLExtensionCompressedTextureS3TC.cpp => dom/canvas/WebGLExtensionCompressedTextureS3TC.cpp rename : content/canvas/src/WebGLExtensionDebugRendererInfo.cpp => dom/canvas/WebGLExtensionDebugRendererInfo.cpp rename : content/canvas/src/WebGLExtensionDebugShaders.cpp => dom/canvas/WebGLExtensionDebugShaders.cpp rename : content/canvas/src/WebGLExtensionDepthTexture.cpp => dom/canvas/WebGLExtensionDepthTexture.cpp rename : content/canvas/src/WebGLExtensionDrawBuffers.cpp => dom/canvas/WebGLExtensionDrawBuffers.cpp rename : content/canvas/src/WebGLExtensionElementIndexUint.cpp => dom/canvas/WebGLExtensionElementIndexUint.cpp rename : content/canvas/src/WebGLExtensionFragDepth.cpp => dom/canvas/WebGLExtensionFragDepth.cpp rename : content/canvas/src/WebGLExtensionInstancedArrays.cpp => dom/canvas/WebGLExtensionInstancedArrays.cpp rename : content/canvas/src/WebGLExtensionLoseContext.cpp => dom/canvas/WebGLExtensionLoseContext.cpp rename : content/canvas/src/WebGLExtensionSRGB.cpp => dom/canvas/WebGLExtensionSRGB.cpp rename : content/canvas/src/WebGLExtensionStandardDerivatives.cpp => dom/canvas/WebGLExtensionStandardDerivatives.cpp rename : content/canvas/src/WebGLExtensionTextureFilterAnisotropic.cpp => dom/canvas/WebGLExtensionTextureFilterAnisotropic.cpp rename : content/canvas/src/WebGLExtensionTextureFloat.cpp => dom/canvas/WebGLExtensionTextureFloat.cpp rename : content/canvas/src/WebGLExtensionTextureFloatLinear.cpp => dom/canvas/WebGLExtensionTextureFloatLinear.cpp rename : content/canvas/src/WebGLExtensionTextureHalfFloat.cpp => dom/canvas/WebGLExtensionTextureHalfFloat.cpp rename : content/canvas/src/WebGLExtensionTextureHalfFloatLinear.cpp => dom/canvas/WebGLExtensionTextureHalfFloatLinear.cpp rename : content/canvas/src/WebGLExtensionVertexArray.cpp => dom/canvas/WebGLExtensionVertexArray.cpp rename : content/canvas/src/WebGLExtensions.h => dom/canvas/WebGLExtensions.h rename : content/canvas/src/WebGLFramebuffer.cpp => dom/canvas/WebGLFramebuffer.cpp rename : content/canvas/src/WebGLFramebuffer.h => dom/canvas/WebGLFramebuffer.h rename : content/canvas/src/WebGLFramebufferAttachable.cpp => dom/canvas/WebGLFramebufferAttachable.cpp rename : content/canvas/src/WebGLFramebufferAttachable.h => dom/canvas/WebGLFramebufferAttachable.h rename : content/canvas/src/WebGLMemoryTracker.h => dom/canvas/WebGLMemoryTracker.h rename : content/canvas/src/WebGLObjectModel.cpp => dom/canvas/WebGLObjectModel.cpp rename : content/canvas/src/WebGLObjectModel.h => dom/canvas/WebGLObjectModel.h rename : content/canvas/src/WebGLProgram.cpp => dom/canvas/WebGLProgram.cpp rename : content/canvas/src/WebGLProgram.h => dom/canvas/WebGLProgram.h rename : content/canvas/src/WebGLQuery.cpp => dom/canvas/WebGLQuery.cpp rename : content/canvas/src/WebGLQuery.h => dom/canvas/WebGLQuery.h rename : content/canvas/src/WebGLRenderbuffer.cpp => dom/canvas/WebGLRenderbuffer.cpp rename : content/canvas/src/WebGLRenderbuffer.h => dom/canvas/WebGLRenderbuffer.h rename : content/canvas/src/WebGLShader.cpp => dom/canvas/WebGLShader.cpp rename : content/canvas/src/WebGLShader.h => dom/canvas/WebGLShader.h rename : content/canvas/src/WebGLShaderPrecisionFormat.cpp => dom/canvas/WebGLShaderPrecisionFormat.cpp rename : content/canvas/src/WebGLShaderPrecisionFormat.h => dom/canvas/WebGLShaderPrecisionFormat.h rename : content/canvas/src/WebGLTexelConversions.cpp => dom/canvas/WebGLTexelConversions.cpp rename : content/canvas/src/WebGLTexelConversions.h => dom/canvas/WebGLTexelConversions.h rename : content/canvas/src/WebGLTexture.cpp => dom/canvas/WebGLTexture.cpp rename : content/canvas/src/WebGLTexture.h => dom/canvas/WebGLTexture.h rename : content/canvas/src/WebGLTypes.h => dom/canvas/WebGLTypes.h rename : content/canvas/src/WebGLUniformInfo.h => dom/canvas/WebGLUniformInfo.h rename : content/canvas/src/WebGLUniformLocation.cpp => dom/canvas/WebGLUniformLocation.cpp rename : content/canvas/src/WebGLUniformLocation.h => dom/canvas/WebGLUniformLocation.h rename : content/canvas/src/WebGLValidateStrings.h => dom/canvas/WebGLValidateStrings.h rename : content/canvas/src/WebGLVertexArray.cpp => dom/canvas/WebGLVertexArray.cpp rename : content/canvas/src/WebGLVertexArray.h => dom/canvas/WebGLVertexArray.h rename : content/canvas/src/WebGLVertexArrayFake.cpp => dom/canvas/WebGLVertexArrayFake.cpp rename : content/canvas/src/WebGLVertexArrayFake.h => dom/canvas/WebGLVertexArrayFake.h rename : content/canvas/src/WebGLVertexArrayGL.cpp => dom/canvas/WebGLVertexArrayGL.cpp rename : content/canvas/src/WebGLVertexArrayGL.h => dom/canvas/WebGLVertexArrayGL.h rename : content/canvas/src/WebGLVertexAttribData.h => dom/canvas/WebGLVertexAttribData.h rename : content/canvas/compiledtest/TestWebGLElementArrayCache.cpp => dom/canvas/compiledtest/TestWebGLElementArrayCache.cpp rename : content/canvas/compiledtest/moz.build => dom/canvas/compiledtest/moz.build rename : content/canvas/crashtests/0px-size-font-667225.html => dom/canvas/crashtests/0px-size-font-667225.html rename : content/canvas/crashtests/0px-size-font-shadow.html => dom/canvas/crashtests/0px-size-font-shadow.html rename : content/canvas/crashtests/360293-1.html => dom/canvas/crashtests/360293-1.html rename : content/canvas/crashtests/421715-1.html => dom/canvas/crashtests/421715-1.html rename : content/canvas/crashtests/553938-1.html => dom/canvas/crashtests/553938-1.html rename : content/canvas/crashtests/647480.html => dom/canvas/crashtests/647480.html rename : content/canvas/crashtests/727547.html => dom/canvas/crashtests/727547.html rename : content/canvas/crashtests/729116.html => dom/canvas/crashtests/729116.html rename : content/canvas/crashtests/743499-negative-size.html => dom/canvas/crashtests/743499-negative-size.html rename : content/canvas/crashtests/745699-1.html => dom/canvas/crashtests/745699-1.html rename : content/canvas/crashtests/745818-large-source.html => dom/canvas/crashtests/745818-large-source.html rename : content/canvas/crashtests/746813-1.html => dom/canvas/crashtests/746813-1.html rename : content/canvas/crashtests/767337-1.html => dom/canvas/crashtests/767337-1.html rename : content/canvas/crashtests/780392-1.html => dom/canvas/crashtests/780392-1.html rename : content/canvas/crashtests/789933-1.html => dom/canvas/crashtests/789933-1.html rename : content/canvas/crashtests/794463-1.html => dom/canvas/crashtests/794463-1.html rename : content/canvas/crashtests/802926-1.html => dom/canvas/crashtests/802926-1.html rename : content/canvas/crashtests/896047-1.html => dom/canvas/crashtests/896047-1.html rename : content/canvas/crashtests/896047-2.html => dom/canvas/crashtests/896047-2.html rename : content/canvas/crashtests/916128-1.html => dom/canvas/crashtests/916128-1.html rename : content/canvas/crashtests/934939-1.html => dom/canvas/crashtests/934939-1.html rename : content/canvas/crashtests/crashtests.list => dom/canvas/crashtests/crashtests.list rename : content/canvas/crashtests/texImage2D.html => dom/canvas/crashtests/texImage2D.html rename : content/canvas/moz.build => dom/canvas/moz.build rename : content/canvas/public/nsICanvasRenderingContextInternal.h => dom/canvas/nsICanvasRenderingContextInternal.h rename : content/canvas/test/android.json => dom/canvas/test/android.json rename : content/canvas/test/chrome/chrome.ini => dom/canvas/test/chrome/chrome.ini rename : content/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html => dom/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html rename : content/canvas/test/chrome/test_drawWindow_widget_layers.html => dom/canvas/test/chrome/test_drawWindow_widget_layers.html rename : content/canvas/test/chrome/test_webgl_debug_renderer_info.html => dom/canvas/test/chrome/test_webgl_debug_renderer_info.html rename : content/canvas/test/crossorigin/image-allow-credentials.png => dom/canvas/test/crossorigin/image-allow-credentials.png rename : content/canvas/test/crossorigin/image-allow-credentials.png^headers^ => dom/canvas/test/crossorigin/image-allow-credentials.png^headers^ rename : content/canvas/test/crossorigin/image-allow-star.png => dom/canvas/test/crossorigin/image-allow-star.png rename : content/canvas/test/crossorigin/image-allow-star.png^headers^ => dom/canvas/test/crossorigin/image-allow-star.png^headers^ rename : content/canvas/test/crossorigin/image.png => dom/canvas/test/crossorigin/image.png rename : content/canvas/test/crossorigin/mochitest.ini => dom/canvas/test/crossorigin/mochitest.ini rename : content/canvas/test/crossorigin/test_canvas2d_crossorigin.html => dom/canvas/test/crossorigin/test_canvas2d_crossorigin.html rename : content/canvas/test/crossorigin/test_video_crossorigin.html => dom/canvas/test/crossorigin/test_video_crossorigin.html rename : content/canvas/test/crossorigin/test_webgl_crossorigin_textures.html => dom/canvas/test/crossorigin/test_webgl_crossorigin_textures.html rename : content/canvas/test/crossorigin/video.sjs => dom/canvas/test/crossorigin/video.sjs rename : content/canvas/test/file_drawImage_document_domain.html => dom/canvas/test/file_drawImage_document_domain.html rename : content/canvas/test/file_drawWindow_common.js => dom/canvas/test/file_drawWindow_common.js rename : content/canvas/test/file_drawWindow_source.html => dom/canvas/test/file_drawWindow_source.html rename : content/canvas/test/image_anim-gr.gif => dom/canvas/test/image_anim-gr.gif rename : content/canvas/test/image_anim-gr.png => dom/canvas/test/image_anim-gr.png rename : content/canvas/test/image_anim-poster-gr.png => dom/canvas/test/image_anim-poster-gr.png rename : content/canvas/test/image_broken.png => dom/canvas/test/image_broken.png rename : content/canvas/test/image_ggrr-256x256.png => dom/canvas/test/image_ggrr-256x256.png rename : content/canvas/test/image_green-16x16.png => dom/canvas/test/image_green-16x16.png rename : content/canvas/test/image_green-1x1.png => dom/canvas/test/image_green-1x1.png rename : content/canvas/test/image_green-redirect => dom/canvas/test/image_green-redirect rename : content/canvas/test/image_green-redirect^headers^ => dom/canvas/test/image_green-redirect^headers^ rename : content/canvas/test/image_green.png => dom/canvas/test/image_green.png rename : content/canvas/test/image_red-16x16.png => dom/canvas/test/image_red-16x16.png rename : content/canvas/test/image_red.png => dom/canvas/test/image_red.png rename : content/canvas/test/image_redtransparent.png => dom/canvas/test/image_redtransparent.png rename : content/canvas/test/image_rgrg-256x256.png => dom/canvas/test/image_rgrg-256x256.png rename : content/canvas/test/image_rrgg-256x256.png => dom/canvas/test/image_rrgg-256x256.png rename : content/canvas/test/image_transparent.png => dom/canvas/test/image_transparent.png rename : content/canvas/test/image_transparent50.png => dom/canvas/test/image_transparent50.png rename : content/canvas/test/image_yellow.png => dom/canvas/test/image_yellow.png rename : content/canvas/test/image_yellow75.png => dom/canvas/test/image_yellow75.png rename : content/canvas/test/mochitest.ini => dom/canvas/test/mochitest.ini rename : content/canvas/test/moz.build => dom/canvas/test/moz.build rename : content/canvas/test/reftest/black.html => dom/canvas/test/reftest/black.html rename : content/canvas/test/reftest/clip-multiple-paths-badref.html => dom/canvas/test/reftest/clip-multiple-paths-badref.html rename : content/canvas/test/reftest/clip-multiple-paths.html => dom/canvas/test/reftest/clip-multiple-paths.html rename : content/canvas/test/reftest/colors-half-alpha.png => dom/canvas/test/reftest/colors-half-alpha.png rename : content/canvas/test/reftest/colors.png => dom/canvas/test/reftest/colors.png rename : content/canvas/test/reftest/drawCustomFocusRing-ref.html => dom/canvas/test/reftest/drawCustomFocusRing-ref.html rename : content/canvas/test/reftest/drawCustomFocusRing.html => dom/canvas/test/reftest/drawCustomFocusRing.html rename : content/canvas/test/reftest/drawFocusIfNeeded-ref.html => dom/canvas/test/reftest/drawFocusIfNeeded-ref.html rename : content/canvas/test/reftest/drawFocusIfNeeded.html => dom/canvas/test/reftest/drawFocusIfNeeded.html rename : content/canvas/test/reftest/green.png => dom/canvas/test/reftest/green.png rename : content/canvas/test/reftest/half-colors-half-alpha.png => dom/canvas/test/reftest/half-colors-half-alpha.png rename : content/canvas/test/reftest/half-colors.png => dom/canvas/test/reftest/half-colors.png rename : content/canvas/test/reftest/reftest.list => dom/canvas/test/reftest/reftest.list rename : content/canvas/test/reftest/stroketext-shadow-ref.html => dom/canvas/test/reftest/stroketext-shadow-ref.html rename : content/canvas/test/reftest/stroketext-shadow.html => dom/canvas/test/reftest/stroketext-shadow.html rename : content/canvas/test/reftest/webgl-clear-test.html => dom/canvas/test/reftest/webgl-clear-test.html rename : content/canvas/test/reftest/webgl-color-alpha-test.html => dom/canvas/test/reftest/webgl-color-alpha-test.html rename : content/canvas/test/reftest/webgl-color-test.html => dom/canvas/test/reftest/webgl-color-test.html rename : content/canvas/test/reftest/webgl-disable-test.html => dom/canvas/test/reftest/webgl-disable-test.html rename : content/canvas/test/reftest/webgl-hanging-fb-test.html => dom/canvas/test/reftest/webgl-hanging-fb-test.html rename : content/canvas/test/reftest/webgl-hanging-scissor-test.html => dom/canvas/test/reftest/webgl-hanging-scissor-test.html rename : content/canvas/test/reftest/webgl-orientation-test.html => dom/canvas/test/reftest/webgl-orientation-test.html rename : content/canvas/test/reftest/webgl-resize-test.html => dom/canvas/test/reftest/webgl-resize-test.html rename : content/canvas/test/reftest/webgl-utils.js => dom/canvas/test/reftest/webgl-utils.js rename : content/canvas/test/reftest/white-top-left.png => dom/canvas/test/reftest/white-top-left.png rename : content/canvas/test/reftest/white.png => dom/canvas/test/reftest/white.png rename : content/canvas/test/reftest/wrapper.html => dom/canvas/test/reftest/wrapper.html rename : content/canvas/test/test_2d.clearRect.image.offscreen.html => dom/canvas/test/test_2d.clearRect.image.offscreen.html rename : content/canvas/test/test_2d.clip.winding.html => dom/canvas/test/test_2d.clip.winding.html rename : content/canvas/test/test_2d.composite.canvas.color-burn.html => dom/canvas/test/test_2d.composite.canvas.color-burn.html rename : content/canvas/test/test_2d.composite.canvas.color-dodge.html => dom/canvas/test/test_2d.composite.canvas.color-dodge.html rename : content/canvas/test/test_2d.composite.canvas.color.html => dom/canvas/test/test_2d.composite.canvas.color.html rename : content/canvas/test/test_2d.composite.canvas.darken.html => dom/canvas/test/test_2d.composite.canvas.darken.html rename : content/canvas/test/test_2d.composite.canvas.destination-atop.html => dom/canvas/test/test_2d.composite.canvas.destination-atop.html rename : content/canvas/test/test_2d.composite.canvas.destination-in.html => dom/canvas/test/test_2d.composite.canvas.destination-in.html rename : content/canvas/test/test_2d.composite.canvas.difference.html => dom/canvas/test/test_2d.composite.canvas.difference.html rename : content/canvas/test/test_2d.composite.canvas.exclusion.html => dom/canvas/test/test_2d.composite.canvas.exclusion.html rename : content/canvas/test/test_2d.composite.canvas.hard-light.html => dom/canvas/test/test_2d.composite.canvas.hard-light.html rename : content/canvas/test/test_2d.composite.canvas.hue.html => dom/canvas/test/test_2d.composite.canvas.hue.html rename : content/canvas/test/test_2d.composite.canvas.lighten.html => dom/canvas/test/test_2d.composite.canvas.lighten.html rename : content/canvas/test/test_2d.composite.canvas.lighter.html => dom/canvas/test/test_2d.composite.canvas.lighter.html rename : content/canvas/test/test_2d.composite.canvas.luminosity.html => dom/canvas/test/test_2d.composite.canvas.luminosity.html rename : content/canvas/test/test_2d.composite.canvas.multiply.html => dom/canvas/test/test_2d.composite.canvas.multiply.html rename : content/canvas/test/test_2d.composite.canvas.overlay.html => dom/canvas/test/test_2d.composite.canvas.overlay.html rename : content/canvas/test/test_2d.composite.canvas.saturation.html => dom/canvas/test/test_2d.composite.canvas.saturation.html rename : content/canvas/test/test_2d.composite.canvas.screen.html => dom/canvas/test/test_2d.composite.canvas.screen.html rename : content/canvas/test/test_2d.composite.canvas.soft-light.html => dom/canvas/test/test_2d.composite.canvas.soft-light.html rename : content/canvas/test/test_2d.composite.canvas.source-in.html => dom/canvas/test/test_2d.composite.canvas.source-in.html rename : content/canvas/test/test_2d.composite.canvas.source-out.html => dom/canvas/test/test_2d.composite.canvas.source-out.html rename : content/canvas/test/test_2d.composite.canvas.xor.html => dom/canvas/test/test_2d.composite.canvas.xor.html rename : content/canvas/test/test_2d.composite.clip.lighter.html => dom/canvas/test/test_2d.composite.clip.lighter.html rename : content/canvas/test/test_2d.composite.clip.xor.html => dom/canvas/test/test_2d.composite.clip.xor.html rename : content/canvas/test/test_2d.composite.image.destination-atop.html => dom/canvas/test/test_2d.composite.image.destination-atop.html rename : content/canvas/test/test_2d.composite.image.destination-in.html => dom/canvas/test/test_2d.composite.image.destination-in.html rename : content/canvas/test/test_2d.composite.image.lighter.html => dom/canvas/test/test_2d.composite.image.lighter.html rename : content/canvas/test/test_2d.composite.image.source-in.html => dom/canvas/test/test_2d.composite.image.source-in.html rename : content/canvas/test/test_2d.composite.image.source-out.html => dom/canvas/test/test_2d.composite.image.source-out.html rename : content/canvas/test/test_2d.composite.image.xor.html => dom/canvas/test/test_2d.composite.image.xor.html rename : content/canvas/test/test_2d.composite.solid.color-burn.html => dom/canvas/test/test_2d.composite.solid.color-burn.html rename : content/canvas/test/test_2d.composite.solid.color-dodge.html => dom/canvas/test/test_2d.composite.solid.color-dodge.html rename : content/canvas/test/test_2d.composite.solid.color.html => dom/canvas/test/test_2d.composite.solid.color.html rename : content/canvas/test/test_2d.composite.solid.darken.html => dom/canvas/test/test_2d.composite.solid.darken.html rename : content/canvas/test/test_2d.composite.solid.difference.html => dom/canvas/test/test_2d.composite.solid.difference.html rename : content/canvas/test/test_2d.composite.solid.exclusion.html => dom/canvas/test/test_2d.composite.solid.exclusion.html rename : content/canvas/test/test_2d.composite.solid.hard-light.html => dom/canvas/test/test_2d.composite.solid.hard-light.html rename : content/canvas/test/test_2d.composite.solid.hue.html => dom/canvas/test/test_2d.composite.solid.hue.html rename : content/canvas/test/test_2d.composite.solid.lighten.html => dom/canvas/test/test_2d.composite.solid.lighten.html rename : content/canvas/test/test_2d.composite.solid.lighter.html => dom/canvas/test/test_2d.composite.solid.lighter.html rename : content/canvas/test/test_2d.composite.solid.luminosity.html => dom/canvas/test/test_2d.composite.solid.luminosity.html rename : content/canvas/test/test_2d.composite.solid.multiply.html => dom/canvas/test/test_2d.composite.solid.multiply.html rename : content/canvas/test/test_2d.composite.solid.overlay.html => dom/canvas/test/test_2d.composite.solid.overlay.html rename : content/canvas/test/test_2d.composite.solid.saturation.html => dom/canvas/test/test_2d.composite.solid.saturation.html rename : content/canvas/test/test_2d.composite.solid.screen.html => dom/canvas/test/test_2d.composite.solid.screen.html rename : content/canvas/test/test_2d.composite.solid.soft-light.html => dom/canvas/test/test_2d.composite.solid.soft-light.html rename : content/canvas/test/test_2d.composite.solid.xor.html => dom/canvas/test/test_2d.composite.solid.xor.html rename : content/canvas/test/test_2d.composite.transparent.lighter.html => dom/canvas/test/test_2d.composite.transparent.lighter.html rename : content/canvas/test/test_2d.composite.transparent.xor.html => dom/canvas/test/test_2d.composite.transparent.xor.html rename : content/canvas/test/test_2d.composite.uncovered.fill.color-burn.html => dom/canvas/test/test_2d.composite.uncovered.fill.color-burn.html rename : content/canvas/test/test_2d.composite.uncovered.fill.color-dodge.html => dom/canvas/test/test_2d.composite.uncovered.fill.color-dodge.html rename : content/canvas/test/test_2d.composite.uncovered.fill.color.html => dom/canvas/test/test_2d.composite.uncovered.fill.color.html rename : content/canvas/test/test_2d.composite.uncovered.fill.darken.html => dom/canvas/test/test_2d.composite.uncovered.fill.darken.html rename : content/canvas/test/test_2d.composite.uncovered.fill.destination-atop.html => dom/canvas/test/test_2d.composite.uncovered.fill.destination-atop.html rename : content/canvas/test/test_2d.composite.uncovered.fill.destination-in.html => dom/canvas/test/test_2d.composite.uncovered.fill.destination-in.html rename : content/canvas/test/test_2d.composite.uncovered.fill.difference.html => dom/canvas/test/test_2d.composite.uncovered.fill.difference.html rename : content/canvas/test/test_2d.composite.uncovered.fill.exclusion.html => dom/canvas/test/test_2d.composite.uncovered.fill.exclusion.html rename : content/canvas/test/test_2d.composite.uncovered.fill.hard-light.html => dom/canvas/test/test_2d.composite.uncovered.fill.hard-light.html rename : content/canvas/test/test_2d.composite.uncovered.fill.hue.html => dom/canvas/test/test_2d.composite.uncovered.fill.hue.html rename : content/canvas/test/test_2d.composite.uncovered.fill.lighten.html => dom/canvas/test/test_2d.composite.uncovered.fill.lighten.html rename : content/canvas/test/test_2d.composite.uncovered.fill.luminosity.html => dom/canvas/test/test_2d.composite.uncovered.fill.luminosity.html rename : content/canvas/test/test_2d.composite.uncovered.fill.multiply.html => dom/canvas/test/test_2d.composite.uncovered.fill.multiply.html rename : content/canvas/test/test_2d.composite.uncovered.fill.overlay.html => dom/canvas/test/test_2d.composite.uncovered.fill.overlay.html rename : content/canvas/test/test_2d.composite.uncovered.fill.saturation.html => dom/canvas/test/test_2d.composite.uncovered.fill.saturation.html rename : content/canvas/test/test_2d.composite.uncovered.fill.screen.html => dom/canvas/test/test_2d.composite.uncovered.fill.screen.html rename : content/canvas/test/test_2d.composite.uncovered.fill.soft-light.html => dom/canvas/test/test_2d.composite.uncovered.fill.soft-light.html rename : content/canvas/test/test_2d.composite.uncovered.fill.source-in.html => dom/canvas/test/test_2d.composite.uncovered.fill.source-in.html rename : content/canvas/test/test_2d.composite.uncovered.fill.source-out.html => dom/canvas/test/test_2d.composite.uncovered.fill.source-out.html rename : content/canvas/test/test_2d.composite.uncovered.image.destination-atop.html => dom/canvas/test/test_2d.composite.uncovered.image.destination-atop.html rename : content/canvas/test/test_2d.composite.uncovered.image.destination-in.html => dom/canvas/test/test_2d.composite.uncovered.image.destination-in.html rename : content/canvas/test/test_2d.composite.uncovered.image.source-in.html => dom/canvas/test/test_2d.composite.uncovered.image.source-in.html rename : content/canvas/test/test_2d.composite.uncovered.image.source-out.html => dom/canvas/test/test_2d.composite.uncovered.image.source-out.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.destination-atop.html => dom/canvas/test/test_2d.composite.uncovered.pattern.destination-atop.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.destination-in.html => dom/canvas/test/test_2d.composite.uncovered.pattern.destination-in.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.source-in.html => dom/canvas/test/test_2d.composite.uncovered.pattern.source-in.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.source-out.html => dom/canvas/test/test_2d.composite.uncovered.pattern.source-out.html rename : content/canvas/test/test_2d.drawImage.zerocanvas.html => dom/canvas/test/test_2d.drawImage.zerocanvas.html rename : content/canvas/test/test_2d.fill.winding.html => dom/canvas/test/test_2d.fill.winding.html rename : content/canvas/test/test_2d.fillText.gradient.html => dom/canvas/test/test_2d.fillText.gradient.html rename : content/canvas/test/test_2d.gradient.radial.cone.behind.html => dom/canvas/test/test_2d.gradient.radial.cone.behind.html rename : content/canvas/test/test_2d.gradient.radial.cone.beside.html => dom/canvas/test/test_2d.gradient.radial.cone.beside.html rename : content/canvas/test/test_2d.gradient.radial.cone.front.html => dom/canvas/test/test_2d.gradient.radial.cone.front.html rename : content/canvas/test/test_2d.gradient.radial.cone.shape2.html => dom/canvas/test/test_2d.gradient.radial.cone.shape2.html rename : content/canvas/test/test_2d.gradient.radial.cone.top.html => dom/canvas/test/test_2d.gradient.radial.cone.top.html rename : content/canvas/test/test_2d.gradient.radial.equal.html => dom/canvas/test/test_2d.gradient.radial.equal.html rename : content/canvas/test/test_2d.gradient.radial.inside2.html => dom/canvas/test/test_2d.gradient.radial.inside2.html rename : content/canvas/test/test_2d.gradient.radial.inside3.html => dom/canvas/test/test_2d.gradient.radial.inside3.html rename : content/canvas/test/test_2d.gradient.radial.outside1.html => dom/canvas/test/test_2d.gradient.radial.outside1.html rename : content/canvas/test/test_2d.gradient.radial.outside2.html => dom/canvas/test/test_2d.gradient.radial.outside2.html rename : content/canvas/test/test_2d.gradient.radial.outside3.html => dom/canvas/test/test_2d.gradient.radial.outside3.html rename : content/canvas/test/test_2d.gradient.radial.touch1.html => dom/canvas/test/test_2d.gradient.radial.touch1.html rename : content/canvas/test/test_2d.gradient.radial.touch2.html => dom/canvas/test/test_2d.gradient.radial.touch2.html rename : content/canvas/test/test_2d.gradient.radial.touch3.html => dom/canvas/test/test_2d.gradient.radial.touch3.html rename : content/canvas/test/test_2d.isPointInPath.winding.html => dom/canvas/test/test_2d.isPointInPath.winding.html rename : content/canvas/test/test_2d.line.cap.closed.html => dom/canvas/test/test_2d.line.cap.closed.html rename : content/canvas/test/test_2d.line.join.parallel.html => dom/canvas/test/test_2d.line.join.parallel.html rename : content/canvas/test/test_2d.path.arc.shape.3.html => dom/canvas/test/test_2d.path.arc.shape.3.html rename : content/canvas/test/test_2d.path.rect.selfintersect.html => dom/canvas/test/test_2d.path.rect.selfintersect.html rename : content/canvas/test/test_2d.path.rect.zero.6.html => dom/canvas/test/test_2d.path.rect.zero.6.html rename : content/canvas/test/test_2d.strokeRect.zero.5.html => dom/canvas/test/test_2d.strokeRect.zero.5.html rename : content/canvas/test/test_2d_composite_canvaspattern_setTransform.html => dom/canvas/test/test_2d_composite_canvaspattern_setTransform.html rename : content/canvas/test/test_ImageData_ctor.html => dom/canvas/test/test_ImageData_ctor.html rename : content/canvas/test/test_bug613794.html => dom/canvas/test/test_bug613794.html rename : content/canvas/test/test_bug753758.html => dom/canvas/test/test_bug753758.html rename : content/canvas/test/test_bug764125.html => dom/canvas/test/test_bug764125.html rename : content/canvas/test/test_bug856472.html => dom/canvas/test/test_bug856472.html rename : content/canvas/test/test_bug866575.html => dom/canvas/test/test_bug866575.html rename : content/canvas/test/test_bug902651.html => dom/canvas/test/test_bug902651.html rename : content/canvas/test/test_canvas.html => dom/canvas/test/test_canvas.html rename : content/canvas/test/test_canvas_focusring.html => dom/canvas/test/test_canvas_focusring.html rename : content/canvas/test/test_canvas_font_setter.html => dom/canvas/test/test_canvas_font_setter.html rename : content/canvas/test/test_canvas_path.html => dom/canvas/test/test_canvas_path.html rename : content/canvas/test/test_canvas_strokeStyle_getter.html => dom/canvas/test/test_canvas_strokeStyle_getter.html rename : content/canvas/test/test_createPattern_broken.html => dom/canvas/test/test_createPattern_broken.html rename : content/canvas/test/test_drawImageIncomplete.html => dom/canvas/test/test_drawImageIncomplete.html rename : content/canvas/test/test_drawImage_document_domain.html => dom/canvas/test/test_drawImage_document_domain.html rename : content/canvas/test/test_drawImage_edge_cases.html => dom/canvas/test/test_drawImage_edge_cases.html rename : content/canvas/test/test_drawWindow.html => dom/canvas/test/test_drawWindow.html rename : content/canvas/test/test_hitregion_canvas.html => dom/canvas/test/test_hitregion_canvas.html rename : content/canvas/test/test_hitregion_event.html => dom/canvas/test/test_hitregion_event.html rename : content/canvas/test/test_isPointInStroke.html => dom/canvas/test/test_isPointInStroke.html rename : content/canvas/test/test_mozDashOffset.html => dom/canvas/test/test_mozDashOffset.html rename : content/canvas/test/test_mozGetAsFile.html => dom/canvas/test/test_mozGetAsFile.html rename : content/canvas/test/test_setlinedash.html => dom/canvas/test/test_setlinedash.html rename : content/canvas/test/test_strokeText_throw.html => dom/canvas/test/test_strokeText_throw.html rename : content/canvas/test/test_toBlob.html => dom/canvas/test/test_toBlob.html rename : content/canvas/test/test_toDataURL_alpha.html => dom/canvas/test/test_toDataURL_alpha.html rename : content/canvas/test/test_toDataURL_lowercase_ascii.html => dom/canvas/test/test_toDataURL_lowercase_ascii.html rename : content/canvas/test/test_toDataURL_parameters.html => dom/canvas/test/test_toDataURL_parameters.html rename : content/canvas/test/test_windingRuleUndefined.html => dom/canvas/test/test_windingRuleUndefined.html rename : content/canvas/test/webgl-conformance/00_test_list.txt => dom/canvas/test/webgl-conformance/00_test_list.txt rename : content/canvas/test/webgl-conformance/README.mozilla => dom/canvas/test/webgl-conformance/README.mozilla rename : content/canvas/test/webgl-conformance/README.txt => dom/canvas/test/webgl-conformance/README.txt rename : content/canvas/test/webgl-conformance/conformance/00_readme.txt => dom/canvas/test/webgl-conformance/conformance/00_readme.txt rename : content/canvas/test/webgl-conformance/conformance/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/LICENSE_CHROMIUM => dom/canvas/test/webgl-conformance/conformance/LICENSE_CHROMIUM rename : content/canvas/test/webgl-conformance/conformance/attribs/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/attribs/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-enable-vertex-attrib.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-enable-vertex-attrib.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib-zero-issues.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib-zero-issues.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer-offsets.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer-offsets.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer.html rename : content/canvas/test/webgl-conformance/conformance/buffers/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/buffers/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/buffers/buffer-bind-test.html => dom/canvas/test/webgl-conformance/conformance/buffers/buffer-bind-test.html rename : content/canvas/test/webgl-conformance/conformance/buffers/buffer-data-array-buffer.html => dom/canvas/test/webgl-conformance/conformance/buffers/buffer-data-array-buffer.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-copies-indices.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-copies-indices.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-crash-with-buffer-sub-data.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-crash-with-buffer-sub-data.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-verifies-too-many-indices.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-verifies-too-many-indices.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-with-resized-buffer.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-with-resized-buffer.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation.html rename : content/canvas/test/webgl-conformance/conformance/canvas/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/canvas/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/canvas/buffer-offscreen-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/buffer-offscreen-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/buffer-preserve-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/buffer-preserve-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/canvas-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/canvas-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/canvas-zero-size.html => dom/canvas/test/webgl-conformance/conformance/canvas/canvas-zero-size.html rename : content/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-static-canvas-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-static-canvas-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/viewport-unchanged-upon-resize.html => dom/canvas/test/webgl-conformance/conformance/canvas/viewport-unchanged-upon-resize.html rename : content/canvas/test/webgl-conformance/conformance/context/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/context/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/context/constants.html => dom/canvas/test/webgl-conformance/conformance/context/constants.html rename : content/canvas/test/webgl-conformance/conformance/context/context-attribute-preserve-drawing-buffer.html => dom/canvas/test/webgl-conformance/conformance/context/context-attribute-preserve-drawing-buffer.html rename : content/canvas/test/webgl-conformance/conformance/context/context-attributes-alpha-depth-stencil-antialias.html => dom/canvas/test/webgl-conformance/conformance/context/context-attributes-alpha-depth-stencil-antialias.html rename : content/canvas/test/webgl-conformance/conformance/context/context-lost-restored.html => dom/canvas/test/webgl-conformance/conformance/context/context-lost-restored.html rename : content/canvas/test/webgl-conformance/conformance/context/context-lost.html => dom/canvas/test/webgl-conformance/conformance/context/context-lost.html rename : content/canvas/test/webgl-conformance/conformance/context/context-type-test.html => dom/canvas/test/webgl-conformance/conformance/context/context-type-test.html rename : content/canvas/test/webgl-conformance/conformance/context/incorrect-context-object-behaviour.html => dom/canvas/test/webgl-conformance/conformance/context/incorrect-context-object-behaviour.html rename : content/canvas/test/webgl-conformance/conformance/context/methods.html => dom/canvas/test/webgl-conformance/conformance/context/methods.html rename : content/canvas/test/webgl-conformance/conformance/context/premultiplyalpha-test.html => dom/canvas/test/webgl-conformance/conformance/context/premultiplyalpha-test.html rename : content/canvas/test/webgl-conformance/conformance/context/resource-sharing-test.html => dom/canvas/test/webgl-conformance/conformance/context/resource-sharing-test.html rename : content/canvas/test/webgl-conformance/conformance/extensions/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/extensions/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/extensions/ext-sRGB.html => dom/canvas/test/webgl-conformance/conformance/extensions/ext-sRGB.html rename : content/canvas/test/webgl-conformance/conformance/extensions/ext-texture-filter-anisotropic.html => dom/canvas/test/webgl-conformance/conformance/extensions/ext-texture-filter-anisotropic.html rename : content/canvas/test/webgl-conformance/conformance/extensions/oes-standard-derivatives.html => dom/canvas/test/webgl-conformance/conformance/extensions/oes-standard-derivatives.html rename : content/canvas/test/webgl-conformance/conformance/extensions/oes-texture-float.html => dom/canvas/test/webgl-conformance/conformance/extensions/oes-texture-float.html rename : content/canvas/test/webgl-conformance/conformance/extensions/oes-vertex-array-object.html => dom/canvas/test/webgl-conformance/conformance/extensions/oes-vertex-array-object.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-etc1.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-etc1.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-s3tc.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-s3tc.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-renderer-info.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-renderer-info.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-shaders.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-shaders.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-depth-texture.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-depth-texture.html rename : content/canvas/test/webgl-conformance/conformance/glsl/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/functions/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-abs.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-abs.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-acos.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-acos.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-asin.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-asin.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan-xy.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan-xy.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-ceil.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-ceil.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cos.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cos.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cross.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cross.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-distance.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-distance.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-dot.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-dot.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-faceforward.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-faceforward.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-floor.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-floor.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-fract.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-fract.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-length.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-length.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-lessThan.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-lessThan.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-normalize.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-normalize.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-reflect.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-reflect.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-refract.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-refract.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sign.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sign.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sin.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sin.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_int_to_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_int_to_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/construct_struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/construct_struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than_equal.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than_equal.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than_equal.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than_equal.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/matrices/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/matrices/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/matrices/glsl-mat4-to-mat3.html => dom/canvas/test/webgl-conformance/conformance/glsl/matrices/glsl-mat4-to-mat3.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/misc/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/attrib-location-length-limits.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/attrib-location-length-limits.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/embedded-struct-definitions-forbidden.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/embedded-struct-definitions-forbidden.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-2types-of-textures-on-same-unit.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-2types-of-textures-on-same-unit.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-function-nodes.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-function-nodes.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-long-variable-names.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-long-variable-names.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-vertex-branch.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-vertex-branch.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/include.vs => dom/canvas/test/webgl-conformance/conformance/glsl/misc/include.vs rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii-comments.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii-comments.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/re-compile-re-link.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/re-compile-re-link.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-256-character-identifier.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-256-character-identifier.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-257-character-identifier.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-257-character-identifier.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-array.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-array.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-clipvertex.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-clipvertex.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-assignment.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-assignment.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-conditional-assignment.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-conditional-assignment.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-conditional-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-conditional-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-define-line-continuation.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-define-line-continuation.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-do-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-do-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-error-directive.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-error-directive.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-float-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-float-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-loop.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-loop.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-frag-depth.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-frag-depth.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-recursion.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-recursion.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-scoped-struct.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-scoped-struct.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-functional-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-functional-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glcolor.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glcolor.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-1.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-1.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-symbol.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-symbol.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-hex-int-constant-macro.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-hex-int-constant-macro.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-include.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-include.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-int-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-int-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-invalid-identifier.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-invalid-identifier.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-limited-indexing.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-limited-indexing.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-line-directive.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-line-directive.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-long-line.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-long-line.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-non-ascii-error.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-non-ascii-error.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-precision.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-precision.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-quoted-error.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-quoted-error.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec2-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec2-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec3-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec3-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-120.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-120.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-130.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-130.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-webgl-identifier.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-webgl-identifier.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-without-precision.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-without-precision.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shared.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shared.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-exceeds-maximum.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-exceeds-maximum.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-under-maximum.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-under-maximum.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/uniform-location-length-limits.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/uniform-location-length-limits.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_field.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_field.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_function.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_function.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_variable.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_variable.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_field.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_field.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_function.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_function.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_variable.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_variable.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2d-bias.html => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2d-bias.html rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dlod.html => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dlod.html rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dproj.html => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dproj.html rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/variables/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/gl-fragcoord.html => dom/canvas/test/webgl-conformance/conformance/glsl/variables/gl-fragcoord.html rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/gl-frontfacing.html => dom/canvas/test/webgl-conformance/conformance/glsl/variables/gl-frontfacing.html rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/gl-pointcoord.html => dom/canvas/test/webgl-conformance/conformance/glsl/variables/gl-pointcoord.html rename : content/canvas/test/webgl-conformance/conformance/limits/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/limits/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/limits/gl-max-texture-dimensions.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-max-texture-dimensions.html rename : content/canvas/test/webgl-conformance/conformance/limits/gl-min-attribs.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-min-attribs.html rename : content/canvas/test/webgl-conformance/conformance/limits/gl-min-textures.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-min-textures.html rename : content/canvas/test/webgl-conformance/conformance/limits/gl-min-uniforms.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-min-uniforms.html rename : content/canvas/test/webgl-conformance/conformance/misc/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/misc/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/misc/bad-arguments-test.html => dom/canvas/test/webgl-conformance/conformance/misc/bad-arguments-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/delayed-drawing.html => dom/canvas/test/webgl-conformance/conformance/misc/delayed-drawing.html rename : content/canvas/test/webgl-conformance/conformance/misc/error-reporting.html => dom/canvas/test/webgl-conformance/conformance/misc/error-reporting.html rename : content/canvas/test/webgl-conformance/conformance/misc/functions-returning-strings.html => dom/canvas/test/webgl-conformance/conformance/misc/functions-returning-strings.html rename : content/canvas/test/webgl-conformance/conformance/misc/instanceof-test.html => dom/canvas/test/webgl-conformance/conformance/misc/instanceof-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/invalid-passed-params.html => dom/canvas/test/webgl-conformance/conformance/misc/invalid-passed-params.html rename : content/canvas/test/webgl-conformance/conformance/misc/is-object.html => dom/canvas/test/webgl-conformance/conformance/misc/is-object.html rename : content/canvas/test/webgl-conformance/conformance/misc/null-object-behaviour.html => dom/canvas/test/webgl-conformance/conformance/misc/null-object-behaviour.html rename : content/canvas/test/webgl-conformance/conformance/misc/object-deletion-behaviour.html => dom/canvas/test/webgl-conformance/conformance/misc/object-deletion-behaviour.html rename : content/canvas/test/webgl-conformance/conformance/misc/shader-precision-format.html => dom/canvas/test/webgl-conformance/conformance/misc/shader-precision-format.html rename : content/canvas/test/webgl-conformance/conformance/misc/type-conversion-test.html => dom/canvas/test/webgl-conformance/conformance/misc/type-conversion-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/uninitialized-test.html => dom/canvas/test/webgl-conformance/conformance/misc/uninitialized-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/webgl-specific.html => dom/canvas/test/webgl-conformance/conformance/misc/webgl-specific.html rename : content/canvas/test/webgl-conformance/conformance/more/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/more/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/more/README.md => dom/canvas/test/webgl-conformance/conformance/more/README.md rename : content/canvas/test/webgl-conformance/conformance/more/all_tests.html => dom/canvas/test/webgl-conformance/conformance/more/all_tests.html rename : content/canvas/test/webgl-conformance/conformance/more/all_tests_linkonly.html => dom/canvas/test/webgl-conformance/conformance/more/all_tests_linkonly.html rename : content/canvas/test/webgl-conformance/conformance/more/all_tests_sequential.html => dom/canvas/test/webgl-conformance/conformance/more/all_tests_sequential.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-A.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-A.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B1.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B1.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B2.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B2.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B3.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B3.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B4.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B4.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-C.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-C.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-D_G.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-D_G.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-G_I.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-G_I.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-L_S.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-L_S.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-S_V.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-S_V.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/badArgsArityLessThanArgc.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/badArgsArityLessThanArgc.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/constants.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/constants.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/fuzzTheAPI.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/fuzzTheAPI.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/getContext.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/getContext.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/methods.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/methods.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-A.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-A.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B1.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B1.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B2.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B2.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B3.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B3.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B4.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B4.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-C.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-C.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-D_G.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-D_G.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-G_I.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-G_I.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-L_S.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-L_S.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-S_V.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-S_V.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPIBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPIBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/webGLArrays.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/webGLArrays.html rename : content/canvas/test/webgl-conformance/conformance/more/demos/opengl_web.html => dom/canvas/test/webgl-conformance/conformance/more/demos/opengl_web.html rename : content/canvas/test/webgl-conformance/conformance/more/demos/video.html => dom/canvas/test/webgl-conformance/conformance/more/demos/video.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bindBuffer.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bindBuffer.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bindBufferBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bindBufferBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bindFramebufferLeaveNonZero.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bindFramebufferLeaveNonZero.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferData.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferData.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferDataBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferDataBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferSubData.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferSubData.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferSubDataBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferSubDataBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/deleteBufferBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/deleteBufferBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawArrays.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawArrays.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawArraysOutOfBounds.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawArraysOutOfBounds.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawElements.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawElements.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawElementsBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawElementsBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/isTests.html => dom/canvas/test/webgl-conformance/conformance/more/functions/isTests.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/readPixels.html => dom/canvas/test/webgl-conformance/conformance/more/functions/readPixels.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/readPixelsBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/readPixelsBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTML.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTML.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTMLBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTMLBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTML.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTML.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTMLBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTMLBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrix.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrix.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrixBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrixBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformf.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformf.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformfArrayLen1.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformfArrayLen1.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformfBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformfBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformi.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformi.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformiBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformiBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttrib.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttrib.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointer.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointer.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointerBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointerBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/arrayOutOfBounds.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/arrayOutOfBounds.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/longLoops.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/longLoops.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/uniformOutOfBounds.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/uniformOutOfBounds.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/unusedAttribsUniforms.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/unusedAttribsUniforms.html rename : content/canvas/test/webgl-conformance/conformance/more/index.html => dom/canvas/test/webgl-conformance/conformance/more/index.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/CPUvsGPU.html => dom/canvas/test/webgl-conformance/conformance/more/performance/CPUvsGPU.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/bandwidth.html => dom/canvas/test/webgl-conformance/conformance/more/performance/bandwidth.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/jsGCPause.html => dom/canvas/test/webgl-conformance/conformance/more/performance/jsGCPause.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/jsMatrixMult.html => dom/canvas/test/webgl-conformance/conformance/more/performance/jsMatrixMult.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/jsToGLOverhead.html => dom/canvas/test/webgl-conformance/conformance/more/performance/jsToGLOverhead.html rename : content/canvas/test/webgl-conformance/conformance/more/unit.css => dom/canvas/test/webgl-conformance/conformance/more/unit.css rename : content/canvas/test/webgl-conformance/conformance/more/unit.js => dom/canvas/test/webgl-conformance/conformance/more/unit.js rename : content/canvas/test/webgl-conformance/conformance/more/util.js => dom/canvas/test/webgl-conformance/conformance/more/util.js rename : content/canvas/test/webgl-conformance/conformance/programs/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/programs/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/programs/get-active-test.html => dom/canvas/test/webgl-conformance/conformance/programs/get-active-test.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-bind-attrib-location-test.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-bind-attrib-location-test.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-get-active-attribute.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-get-active-attribute.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-get-active-uniform.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-get-active-uniform.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-getshadersource.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-getshadersource.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-shader-test.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-shader-test.html rename : content/canvas/test/webgl-conformance/conformance/programs/invalid-UTF-16.html => dom/canvas/test/webgl-conformance/conformance/programs/invalid-UTF-16.html rename : content/canvas/test/webgl-conformance/conformance/programs/program-test.html => dom/canvas/test/webgl-conformance/conformance/programs/program-test.html rename : content/canvas/test/webgl-conformance/conformance/reading/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/reading/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/reading/read-pixels-pack-alignment.html => dom/canvas/test/webgl-conformance/conformance/reading/read-pixels-pack-alignment.html rename : content/canvas/test/webgl-conformance/conformance/reading/read-pixels-test.html => dom/canvas/test/webgl-conformance/conformance/reading/read-pixels-test.html rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/renderbuffers/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-object-attachment.html => dom/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-object-attachment.html rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-test.html => dom/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-test.html rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/renderbuffer-initialization.html => dom/canvas/test/webgl-conformance/conformance/renderbuffers/renderbuffer-initialization.html rename : content/canvas/test/webgl-conformance/conformance/rendering/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/rendering/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/rendering/draw-arrays-out-of-bounds.html => dom/canvas/test/webgl-conformance/conformance/rendering/draw-arrays-out-of-bounds.html rename : content/canvas/test/webgl-conformance/conformance/rendering/draw-elements-out-of-bounds.html => dom/canvas/test/webgl-conformance/conformance/rendering/draw-elements-out-of-bounds.html rename : content/canvas/test/webgl-conformance/conformance/rendering/gl-clear.html => dom/canvas/test/webgl-conformance/conformance/rendering/gl-clear.html rename : content/canvas/test/webgl-conformance/conformance/rendering/gl-drawelements.html => dom/canvas/test/webgl-conformance/conformance/rendering/gl-drawelements.html rename : content/canvas/test/webgl-conformance/conformance/rendering/gl-scissor-test.html => dom/canvas/test/webgl-conformance/conformance/rendering/gl-scissor-test.html rename : content/canvas/test/webgl-conformance/conformance/rendering/line-loop-tri-fan.html => dom/canvas/test/webgl-conformance/conformance/rendering/line-loop-tri-fan.html rename : content/canvas/test/webgl-conformance/conformance/rendering/more-than-65536-indices.html => dom/canvas/test/webgl-conformance/conformance/rendering/more-than-65536-indices.html rename : content/canvas/test/webgl-conformance/conformance/rendering/point-size.html => dom/canvas/test/webgl-conformance/conformance/rendering/point-size.html rename : content/canvas/test/webgl-conformance/conformance/rendering/triangle.html => dom/canvas/test/webgl-conformance/conformance/rendering/triangle.html rename : content/canvas/test/webgl-conformance/conformance/resources/3x3.png => dom/canvas/test/webgl-conformance/conformance/resources/3x3.png rename : content/canvas/test/webgl-conformance/conformance/resources/blue-1x1.jpg => dom/canvas/test/webgl-conformance/conformance/resources/blue-1x1.jpg rename : content/canvas/test/webgl-conformance/conformance/resources/boolUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/boolUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/bug-32888-texture.png => dom/canvas/test/webgl-conformance/conformance/resources/bug-32888-texture.png rename : content/canvas/test/webgl-conformance/conformance/resources/floatUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/floatUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/fragmentShader.frag => dom/canvas/test/webgl-conformance/conformance/resources/fragmentShader.frag rename : content/canvas/test/webgl-conformance/conformance/resources/glsl-conformance-test.js => dom/canvas/test/webgl-conformance/conformance/resources/glsl-conformance-test.js rename : content/canvas/test/webgl-conformance/conformance/resources/glsl-feature-tests.css => dom/canvas/test/webgl-conformance/conformance/resources/glsl-feature-tests.css rename : content/canvas/test/webgl-conformance/conformance/resources/glsl-generator.js => dom/canvas/test/webgl-conformance/conformance/resources/glsl-generator.js rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256-with-128-alpha.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256-with-128-alpha.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-default-gamma.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-default-gamma.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma0.1.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma0.1.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma1.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma1.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma2.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma2.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma4.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma4.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma9.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma9.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp.png rename : content/canvas/test/webgl-conformance/conformance/resources/green-2x2-16bit.png => dom/canvas/test/webgl-conformance/conformance/resources/green-2x2-16bit.png rename : content/canvas/test/webgl-conformance/conformance/resources/intArrayUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/intArrayUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/intUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/intUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/matUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/matUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.frag => dom/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.frag rename : content/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/npot-video.mp4 => dom/canvas/test/webgl-conformance/conformance/resources/npot-video.mp4 rename : content/canvas/test/webgl-conformance/conformance/resources/npot-video.theora.ogv => dom/canvas/test/webgl-conformance/conformance/resources/npot-video.theora.ogv rename : content/canvas/test/webgl-conformance/conformance/resources/npot-video.webmvp8.webm => dom/canvas/test/webgl-conformance/conformance/resources/npot-video.webmvp8.webm rename : content/canvas/test/webgl-conformance/conformance/resources/pnglib.js => dom/canvas/test/webgl-conformance/conformance/resources/pnglib.js rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.mp4 => dom/canvas/test/webgl-conformance/conformance/resources/red-green.mp4 rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.png => dom/canvas/test/webgl-conformance/conformance/resources/red-green.png rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.theora.ogv => dom/canvas/test/webgl-conformance/conformance/resources/red-green.theora.ogv rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.webmvp8.webm => dom/canvas/test/webgl-conformance/conformance/resources/red-green.webmvp8.webm rename : content/canvas/test/webgl-conformance/conformance/resources/red-indexed.png => dom/canvas/test/webgl-conformance/conformance/resources/red-indexed.png rename : content/canvas/test/webgl-conformance/conformance/resources/samplerUniformShader.frag => dom/canvas/test/webgl-conformance/conformance/resources/samplerUniformShader.frag rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-cie-rgb-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-cie-rgb-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-colormatch-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-colormatch-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.jpg => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.jpg rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-e-srgb-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-e-srgb-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-smpte-c-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-smpte-c-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-srgb-iec61966-2.1-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-srgb-iec61966-2.1-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/structUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/structUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/vertexShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/vertexShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/webgl-test-utils.js => dom/canvas/test/webgl-conformance/conformance/resources/webgl-test-utils.js rename : content/canvas/test/webgl-conformance/conformance/resources/webgl-test.js => dom/canvas/test/webgl-conformance/conformance/resources/webgl-test.js rename : content/canvas/test/webgl-conformance/conformance/resources/zero-alpha.png => dom/canvas/test/webgl-conformance/conformance/resources/zero-alpha.png rename : content/canvas/test/webgl-conformance/conformance/state/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/state/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/state/gl-enable-enum-test.html => dom/canvas/test/webgl-conformance/conformance/state/gl-enable-enum-test.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-enum-tests.html => dom/canvas/test/webgl-conformance/conformance/state/gl-enum-tests.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-get-calls.html => dom/canvas/test/webgl-conformance/conformance/state/gl-get-calls.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-geterror.html => dom/canvas/test/webgl-conformance/conformance/state/gl-geterror.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-getstring.html => dom/canvas/test/webgl-conformance/conformance/state/gl-getstring.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-object-get-calls.html => dom/canvas/test/webgl-conformance/conformance/state/gl-object-get-calls.html rename : content/canvas/test/webgl-conformance/conformance/textures/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/textures/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/textures/compressed-tex-image.html => dom/canvas/test/webgl-conformance/conformance/textures/compressed-tex-image.html rename : content/canvas/test/webgl-conformance/conformance/textures/copy-tex-image-and-sub-image-2d.html => dom/canvas/test/webgl-conformance/conformance/textures/copy-tex-image-and-sub-image-2d.html rename : content/canvas/test/webgl-conformance/conformance/textures/gl-pixelstorei.html => dom/canvas/test/webgl-conformance/conformance/textures/gl-pixelstorei.html rename : content/canvas/test/webgl-conformance/conformance/textures/gl-teximage.html => dom/canvas/test/webgl-conformance/conformance/textures/gl-teximage.html rename : content/canvas/test/webgl-conformance/conformance/textures/origin-clean-conformance.html => dom/canvas/test/webgl-conformance/conformance/textures/origin-clean-conformance.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-video.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-video.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-uniform-binding-bugs.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-uniform-binding-bugs.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-with-format-and-type.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-with-format-and-type.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-with-invalid-data.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-with-invalid-data.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-input-validation.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-input-validation.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d-bad-args.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d-bad-args.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d.html rename : content/canvas/test/webgl-conformance/conformance/textures/texparameter-test.html => dom/canvas/test/webgl-conformance/conformance/textures/texparameter-test.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-active-bind-2.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-active-bind-2.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-active-bind.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-active-bind.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-clear.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-clear.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-complete.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-complete.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-formats-test.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-formats-test.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-mips.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-mips.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-npot-video.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-npot-video.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-npot.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-npot.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-size-cube-maps.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-size-cube-maps.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-size.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-size.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-transparent-pixels-initialized.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-transparent-pixels-initialized.html rename : content/canvas/test/webgl-conformance/conformance/typedarrays/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/typedarrays/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-crash.html => dom/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-crash.html rename : content/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-view-crash.html => dom/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-view-crash.html rename : content/canvas/test/webgl-conformance/conformance/typedarrays/array-unit-tests.html => dom/canvas/test/webgl-conformance/conformance/typedarrays/array-unit-tests.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/uniforms/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-arrays.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-arrays.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-bool.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-bool.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-uniformmatrix4fv.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-uniformmatrix4fv.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-unknown-uniform.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-unknown-uniform.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/null-uniform-location.html => dom/canvas/test/webgl-conformance/conformance/uniforms/null-uniform-location.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/uniform-location.html => dom/canvas/test/webgl-conformance/conformance/uniforms/uniform-location.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/uniform-samplers-test.html => dom/canvas/test/webgl-conformance/conformance/uniforms/uniform-samplers-test.html rename : content/canvas/test/webgl-conformance/dont-load-image-from-internet.patch => dom/canvas/test/webgl-conformance/dont-load-image-from-internet.patch rename : content/canvas/test/webgl-conformance/ext-texture-filter-anisotropic.patch => dom/canvas/test/webgl-conformance/ext-texture-filter-anisotropic.patch rename : content/canvas/test/webgl-conformance/extra/50x50pixel-black-with-red-triangle.png => dom/canvas/test/webgl-conformance/extra/50x50pixel-black-with-red-triangle.png rename : content/canvas/test/webgl-conformance/extra/big-fbos-example.html => dom/canvas/test/webgl-conformance/extra/big-fbos-example.html rename : content/canvas/test/webgl-conformance/extra/canvas-compositing-test.html => dom/canvas/test/webgl-conformance/extra/canvas-compositing-test.html rename : content/canvas/test/webgl-conformance/extra/canvas-compositing-test.png => dom/canvas/test/webgl-conformance/extra/canvas-compositing-test.png rename : content/canvas/test/webgl-conformance/extra/fbo-lost-context.html => dom/canvas/test/webgl-conformance/extra/fbo-lost-context.html rename : content/canvas/test/webgl-conformance/extra/lots-of-polys-example.html => dom/canvas/test/webgl-conformance/extra/lots-of-polys-example.html rename : content/canvas/test/webgl-conformance/extra/offscreen-issue.html => dom/canvas/test/webgl-conformance/extra/offscreen-issue.html rename : content/canvas/test/webgl-conformance/extra/out-of-bounds-uniform-array-access.html => dom/canvas/test/webgl-conformance/extra/out-of-bounds-uniform-array-access.html rename : content/canvas/test/webgl-conformance/extra/out-of-memory.html => dom/canvas/test/webgl-conformance/extra/out-of-memory.html rename : content/canvas/test/webgl-conformance/extra/out-of-resources.html => dom/canvas/test/webgl-conformance/extra/out-of-resources.html rename : content/canvas/test/webgl-conformance/extra/out-of-vram.html => dom/canvas/test/webgl-conformance/extra/out-of-vram.html rename : content/canvas/test/webgl-conformance/extra/simulated-attrib-0-bug-test.html => dom/canvas/test/webgl-conformance/extra/simulated-attrib-0-bug-test.html rename : content/canvas/test/webgl-conformance/extra/slow-shader-example.html => dom/canvas/test/webgl-conformance/extra/slow-shader-example.html rename : content/canvas/test/webgl-conformance/extra/webgl-info.html => dom/canvas/test/webgl-conformance/extra/webgl-info.html rename : content/canvas/test/webgl-conformance/failing_tests_android.txt => dom/canvas/test/webgl-conformance/failing_tests_android.txt rename : content/canvas/test/webgl-conformance/failing_tests_android_nvidia.txt => dom/canvas/test/webgl-conformance/failing_tests_android_nvidia.txt rename : content/canvas/test/webgl-conformance/failing_tests_android_x86.txt => dom/canvas/test/webgl-conformance/failing_tests_android_x86.txt rename : content/canvas/test/webgl-conformance/failing_tests_linux.txt => dom/canvas/test/webgl-conformance/failing_tests_linux.txt rename : content/canvas/test/webgl-conformance/failing_tests_linux_mesa.txt => dom/canvas/test/webgl-conformance/failing_tests_linux_mesa.txt rename : content/canvas/test/webgl-conformance/failing_tests_linux_nvidia.txt => dom/canvas/test/webgl-conformance/failing_tests_linux_nvidia.txt rename : content/canvas/test/webgl-conformance/failing_tests_mac.txt => dom/canvas/test/webgl-conformance/failing_tests_mac.txt rename : content/canvas/test/webgl-conformance/failing_tests_mac_mtnlion.txt => dom/canvas/test/webgl-conformance/failing_tests_mac_mtnlion.txt rename : content/canvas/test/webgl-conformance/failing_tests_windows.txt => dom/canvas/test/webgl-conformance/failing_tests_windows.txt rename : content/canvas/test/webgl-conformance/fix-webgl-harness-async.patch => dom/canvas/test/webgl-conformance/fix-webgl-harness-async.patch rename : content/canvas/test/webgl-conformance/gc.patch => dom/canvas/test/webgl-conformance/gc.patch rename : content/canvas/test/webgl-conformance/log-more-info-about-test-failures.patch => dom/canvas/test/webgl-conformance/log-more-info-about-test-failures.patch rename : content/canvas/test/webgl-conformance/misc/program-test-1.html => dom/canvas/test/webgl-conformance/misc/program-test-1.html rename : content/canvas/test/webgl-conformance/mochitest-conformance-files.ini => dom/canvas/test/webgl-conformance/mochitest-conformance-files.ini rename : content/canvas/test/webgl-conformance/mochitest.ini => dom/canvas/test/webgl-conformance/mochitest.ini rename : content/canvas/test/webgl-conformance/moz.build => dom/canvas/test/webgl-conformance/moz.build rename : content/canvas/test/webgl-conformance/reference-cycle-test.patch => dom/canvas/test/webgl-conformance/reference-cycle-test.patch rename : content/canvas/test/webgl-conformance/resources/cors-util.js => dom/canvas/test/webgl-conformance/resources/cors-util.js rename : content/canvas/test/webgl-conformance/resources/desktop-gl-constants.js => dom/canvas/test/webgl-conformance/resources/desktop-gl-constants.js rename : content/canvas/test/webgl-conformance/resources/js-test-pre.js => dom/canvas/test/webgl-conformance/resources/js-test-pre.js rename : content/canvas/test/webgl-conformance/resources/js-test-style.css => dom/canvas/test/webgl-conformance/resources/js-test-style.css rename : content/canvas/test/webgl-conformance/resources/opengl_logo.jpg => dom/canvas/test/webgl-conformance/resources/opengl_logo.jpg rename : content/canvas/test/webgl-conformance/resources/thunderbird-logo-64x64.png => dom/canvas/test/webgl-conformance/resources/thunderbird-logo-64x64.png rename : content/canvas/test/webgl-conformance/resources/webgl-logo.png => dom/canvas/test/webgl-conformance/resources/webgl-logo.png rename : content/canvas/test/webgl-conformance/resources/webgl-test-harness.js => dom/canvas/test/webgl-conformance/resources/webgl-test-harness.js rename : content/canvas/test/webgl-conformance/skipped_tests_android.txt => dom/canvas/test/webgl-conformance/skipped_tests_android.txt rename : content/canvas/test/webgl-conformance/skipped_tests_android_x86.txt => dom/canvas/test/webgl-conformance/skipped_tests_android_x86.txt rename : content/canvas/test/webgl-conformance/skipped_tests_linux.txt => dom/canvas/test/webgl-conformance/skipped_tests_linux.txt rename : content/canvas/test/webgl-conformance/skipped_tests_linux_mesa.txt => dom/canvas/test/webgl-conformance/skipped_tests_linux_mesa.txt rename : content/canvas/test/webgl-conformance/skipped_tests_win_vista.txt => dom/canvas/test/webgl-conformance/skipped_tests_win_vista.txt rename : content/canvas/test/webgl-conformance/skipped_tests_winxp.txt => dom/canvas/test/webgl-conformance/skipped_tests_winxp.txt rename : content/canvas/test/webgl-conformance/test_webgl_conformance_test_suite.html => dom/canvas/test/webgl-conformance/test_webgl_conformance_test_suite.html rename : content/canvas/test/webgl-conformance/webgl-conformance-tests.html => dom/canvas/test/webgl-conformance/webgl-conformance-tests.html rename : content/canvas/test/webgl-conformance/writemanifest.py => dom/canvas/test/webgl-conformance/writemanifest.py rename : content/canvas/test/webgl-mochitest/driver-info.js => dom/canvas/test/webgl-mochitest/driver-info.js rename : content/canvas/test/webgl-mochitest/mochi-to-testcase.py => dom/canvas/test/webgl-mochitest/mochi-to-testcase.py rename : content/canvas/test/webgl-mochitest/mochitest.ini => dom/canvas/test/webgl-mochitest/mochitest.ini rename : content/canvas/test/webgl-mochitest/moz.build => dom/canvas/test/webgl-mochitest/moz.build rename : content/canvas/test/webgl-mochitest/test_depth_readpixels.html => dom/canvas/test/webgl-mochitest/test_depth_readpixels.html rename : content/canvas/test/webgl-mochitest/test_draw.html => dom/canvas/test/webgl-mochitest/test_draw.html rename : content/canvas/test/webgl-mochitest/test_fb_param.html => dom/canvas/test/webgl-mochitest/test_fb_param.html rename : content/canvas/test/webgl-mochitest/test_fb_param_crash.html => dom/canvas/test/webgl-mochitest/test_fb_param_crash.html rename : content/canvas/test/webgl-mochitest/test_highp_fs.html => dom/canvas/test/webgl-mochitest/test_highp_fs.html rename : content/canvas/test/webgl-mochitest/test_no_arr_points.html => dom/canvas/test/webgl-mochitest/test_no_arr_points.html rename : content/canvas/test/webgl-mochitest/test_noprog_draw.html => dom/canvas/test/webgl-mochitest/test_noprog_draw.html rename : content/canvas/test/webgl-mochitest/test_privileged_exts.html => dom/canvas/test/webgl-mochitest/test_privileged_exts.html rename : content/canvas/test/webgl-mochitest/test_texsubimage_float.html => dom/canvas/test/webgl-mochitest/test_texsubimage_float.html rename : content/canvas/test/webgl-mochitest/test_webgl2_not_exposed.html => dom/canvas/test/webgl-mochitest/test_webgl2_not_exposed.html rename : content/canvas/test/webgl-mochitest/test_webgl_available.html => dom/canvas/test/webgl-mochitest/test_webgl_available.html rename : content/canvas/test/webgl-mochitest/test_webgl_conformance.html => dom/canvas/test/webgl-mochitest/test_webgl_conformance.html rename : content/canvas/test/webgl-mochitest/test_webgl_request_context.html => dom/canvas/test/webgl-mochitest/test_webgl_request_context.html rename : content/canvas/test/webgl-mochitest/test_webgl_request_mismatch.html => dom/canvas/test/webgl-mochitest/test_webgl_request_mismatch.html rename : content/canvas/test/webgl-mochitest/webgl-util.js => dom/canvas/test/webgl-mochitest/webgl-util.js
2014-07-26 01:15:35 +04:00
#include "WebGL2Context.h"
using namespace mozilla::layers;
using namespace mozilla::gfx;
NS_IMPL_NS_NEW_HTML_ELEMENT(Canvas)
namespace mozilla {
namespace dom {
class RequestedFrameRefreshObserver : public nsARefreshObserver {
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(RequestedFrameRefreshObserver, override)
public:
RequestedFrameRefreshObserver(HTMLCanvasElement* const aOwningElement,
nsRefreshDriver* aRefreshDriver,
bool aReturnPlaceholderData)
: mRegistered(false),
mReturnPlaceholderData(aReturnPlaceholderData),
mOwningElement(aOwningElement),
mRefreshDriver(aRefreshDriver) {
MOZ_ASSERT(mOwningElement);
}
static already_AddRefed<DataSourceSurface> CopySurface(
const RefPtr<SourceSurface>& aSurface, bool aReturnPlaceholderData) {
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<DataSourceSurface> data = aSurface->GetDataSurface();
if (!data) {
return nullptr;
}
DataSourceSurface::ScopedMap read(data, DataSourceSurface::READ);
if (!read.IsMapped()) {
return nullptr;
}
RefPtr<DataSourceSurface> copy = Factory::CreateDataSourceSurfaceWithStride(
data->GetSize(), data->GetFormat(), read.GetStride());
if (!copy) {
return nullptr;
}
DataSourceSurface::ScopedMap write(copy, DataSourceSurface::WRITE);
if (!write.IsMapped()) {
return nullptr;
}
MOZ_ASSERT(read.GetStride() == write.GetStride());
MOZ_ASSERT(data->GetSize() == copy->GetSize());
MOZ_ASSERT(data->GetFormat() == copy->GetFormat());
if (aReturnPlaceholderData) {
// If returning placeholder data, fill the frame copy with white pixels.
memset(write.GetData(), 0xFF, write.GetStride() * copy->GetSize().height);
} else {
memcpy(write.GetData(), read.GetData(),
write.GetStride() * copy->GetSize().height);
}
return copy.forget();
}
void SetReturnPlaceholderData(bool aReturnPlaceholderData) {
mReturnPlaceholderData = aReturnPlaceholderData;
}
void WillRefresh(TimeStamp aTime) override {
MOZ_ASSERT(NS_IsMainThread());
Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange. This patch makes the following changes to the macros. - Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was mostly misused. - Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is universally available now anyway. - Combines the first two string literal arguments of PROFILER_LABEL and PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for them to be separate, and it forced a '::' in the label, which isn't always appropriate. Also, the meaning of the "name_space" argument was interpreted in an interesting variety of ways. - Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make it clearer they construct RAII objects rather than just being function calls. (I myself have screwed up the scoping because of this in the past.) - Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so the caller doesn't need to. This makes a *lot* more of the uses fit onto a single line. The patch also makes the following changes to the macro uses (beyond those required by the changes described above). - Fixes a bunch of labels that had gotten out of sync with the name of the class and/or function that encloses them. - Removes a useless PROFILER_LABEL use within a trivial scope in EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving any useful purpose. It also serves as extra evidence that the AUTO_ prefix is a good idea. - Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is done within them, instead of at their callsites, because that's a more standard way of doing things. --HG-- extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
2017-06-22 10:08:53 +03:00
AUTO_PROFILER_LABEL("RequestedFrameRefreshObserver::WillRefresh", OTHER);
if (!mOwningElement) {
return;
}
if (mOwningElement->IsWriteOnly()) {
return;
}
if (mOwningElement->IsContextCleanForFrameCapture()) {
return;
}
mOwningElement->ProcessDestroyedFrameListeners();
if (!mOwningElement->IsFrameCaptureRequested()) {
return;
}
RefPtr<SourceSurface> snapshot;
{
Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange. This patch makes the following changes to the macros. - Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was mostly misused. - Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is universally available now anyway. - Combines the first two string literal arguments of PROFILER_LABEL and PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for them to be separate, and it forced a '::' in the label, which isn't always appropriate. Also, the meaning of the "name_space" argument was interpreted in an interesting variety of ways. - Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make it clearer they construct RAII objects rather than just being function calls. (I myself have screwed up the scoping because of this in the past.) - Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so the caller doesn't need to. This makes a *lot* more of the uses fit onto a single line. The patch also makes the following changes to the macro uses (beyond those required by the changes described above). - Fixes a bunch of labels that had gotten out of sync with the name of the class and/or function that encloses them. - Removes a useless PROFILER_LABEL use within a trivial scope in EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving any useful purpose. It also serves as extra evidence that the AUTO_ prefix is a good idea. - Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is done within them, instead of at their callsites, because that's a more standard way of doing things. --HG-- extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
2017-06-22 10:08:53 +03:00
AUTO_PROFILER_LABEL(
"RequestedFrameRefreshObserver::WillRefresh:GetSnapshot", OTHER);
snapshot = mOwningElement->GetSurfaceSnapshot(nullptr);
if (!snapshot) {
return;
}
}
RefPtr<DataSourceSurface> copy;
{
Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange. This patch makes the following changes to the macros. - Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was mostly misused. - Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is universally available now anyway. - Combines the first two string literal arguments of PROFILER_LABEL and PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for them to be separate, and it forced a '::' in the label, which isn't always appropriate. Also, the meaning of the "name_space" argument was interpreted in an interesting variety of ways. - Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make it clearer they construct RAII objects rather than just being function calls. (I myself have screwed up the scoping because of this in the past.) - Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so the caller doesn't need to. This makes a *lot* more of the uses fit onto a single line. The patch also makes the following changes to the macro uses (beyond those required by the changes described above). - Fixes a bunch of labels that had gotten out of sync with the name of the class and/or function that encloses them. - Removes a useless PROFILER_LABEL use within a trivial scope in EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving any useful purpose. It also serves as extra evidence that the AUTO_ prefix is a good idea. - Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is done within them, instead of at their callsites, because that's a more standard way of doing things. --HG-- extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
2017-06-22 10:08:53 +03:00
AUTO_PROFILER_LABEL(
"RequestedFrameRefreshObserver::WillRefresh:CopySurface", OTHER);
copy = CopySurface(snapshot, mReturnPlaceholderData);
if (!copy) {
return;
}
}
{
Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange. This patch makes the following changes to the macros. - Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was mostly misused. - Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is universally available now anyway. - Combines the first two string literal arguments of PROFILER_LABEL and PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for them to be separate, and it forced a '::' in the label, which isn't always appropriate. Also, the meaning of the "name_space" argument was interpreted in an interesting variety of ways. - Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make it clearer they construct RAII objects rather than just being function calls. (I myself have screwed up the scoping because of this in the past.) - Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so the caller doesn't need to. This makes a *lot* more of the uses fit onto a single line. The patch also makes the following changes to the macro uses (beyond those required by the changes described above). - Fixes a bunch of labels that had gotten out of sync with the name of the class and/or function that encloses them. - Removes a useless PROFILER_LABEL use within a trivial scope in EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving any useful purpose. It also serves as extra evidence that the AUTO_ prefix is a good idea. - Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is done within them, instead of at their callsites, because that's a more standard way of doing things. --HG-- extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
2017-06-22 10:08:53 +03:00
AUTO_PROFILER_LABEL("RequestedFrameRefreshObserver::WillRefresh:SetFrame",
OTHER);
mOwningElement->SetFrameCapture(copy.forget(), aTime);
mOwningElement->MarkContextCleanForFrameCapture();
}
}
void DetachFromRefreshDriver() {
MOZ_ASSERT(mOwningElement);
MOZ_ASSERT(mRefreshDriver);
Unregister();
mRefreshDriver = nullptr;
}
void Register() {
if (mRegistered) {
return;
}
MOZ_ASSERT(mRefreshDriver);
if (mRefreshDriver) {
mRefreshDriver->AddRefreshObserver(this, FlushType::Display);
mRegistered = true;
}
}
void Unregister() {
if (!mRegistered) {
return;
}
MOZ_ASSERT(mRefreshDriver);
if (mRefreshDriver) {
mRefreshDriver->RemoveRefreshObserver(this, FlushType::Display);
mRegistered = false;
}
}
private:
virtual ~RequestedFrameRefreshObserver() {
MOZ_ASSERT(!mRefreshDriver);
MOZ_ASSERT(!mRegistered);
}
bool mRegistered;
bool mReturnPlaceholderData;
HTMLCanvasElement* const mOwningElement;
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<nsRefreshDriver> mRefreshDriver;
};
// ---------------------------------------------------------------------------
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(HTMLCanvasPrintState, mCanvas, mContext,
mCallback)
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(HTMLCanvasPrintState, AddRef)
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(HTMLCanvasPrintState, Release)
HTMLCanvasPrintState::HTMLCanvasPrintState(
HTMLCanvasElement* aCanvas, nsICanvasRenderingContextInternal* aContext,
nsITimerCallback* aCallback)
: mIsDone(false),
mPendingNotify(false),
mCanvas(aCanvas),
mContext(aContext),
mCallback(aCallback) {}
HTMLCanvasPrintState::~HTMLCanvasPrintState() {}
Bug 1117172 part 3. Change the wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv The only manual changes here are to BindingUtils.h, BindingUtils.cpp, Codegen.py, Element.cpp, IDBFileRequest.cpp, IDBObjectStore.cpp, dom/workers/Navigator.cpp, WorkerPrivate.cpp, DeviceStorageRequestChild.cpp, Notification.cpp, nsGlobalWindow.cpp, MessagePort.cpp, nsJSEnvironment.cpp, Sandbox.cpp, XPCConvert.cpp, ExportHelpers.cpp, and DataStoreService.cpp. The rest of this diff was generated by running the following commands: find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObject\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx|aContext|aCtx|js), [^,)]+)\)/\1, aGivenProto)/g'
2015-03-19 17:13:33 +03:00
/* virtual */ JSObject* HTMLCanvasPrintState::WrapObject(
JSContext* aCx, JS::Handle<JSObject*> aGivenProto) {
return MozCanvasPrintState_Binding::Wrap(aCx, this, aGivenProto);
}
nsISupports* HTMLCanvasPrintState::Context() const { return mContext; }
void HTMLCanvasPrintState::Done() {
if (!mPendingNotify && !mIsDone) {
// The canvas needs to be invalidated for printing reftests on linux to
// work.
if (mCanvas) {
mCanvas->InvalidateCanvas();
}
RefPtr<nsRunnableMethod<HTMLCanvasPrintState>> doneEvent =
NewRunnableMethod("dom::HTMLCanvasPrintState::NotifyDone", this,
&HTMLCanvasPrintState::NotifyDone);
if (NS_SUCCEEDED(NS_DispatchToCurrentThread(doneEvent))) {
mPendingNotify = true;
}
}
}
void HTMLCanvasPrintState::NotifyDone() {
mIsDone = true;
mPendingNotify = false;
if (mCallback) {
mCallback->Notify(nullptr);
}
}
// ---------------------------------------------------------------------------
HTMLCanvasElementObserver::HTMLCanvasElementObserver(
HTMLCanvasElement* aElement)
: mElement(aElement) {
RegisterVisibilityChangeEvent();
RegisterMemoryPressureEvent();
}
HTMLCanvasElementObserver::~HTMLCanvasElementObserver() { Destroy(); }
void HTMLCanvasElementObserver::Destroy() {
UnregisterMemoryPressureEvent();
UnregisterVisibilityChangeEvent();
mElement = nullptr;
}
void HTMLCanvasElementObserver::RegisterVisibilityChangeEvent() {
if (!mElement) {
return;
}
Document* document = mElement->OwnerDoc();
document->AddSystemEventListener(NS_LITERAL_STRING("visibilitychange"), this,
true, false);
}
void HTMLCanvasElementObserver::UnregisterVisibilityChangeEvent() {
if (!mElement) {
return;
}
Document* document = mElement->OwnerDoc();
document->RemoveSystemEventListener(NS_LITERAL_STRING("visibilitychange"),
this, true);
}
void HTMLCanvasElementObserver::RegisterMemoryPressureEvent() {
if (!mElement) {
return;
}
nsCOMPtr<nsIObserverService> observerService =
mozilla::services::GetObserverService();
MOZ_ASSERT(observerService);
if (observerService)
observerService->AddObserver(this, "memory-pressure", false);
}
void HTMLCanvasElementObserver::UnregisterMemoryPressureEvent() {
if (!mElement) {
return;
}
nsCOMPtr<nsIObserverService> observerService =
mozilla::services::GetObserverService();
// Do not assert on observerService here. This might be triggered by
// the cycle collector at a late enough time, that XPCOM services are
// no longer available. See bug 1029504.
if (observerService) observerService->RemoveObserver(this, "memory-pressure");
}
NS_IMETHODIMP
HTMLCanvasElementObserver::Observe(nsISupports*, const char* aTopic,
const char16_t*) {
if (!mElement || strcmp(aTopic, "memory-pressure")) {
return NS_OK;
}
mElement->OnMemoryPressure();
return NS_OK;
}
NS_IMETHODIMP
HTMLCanvasElementObserver::HandleEvent(Event* aEvent) {
nsAutoString type;
aEvent->GetType(type);
if (!mElement || !type.EqualsLiteral("visibilitychange")) {
return NS_OK;
}
mElement->OnVisibilityChange();
return NS_OK;
}
NS_IMPL_ISUPPORTS(HTMLCanvasElementObserver, nsIObserver)
// ---------------------------------------------------------------------------
HTMLCanvasElement::HTMLCanvasElement(
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
: nsGenericHTMLElement(std::move(aNodeInfo)),
mResetLayer(true),
mMaybeModified(false),
mWriteOnly(false) {}
HTMLCanvasElement::~HTMLCanvasElement() {
if (mContextObserver) {
mContextObserver->Destroy();
mContextObserver = nullptr;
}
ResetPrintCallback();
if (mRequestedFrameRefreshObserver) {
mRequestedFrameRefreshObserver->DetachFromRefreshDriver();
}
if (mAsyncCanvasRenderer) {
mAsyncCanvasRenderer->mHTMLCanvasElement = nullptr;
}
}
NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLCanvasElement, nsGenericHTMLElement,
mCurrentContext, mPrintCallback, mPrintState,
mOriginalCanvas, mOffscreenCanvas)
NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(HTMLCanvasElement,
nsGenericHTMLElement)
NS_IMPL_ELEMENT_CLONE(HTMLCanvasElement)
Bug 1117172 part 3. Change the wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv The only manual changes here are to BindingUtils.h, BindingUtils.cpp, Codegen.py, Element.cpp, IDBFileRequest.cpp, IDBObjectStore.cpp, dom/workers/Navigator.cpp, WorkerPrivate.cpp, DeviceStorageRequestChild.cpp, Notification.cpp, nsGlobalWindow.cpp, MessagePort.cpp, nsJSEnvironment.cpp, Sandbox.cpp, XPCConvert.cpp, ExportHelpers.cpp, and DataStoreService.cpp. The rest of this diff was generated by running the following commands: find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObject\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx|aContext|aCtx|js), [^,)]+)\)/\1, aGivenProto)/g'
2015-03-19 17:13:33 +03:00
/* virtual */ JSObject* HTMLCanvasElement::WrapNode(
JSContext* aCx, JS::Handle<JSObject*> aGivenProto) {
return HTMLCanvasElement_Binding::Wrap(aCx, this, aGivenProto);
}
already_AddRefed<nsICanvasRenderingContextInternal>
HTMLCanvasElement::CreateContext(CanvasContextType aContextType) {
// Note that the compositor backend will be LAYERS_NONE if there is no widget.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<nsICanvasRenderingContextInternal> ret =
CreateContextHelper(aContextType, GetCompositorBackendType());
// Add Observer for webgl canvas.
if (aContextType == CanvasContextType::WebGL1 ||
aContextType == CanvasContextType::WebGL2) {
if (!mContextObserver) {
mContextObserver = new HTMLCanvasElementObserver(this);
}
}
ret->SetCanvasElement(this);
return ret.forget();
}
nsIntSize HTMLCanvasElement::GetWidthHeight() {
nsIntSize size(DEFAULT_CANVAS_WIDTH, DEFAULT_CANVAS_HEIGHT);
const nsAttrValue* value;
if ((value = GetParsedAttr(nsGkAtoms::width)) &&
value->Type() == nsAttrValue::eInteger) {
size.width = value->GetIntegerValue();
}
if ((value = GetParsedAttr(nsGkAtoms::height)) &&
value->Type() == nsAttrValue::eInteger) {
size.height = value->GetIntegerValue();
}
MOZ_ASSERT(size.width >= 0 && size.height >= 0,
"we should've required <canvas> width/height attrs to be "
"unsigned (non-negative) values");
return size;
}
nsresult HTMLCanvasElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
const nsAttrValue* aValue,
const nsAttrValue* aOldValue,
nsIPrincipal* aSubjectPrincipal,
bool aNotify) {
AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
return nsGenericHTMLElement::AfterSetAttr(
aNamespaceID, aName, aValue, aOldValue, aSubjectPrincipal, aNotify);
}
nsresult HTMLCanvasElement::OnAttrSetButNotChanged(
int32_t aNamespaceID, nsAtom* aName, const nsAttrValueOrString& aValue,
bool aNotify) {
AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
aValue, aNotify);
}
void HTMLCanvasElement::AfterMaybeChangeAttr(int32_t aNamespaceID,
nsAtom* aName, bool aNotify) {
if (mCurrentContext && aNamespaceID == kNameSpaceID_None &&
(aName == nsGkAtoms::width || aName == nsGkAtoms::height ||
aName == nsGkAtoms::moz_opaque)) {
ErrorResult dummy;
UpdateContext(nullptr, JS::NullHandleValue, dummy);
}
}
void HTMLCanvasElement::HandlePrintCallback(
nsPresContext::nsPresContextType aType) {
// Only call the print callback here if 1) we're in a print testing mode or
// print preview mode, 2) the canvas has a print callback and 3) the callback
// hasn't already been called. For real printing the callback is handled in
// nsSimplePageSequenceFrame::PrePrintNextPage.
if ((aType == nsPresContext::eContext_PageLayout ||
aType == nsPresContext::eContext_PrintPreview) &&
!mPrintState && GetMozPrintCallback()) {
DispatchPrintCallback(nullptr);
}
}
nsresult HTMLCanvasElement::DispatchPrintCallback(nsITimerCallback* aCallback) {
// For print reftests the context may not be initialized yet, so get a context
// so mCurrentContext is set.
if (!mCurrentContext) {
nsresult rv;
nsCOMPtr<nsISupports> context;
rv = GetContext(NS_LITERAL_STRING("2d"), getter_AddRefs(context));
NS_ENSURE_SUCCESS(rv, rv);
}
mPrintState = new HTMLCanvasPrintState(this, mCurrentContext, aCallback);
RefPtr<nsRunnableMethod<HTMLCanvasElement>> renderEvent =
NewRunnableMethod("dom::HTMLCanvasElement::CallPrintCallback", this,
&HTMLCanvasElement::CallPrintCallback);
return OwnerDoc()->Dispatch(TaskCategory::Other, renderEvent.forget());
}
void HTMLCanvasElement::CallPrintCallback() {
ErrorResult rv;
GetMozPrintCallback()->Call(*mPrintState, rv);
}
void HTMLCanvasElement::ResetPrintCallback() {
if (mPrintState) {
mPrintState = nullptr;
}
}
bool HTMLCanvasElement::IsPrintCallbackDone() {
if (mPrintState == nullptr) {
return true;
}
return mPrintState->mIsDone;
}
HTMLCanvasElement* HTMLCanvasElement::GetOriginalCanvas() {
return mOriginalCanvas ? mOriginalCanvas.get() : this;
}
nsresult HTMLCanvasElement::CopyInnerTo(HTMLCanvasElement* aDest) {
nsresult rv = nsGenericHTMLElement::CopyInnerTo(aDest);
NS_ENSURE_SUCCESS(rv, rv);
if (aDest->OwnerDoc()->IsStaticDocument()) {
aDest->mOriginalCanvas = this;
// We make sure that the canvas is not zero sized since that would cause
// the DrawImage call below to return an error, which would cause printing
// to fail.
nsIntSize size = GetWidthHeight();
if (size.height > 0 && size.width > 0) {
nsCOMPtr<nsISupports> cxt;
aDest->GetContext(NS_LITERAL_STRING("2d"), getter_AddRefs(cxt));
RefPtr<CanvasRenderingContext2D> context2d =
static_cast<CanvasRenderingContext2D*>(cxt.get());
if (context2d && !mPrintCallback) {
CanvasImageSource source;
source.SetAsHTMLCanvasElement() = this;
ErrorResult err;
context2d->DrawImage(source, 0.0, 0.0, err);
rv = err.StealNSResult();
}
}
}
return rv;
}
void HTMLCanvasElement::GetEventTargetParent(EventChainPreVisitor& aVisitor) {
if (aVisitor.mEvent->mClass == eMouseEventClass) {
WidgetMouseEventBase* evt = (WidgetMouseEventBase*)aVisitor.mEvent;
if (mCurrentContext) {
nsIFrame* frame = GetPrimaryFrame();
if (!frame) {
return;
}
nsPoint ptInRoot =
nsLayoutUtils::GetEventCoordinatesRelativeTo(evt, frame);
nsRect paddingRect = frame->GetContentRectRelativeToSelf();
Point hitpoint;
hitpoint.x = (ptInRoot.x - paddingRect.x) / AppUnitsPerCSSPixel();
hitpoint.y = (ptInRoot.y - paddingRect.y) / AppUnitsPerCSSPixel();
evt->region = mCurrentContext->GetHitRegion(hitpoint);
aVisitor.mCanHandle = true;
}
}
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsChangeHint HTMLCanvasElement::GetAttributeChangeHint(const nsAtom* aAttribute,
int32_t aModType) const {
nsChangeHint retval =
nsGenericHTMLElement::GetAttributeChangeHint(aAttribute, aModType);
if (aAttribute == nsGkAtoms::width || aAttribute == nsGkAtoms::height) {
retval |= NS_STYLE_HINT_REFLOW;
} else if (aAttribute == nsGkAtoms::moz_opaque) {
retval |= NS_STYLE_HINT_VISUAL;
}
return retval;
}
bool HTMLCanvasElement::ParseAttribute(int32_t aNamespaceID, nsAtom* aAttribute,
const nsAString& aValue,
nsIPrincipal* aMaybeScriptedPrincipal,
nsAttrValue& aResult) {
if (aNamespaceID == kNameSpaceID_None &&
(aAttribute == nsGkAtoms::width || aAttribute == nsGkAtoms::height)) {
return aResult.ParseNonNegativeIntValue(aValue);
}
return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue,
aMaybeScriptedPrincipal, aResult);
}
void HTMLCanvasElement::ToDataURL(JSContext* aCx, const nsAString& aType,
JS::Handle<JS::Value> aParams,
nsAString& aDataURL,
nsIPrincipal& aSubjectPrincipal,
ErrorResult& aRv) {
// mWriteOnly check is redundant, but optimizes for the common case.
if (mWriteOnly && !CallerCanRead(aCx)) {
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
return;
}
aRv = ToDataURLImpl(aCx, aSubjectPrincipal, aType, aParams, aDataURL);
}
void HTMLCanvasElement::SetMozPrintCallback(PrintCallback* aCallback) {
mPrintCallback = aCallback;
}
PrintCallback* HTMLCanvasElement::GetMozPrintCallback() const {
if (mOriginalCanvas) {
return mOriginalCanvas->GetMozPrintCallback();
}
return mPrintCallback;
}
class CanvasCaptureTrackSource : public MediaStreamTrackSource {
public:
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(CanvasCaptureTrackSource,
MediaStreamTrackSource)
CanvasCaptureTrackSource(nsIPrincipal* aPrincipal,
CanvasCaptureMediaStream* aCaptureStream)
: MediaStreamTrackSource(aPrincipal, nsString()),
mCaptureStream(aCaptureStream) {}
MediaSourceEnum GetMediaSource() const override {
return MediaSourceEnum::Other;
}
void Stop() override {
if (!mCaptureStream) {
NS_ERROR("No stream");
return;
}
mCaptureStream->StopCapture();
}
void Disable() override {}
void Enable() override {}
private:
virtual ~CanvasCaptureTrackSource() {}
RefPtr<CanvasCaptureMediaStream> mCaptureStream;
};
NS_IMPL_ADDREF_INHERITED(CanvasCaptureTrackSource, MediaStreamTrackSource)
NS_IMPL_RELEASE_INHERITED(CanvasCaptureTrackSource, MediaStreamTrackSource)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(CanvasCaptureTrackSource)
NS_INTERFACE_MAP_END_INHERITING(MediaStreamTrackSource)
NS_IMPL_CYCLE_COLLECTION_INHERITED(CanvasCaptureTrackSource,
MediaStreamTrackSource, mCaptureStream)
already_AddRefed<CanvasCaptureMediaStream> HTMLCanvasElement::CaptureStream(
const Optional<double>& aFrameRate, nsIPrincipal& aSubjectPrincipal,
ErrorResult& aRv) {
if (IsWriteOnly()) {
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
return nullptr;
}
nsPIDOMWindowInner* window = OwnerDoc()->GetInnerWindow();
if (!window) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
if (!mCurrentContext) {
aRv.Throw(NS_ERROR_NOT_INITIALIZED);
return nullptr;
}
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<CanvasCaptureMediaStream> stream =
CanvasCaptureMediaStream::CreateSourceStream(window, this);
if (!stream) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
TrackID videoTrackId = 1;
nsCOMPtr<nsIPrincipal> principal = NodePrincipal();
nsresult rv = stream->Init(aFrameRate, videoTrackId, principal);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
RefPtr<MediaStreamTrack> track =
stream->CreateDOMTrack(videoTrackId, MediaSegment::VIDEO,
new CanvasCaptureTrackSource(principal, stream));
stream->AddTrackInternal(track);
// Check site-specific permission and display prompt if appropriate.
// If no permission, arrange for the frame capture listener to return
// all-white, opaque image data.
bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(
OwnerDoc(), nsContentUtils::GetCurrentJSContext(), aSubjectPrincipal);
rv = RegisterFrameCaptureListener(stream->FrameCaptureListener(),
usePlaceholder);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
return stream.forget();
}
nsresult HTMLCanvasElement::ExtractData(JSContext* aCx,
nsIPrincipal& aSubjectPrincipal,
nsAString& aType,
const nsAString& aOptions,
nsIInputStream** aStream) {
// Check site-specific permission and display prompt if appropriate.
// If no permission, return all-white, opaque image data.
bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(
OwnerDoc(), aCx, aSubjectPrincipal);
return ImageEncoder::ExtractData(aType, aOptions, GetSize(), usePlaceholder,
mCurrentContext, mAsyncCanvasRenderer,
aStream);
}
nsresult HTMLCanvasElement::ToDataURLImpl(JSContext* aCx,
nsIPrincipal& aSubjectPrincipal,
const nsAString& aMimeType,
const JS::Value& aEncoderOptions,
nsAString& aDataURL) {
nsIntSize size = GetWidthHeight();
if (size.height == 0 || size.width == 0) {
aDataURL = NS_LITERAL_STRING("data:,");
return NS_OK;
}
nsAutoString type;
nsContentUtils::ASCIIToLower(aMimeType, type);
nsAutoString params;
bool usingCustomParseOptions;
nsresult rv =
ParseParams(aCx, type, aEncoderOptions, params, &usingCustomParseOptions);
if (NS_FAILED(rv)) {
return rv;
}
nsCOMPtr<nsIInputStream> stream;
rv =
ExtractData(aCx, aSubjectPrincipal, type, params, getter_AddRefs(stream));
// If there are unrecognized custom parse options, we should fall back to
// the default values for the encoder without any options at all.
if (rv == NS_ERROR_INVALID_ARG && usingCustomParseOptions) {
rv = ExtractData(aCx, aSubjectPrincipal, type, EmptyString(),
getter_AddRefs(stream));
}
NS_ENSURE_SUCCESS(rv, rv);
// build data URL string
aDataURL = NS_LITERAL_STRING("data:") + type + NS_LITERAL_STRING(";base64,");
uint64_t count;
rv = stream->Available(&count);
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(count <= UINT32_MAX, NS_ERROR_FILE_TOO_BIG);
return Base64EncodeInputStream(stream, aDataURL, (uint32_t)count,
aDataURL.Length());
}
void HTMLCanvasElement::ToBlob(JSContext* aCx, BlobCallback& aCallback,
const nsAString& aType,
JS::Handle<JS::Value> aParams,
nsIPrincipal& aSubjectPrincipal,
ErrorResult& aRv) {
// mWriteOnly check is redundant, but optimizes for the common case.
if (mWriteOnly && !CallerCanRead(aCx)) {
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
return;
}
nsCOMPtr<nsIGlobalObject> global = OwnerDoc()->GetScopeObject();
MOZ_ASSERT(global);
nsIntSize elemSize = GetWidthHeight();
if (elemSize.width == 0 || elemSize.height == 0) {
// According to spec, blob should return null if either its horizontal
// dimension or its vertical dimension is zero. See link below.
// https://html.spec.whatwg.org/multipage/scripting.html#dom-canvas-toblob
OwnerDoc()->Dispatch(
TaskCategory::Other,
NewRunnableMethod<Blob*, const char*>(
"dom::HTMLCanvasElement::ToBlob", &aCallback,
static_cast<void (BlobCallback::*)(Blob*, const char*)>(
&BlobCallback::Call),
nullptr, nullptr));
return;
}
// Check site-specific permission and display prompt if appropriate.
// If no permission, return all-white, opaque image data.
bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(
OwnerDoc(), aCx, aSubjectPrincipal);
CanvasRenderingContextHelper::ToBlob(aCx, global, aCallback, aType, aParams,
usePlaceholder, aRv);
}
OffscreenCanvas* HTMLCanvasElement::TransferControlToOffscreen(
ErrorResult& aRv) {
if (mCurrentContext) {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return nullptr;
}
if (!mOffscreenCanvas) {
nsIntSize sz = GetWidthHeight();
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<AsyncCanvasRenderer> renderer = GetAsyncCanvasRenderer();
renderer->SetWidth(sz.width);
renderer->SetHeight(sz.height);
nsPIDOMWindowInner* win = OwnerDoc()->GetInnerWindow();
if (!win) {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return nullptr;
}
mOffscreenCanvas =
new OffscreenCanvas(win->AsGlobal(), sz.width, sz.height,
GetCompositorBackendType(), renderer);
if (mWriteOnly) {
mOffscreenCanvas->SetWriteOnly();
}
if (!mContextObserver) {
mContextObserver = new HTMLCanvasElementObserver(this);
}
} else {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
}
return mOffscreenCanvas;
}
already_AddRefed<File> HTMLCanvasElement::MozGetAsFile(
const nsAString& aName, const nsAString& aType,
nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) {
OwnerDoc()->WarnOnceAbout(Document::eMozGetAsFile);
// do a trust check if this is a write-only canvas
if (mWriteOnly && !nsContentUtils::IsSystemPrincipal(&aSubjectPrincipal)) {
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
return nullptr;
}
RefPtr<File> file;
aRv = MozGetAsFileImpl(aName, aType, aSubjectPrincipal, getter_AddRefs(file));
if (NS_WARN_IF(aRv.Failed())) {
return nullptr;
}
return file.forget();
}
nsresult HTMLCanvasElement::MozGetAsFileImpl(const nsAString& aName,
const nsAString& aType,
nsIPrincipal& aSubjectPrincipal,
File** aResult) {
nsCOMPtr<nsIInputStream> stream;
nsAutoString type(aType);
nsresult rv =
ExtractData(nsContentUtils::GetCurrentJSContext(), aSubjectPrincipal,
type, EmptyString(), getter_AddRefs(stream));
NS_ENSURE_SUCCESS(rv, rv);
uint64_t imgSize;
void* imgData = nullptr;
rv = NS_ReadInputStreamToBuffer(stream, &imgData, -1, &imgSize);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsPIDOMWindowInner> win =
do_QueryInterface(OwnerDoc()->GetScopeObject());
// The File takes ownership of the buffer
RefPtr<File> file =
File::CreateMemoryFile(win, imgData, imgSize, aName, type, PR_Now());
file.forget(aResult);
return NS_OK;
}
nsresult HTMLCanvasElement::GetContext(const nsAString& aContextId,
nsISupports** aContext) {
ErrorResult rv;
mMaybeModified = true; // For FirstContentfulPaint
*aContext = GetContext(nullptr, aContextId, JS::NullHandleValue, rv).take();
return rv.StealNSResult();
}
already_AddRefed<nsISupports> HTMLCanvasElement::GetContext(
JSContext* aCx, const nsAString& aContextId,
JS::Handle<JS::Value> aContextOptions, ErrorResult& aRv) {
if (mOffscreenCanvas) {
return nullptr;
}
mMaybeModified = true; // For FirstContentfulPaint
return CanvasRenderingContextHelper::GetContext(
aCx, aContextId,
aContextOptions.isObject() ? aContextOptions : JS::NullHandleValue, aRv);
}
already_AddRefed<nsISupports> HTMLCanvasElement::MozGetIPCContext(
const nsAString& aContextId, ErrorResult& aRv) {
// Note that we're a [ChromeOnly] method, so from JS we can only be called by
// system code.
// We only support 2d shmem contexts for now.
if (!aContextId.EqualsLiteral("2d")) {
aRv.Throw(NS_ERROR_INVALID_ARG);
return nullptr;
}
CanvasContextType contextType = CanvasContextType::Canvas2D;
if (!mCurrentContext) {
// This canvas doesn't have a context yet.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<nsICanvasRenderingContextInternal> context;
context = CreateContext(contextType);
if (!context) {
return nullptr;
}
mCurrentContext = context;
mCurrentContext->SetIsIPC(true);
mCurrentContextType = contextType;
ErrorResult dummy;
nsresult rv = UpdateContext(nullptr, JS::NullHandleValue, dummy);
if (NS_WARN_IF(NS_FAILED(rv))) {
aRv.Throw(rv);
return nullptr;
}
} else {
// We already have a context of some type.
if (contextType != mCurrentContextType) {
aRv.Throw(NS_ERROR_INVALID_ARG);
return nullptr;
}
}
nsCOMPtr<nsISupports> context(mCurrentContext);
return context.forget();
}
nsIntSize HTMLCanvasElement::GetSize() { return GetWidthHeight(); }
bool HTMLCanvasElement::IsWriteOnly() const { return mWriteOnly; }
void HTMLCanvasElement::SetWriteOnly() {
mExpandedReader = nullptr;
mWriteOnly = true;
}
void HTMLCanvasElement::SetWriteOnly(nsIPrincipal* aExpandedReader) {
mExpandedReader = aExpandedReader;
mWriteOnly = true;
}
bool HTMLCanvasElement::CallerCanRead(JSContext* aCx) {
if (!mWriteOnly) {
return true;
}
nsIPrincipal* prin = nsContentUtils::SubjectPrincipal(aCx);
// If mExpandedReader is set, this canvas was tainted only by
// mExpandedReader's resources. So allow reading if the subject
// principal subsumes mExpandedReader.
if (mExpandedReader && prin->Subsumes(mExpandedReader)) {
return true;
}
return nsContentUtils::PrincipalHasPermission(prin,
nsGkAtoms::all_urlsPermission);
}
void HTMLCanvasElement::InvalidateCanvasContent(const gfx::Rect* damageRect) {
// We don't need to flush anything here; if there's no frame or if
// we plan to reframe we don't need to invalidate it anyway.
nsIFrame* frame = GetPrimaryFrame();
if (!frame) return;
ActiveLayerTracker::NotifyContentChange(frame);
// When using layers-free WebRender, we cannot invalidate the layer (because
// there isn't one). Instead, we mark the CanvasRenderer dirty and scheduling
// an empty transaction which is effectively equivalent.
CanvasRenderer* renderer = nullptr;
RefPtr<WebRenderCanvasData> data = GetWebRenderUserData<WebRenderCanvasData>(
frame, static_cast<uint32_t>(DisplayItemType::TYPE_CANVAS));
if (data) {
renderer = data->GetCanvasRenderer();
}
if (renderer) {
renderer->SetDirty();
frame->SchedulePaint(nsIFrame::PAINT_COMPOSITE_ONLY);
} else {
Layer* layer = nullptr;
if (damageRect) {
nsIntSize size = GetWidthHeight();
if (size.width != 0 && size.height != 0) {
gfx::IntRect invalRect = gfx::IntRect::Truncate(*damageRect);
layer =
frame->InvalidateLayer(DisplayItemType::TYPE_CANVAS, &invalRect);
}
} else {
layer = frame->InvalidateLayer(DisplayItemType::TYPE_CANVAS);
}
if (layer) {
static_cast<CanvasLayer*>(layer)->Updated();
}
}
/*
* Treat canvas invalidations as animation activity for JS. Frequently
* invalidating a canvas will feed into heuristics and cause JIT code to be
* kept around longer, for smoother animations.
*/
nsPIDOMWindowInner* win = OwnerDoc()->GetInnerWindow();
if (win) {
if (JSObject* obj = win->AsGlobal()->GetGlobalJSObject()) {
js::NotifyAnimationActivity(obj);
}
}
}
void HTMLCanvasElement::InvalidateCanvas() {
// We don't need to flush anything here; if there's no frame or if
// we plan to reframe we don't need to invalidate it anyway.
nsIFrame* frame = GetPrimaryFrame();
if (!frame) return;
frame->InvalidateFrame();
}
int32_t HTMLCanvasElement::CountContexts() {
if (mCurrentContext) return 1;
return 0;
}
nsICanvasRenderingContextInternal* HTMLCanvasElement::GetContextAtIndex(
int32_t index) {
if (mCurrentContext && index == 0) return mCurrentContext;
return nullptr;
}
bool HTMLCanvasElement::GetIsOpaque() {
if (mCurrentContext) {
return mCurrentContext->GetIsOpaque();
}
return GetOpaqueAttr();
}
bool HTMLCanvasElement::GetOpaqueAttr() {
return HasAttr(kNameSpaceID_None, nsGkAtoms::moz_opaque);
}
already_AddRefed<Layer> HTMLCanvasElement::GetCanvasLayer(
nsDisplayListBuilder* aBuilder, Layer* aOldLayer, LayerManager* aManager) {
// The address of sOffscreenCanvasLayerUserDataDummy is used as the user
// data key for retained LayerManagers managed by FrameLayerBuilder.
// We don't much care about what value in it, so just assign a dummy
// value for it.
static uint8_t sOffscreenCanvasLayerUserDataDummy = 0;
if (mCurrentContext) {
return mCurrentContext->GetCanvasLayer(aBuilder, aOldLayer, aManager);
}
if (mOffscreenCanvas) {
if (!mResetLayer && aOldLayer &&
aOldLayer->HasUserData(&sOffscreenCanvasLayerUserDataDummy)) {
RefPtr<Layer> ret = aOldLayer;
return ret.forget();
}
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<CanvasLayer> layer = aManager->CreateCanvasLayer();
if (!layer) {
NS_WARNING("CreateCanvasLayer failed!");
return nullptr;
}
LayerUserData* userData = nullptr;
layer->SetUserData(&sOffscreenCanvasLayerUserDataDummy, userData);
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
CanvasRenderer* canvasRenderer = layer->CreateOrGetCanvasRenderer();
if (!InitializeCanvasRenderer(aBuilder, canvasRenderer)) {
return nullptr;
}
layer->Updated();
return layer.forget();
}
return nullptr;
}
bool HTMLCanvasElement::UpdateWebRenderCanvasData(
nsDisplayListBuilder* aBuilder, WebRenderCanvasData* aCanvasData) {
if (mCurrentContext) {
return mCurrentContext->UpdateWebRenderCanvasData(aBuilder, aCanvasData);
}
if (mOffscreenCanvas) {
CanvasRenderer* renderer = aCanvasData->GetCanvasRenderer();
if (!mResetLayer && renderer) {
return true;
}
renderer = aCanvasData->CreateCanvasRenderer();
if (!InitializeCanvasRenderer(aBuilder, renderer)) {
// Clear CanvasRenderer of WebRenderCanvasData
aCanvasData->ClearCanvasRenderer();
return false;
}
MOZ_ASSERT(renderer);
mResetLayer = false;
return true;
}
// Clear CanvasRenderer of WebRenderCanvasData
aCanvasData->ClearCanvasRenderer();
return false;
}
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
bool HTMLCanvasElement::InitializeCanvasRenderer(nsDisplayListBuilder* aBuilder,
CanvasRenderer* aRenderer) {
if (mCurrentContext) {
return mCurrentContext->InitializeCanvasRenderer(aBuilder, aRenderer);
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
}
if (mOffscreenCanvas) {
CanvasInitializeData data;
data.mRenderer = GetAsyncCanvasRenderer();
data.mSize = GetWidthHeight();
aRenderer->Initialize(data);
return true;
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
}
return false;
Bug 1379920 - Introduce CanvasRenderer and its derived classes. r=nical,jrmuizel This patch move common canvas interfaces out of layer. So I create a base class CanvasRenderer which move interfaces from CanvasLayer. CopyableCanvasRenderer from CopyableCanvasLayer, ClientCanvasRenderer from ClientCanvasLayer and WebRenderCanvasRenderer from WebRenderCanvasLayer. And finally, WebRenderCanvasRendererSync for the non layers free mode and WebRenderCanvasRendererAsync for the layers free mode. Summary all changes in this patch. * Move class CanvasLayer::Data to CanvasRenderer.h and rename it to CanvasInitializeData. Because this class not only use by layer but also * Move BasicCanvasLayer::UpdateSurface to CopyableCanvasRenderer::ReadbackSurface. * CanvasClient::Update now accepts ShareableCanvasRenderer as parameter. not CanvasLayer. use by layers-free mode. Move it out of layer's class makes more sense. * Add InitializeCanvasRenderer in the canvas related classes to initialize CanvasRenderer without involved layer. * All canvas layer has function "CreateCanvasRendererInternal" that initialize corresponding CanvasRenderer. * Description of all CanvasRenderer classes: ** CanvasRenderer: Based classes. ** CopyableCanvasRenderer: Can readback canvas content to a SourceSurface. Use by BasicCanvasLayer. ** ShareableCanvasRenderer: Provide IPC capabilities that allow sending canvas content over IPC. This is pure virtual class because the IPC handling is different in different LayerManager. ** ClientCanvasRenderer: Implement IPC handling for ClientLayerManager. Use by ClientCanvasLayer. ** WebRenderCanvasRenderer: Implement IPC handling for WebRenderLayerManager. ** WebRenderCanvasRendererSync: Use by WebRenderCanvasLayer. ** WebRenderCanvasRendererAsync: Use by layers-free mode in WebRender. class diagram shows below: +--------------+ |CanvasRenderer| +-------+------+ ^ | +----------------------+ |CopyableCanvasRenderer| +----------------------+ ^ | +-----------+-----------+ |ShareableCanvasRenderer| +-----+-----------------+ ^ ^ +-------------+ +-------+ | | +--------------------+ +---------+-------------+ |ClientCanvasRenderer| |WebRenderCanvasRenderer| +--------------------+ +--------+--+-----------+ ^ ^ +-----------------------+ +----+ | | +-------------+-------------+ +-------------+--------------+ |WebRenderCanvasRendererSync| |WebRenderCanvasRendererAsync| +---------------------------+ +----------------------------+ MozReview-Commit-ID: 5hqQ19W169r
2017-08-03 08:55:14 +03:00
}
bool HTMLCanvasElement::ShouldForceInactiveLayer(LayerManager* aManager) {
if (mCurrentContext) {
return mCurrentContext->ShouldForceInactiveLayer(aManager);
}
if (mOffscreenCanvas) {
// TODO: We should handle offscreen canvas case.
return false;
}
return true;
}
void HTMLCanvasElement::MarkContextClean() {
if (!mCurrentContext) return;
mCurrentContext->MarkContextClean();
}
void HTMLCanvasElement::MarkContextCleanForFrameCapture() {
if (!mCurrentContext) return;
mCurrentContext->MarkContextCleanForFrameCapture();
}
bool HTMLCanvasElement::IsContextCleanForFrameCapture() {
return mCurrentContext && mCurrentContext->IsContextCleanForFrameCapture();
}
nsresult HTMLCanvasElement::RegisterFrameCaptureListener(
FrameCaptureListener* aListener, bool aReturnPlaceholderData) {
WeakPtr<FrameCaptureListener> listener = aListener;
if (mRequestedFrameListeners.Contains(listener)) {
return NS_OK;
}
if (!mRequestedFrameRefreshObserver) {
Document* doc = OwnerDoc();
if (!doc) {
return NS_ERROR_FAILURE;
}
while (doc->GetParentDocument()) {
doc = doc->GetParentDocument();
}
nsPresContext* context = doc->GetPresContext();
if (!context) {
return NS_ERROR_FAILURE;
}
context = context->GetRootPresContext();
if (!context) {
return NS_ERROR_FAILURE;
}
nsRefreshDriver* driver = context->RefreshDriver();
if (!driver) {
return NS_ERROR_FAILURE;
}
mRequestedFrameRefreshObserver =
new RequestedFrameRefreshObserver(this, driver, aReturnPlaceholderData);
} else {
mRequestedFrameRefreshObserver->SetReturnPlaceholderData(
aReturnPlaceholderData);
}
mRequestedFrameListeners.AppendElement(listener);
mRequestedFrameRefreshObserver->Register();
return NS_OK;
}
bool HTMLCanvasElement::IsFrameCaptureRequested() const {
for (WeakPtr<FrameCaptureListener> listener : mRequestedFrameListeners) {
if (!listener) {
continue;
}
if (listener->FrameCaptureRequested()) {
return true;
}
}
return false;
}
void HTMLCanvasElement::ProcessDestroyedFrameListeners() {
// Loop backwards to allow removing elements in the loop.
for (int i = mRequestedFrameListeners.Length() - 1; i >= 0; --i) {
WeakPtr<FrameCaptureListener> listener = mRequestedFrameListeners[i];
if (!listener) {
// listener was destroyed. Remove it from the list.
mRequestedFrameListeners.RemoveElementAt(i);
continue;
}
}
if (mRequestedFrameListeners.IsEmpty()) {
mRequestedFrameRefreshObserver->Unregister();
}
}
void HTMLCanvasElement::SetFrameCapture(
already_AddRefed<SourceSurface> aSurface, const TimeStamp& aTime) {
RefPtr<SourceSurface> surface = aSurface;
RefPtr<SourceSurfaceImage> image =
new SourceSurfaceImage(surface->GetSize(), surface);
for (WeakPtr<FrameCaptureListener> listener : mRequestedFrameListeners) {
if (!listener) {
continue;
}
RefPtr<Image> imageRefCopy = image.get();
listener->NewFrame(imageRefCopy.forget(), aTime);
}
}
already_AddRefed<SourceSurface> HTMLCanvasElement::GetSurfaceSnapshot(
gfxAlphaType* const aOutAlphaType) {
if (!mCurrentContext) return nullptr;
return mCurrentContext->GetSurfaceSnapshot(aOutAlphaType);
}
AsyncCanvasRenderer* HTMLCanvasElement::GetAsyncCanvasRenderer() {
if (!mAsyncCanvasRenderer) {
mAsyncCanvasRenderer = new AsyncCanvasRenderer();
mAsyncCanvasRenderer->mHTMLCanvasElement = this;
}
return mAsyncCanvasRenderer;
}
layers::LayersBackend HTMLCanvasElement::GetCompositorBackendType() const {
nsIWidget* docWidget = nsContentUtils::WidgetForDocument(OwnerDoc());
if (docWidget) {
layers::LayerManager* layerManager = docWidget->GetLayerManager();
if (layerManager) {
return layerManager->GetCompositorBackendType();
}
}
return LayersBackend::LAYERS_NONE;
}
void HTMLCanvasElement::OnVisibilityChange() {
if (OwnerDoc()->Hidden()) {
return;
}
if (mOffscreenCanvas) {
class Runnable final : public CancelableRunnable {
public:
explicit Runnable(AsyncCanvasRenderer* aRenderer)
: mozilla::CancelableRunnable("Runnable"), mRenderer(aRenderer) {}
NS_IMETHOD Run() override {
if (mRenderer && mRenderer->mContext) {
mRenderer->mContext->OnVisibilityChange();
}
return NS_OK;
}
private:
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<AsyncCanvasRenderer> mRenderer;
};
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<nsIRunnable> runnable = new Runnable(mAsyncCanvasRenderer);
nsCOMPtr<nsIEventTarget> activeTarget =
mAsyncCanvasRenderer->GetActiveEventTarget();
if (activeTarget) {
activeTarget->Dispatch(runnable, nsIThread::DISPATCH_NORMAL);
}
return;
}
if (mCurrentContext) {
mCurrentContext->OnVisibilityChange();
}
}
void HTMLCanvasElement::OnMemoryPressure() {
if (mOffscreenCanvas) {
class Runnable final : public CancelableRunnable {
public:
explicit Runnable(AsyncCanvasRenderer* aRenderer)
: mozilla::CancelableRunnable("Runnable"), mRenderer(aRenderer) {}
NS_IMETHOD Run() override {
if (mRenderer && mRenderer->mContext) {
mRenderer->mContext->OnMemoryPressure();
}
return NS_OK;
}
private:
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<AsyncCanvasRenderer> mRenderer;
};
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<nsIRunnable> runnable = new Runnable(mAsyncCanvasRenderer);
nsCOMPtr<nsIEventTarget> activeTarget =
mAsyncCanvasRenderer->GetActiveEventTarget();
if (activeTarget) {
activeTarget->Dispatch(runnable, nsIThread::DISPATCH_NORMAL);
}
return;
}
if (mCurrentContext) {
mCurrentContext->OnMemoryPressure();
}
}
/* static */ void HTMLCanvasElement::SetAttrFromAsyncCanvasRenderer(
AsyncCanvasRenderer* aRenderer) {
HTMLCanvasElement* element = aRenderer->mHTMLCanvasElement;
if (!element) {
return;
}
if (element->GetWidthHeight() == aRenderer->GetSize()) {
return;
}
gfx::IntSize asyncCanvasSize = aRenderer->GetSize();
ErrorResult rv;
element->SetUnsignedIntAttr(nsGkAtoms::width, asyncCanvasSize.width,
DEFAULT_CANVAS_WIDTH, rv);
if (rv.Failed()) {
NS_WARNING(
"Failed to set width attribute to a canvas element asynchronously.");
}
element->SetUnsignedIntAttr(nsGkAtoms::height, asyncCanvasSize.height,
DEFAULT_CANVAS_HEIGHT, rv);
if (rv.Failed()) {
NS_WARNING(
"Failed to set height attribute to a canvas element asynchronously.");
}
element->mResetLayer = true;
}
/* static */ void HTMLCanvasElement::InvalidateFromAsyncCanvasRenderer(
AsyncCanvasRenderer* aRenderer) {
HTMLCanvasElement* element = aRenderer->mHTMLCanvasElement;
if (!element) {
return;
}
element->InvalidateCanvasContent(nullptr);
}
already_AddRefed<layers::SharedSurfaceTextureClient>
HTMLCanvasElement::GetVRFrame() {
if (GetCurrentContextType() != CanvasContextType::WebGL1 &&
GetCurrentContextType() != CanvasContextType::WebGL2) {
return nullptr;
}
WebGLContext* webgl = static_cast<WebGLContext*>(GetContextAtIndex(0));
if (!webgl) {
return nullptr;
}
return webgl->GetVRFrame();
}
} // namespace dom
} // namespace mozilla