Hi everyone, with my downstream hat on I find it quite problematic that it's not possible to build the unit tests from our tarballs. Currently there is a trend when the CI and all kinds of testing automation are taking places in various distributions. I personally find it really important as it adds another layer of testing under the upstream one. I think it's even more important than the upstream one as the upstream one runs against given set of packages (jhbuild), but in the end the WebKitGTK+ runs on consumers system, where the our required dependencies could be (and are) in different versions. Also there might be some downstream patches (like for big-endian architectures) and we should make it easier for downstream packagers to test their modifications (I have to confess that my big-endian downstream patch made the JSC in the Fedora to misbehave) and see whether their freshly compiled WebKitGTK+ is functional (in the scope of what unit tests are covering).. I know that we do have the build bots running various distributions, but we can't support all the ones where WebKitGTK+ is used - we could leverage that on downstreams.
So I looked how the current situation looks like: * In CMAKE files the ENABLE_API_TESTS is guarded by the DEVELOPER_MODE * The tests itself depends on the WebKit C API, that is not exported in our shared library (it's filtered out by the webkitglib-symbols.map). The list of what symbols are needed is on the end of this mail. * Even if we add all the required C APIs to the map, then the compilation will the tests use private functions that are again not exported - e.g. the WebProcessTest uses webkitWebExtensionSetGarbageCollectOnPageDestroy() from Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebExtensionPrivate.h * To be able to run the tests from the builddir we would have to move functions or their parts like getExecutablePath(), findWebKitProcess() in Source/WebKit/Shared/glib/ProcessExecutablePathGLib.cpp and injectedBundleDirectory() in Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp outside of the DEVELOPER_MODE ifdefs. * It "probably" needs files that are not included in the tarball The hardest task here is what to do with the WebKit C APIs and private functions. We definitely don't want to have these visible to our users. Then we could probably build lets say the libwebkit2gtktest library that could be the same as the libwebkit2gtk library, but without the webkitglib-symbols.map applied (I don't know if it's possible to filter the symbols ex-post - if so, then we would the libwebkit2gtk first, then copy it as libwebkit2gtktest and then stripped the symbols from it). It's a rough idea and I'm not sure whether it can work. Comments/feedback/ideas welcomed! Tom --- a/Source/WebKit/webkitglib-symbols.map +++ b/Source/WebKit/webkitglib-symbols.map @@ -15,7 +15,144 @@ global: "bmalloc::vmPageSize()::cached"; "WebKit::WebKitExtensionManager::singleton()"; "WebKit::WebKitExtensionManager::initialize(WebKit::InjectedBundle*, API::Object*)"; + "WebKit::InputMethodFilter::EventFakedForComposition)>&&)"; + "WebKit::InputMethodFilter::~InputMethodFilter()"; + "WebKit::InputMethodFilter::InputMethodFilter()"; + "WebKit::InputMethodFilter::notifyFocusedOut()"; + "WebKit::InputMethodFilter::notifyMouseButtonPress()"; + "WebKit::InputMethodFilter::setEnabled(bool)"; + "WebKit::InputMethodFilter::filterKeyEvent(_GdkEventKey*, WTF::Function<void (WebCore::CompositionResults const&, WebKit::InputMethodFilter::EventFakedForComposition)>&&)"; }; + WKBackForwardListGetBackListCount; + WKBackForwardListGetForwardListCount; + WKBackForwardListItemCopyURL; + WKBooleanGetTypeID; + WKBooleanGetValue; + WKContextCreate; + WKContextCreateWithInjectedBundlePath; + WKContextGetCookieManager; + WKContextGetGeolocationManager; + WKContextPostMessageToInjectedBundle; + WKContextRegisterURLSchemeAsEmptyDocument; + WKContextSetCacheModel; + WKContextSetDownloadClient; + WKContextSetHistoryClient; + WKContextSetInitializationUserDataForInjectedBundle; + WKContextSetInjectedBundleClient; + WKCookieManagerGetHTTPCookieAcceptPolicy; + WKCookieManagerSetHTTPCookieAcceptPolicy; + WKDataCreate; + WKDictionaryGetItemForKey; + WKDictionaryGetTypeID; + WKDictionarySetItem; + WKDownloadCancel; + WKFrameCopyMIMEType; + WKFrameCopyProvisionalURL; + WKFrameCopyURL; + WKFrameGetFrameLoadState; + WKFrameGetPage; + WKFramePolicyListenerDownload; + WKFramePolicyListenerUse; + WKGeolocationManagerProviderDidChangePosition; + WKGeolocationManagerSetProvider; + WKGeolocationPermissionRequestAllow; + WKGeolocationPositionCreate; + WKGetTypeID; + WKMutableDictionaryCreate; + WKPageCanGoBack; + WKPageClose; + WKPageConfigurationCreate; + WKPageConfigurationSetContext; + WKPageConfigurationSetPageGroup; + WKPageConfigurationSetRelatedPage; + WKPageCopyActiveURL; + WKPageCopySessionState; + WKPageCountStringMatches; + WKPageForceRepaint; + WKPageGetBackForwardList; + WKPageGetContext; + WKPageGetMainFrame; + WKPageGetPageGroup; + WKPageGetScaleFactor; + WKPageGetSessionBackForwardListItemValueType; + WKPageGoBack; + WKPageGroupCreateWithIdentifier; + WKPageGroupSetPreferences; + WKPageLoadAlternateHTMLString; + WKPageLoadData; + WKPageLoadFile; + WKPageLoadHTMLString; + WKPageLoadPlainTextString; + WKPageLoadURL; + WKPageReload; + WKPageRestoreFromSessionState; + WKPageRunJavaScriptInMainFrame; + WKPageSetCustomUserAgent; + WKPageSetPageFindClient; + WKPageSetPageNavigationClient; + WKPageSetPageUIClient; + WKPageStopLoading; + WKPageTerminate; + WKPreferencesCopyCursiveFontFamily; + WKPreferencesCopyFantasyFontFamily; + WKPreferencesCopyFixedFontFamily; + WKPreferencesCopyPictographFontFamily; + WKPreferencesCopySansSerifFontFamily; + WKPreferencesCopySerifFontFamily; + WKPreferencesCopyStandardFontFamily; + WKPreferencesCreate; + WKPreferencesCreateCopy; + WKPreferencesCreateWithIdentifier; + WKPreferencesGetAcceleratedCompositingEnabled; + WKPreferencesGetCompositingBordersVisible; + WKPreferencesGetCompositingRepaintCountersVisible; + WKPreferencesGetDefaultFontSize; + WKPreferencesGetDeveloperExtrasEnabled; + WKPreferencesGetFrameFlatteningEnabled; + WKPreferencesGetHyperlinkAuditingEnabled; + WKPreferencesGetJavaEnabled; + WKPreferencesGetJavaScriptCanOpenWindowsAutomatically; + WKPreferencesGetJavaScriptEnabled; + WKPreferencesGetLoadsImagesAutomatically; + WKPreferencesGetLocalStorageEnabled; + WKPreferencesGetMinimumFontSize; + WKPreferencesGetNeedsSiteSpecificQuirks; + WKPreferencesGetOfflineWebApplicationCacheEnabled; + WKPreferencesGetPluginsEnabled; + WKPreferencesGetPrivateBrowsingEnabled; + WKPreferencesGetStorageBlockingPolicy; + WKPreferencesGetTextAreasAreResizable; + WKPreferencesGetTextAutosizingEnabled; + WKPreferencesGetTypeID; + WKPreferencesGetXSSAuditorEnabled; + WKPreferencesSetDefaultFontSize; + WKPreferencesSetPrivateBrowsingEnabled; + WKPreferencesSetUniversalAccessFromFileURLsAllowed; + WKRelease; + WKRetain; + WKSerializedScriptValueDeserialize; + WKSessionStateCopyData; + WKSessionStateCreateFromData; + WKStringCopyJSString; + WKStringCreateWithJSString; + WKStringCreateWithUTF8CString; + WKStringGetCharacters; + WKStringGetLength; + WKStringGetMaximumUTF8CStringSize; + WKStringGetTypeID; + WKStringGetUTF8CString; + WKStringIsEmpty; + WKStringIsEqual; + WKStringIsEqualToUTF8CString; + WKURLCopyLastPathComponent; + WKURLCopyString; + WKURLCreateWithBaseURL; + WKURLCreateWithUTF8CString; + WKURLIsEqual; + WKURLRequestCopyURL; + WKURLRequestCreateWithWKURL; + WKViewCreate; + WKViewGetPage; local: *; };
_______________________________________________ webkit-gtk mailing list webkit-gtk@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-gtk