Bug 38602

Summary: Page::setCanStartMedia does not properly handle the case where a media listener is removed
Product: WebKit Reporter: Darin Adler <darin>
Component: MediaAssignee: Darin Adler <darin>
Status: RESOLVED FIXED    
Severity: Normal CC: bdakin
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Other   
OS: OS X 10.5   
Attachments:
Description Flags
Patch
none
Patch
none
Improved version. none

Darin Adler
Reported 2010-05-05 12:35:26 PDT
Page::setCanStartMedia does not properly handle the case where a media listener is removed
Attachments
Patch (1.35 KB, patch)
2010-05-05 12:40 PDT, Darin Adler
no flags
Patch (2.11 KB, patch)
2010-05-05 13:13 PDT, Darin Adler
no flags
Improved version. (2.10 KB, patch)
2010-05-05 16:10 PDT, Darin Adler
no flags
Darin Adler
Comment 1 2010-05-05 12:40:08 PDT
Darin Adler
Comment 2 2010-05-05 12:41:18 PDT
Comment on attachment 55144 [details] Patch Now the tricky part. I see this bug by code inspection, but I'm not sure how to make a test case. I did not mean to put this up for review. webkit-patch set the review? flag for me.
Adam Roben (:aroben)
Comment 3 2010-05-05 12:48:45 PDT
Comment on attachment 55144 [details] Patch > @@ -422,8 +422,11 @@ void Page::setCanStartMedia(bool canStar > m_mediaCanStartListeners.clear(); > > size_t size = listeners.size(); > - for (size_t i = 0; i < size; ++i) > - listeners[i]->mediaCanStart(); > + for (size_t i = 0; i < size; ++i) { > + MediaCanStartListener* listener = listeners[i]; > + if (m_mediaCanStartListeners.contains(listener))' Won't this test always fail, since line 422 cleared out m_mediaCanStartListeners?
Darin Adler
Comment 4 2010-05-05 12:50:48 PDT
(In reply to comment #3) > (From update of attachment 55144 [details]) > > @@ -422,8 +422,11 @@ void Page::setCanStartMedia(bool canStar > > m_mediaCanStartListeners.clear(); > > > > size_t size = listeners.size(); > > - for (size_t i = 0; i < size; ++i) > > - listeners[i]->mediaCanStart(); > > + for (size_t i = 0; i < size; ++i) { > > + MediaCanStartListener* listener = listeners[i]; > > + if (m_mediaCanStartListeners.contains(listener))' > > Won't this test always fail, since line 422 cleared out > m_mediaCanStartListeners? Yes, that's right. Need a bigger change.
Darin Adler
Comment 5 2010-05-05 13:13:08 PDT
Darin Adler
Comment 6 2010-05-05 16:10:21 PDT
Created attachment 55168 [details] Improved version.
Darin Adler
Comment 7 2010-05-06 10:12:44 PDT
Note You need to log in before you can comment on or make changes to this bug.