Diff
Modified: trunk/Source/WebKit/ChangeLog (271173 => 271174)
--- trunk/Source/WebKit/ChangeLog 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/ChangeLog 2021-01-05 22:30:31 UTC (rev 271174)
@@ -1,3 +1,17 @@
+2021-01-05 Ryan Haddad <[email protected]>
+
+ Unreviewed, reverting r271169.
+
+ Caused
+ TestWebKitAPI.WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage
+ to time out on macOS.
+
+ Reverted changeset:
+
+ "Stop speech recognition if page becomes invisible"
+ https://bugs.webkit.org/show_bug.cgi?id=220073
+ https://trac.webkit.org/changeset/271169
+
2021-01-05 Alex Christensen <[email protected]>
Make WebPage::ForceRepaint use CompletionHandler instead of VoidCallback
Modified: trunk/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp (271173 => 271174)
--- trunk/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp 2021-01-05 22:30:31 UTC (rev 271174)
@@ -161,11 +161,6 @@
}
ASSERT(m_userPermissionCheck == CheckResult::Granted);
- if (!m_page.isViewVisible()) {
- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny);
- return;
- }
-
completeCurrentRequest(SpeechRecognitionPermissionDecision::Grant);
}
Modified: trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp (271173 => 271174)
--- trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp 2021-01-05 22:30:31 UTC (rev 271174)
@@ -168,20 +168,6 @@
}
}
-void SpeechRecognitionServer::abortForPageIsBecomingInvisible()
-{
- if (!m_recognizer)
- return;
-
- auto currentClientIdentifier = m_recognizer->currentClientIdentifier();
- if (!currentClientIdentifier)
- return;
-
- auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::Aborted, "Page is no longer visible"_s };
- sendUpdate(*currentClientIdentifier, WebCore::SpeechRecognitionUpdateType::Error, error);
- m_recognizer->reset();
-}
-
void SpeechRecognitionServer::sendUpdate(WebCore::SpeechRecognitionConnectionClientIdentifier clientIdentifier, WebCore::SpeechRecognitionUpdateType type, Optional<WebCore::SpeechRecognitionError> error, Optional<Vector<WebCore::SpeechRecognitionResultData>> result)
{
auto update = WebCore::SpeechRecognitionUpdate::create(clientIdentifier, type);
Modified: trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.h (271173 => 271174)
--- trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.h 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.h 2021-01-05 22:30:31 UTC (rev 271174)
@@ -64,7 +64,6 @@
void abort(WebCore::SpeechRecognitionConnectionClientIdentifier);
void invalidate(WebCore::SpeechRecognitionConnectionClientIdentifier);
void mute();
- void abortForPageIsBecomingInvisible();
private:
void requestPermissionForRequest(WebCore::SpeechRecognitionRequest&);
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (271173 => 271174)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-01-05 22:30:31 UTC (rev 271174)
@@ -1995,12 +1995,8 @@
if ((changed & ActivityState::WindowIsActive) && isViewWindowActive())
updateCurrentModifierState();
- if ((m_potentiallyChangedActivityStateFlags & ActivityState::IsVisible)) {
- if (isViewVisible())
- viewIsBecomingVisible();
- else
- m_process->pageIsBecomingInvisible(m_webPageID);
- }
+ if ((m_potentiallyChangedActivityStateFlags & ActivityState::IsVisible) && isViewVisible())
+ viewIsBecomingVisible();
bool isNowInWindow = (changed & ActivityState::IsInWindow) && isInWindow();
// We always want to wait for the Web process to reply if we've been in-window before and are coming back in-window.
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (271173 => 271174)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2021-01-05 22:30:31 UTC (rev 271174)
@@ -1788,12 +1788,6 @@
speechRecognitionServer->mute();
}
-void WebProcessProxy::pageIsBecomingInvisible(WebCore::PageIdentifier identifier)
-{
- if (auto server = m_speechRecognitionServerMap.get(identifier))
- server->abortForPageIsBecomingInvisible();
-}
-
#if PLATFORM(WATCHOS)
void WebProcessProxy::startBackgroundActivityForFullscreenInput()
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (271173 => 271174)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2021-01-05 22:30:31 UTC (rev 271174)
@@ -405,7 +405,6 @@
SpeechRecognitionRemoteRealtimeMediaSourceManager& ensureSpeechRecognitionRemoteRealtimeMediaSourceManager();
#endif
void pageMutedStateChanged(WebCore::PageIdentifier, WebCore::MediaProducer::MutedStateFlags);
- void pageIsBecomingInvisible(WebCore::PageIdentifier);
protected:
WebProcessProxy(WebProcessPool&, WebsiteDataStore*, IsPrewarmed);
Modified: trunk/Tools/ChangeLog (271173 => 271174)
--- trunk/Tools/ChangeLog 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Tools/ChangeLog 2021-01-05 22:30:31 UTC (rev 271174)
@@ -1,5 +1,19 @@
2021-01-05 Ryan Haddad <[email protected]>
+ Unreviewed, reverting r271169.
+
+ Caused
+ TestWebKitAPI.WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage
+ to time out on macOS.
+
+ Reverted changeset:
+
+ "Stop speech recognition if page becomes invisible"
+ https://bugs.webkit.org/show_bug.cgi?id=220073
+ https://trac.webkit.org/changeset/271169
+
+2021-01-05 Ryan Haddad <[email protected]>
+
Unreviewed, revert part of r271158 to fix builtins generator tests.
* Scripts/webkitpy/codegen/main.py:
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm (271173 => 271174)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm 2021-01-05 21:08:46 UTC (rev 271173)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm 2021-01-05 22:30:31 UTC (rev 271174)
@@ -167,46 +167,4 @@
EXPECT_WK_STREQ(@"Recorder Mute", [lastScriptMessage body]);
}
-// FIXME: enable this test on iOS when https://webkit.org/b/175204 is fixed.
-#if PLATFORM(MAC)
-
-TEST(WebKit2, SpeechRecognitionPageBecomesInvisible)
-{
- auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
- auto handler = adoptNS([[SpeechRecognitionMessageHandler alloc] init]);
- [[configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"];
- auto preferences = [configuration preferences];
- preferences._mockCaptureDevicesEnabled = YES;
- preferences._speechRecognitionEnabled = YES;
- auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600) configuration:configuration.get()]);
- auto delegate = adoptNS([[SpeechRecognitionPermissionUIDelegate alloc] init]);
- [webView setUIDelegate:delegate.get()];
-
- // Page is visible.
- shouldGrantPermissionRequest = true;
- receivedScriptMessage = false;
- [webView synchronouslyLoadTestPageNamed:@"speechrecognition-basic"];
- [webView stringByEvaluatingJavaScript:@"start()"];
- TestWebKitAPI::Util::run(&receivedScriptMessage);
- EXPECT_WK_STREQ(@"Start", [lastScriptMessage body]);
-
- // Hide page.
- receivedScriptMessage = false;
-#if PLATFORM(MAC)
- [webView.get().window setIsVisible:NO];
-#else
- webView.get().window.hidden = YES;
-#endif
- TestWebKitAPI::Util::run(&receivedScriptMessage);
- EXPECT_WK_STREQ(@"Error: aborted - Page is no longer visible", [lastScriptMessage body]);
-
- // Page is invisible.
- receivedScriptMessage = false;
- [webView evaluateJavaScript:@"start()" completionHandler:nil];
- TestWebKitAPI::Util::run(&receivedScriptMessage);
- EXPECT_WK_STREQ(@"Error: not-allowed - Permission check failed", [lastScriptMessage body]);
-}
-
-#endif
-
} // namespace TestWebKitAPI