Bug 204397

Summary: MicrotaskQueue should be accessed via EventLoop
Product: WebKit Reporter: Ryosuke Niwa <rniwa>
Component: DOMAssignee: Ryosuke Niwa <rniwa>
Status: RESOLVED FIXED    
Severity: Normal CC: cdumez, dbates, esprehn+autocc, ews-watchlist, ggaren, gyuyoung.kim, hi, Hironori.Fujii, joepeck, kangil.han, koivisto, sam, webkit-bug-importer, wenson_hsieh, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=204395
Bug Depends on:    
Bug Blocks: 204042    
Attachments:
Description Flags
Refactoring koivisto: review+

Ryosuke Niwa
Reported 2019-11-19 23:05:37 PST
In order to integrate MicrotaskQueue, refactor the existing code to always access it via EventLoop.
Attachments
Refactoring (42.77 KB, patch)
2019-11-19 23:31 PST, Ryosuke Niwa
koivisto: review+
Ryosuke Niwa
Comment 1 2019-11-19 23:31:23 PST
Created attachment 383948 [details] Refactoring
Radar WebKit Bug Importer
Comment 2 2019-11-19 23:33:46 PST
Ryosuke Niwa
Comment 3 2019-11-19 23:45:25 PST
Once this patch is landed, there are a few bugs to fix: - MutationObserver's compound microtask queue must be per similar origin windows; i.e. per event loop. This should let us remove the hack we added in https://trac.webkit.org/r247222. - Custom Element's backup queue must be per micro per similar origin windows; i.e. per event loop. This will be observable via editing commands issued across sites. - EventLoopTaskQueue::queueMicrotaskCallback should automatically suspend or stop microtasks if the associated script execution context is suspend or stopped like regular EventLoopTasks. This will let us remove ActiveDOMCallbackMicrotask.
Antti Koivisto
Comment 4 2019-11-20 01:39:53 PST
Comment on attachment 383948 [details] Refactoring View in context: https://bugs.webkit.org/attachment.cgi?id=383948&action=review > Source/WebCore/dom/MutationObserver.cpp:163 > +// This state must be per event loop. > +static bool mutationObserverCompoundMicrotaskQueuedFlag = false; I suppose this is a FIXME. > Source/WebCore/dom/WindowEventLoop.cpp:78 > + // MicrotaskQueue must be one per event loop. FIXME
Ryosuke Niwa
Comment 5 2019-11-20 17:47:58 PST
Fujii Hironori
Comment 6 2019-11-20 19:34:45 PST
Filed: Bug 204437 – [MSVC] error C2039: 'weakPtrFactory': is not a member of 'WebCore::DocumentStorageAccess::requestStorageAccess::<lambda_3f2cfd7704f93d8fe19d5b5f064f8add>'
Note You need to log in before you can comment on or make changes to this bug.