Bug 178893 - Revisit WebKit api pattern where Page owns the client.
Summary: Revisit WebKit api pattern where Page owns the client.
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-10-26 16:26 PDT by Jeremy Jones
Modified: 2017-10-26 16:26 PDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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