Needs patch.
Created attachment 27703 [details] Patch for bug.
Comment on attachment 27703 [details] Patch for bug. As ap suggested, I should change MessageQueue to be linked list based.
Created attachment 27754 [details] Part 1: Change MessageQueue to be linked list based.
Comment on attachment 27754 [details] Part 1: Change MessageQueue to be linked list based. ok, maybe not a linked list for now.
Comment on attachment 27703 [details] Patch for bug. We'll try this one to start with.
Comment on attachment 27703 [details] Patch for bug. I'll consider a functor approach instead of a virtual method callback.
Created attachment 27773 [details] Proposed fix.
Comment on attachment 27773 [details] Proposed fix. r=me > + inline DequeIterator<T> Deque<T>::findIf(Predicate predicate) > + { > + for (iterator it = begin(); it != end(); ++it) { If may be better to make compiler's life easier, and precompute end(). > + if ((*predicate)(*it)) Shouldn't this be "predicate(*it)"? > + return it; > + } > + return end(); > + } + MessageQueueWaitResult waitForMessageFiltered(DataType&, Predicate); MessageQueueWaitResult waitForMessageTimed(DataType&, double absoluteTime); Have you verified that timers do not fire in Firefox when waiting for a sync XHR in a worker?
> Have you verified that timers do not fire in Firefox when waiting for a sync XHR in a worker? Not yet. But I'll look into adding a method to do that to reduce duplicate code in this class. Commited as r41081.