Unfortunately, in-process plugins using OpenGL break the assumption made by these patches, that the current GL context is only changed by GLContext::MakeCurrent. Another issue, regardless of in-process, is that our host-side code in nsCoreAnimationSupport.mm uses direct CGL calls, bypassing GLContext.
WGL has its own ARB_robustness implementation which we support with this patch.
I was able to confirm that it was correctly being activated and was polling
status correctly (i.e. the framework is running), but WGL itself doesn't
actually seem to stop the DoS correctly when a robust context is created.
This patch should improve performance of the robustness timer by not resetting
it each time a draw operation happens. It still checks if there's any activity
and, if not, it will stop firing it. It includes a single extra timer firing
after activity dies to make sure we don't miss anything. Also includes a fix for
robustness being marked as existing when it really isn't.