Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
| index a7b105741259c5e6c2394d39e2cb4c2884ff18e0..26cc9fb217b595707e80169a1a65e6390187e175 100644 |
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h |
| @@ -806,7 +806,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, |
| DraftExtension = 0x01, |
| }; |
| - class ExtensionTracker : public GarbageCollected<ExtensionTracker> { |
| + class ExtensionTracker : public GarbageCollected<ExtensionTracker>, |
| + public TraceWrapperBase { |
| public: |
| ExtensionTracker(ExtensionFlags flags, const char* const* prefixes) |
| : m_draft(flags & DraftExtension), m_prefixes(prefixes) {} |
| @@ -872,17 +873,23 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, |
| ExtensionTracker::trace(visitor); |
| } |
| + DEFINE_INLINE_VIRTUAL_TRACE_WRAPPERS() { |
| + visitor->traceWrappers(m_extension); |
| + } |
| + |
| private: |
| TypedExtensionTracker(Member<T>& extensionField, |
| ExtensionFlags flags, |
| const char* const* prefixes) |
| - : ExtensionTracker(flags, prefixes), m_extensionField(extensionField) {} |
| + : ExtensionTracker(flags, prefixes), |
| + m_extensionField(extensionField), |
| + m_extension(this, nullptr) {} |
|
Michael Lippautz
2016/11/30 21:07:38
IIUC, then the TypedExtensionTracker should lazily
Ken Russell (switch to Gerrit)
2016/12/02 02:12:26
Yes, I think that's right. Sorry for the complexit
|
| GC_PLUGIN_IGNORE("http://crbug.com/519953") |
| Member<T>& m_extensionField; |
| // ExtensionTracker holds it's own reference to the extension to ensure |
| // that it is not deleted before this object's destructor is called |
| - Member<T> m_extension; |
| + TraceWrapperMember<T> m_extension; |
| }; |
| bool m_extensionEnabled[WebGLExtensionNameCount]; |