Bug 178893

Summary: Revisit WebKit api pattern where Page owns the client.
Product: WebKit Reporter: Jeremy Jones <jeremyj-wk>
Component: WebKit2Assignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal    
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Jeremy Jones 2017-10-26 16:26:07 PDT
> This API seems a bit weird. Normally you don't pass ownership of a client to
> the thing that it's a client of. You hold ownership, and the client
> relationship is weak.

Search for '_page->set[a-zA-Z]*Client\(' shows this pattern in lots of places:

    _page->setFindClient(std::make_unique<WebKit::FindClient>(self));
    _page->setDiagnosticLoggingClient(std::make_unique<WebKit::DiagnosticLoggingClient>(self));
    _page->setNavigationClient(_navigationState->createNavigationClient());
    _page->setContextMenuClient(_uiDelegate->createContextMenuClient());
    _page->setUIClient(_uiDelegate->createUIClient());
    _page->setIconLoadingClient(_iconLoadingDelegate->createIconLoadingClient());
    _page->setHistoryClient(_navigationState->createHistoryClient());
        _page->setFormClient(std::make_unique<FormClient>(self));
    m_page->setFullscreenClient(std::make_unique<WebKit::FullscreenClient>(view));
    _page->setFindMatchesClient(std::make_unique<TextFinderFindClient>(self));

Maybe this should be revisited
Comment 1 Jeremy Jones 2017-10-26 16:26:25 PDT
From comments on https://bugs.webkit.org/show_bug.cgi?id=178089