Summary: | Revisit WebKit api pattern where Page owns the client. | ||
---|---|---|---|
Product: | WebKit | Reporter: | Jeremy Jones <jeremyj-wk> |
Component: | WebKit2 | Assignee: | Nobody <webkit-unassigned> |
Status: | NEW --- | ||
Severity: | Normal | ||
Priority: | P2 | ||
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
From comments on https://bugs.webkit.org/show_bug.cgi?id=178089 |
> 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