Bug 213190

Summary: [GTK] WebKitPolicyClient new-window-policy is racey
Product: WebKit Reporter: Charlie Turner <cturner>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: bugs-noreply
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=184845

Description Charlie Turner 2020-06-15 05:19:47 PDT
In this function in WebKitPolicyClient test,

void beforeAll()
{
    kServer = new WebKitTestServer();
    kServer->run(serverCallback);

    PolicyClientTest::add("WebKitPolicyClient", "navigation-policy", testNavigationPolicy);   // 1
    PolicyClientTest::add("WebKitPolicyClient", "response-policy", testResponsePolicy);       // 2
    PolicyClientTest::add("WebKitPolicyClient", "new-window-policy", testNewWindowPolicy);    // 3
}

If you run any permutations where 3 is not last, you will hit assertions. Placing 3 first gives it the best chance of failing.

The issue is caused due to the piggy timeouts in the new window policy test, they come with a comment,

    // Using a short timeout is a bit ugly here, but it's hard to get around because if we block
    // the new window signal we cannot halt the main loop in the create callback. If we
    // halt the main loop in the policy decision, the create callback never executes.