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

Unified Diff: Source/core/html/canvas/WebGLRenderingContextBase.cpp

Issue 205903004: WebGL: Return both unprefixed and prefixed supported names from getSupportedExtensions (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Explain meaning of EnabledDraftExtension better Created 6 years, 9 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContextBase.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContextBase.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698