Goal: I want the JumpListManager to only ever be accessed off of the main thread, so that the main thread in the parent process never has to await a lock.
Get rid of maxListItems, since it doesn’t appear to be used
Get rid of isListCommitted
Make .available return a Promise
Make abortListBuild return a Promise
Make deleteActiveList return a Promise
Make SetAppUserModelId return a Promise
Add WebIDL for JumpListShortcutDescription and add populateJumpList method to JumpListBuilder.
Custom List (this is the Frequently Visited stuff) - Frequent is ENABLED by default - Recent is DISABLED by default - Don’t need separators
Tasks
Update methods so that tasks and custom lists are added in the same method call. So a single populate method that takes something like… (taskDescriptions, customTitle, customListDescriptions)
Finish the URL removal thing. Basically, if an item was removed via the shell, the next call to AppendCategory cannot include that item with the same display name - the next call needs to display something else entirely.
See how Thunderbird uses JumpListBuilder in case there are things we need to support there.
Figure out how to make the above testable. Then write tests.
Let’s update WinTaskbar to have a new method that can be accessed from native code (so not through XPCOM), called, like, DoCreateJumpListBuilder or something. Have it take an argument that is a reference to something that implements a JumpListManager interface. Have JumpListBuilder move that thing to the background thread - the background thread owns it. Then, in our tests, have our GTest call DoCreateJumpListBuilder, passing it something that mocks out JumpListManager. And then call it’s populateJumpList method for testing.
Make our approach preffable. Put all the old stuff back (gulp), and update WindowsJumpList to use the new mechanism on a pref.
Implement clearJumpList (it’s called deleteActiveList)
See if the above works. If it does, get rid of old changes that we don’t need and merge patches down
Update WindowsJumpList.jsm to use the new API instead of the old one.
Remove the old implementation! Hooray!
Migrate off of dedicated lazy thread to background thread pool