diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index fa531256b12d..db20bc055a28 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -5219,6 +5219,11 @@ mozilla::ipc::IPCResult ContentParent::RecvCopyFavicon( mozilla::ipc::IPCResult ContentParent::RecvFindImageText( IPCImage&& aImage, nsTArray&& aLanguages, FindImageTextResolver&& aResolver) { + if (!TextRecognition::IsSupported() || + !Preferences::GetBool("dom.text-recognition.enabled")) { + return IPC_FAIL(this, "Text recognition not available."); + } + RefPtr surf = nsContentUtils::IPCImageToSurface(std::move(aImage)); if (!surf) { diff --git a/widget/TextRecognition.cpp b/widget/TextRecognition.cpp index e4afa359ce01..aa8ff98bb968 100644 --- a/widget/TextRecognition.cpp +++ b/widget/TextRecognition.cpp @@ -35,6 +35,11 @@ auto TextRecognition::FindText(imgIContainer& aImage, auto TextRecognition::FindText(gfx::DataSourceSurface& aSurface, const nsTArray& aLanguages) -> RefPtr { + if (!IsSupported()) { + return NativePromise::CreateAndReject("Text recognition not available"_ns, + __func__); + } + if (XRE_IsContentProcess()) { auto* contentChild = ContentChild::GetSingleton(); auto image = nsContentUtils::SurfaceToIPCImage(aSurface); @@ -108,10 +113,7 @@ void TextRecognition::FillShadow(ShadowRoot& aShadow, auto TextRecognition::DoFindText(gfx::DataSourceSurface&, const nsTArray&) -> RefPtr { - MOZ_RELEASE_ASSERT(XRE_IsParentProcess(), - "This should only run in the parent process"); - return NativePromise::CreateAndReject("Text recognition not available"_ns, - __func__); + MOZ_CRASH("DoFindText is not implemented on this platform"); } #endif