| Index: Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| diff --git a/Source/core/html/canvas/WebGLRenderingContextBase.cpp b/Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| index 3c70156b7733b78505c627bbb57f591ba07413dc..bf4b7e700925e619503ed77467a2ec28fde819a6 100644
|
| --- a/Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| +++ b/Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| @@ -2099,13 +2099,17 @@ GLenum WebGLRenderingContextBase::getError()
|
| return m_context->getError();
|
| }
|
|
|
| -bool WebGLRenderingContextBase::ExtensionTracker::matchesNameWithPrefixes(const String& name) const
|
| +const char* const* WebGLRenderingContextBase::ExtensionTracker::prefixes() const
|
| {
|
| static const char* const unprefixed[] = { "", 0, };
|
| + return m_prefixes ? m_prefixes : unprefixed;
|
| +}
|
|
|
| - const char* const* prefixes = m_prefixes ? m_prefixes : unprefixed;
|
| - for (; *prefixes; ++prefixes) {
|
| - String prefixedName = String(*prefixes) + extensionName();
|
| +bool WebGLRenderingContextBase::ExtensionTracker::matchesNameWithPrefixes(const String& name) const
|
| +{
|
| + const char* const* prefixSet = prefixes();
|
| + for (; *prefixSet; ++prefixSet) {
|
| + String prefixedName = String(*prefixSet) + extensionName();
|
| if (equalIgnoringCase(prefixedName, name)) {
|
| return true;
|
| }
|
| @@ -2113,6 +2117,20 @@ bool WebGLRenderingContextBase::ExtensionTracker::matchesNameWithPrefixes(const
|
| return false;
|
| }
|
|
|
| +bool WebGLRenderingContextBase::extensionSupportedAndAllowed(const ExtensionTracker* tracker)
|
| +{
|
| + if (tracker->webglDebugRendererInfo() && !allowWebGLDebugRendererInfo())
|
| + return false;
|
| + if (tracker->privileged() && !allowPrivilegedExtensions())
|
| + return false;
|
| + if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled())
|
| + return false;
|
| + if (!tracker->supported(this))
|
| + return false;
|
| + return true;
|
| +}
|
| +
|
| +
|
| PassRefPtr<WebGLExtension> WebGLRenderingContextBase::getExtension(const String& name)
|
| {
|
| if (isContextLost())
|
| @@ -2121,13 +2139,7 @@ PassRefPtr<WebGLExtension> WebGLRenderingContextBase::getExtension(const String&
|
| for (size_t i = 0; i < m_extensions.size(); ++i) {
|
| ExtensionTracker* tracker = m_extensions[i];
|
| if (tracker->matchesNameWithPrefixes(name)) {
|
| - if (tracker->webglDebugRendererInfo() && !allowWebGLDebugRendererInfo())
|
| - return nullptr;
|
| - if (tracker->privileged() && !allowPrivilegedExtensions())
|
| - return nullptr;
|
| - if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled())
|
| - return nullptr;
|
| - if (!tracker->supported(this))
|
| + if (!extensionSupportedAndAllowed(tracker))
|
| return nullptr;
|
|
|
| RefPtr<WebGLExtension> extension = tracker->getExtension(this);
|
| @@ -2580,14 +2592,13 @@ Vector<String> WebGLRenderingContextBase::getSupportedExtensions()
|
|
|
| for (size_t i = 0; i < m_extensions.size(); ++i) {
|
| ExtensionTracker* tracker = m_extensions[i];
|
| - if (tracker->webglDebugRendererInfo() && !allowWebGLDebugRendererInfo())
|
| - continue;
|
| - if (tracker->privileged() && !allowPrivilegedExtensions())
|
| - continue;
|
| - if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled())
|
| - continue;
|
| - if (tracker->supported(this))
|
| - result.append(String(tracker->prefixed() ? "WEBKIT_" : "") + tracker->extensionName());
|
| + if (extensionSupportedAndAllowed(tracker)) {
|
| + const char* const* prefixes = tracker->prefixes();
|
| + for (; *prefixes; ++prefixes) {
|
| + String prefixedName = String(*prefixes) + tracker->extensionName();
|
| + result.append(prefixedName);
|
| + }
|
| + }
|
| }
|
|
|
| return result;
|
|
|