Commit a91b046f authored by haraken@chromium.org's avatar haraken@chromium.org

Add a pure virtual method to the GarbageCollectedMixin class

It's easy to miss adding USING_GARBAGE_COLLECTED_MIXIN macros to classes
that inherit from GarbageCollectedMixin. To avoid the programming error,
this CL adds a pure virtual method to the GarbageCollectedMixin class.
If we miss the USING_GARBAGE_COLLECTED_MIXIN macro, we'll hit a compile error.

This CL also fixes existing programming errors.

BUG=420515

Review URL: https://codereview.chromium.org/659953002

git-svn-id: svn://svn.chromium.org/blink/trunk@183799 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent c988f437
......@@ -14,6 +14,8 @@ public:
// This callback is called when all data pushed to parser has been consumed.
virtual void notifyParserStopped() = 0;
virtual void trace(Visitor*) { }
protected:
DocumentParserClient() { }
};
......
......@@ -65,6 +65,7 @@ namespace blink {
class VisiblePosition;
class LocalFrame : public Frame, public WillBeHeapSupplementable<LocalFrame> {
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LocalFrame);
public:
static PassRefPtrWillBeRawPtr<LocalFrame> create(FrameLoaderClient*, FrameHost*, FrameOwner*);
......
......@@ -233,6 +233,7 @@ void HTMLImportLoader::trace(Visitor* visitor)
visitor->trace(m_document);
visitor->trace(m_writer);
visitor->trace(m_microtaskQueue);
DocumentParserClient::trace(visitor);
}
} // namespace blink
......@@ -55,6 +55,7 @@ class HTMLImportsController;
//
//
class HTMLImportLoader final : public NoBaseWillBeGarbageCollectedFinalized<HTMLImportLoader>, public ResourceOwner<RawResource>, public DocumentParserClient {
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(HTMLImportLoader);
public:
enum State {
StateLoading,
......
......@@ -1662,6 +1662,7 @@ void XMLHttpRequest::trace(Visitor* visitor)
visitor->trace(m_upload);
visitor->trace(m_blobLoader);
XMLHttpRequestEventTarget::trace(visitor);
DocumentParserClient::trace(visitor);
}
} // namespace blink
......@@ -15,6 +15,7 @@ class Presentation final
, public EventTargetWithInlineData
, public ContextLifecycleObserver {
DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<Presentation>);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(Presentation);
DEFINE_WRAPPERTYPEINFO();
public:
static Presentation* create(ExecutionContext*);
......
......@@ -19,6 +19,7 @@ namespace blink {
// ScreenOrientationDispatcher is listening, that means that the platform should
// be polling if required.
class ScreenOrientationDispatcher final : public GarbageCollectedFinalized<ScreenOrientationDispatcher>, public PlatformEventDispatcher {
USING_GARBAGE_COLLECTED_MIXIN(ScreenOrientationDispatcher);
public:
static ScreenOrientationDispatcher& instance();
......
......@@ -585,8 +585,8 @@ template<typename T> bool ObjectAliveTrait<T>::isHeapObjectAlive(Visitor* visito
class PLATFORM_EXPORT GarbageCollectedMixin {
public:
virtual void adjustAndMark(Visitor*) const { };
virtual bool isHeapObjectAlive(Visitor*) const { return true; };
virtual void adjustAndMark(Visitor*) const = 0;
virtual bool isHeapObjectAlive(Visitor*) const = 0;
virtual void trace(Visitor*) { }
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment