Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 9948a5b7f3736753adf75857450b9a518806f501 https://github.com/WebKit/WebKit/commit/9948a5b7f3736753adf75857450b9a518806f501 Author: Kohei Ueno <kohei.ueno...@gmail.com> Date: 2023-10-18 (Wed, 18 Oct 2023)
Changed paths: A Source/WebKit/Shared/API/APICaptionUserPreferencesTestingModeToken.h M Source/WebKit/Shared/API/APIObject.h M Source/WebKit/Shared/API/c/WKBase.h M Source/WebKit/UIProcess/API/C/WKAPICast.h M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h Log Message: ----------- Ensuring initialization of `CaptionUserPreferencesTestingModeToken` before setting caption mode https://bugs.webkit.org/show_bug.cgi?id=262680 Reviewed by Eric Carlson. The `captionDisplayMode` option was introduced in https://bugs.webkit.org/show_bug.cgi?id=261460 (PR: https://github.com/WebKit/WebKit/pull/17689). However, when I attempted to import WPT for webvtt/parsing with `captionDisplayMode` setting enabled, I found that the tests were failing intermittently on ios-wk2 (example: https://github.com/WebKit/WebKit/pull/17852#issuecomment-1723066317). The flakiness of these tests appears to be due to the fact that the `CaptionUserPreferencesTestingModeToken` instance may not always be initialized before the caption mode is set (https://github.com/WebKit/WebKit/blob/659f85098cf4322282a775cbd51eb58a4ed34022/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp#L583). This instance is usually initialized on the `Internals` class's constructor during the WebKitTestRunner setup (https://github.com/WebKit/WebKit/blob/659f85098cf4322282a775cbd51eb58a4ed34022/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp#L888). In most cases, the `CaptionUserPreferencesTestingModeToken` instance is created in the `Internals` class constructor before `WKBundlePageSetCaptionDisplayMode` is called, but there are instances where it is not, particularly when tests are run concurrently. This leads to the tests failing. To address this issue, the WebKitTestRunner needs to ensure that the `CaptionUserPreferencesTestingModeToken` instance is always initialized before `WKBundlePageSetCaptionDisplayMode` is called, thus eliminating the flakiness of the tests. * Source/WebKit/Shared/API/APICaptionUserPreferencesTestingModeToken.h: Added. (API::CaptionUserPreferencesTestingModeToken::create): (API::CaptionUserPreferencesTestingModeToken::CaptionUserPreferencesTestingModeToken): * Source/WebKit/Shared/API/APIObject.h: * Source/WebKit/Shared/API/c/WKBase.h: * Source/WebKit/UIProcess/API/C/WKAPICast.h: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageSetCaptionDisplayMode): (WKBundlePageCreateCaptionUserPreferencesTestingModeToken): (WKBundleSetCaptionDisplayMode): Deleted. * Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: * Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::beginTesting): * Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h: Canonical link: https://commits.webkit.org/269455@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes