WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch for landing
bug-220436-20210111135246.patch (text/plain), 23.88 KB, created by
Sihui Liu
on 2021-01-11 13:52:47 PST
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2021-01-11 13:52:47 PST
Size:
23.88 KB
patch
obsolete
>Subversion Revision: 271366 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index a7aa77c2699dd13bee43a1b70dbade640fa61cdc..74ea1795965526f5cbbdf1773a308132bb1bbd00 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,36 @@ >+2021-01-11 Sihui Liu <sihui_liu@appe.com> >+ >+ Make SpeechRecognition permission error more informative >+ https://bugs.webkit.org/show_bug.cgi?id=220436 >+ >+ Reviewed by Youenn Fablet. >+ >+ Make SpeechRecognitionPermissionManager complete requests with an optional SpeechRecognitionError instead of a >+ boolean value. >+ >+ * UIProcess/SpeechRecognitionPermissionManager.cpp: >+ (WebKit::SpeechRecognitionPermissionManager::~SpeechRecognitionPermissionManager): >+ (WebKit::SpeechRecognitionPermissionManager::request): >+ (WebKit::SpeechRecognitionPermissionManager::startProcessingRequest): >+ (WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest): >+ (WebKit::SpeechRecognitionPermissionManager::completeCurrentRequest): >+ (WebKit::SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess): >+ (WebKit::SpeechRecognitionPermissionManager::requestMicrophoneAccess): >+ (WebKit::SpeechRecognitionPermissionManager::requestUserPermission): >+ * UIProcess/SpeechRecognitionPermissionManager.h: >+ * UIProcess/SpeechRecognitionPermissionRequest.h: >+ (WebKit::SpeechRecognitionPermissionRequest::create): >+ (WebKit::SpeechRecognitionPermissionRequest::complete): >+ (WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest): >+ * UIProcess/SpeechRecognitionServer.cpp: >+ (WebKit::SpeechRecognitionServer::requestPermissionForRequest): >+ * UIProcess/SpeechRecognitionServer.h: >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::requestSpeechRecognitionPermission): >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/WebProcessProxy.cpp: >+ (WebKit::WebProcessProxy::createSpeechRecognitionServer): >+ > 2021-01-11 Brent Fulgham <bfulgham@apple.com> > > [macOS] Enable the client decoder entitlement for the GPU Process >diff --git a/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp b/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp >index 48f700bcb1e5976b2d6b5913f526e3fef877a50c..a7df3c1d4905c33cde065f592416c8567cab0515 100644 >--- a/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp >+++ b/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp >@@ -72,10 +72,10 @@ SpeechRecognitionPermissionManager::SpeechRecognitionPermissionManager(WebPagePr > SpeechRecognitionPermissionManager::~SpeechRecognitionPermissionManager() > { > for (auto& request : m_requests) >- request->complete(SpeechRecognitionPermissionDecision::Deny); >+ request->complete(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "Permission manager has exited"_s }); > } > >-void SpeechRecognitionPermissionManager::request(const String& lang, const WebCore::ClientOrigin& origin, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&& completiontHandler) >+void SpeechRecognitionPermissionManager::request(const String& lang, const WebCore::ClientOrigin& origin, CompletionHandler<void(Optional<SpeechRecognitionError>&&)>&& completiontHandler) > { > m_requests.append(SpeechRecognitionPermissionRequest::create(lang, origin, WTFMove(completiontHandler))); > if (m_requests.size() == 1) >@@ -94,34 +94,35 @@ void SpeechRecognitionPermissionManager::startProcessingRequest() > { > #if PLATFORM(COOCA) > if (!checkSandboxRequirementForType(MediaPermissionType::Audio)) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "Sandbox check has failed"_s }); > return; > } > #endif > >- // TCC status may have changed between requests. >- m_microphoneCheck = computeMicrophoneAccess(); >- m_speechRecognitionServiceCheck = computeSpeechRecognitionServiceAccess(); >- > m_page.syncIfMockDevicesEnabledChanged(); >- bool mockCaptureDevicesEnabled = m_page.preferences().mockCaptureDevicesEnabled(); >- if (mockCaptureDevicesEnabled) { >+ if (m_page.preferences().mockCaptureDevicesEnabled()) { > m_microphoneCheck = CheckResult::Granted; > m_speechRecognitionServiceCheck = CheckResult::Granted; >- } >+ } else { >+ // TCC status may have changed between requests. >+ m_microphoneCheck = computeMicrophoneAccess(); >+ if (m_microphoneCheck == CheckResult::Denied) { >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "Microphone permission check has failed"_s }); >+ return; >+ } >+ >+ m_speechRecognitionServiceCheck = computeSpeechRecognitionServiceAccess(); >+ if (m_speechRecognitionServiceCheck == CheckResult::Denied) { >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::ServiceNotAllowed, "Speech recognition service permission check has failed"_s }); >+ return; >+ } > > #if HAVE(SPEECHRECOGNIZER) >- if (!mockCaptureDevicesEnabled && m_speechRecognitionServiceCheck != CheckResult::Denied) { >- // Speech recognition service can be unavailable when user does not enable dictation in system settings. >- // Let's avoid prompting user in that case. >- if (!checkSpeechRecognitionServiceAvailability(m_requests.first()->lang())) >- m_speechRecognitionServiceCheck = CheckResult::Denied; >- } >+ if (!checkSpeechRecognitionServiceAvailability(m_requests.first()->lang())) { >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::ServiceNotAllowed, "Speech recognition service is not available"_s }); >+ return; >+ } > #endif >- >- if (m_microphoneCheck == CheckResult::Denied || m_speechRecognitionServiceCheck == CheckResult::Denied) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >- return; > } > > // We currently don't allow third-party access. >@@ -134,7 +135,7 @@ void SpeechRecognitionPermissionManager::startProcessingRequest() > } > > if (m_userPermissionCheck == CheckResult::Denied) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "User permission check has failed"_s }); > return; > } > >@@ -162,18 +163,18 @@ void SpeechRecognitionPermissionManager::continueProcessingRequest() > ASSERT(m_userPermissionCheck == CheckResult::Granted); > > if (!m_page.isViewVisible()) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "Page is not visible to user" }); > return; > } > >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Grant); >+ completeCurrentRequest(); > } > >-void SpeechRecognitionPermissionManager::completeCurrentRequest(SpeechRecognitionPermissionDecision decision) >+void SpeechRecognitionPermissionManager::completeCurrentRequest(Optional<SpeechRecognitionError>&& error) > { > ASSERT(!m_requests.isEmpty()); > auto currentRequest = m_requests.takeFirst(); >- currentRequest->complete(decision); >+ currentRequest->complete(WTFMove(error)); > > startNextRequest(); > } >@@ -189,7 +190,7 @@ void SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess() > > m_speechRecognitionServiceCheck = authorized ? CheckResult::Granted : CheckResult::Denied; > if (m_speechRecognitionServiceCheck == CheckResult::Denied) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::ServiceNotAllowed, "Speech recognition service permission check has failed"_s }); > return; > } > >@@ -209,7 +210,7 @@ void SpeechRecognitionPermissionManager::requestMicrophoneAccess() > > m_microphoneCheck = authorized ? CheckResult::Granted : CheckResult::Denied; > if (m_microphoneCheck == CheckResult::Denied) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "Microphone permission check has failed"_s }); > return; > } > >@@ -231,7 +232,7 @@ void SpeechRecognitionPermissionManager::requestUserPermission() > > m_userPermissionCheck = granted ? CheckResult::Granted : CheckResult::Denied; > if (m_userPermissionCheck == CheckResult::Denied) { >- completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny); >+ completeCurrentRequest(SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "User permission check has failed"_s }); > return; > } > >@@ -240,8 +241,6 @@ void SpeechRecognitionPermissionManager::requestUserPermission() > m_page.uiClient().decidePolicyForSpeechRecognitionPermissionRequest(m_page, API::SecurityOrigin::create(topOrigin.get()).get(), WTFMove(decisionHandler)); > } > >- >- > void SpeechRecognitionPermissionManager::decideByDefaultAction(const WebCore::SecurityOrigin& origin, CompletionHandler<void(bool)>&& completionHandler) > { > #if PLATFORM(COCOA) >diff --git a/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h b/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h >index 0c4ca6f5b83b49dadc74f7f7f100c8686bf1827f..24257595a29f9c70900cde5691894b96b75333c8 100644 >--- a/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h >+++ b/Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h >@@ -39,7 +39,7 @@ public: > enum class CheckResult { Denied, Granted, Unknown }; > explicit SpeechRecognitionPermissionManager(WebPageProxy&); > ~SpeechRecognitionPermissionManager(); >- void request(const String& lang, const WebCore::ClientOrigin&, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&&); >+ void request(const String& lang, const WebCore::ClientOrigin&, CompletionHandler<void(Optional<WebCore::SpeechRecognitionError>&&)>&&); > > void decideByDefaultAction(const WebCore::SecurityOrigin&, CompletionHandler<void(bool)>&&); > WebPageProxy& page() { return m_page; } >@@ -48,7 +48,7 @@ private: > void startNextRequest(); > void startProcessingRequest(); > void continueProcessingRequest(); >- void completeCurrentRequest(SpeechRecognitionPermissionDecision); >+ void completeCurrentRequest(Optional<WebCore::SpeechRecognitionError>&& = WTF::nullopt); > void requestMicrophoneAccess(); > void requestSpeechRecognitionServiceAccess(); > void requestUserPermission(); >diff --git a/Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h b/Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h >index e7ccc48d17c0106b50e9ded3b9f4a572b74bc877..656b5757ad25b24939e3563cad33c62cd73cd697 100644 >--- a/Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h >+++ b/Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h >@@ -27,30 +27,29 @@ > > #include "APIObject.h" > #include <WebCore/ClientOrigin.h> >+#include <WebCore/SpeechRecognitionError.h> > #include <wtf/CompletionHandler.h> > > namespace WebKit { > >-enum class SpeechRecognitionPermissionDecision : bool { Deny, Grant }; >- > class SpeechRecognitionPermissionRequest : public RefCounted<SpeechRecognitionPermissionRequest> { > public: >- static Ref<SpeechRecognitionPermissionRequest> create(const String& lang, const WebCore::ClientOrigin& origin, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&& completionHandler) >+ static Ref<SpeechRecognitionPermissionRequest> create(const String& lang, const WebCore::ClientOrigin& origin, CompletionHandler<void(Optional<WebCore::SpeechRecognitionError>&&)>&& completionHandler) > { > return adoptRef(*new SpeechRecognitionPermissionRequest(lang, origin, WTFMove(completionHandler))); > } > >- void complete(SpeechRecognitionPermissionDecision decision) >+ void complete(Optional<WebCore::SpeechRecognitionError>&& error) > { > auto completionHandler = std::exchange(m_completionHandler, { }); >- completionHandler(decision); >+ completionHandler(WTFMove(error)); > } > > const WebCore::ClientOrigin& origin() const { return m_origin; } > const String& lang() const { return m_lang; } > > private: >- SpeechRecognitionPermissionRequest(const String& lang, const WebCore::ClientOrigin& origin, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&& completionHandler) >+ SpeechRecognitionPermissionRequest(const String& lang, const WebCore::ClientOrigin& origin, CompletionHandler<void(Optional<WebCore::SpeechRecognitionError>&&)>&& completionHandler) > : m_lang(lang) > , m_origin(origin) > , m_completionHandler(WTFMove(completionHandler)) >@@ -58,7 +57,7 @@ private: > > String m_lang; > WebCore::ClientOrigin m_origin; >- CompletionHandler<void(SpeechRecognitionPermissionDecision)> m_completionHandler; >+ CompletionHandler<void(Optional<WebCore::SpeechRecognitionError>&&)> m_completionHandler; > }; > > class SpeechRecognitionPermissionCallback : public API::ObjectImpl<API::Object::Type::SpeechRecognitionPermissionCallback> { >diff --git a/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp b/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp >index ec9b8b1887f95840aea3c3fda10dd1625bad815f..95f4df20ddb1e2796b4b96acabaa764fc8df863b 100644 >--- a/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp >+++ b/Source/WebKit/UIProcess/SpeechRecognitionServer.cpp >@@ -64,7 +64,7 @@ void SpeechRecognitionServer::start(WebCore::SpeechRecognitionConnectionClientId > > void SpeechRecognitionServer::requestPermissionForRequest(WebCore::SpeechRecognitionRequest& request) > { >- m_permissionChecker(request.lang(), request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](auto decision) mutable { >+ m_permissionChecker(request.lang(), request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](auto error) mutable { > if (!weakThis) > return; > >@@ -72,10 +72,9 @@ void SpeechRecognitionServer::requestPermissionForRequest(WebCore::SpeechRecogni > return; > > auto identifier = weakRequest->clientIdentifier(); >- if (decision == SpeechRecognitionPermissionDecision::Deny) { >+ if (error) { > m_requests.remove(identifier); >- auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::NotAllowed, "Permission check failed"_s }; >- sendUpdate(identifier, WebCore::SpeechRecognitionUpdateType::Error, error); >+ sendUpdate(identifier, WebCore::SpeechRecognitionUpdateType::Error, WTFMove(error)); > return; > } > >diff --git a/Source/WebKit/UIProcess/SpeechRecognitionServer.h b/Source/WebKit/UIProcess/SpeechRecognitionServer.h >index 651f84ada3e88222e171fd76b6c27dd35b7efaf5..c37f892f574ae4fddd8e6464de2d28da9d7d3e60 100644 >--- a/Source/WebKit/UIProcess/SpeechRecognitionServer.h >+++ b/Source/WebKit/UIProcess/SpeechRecognitionServer.h >@@ -43,10 +43,9 @@ struct ClientOrigin; > namespace WebKit { > > class WebProcessProxy; >-enum class SpeechRecognitionPermissionDecision : bool; > > using SpeechRecognitionServerIdentifier = WebCore::PageIdentifier; >-using SpeechRecognitionPermissionChecker = Function<void(const String&, const WebCore::ClientOrigin&, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&&)>; >+using SpeechRecognitionPermissionChecker = Function<void(const String&, const WebCore::ClientOrigin&, CompletionHandler<void(Optional<WebCore::SpeechRecognitionError>&&)>&&)>; > using SpeechRecognitionCheckIfMockSpeechRecognitionEnabled = Function<bool()>; > > class SpeechRecognitionServer : public CanMakeWeakPtr<SpeechRecognitionServer>, public IPC::MessageReceiver, private IPC::MessageSender { >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 7ce3b72c2aa14527ae25aba11e42026e1b99c524..cf1ce0c20c886c62189278514d3b2c740aed3a47 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -10305,7 +10305,7 @@ void WebPageProxy::dispatchActivityStateUpdateForTesting() > }); > } > >-void WebPageProxy::requestSpeechRecognitionPermission(const String& lang, const WebCore::ClientOrigin& clientOrigin, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&& completionHandler) >+void WebPageProxy::requestSpeechRecognitionPermission(const String& lang, const WebCore::ClientOrigin& clientOrigin, CompletionHandler<void(Optional<SpeechRecognitionError>&&)>&& completionHandler) > { > if (!m_speechRecognitionPermissionManager) > m_speechRecognitionPermissionManager = makeUnique<SpeechRecognitionPermissionManager>(*this); >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index a41659d9d336305aa061c9c877c6336d19143179..82e05a55710f08a73a975677c29049458fd48933 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -264,6 +264,7 @@ struct MockWebAuthenticationConfiguration; > struct PrewarmInformation; > struct SecurityOriginData; > struct ShareData; >+struct SpeechRecognitionError; > struct TextAlternativeWithRange; > struct TextCheckingResult; > struct ViewportAttributes; >@@ -367,7 +368,6 @@ struct UserMessage; > enum class CreateNewGroupForHighlight : bool; > enum class NegotiatedLegacyTLS : bool; > enum class ProcessSwapRequestedByClient : bool; >-enum class SpeechRecognitionPermissionDecision : bool; > enum class UndoOrRedo : bool; > enum class WebContentMode : uint8_t; > >@@ -1811,7 +1811,7 @@ public: > void setMediaCaptureReportingDelay(Seconds captureReportingDelay) { m_mediaCaptureReportingDelay = captureReportingDelay; } > size_t suspendMediaPlaybackCounter() { return m_suspendMediaPlaybackCounter; } > >- void requestSpeechRecognitionPermission(const String& lang, const WebCore::ClientOrigin&, CompletionHandler<void(SpeechRecognitionPermissionDecision)>&&); >+ void requestSpeechRecognitionPermission(const String& lang, const WebCore::ClientOrigin&, CompletionHandler<void(Optional<WebCore::SpeechRecognitionError>&&)>&&); > void requestSpeechRecognitionPermissionByDefaultAction(const WebCore::SecurityOrigin&, CompletionHandler<void(bool)>&&); > > void syncIfMockDevicesEnabledChanged(); >diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp >index ee163c72364a8593736a83105ba66be95b454353..9aee5f7c13080e0bc6ae938c300ad8458eecf379 100644 >--- a/Source/WebKit/UIProcess/WebProcessProxy.cpp >+++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp >@@ -1724,7 +1724,7 @@ void WebProcessProxy::createSpeechRecognitionServer(SpeechRecognitionServerIdent > auto& speechRecognitionServer = m_speechRecognitionServerMap.add(identifier, nullptr).iterator->value; > auto permissionChecker = [weakPage = makeWeakPtr(targetPage)](auto& lang, auto& origin, auto&& completionHandler) mutable { > if (!weakPage) { >- completionHandler(SpeechRecognitionPermissionDecision::Deny); >+ completionHandler(WebCore::SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, "Page no longer exists"_s }); > return; > } > >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index c2c515c6111fd0903d01f180005fb03b28711866..c7f88b4e09269674621602e6f8b41a553e9a40df 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,13 @@ >+2021-01-11 Sihui Liu <sihui_liu@appe.com> >+ >+ Make SpeechRecognition permission error more informative >+ https://bugs.webkit.org/show_bug.cgi?id=220436 >+ >+ Reviewed by Youenn Fablet. >+ >+ * TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: >+ (TestWebKitAPI::TEST): >+ > 2021-01-11 Aakash Jain <aakash_jain@apple.com> > > [build.webkit.org] Stop using deprecated addFactoryArguments method >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm >index e0b4668ea33c9615adff5a5b9ffb38e256475924..c312a9ff81885e6952054b66a52722b8c926c346 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm >@@ -119,7 +119,7 @@ TEST(WebKit2, SpeechRecognitionUserPermissionPersistence) > receivedScriptMessage = false; > [webView loadTestPageNamed:@"speechrecognition-user-permission-persistence"]; > TestWebKitAPI::Util::run(&receivedScriptMessage); >- EXPECT_WK_STREQ(@"Error: not-allowed - Permission check failed", [lastScriptMessage body]); >+ EXPECT_WK_STREQ(@"Error: not-allowed - User permission check has failed", [lastScriptMessage body]); > EXPECT_TRUE(permissionRequested); > > // Permission result is remembered. >@@ -127,7 +127,7 @@ TEST(WebKit2, SpeechRecognitionUserPermissionPersistence) > receivedScriptMessage = false; > [webView stringByEvaluatingJavaScript:@"start()"]; > TestWebKitAPI::Util::run(&receivedScriptMessage); >- EXPECT_WK_STREQ(@"Error: not-allowed - Permission check failed", [lastScriptMessage body]); >+ EXPECT_WK_STREQ(@"Error: not-allowed - User permission check has failed", [lastScriptMessage body]); > EXPECT_FALSE(permissionRequested); > > // Permission result will be cleared after document changes. >@@ -231,7 +231,7 @@ TEST(WebKit2, SpeechRecognitionPageBecomesInvisible) > receivedScriptMessage = false; > [webView evaluateJavaScript:@"start()" completionHandler:nil]; > TestWebKitAPI::Util::run(&receivedScriptMessage); >- EXPECT_WK_STREQ(@"Error: not-allowed - Permission check failed", [lastScriptMessage body]); >+ EXPECT_WK_STREQ(@"Error: not-allowed - Page is not visible to user", [lastScriptMessage body]); > } > > TEST(WebKit2, SpeechRecognitionPageIsDestroyed) >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 3a701000081ae632af1e040c2ab14b972769b4e8..fe93cde4ae0a78c6c2396cf33499a6669aac6d81 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,13 @@ >+2021-01-11 Sihui Liu <sihui_liu@appe.com> >+ >+ Make SpeechRecognition permission error more informative >+ https://bugs.webkit.org/show_bug.cgi?id=220436 >+ >+ Reviewed by Youenn Fablet. >+ >+ * fast/speechrecognition/permission-error-expected.txt: >+ * fast/speechrecognition/permission-error.html: >+ > 2021-01-11 Sam Weinig <weinig@apple.com> > > Support lab(), lch(), gray() and color(lab ...) colors >diff --git a/LayoutTests/fast/speechrecognition/permission-error-expected.txt b/LayoutTests/fast/speechrecognition/permission-error-expected.txt >index a798a952e25ad0342432bab853f812204a888c11..3c8202148794ad82d6899d5dbf3c7e3e726003a3 100644 >--- a/LayoutTests/fast/speechrecognition/permission-error-expected.txt >+++ b/LayoutTests/fast/speechrecognition/permission-error-expected.txt >@@ -6,7 +6,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > PASS recognition = new webkitSpeechRecognition() did not throw exception. > PASS recognition.start() did not throw exception. > PASS event.error is "not-allowed" >-PASS event.message is "Permission check failed" >+PASS event.message is "User permission check has failed" > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/fast/speechrecognition/permission-error.html b/LayoutTests/fast/speechrecognition/permission-error.html >index 2bead35b736a4fcb8e27b3e04a4370b304a6b7b2..07e0e2c16bdc424c696667e474cfa188ce14010e 100644 >--- a/LayoutTests/fast/speechrecognition/permission-error.html >+++ b/LayoutTests/fast/speechrecognition/permission-error.html >@@ -14,7 +14,7 @@ shouldNotThrow("recognition = new webkitSpeechRecognition()"); > shouldNotThrow("recognition.start()"); > recognition.onerror = (event) => { > shouldBeEqualToString("event.error", "not-allowed"); >- shouldBeEqualToString("event.message", "Permission check failed"); >+ shouldBeEqualToString("event.message", "User permission check has failed"); > > finishJSTest(); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 220436
:
417211
| 417409