Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(574)

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp

Issue 2490443002: Make OffscreenCanvas an EventTarget (Closed)
Patch Set: tests added Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 return false; 965 return false;
966 } 966 }
967 } 967 }
968 968
969 } // namespace 969 } // namespace
970 970
971 WebGLRenderingContextBase::WebGLRenderingContextBase( 971 WebGLRenderingContextBase::WebGLRenderingContextBase(
972 OffscreenCanvas* passedOffscreenCanvas, 972 OffscreenCanvas* passedOffscreenCanvas,
973 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, 973 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider,
974 const CanvasContextCreationAttributes& requestedAttributes, 974 const CanvasContextCreationAttributes& requestedAttributes,
975 ExecutionContext* executionContext,
975 unsigned version) 976 unsigned version)
976 : WebGLRenderingContextBase(nullptr, 977 : WebGLRenderingContextBase(nullptr,
977 passedOffscreenCanvas, 978 passedOffscreenCanvas,
978 std::move(contextProvider), 979 std::move(contextProvider),
979 requestedAttributes, 980 requestedAttributes,
981 executionContext,
980 version) {} 982 version) {}
981 983
982 WebGLRenderingContextBase::WebGLRenderingContextBase( 984 WebGLRenderingContextBase::WebGLRenderingContextBase(
983 HTMLCanvasElement* passedCanvas, 985 HTMLCanvasElement* passedCanvas,
984 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, 986 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider,
985 const CanvasContextCreationAttributes& requestedAttributes, 987 const CanvasContextCreationAttributes& requestedAttributes,
986 unsigned version) 988 unsigned version)
987 : WebGLRenderingContextBase(passedCanvas, 989 : WebGLRenderingContextBase(passedCanvas,
988 nullptr, 990 nullptr,
989 std::move(contextProvider), 991 std::move(contextProvider),
990 requestedAttributes, 992 requestedAttributes,
993 nullptr,
991 version) {} 994 version) {}
992 995
993 WebGLRenderingContextBase::WebGLRenderingContextBase( 996 WebGLRenderingContextBase::WebGLRenderingContextBase(
994 HTMLCanvasElement* passedCanvas, 997 HTMLCanvasElement* passedCanvas,
995 OffscreenCanvas* passedOffscreenCanvas, 998 OffscreenCanvas* passedOffscreenCanvas,
996 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, 999 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider,
997 const CanvasContextCreationAttributes& requestedAttributes, 1000 const CanvasContextCreationAttributes& requestedAttributes,
1001 ExecutionContext* executionContext,
998 unsigned version) 1002 unsigned version)
999 : CanvasRenderingContext(passedCanvas, 1003 : CanvasRenderingContext(passedCanvas,
1000 passedOffscreenCanvas, 1004 passedOffscreenCanvas,
1001 requestedAttributes), 1005 requestedAttributes),
1002 m_isHidden(false), 1006 m_isHidden(false),
1003 m_contextLostMode(NotLostContext), 1007 m_contextLostMode(NotLostContext),
1004 m_autoRecoveryMethod(Manual), 1008 m_autoRecoveryMethod(Manual),
1005 m_dispatchContextLostEventTimer( 1009 m_dispatchContextLostEventTimer(
1006 this, 1010 this,
1007 &WebGLRenderingContextBase::dispatchContextLostEvent), 1011 &WebGLRenderingContextBase::dispatchContextLostEvent),
1008 m_restoreAllowed(false), 1012 m_restoreAllowed(false),
1009 m_restoreTimer(this, &WebGLRenderingContextBase::maybeRestoreContext), 1013 m_restoreTimer(this, &WebGLRenderingContextBase::maybeRestoreContext),
1010 m_boundArrayBuffer(this, nullptr), 1014 m_boundArrayBuffer(this, nullptr),
1011 m_boundVertexArrayObject(this, nullptr), 1015 m_boundVertexArrayObject(this, nullptr),
1012 m_currentProgram(this, nullptr), 1016 m_currentProgram(this, nullptr),
1013 m_framebufferBinding(this, nullptr), 1017 m_framebufferBinding(this, nullptr),
1014 m_renderbufferBinding(this, nullptr), 1018 m_renderbufferBinding(this, nullptr),
1015 m_generatedImageCache(4), 1019 m_generatedImageCache(4),
1016 m_synthesizedErrorsToConsole(true), 1020 m_synthesizedErrorsToConsole(true),
1017 m_numGLErrorsToConsoleAllowed(maxGLErrorsAllowedToConsole), 1021 m_numGLErrorsToConsoleAllowed(maxGLErrorsAllowedToConsole),
1018 m_onePlusMaxNonDefaultTextureUnit(0), 1022 m_onePlusMaxNonDefaultTextureUnit(0),
1019 m_isWebGL2FormatsTypesAdded(false), 1023 m_isWebGL2FormatsTypesAdded(false),
1020 m_isWebGL2TexImageSourceFormatsTypesAdded(false), 1024 m_isWebGL2TexImageSourceFormatsTypesAdded(false),
1021 m_isWebGL2InternalFormatsCopyTexImageAdded(false), 1025 m_isWebGL2InternalFormatsCopyTexImageAdded(false),
1022 m_isOESTextureFloatFormatsTypesAdded(false), 1026 m_isOESTextureFloatFormatsTypesAdded(false),
1023 m_isOESTextureHalfFloatFormatsTypesAdded(false), 1027 m_isOESTextureHalfFloatFormatsTypesAdded(false),
1024 m_isWebGLDepthTextureFormatsTypesAdded(false), 1028 m_isWebGLDepthTextureFormatsTypesAdded(false),
1025 m_isEXTsRGBFormatsTypesAdded(false), 1029 m_isEXTsRGBFormatsTypesAdded(false),
1026 m_version(version) { 1030 m_version(version),
1031 m_executionContext(executionContext) {
1027 ASSERT(contextProvider); 1032 ASSERT(contextProvider);
1028 1033
1029 m_contextGroup = WebGLContextGroup::create(); 1034 m_contextGroup = WebGLContextGroup::create();
1030 m_contextGroup->addContext(this); 1035 m_contextGroup->addContext(this);
1031 1036
1032 m_maxViewportDims[0] = m_maxViewportDims[1] = 0; 1037 m_maxViewportDims[0] = m_maxViewportDims[1] = 0;
1033 contextProvider->contextGL()->GetIntegerv(GL_MAX_VIEWPORT_DIMS, 1038 contextProvider->contextGL()->GetIntegerv(GL_MAX_VIEWPORT_DIMS,
1034 m_maxViewportDims); 1039 m_maxViewportDims);
1035 1040
1036 RefPtr<DrawingBuffer> buffer; 1041 RefPtr<DrawingBuffer> buffer;
(...skipping 6253 matching lines...) Expand 10 before | Expand all | Expand 10 after
7290 synthesizeGLError(GL_INVALID_FRAMEBUFFER_OPERATION, functionName, reason); 7295 synthesizeGLError(GL_INVALID_FRAMEBUFFER_OPERATION, functionName, reason);
7291 return false; 7296 return false;
7292 } 7297 }
7293 7298
7294 return true; 7299 return true;
7295 } 7300 }
7296 7301
7297 void WebGLRenderingContextBase::dispatchContextLostEvent(TimerBase*) { 7302 void WebGLRenderingContextBase::dispatchContextLostEvent(TimerBase*) {
7298 WebGLContextEvent* event = WebGLContextEvent::create( 7303 WebGLContextEvent* event = WebGLContextEvent::create(
7299 EventTypeNames::webglcontextlost, false, true, ""); 7304 EventTypeNames::webglcontextlost, false, true, "");
7300 canvas()->dispatchEvent(event); 7305 if (getOffscreenCanvas())
7306 getOffscreenCanvas()->dispatchEvent(event);
7307 else
7308 canvas()->dispatchEvent(event);
7301 m_restoreAllowed = event->defaultPrevented(); 7309 m_restoreAllowed = event->defaultPrevented();
7302 if (m_restoreAllowed && !m_isHidden) { 7310 if (m_restoreAllowed && !m_isHidden) {
7303 if (m_autoRecoveryMethod == Auto) 7311 if (m_autoRecoveryMethod == Auto)
7304 m_restoreTimer.startOneShot(0, BLINK_FROM_HERE); 7312 m_restoreTimer.startOneShot(0, BLINK_FROM_HERE);
7305 } 7313 }
7306 } 7314 }
7307 7315
7308 void WebGLRenderingContextBase::maybeRestoreContext(TimerBase*) { 7316 void WebGLRenderingContextBase::maybeRestoreContext(TimerBase*) {
7309 ASSERT(isContextLost()); 7317 ASSERT(isContextLost());
7310 7318
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
7589 DEFINE_TRACE(WebGLRenderingContextBase) { 7597 DEFINE_TRACE(WebGLRenderingContextBase) {
7590 visitor->trace(m_contextObjects); 7598 visitor->trace(m_contextObjects);
7591 visitor->trace(m_boundArrayBuffer); 7599 visitor->trace(m_boundArrayBuffer);
7592 visitor->trace(m_defaultVertexArrayObject); 7600 visitor->trace(m_defaultVertexArrayObject);
7593 visitor->trace(m_boundVertexArrayObject); 7601 visitor->trace(m_boundVertexArrayObject);
7594 visitor->trace(m_currentProgram); 7602 visitor->trace(m_currentProgram);
7595 visitor->trace(m_framebufferBinding); 7603 visitor->trace(m_framebufferBinding);
7596 visitor->trace(m_renderbufferBinding); 7604 visitor->trace(m_renderbufferBinding);
7597 visitor->trace(m_textureUnits); 7605 visitor->trace(m_textureUnits);
7598 visitor->trace(m_extensions); 7606 visitor->trace(m_extensions);
7607 visitor->trace(m_executionContext);
7599 CanvasRenderingContext::trace(visitor); 7608 CanvasRenderingContext::trace(visitor);
7600 } 7609 }
7601 7610
7602 DEFINE_TRACE_WRAPPERS(WebGLRenderingContextBase) { 7611 DEFINE_TRACE_WRAPPERS(WebGLRenderingContextBase) {
7603 if (isContextLost()) { 7612 if (isContextLost()) {
7604 return; 7613 return;
7605 } 7614 }
7606 visitor->traceWrappers(m_boundArrayBuffer); 7615 visitor->traceWrappers(m_boundArrayBuffer);
7607 visitor->traceWrappers(m_renderbufferBinding); 7616 visitor->traceWrappers(m_renderbufferBinding);
7608 visitor->traceWrappers(m_framebufferBinding); 7617 visitor->traceWrappers(m_framebufferBinding);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
7668 7677
7669 void WebGLRenderingContextBase::getHTMLOrOffscreenCanvas( 7678 void WebGLRenderingContextBase::getHTMLOrOffscreenCanvas(
7670 HTMLCanvasElementOrOffscreenCanvas& result) const { 7679 HTMLCanvasElementOrOffscreenCanvas& result) const {
7671 if (canvas()) 7680 if (canvas())
7672 result.setHTMLCanvasElement(canvas()); 7681 result.setHTMLCanvasElement(canvas());
7673 else 7682 else
7674 result.setOffscreenCanvas(getOffscreenCanvas()); 7683 result.setOffscreenCanvas(getOffscreenCanvas());
7675 } 7684 }
7676 7685
7677 } // namespace blink 7686 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698