Commit a16df9db authored by zerny@chromium.org's avatar zerny@chromium.org

Oilpan: Make MediaControllers ExecutionContext a weak pointer.

Cause of a flaky ASAN use-after-poison in media/video-frame-accurate-seek.html

R=ager@chromium.org, haraken@chromium.org
BUG=

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

git-svn-id: svn://svn.chromium.org/blink/trunk@176111 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 0763fa57
......@@ -3190,8 +3190,12 @@ bool HTMLMediaElement::hasPendingActivity() const
void HTMLMediaElement::contextDestroyed()
{
// With Oilpan the ExecutionContext is weakly referenced from the media
// controller and so it will clear itself on destruction.
#if !ENABLE(OILPAN)
if (m_mediaController)
m_mediaController->clearExecutionContext();
#endif
ActiveDOMObject::contextDestroyed();
}
......
......@@ -613,6 +613,7 @@ void MediaController::trace(Visitor* visitor)
{
visitor->trace(m_mediaElements);
visitor->trace(m_pendingEventsQueue);
visitor->trace(m_executionContext);
EventTargetWithInlineData::trace(visitor);
}
......
......@@ -84,7 +84,9 @@ public:
bool isRestrained() const;
bool isBlocked() const;
void clearExecutionContext() { m_executionContext = 0; }
#if !ENABLE(OILPAN)
void clearExecutionContext() { m_executionContext = nullptr; }
#endif
virtual void trace(Visitor*) OVERRIDE;
......@@ -124,7 +126,7 @@ private:
OwnPtrWillBeMember<GenericEventQueue> m_pendingEventsQueue;
mutable Timer<MediaController> m_clearPositionTimer;
OwnPtr<Clock> m_clock;
ExecutionContext* m_executionContext;
RawPtrWillBeWeakMember<ExecutionContext> m_executionContext;
Timer<MediaController> m_timeupdateTimer;
double m_previousTimeupdateTime;
};
......
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