Title: [294325] trunk
Revision
294325
Author
wenson_hs...@apple.com
Date
2022-05-17 09:38:25 -0700 (Tue, 17 May 2022)

Log Message

Refactor ImageAnalysisQueue to take source and target identifier strings
https://bugs.webkit.org/show_bug.cgi?id=240485
rdar://93280471

Reviewed by Tim Horton.

Plumb a `source` identifier string alongside the existing target identifier string when kicking off the image
analysis queue. See WebKit changes  for more details.

* html/shadow/imageOverlay.css:
(div.image-overlay-block):

Drive-by fix: tweak some styles in the image overlay, related to block-style image overlays installed by the
image analysis queue.

* page/ImageAnalysisQueue.cpp:
(WebCore::ImageAnalysisQueue::enqueueAllImages):
(WebCore::ImageAnalysisQueue::resumeProcessing):
(WebCore::ImageAnalysisQueue::clear):
* page/ImageAnalysisQueue.h:
* platform/TextRecognitionOptions.h:

Change `-[WKWebView _startImageAnalysis:]` to `-[WKWebView _startImageAnalysis:target:]`, and have it take
separate source and target identifier strings. We pass these strings through to the page and store them on
`ImageAnalysisQueue`, where they eventually bubble back up to the UI process when trigger batch image analysis,
via the new `source` and `target` arguments on `requestTextRecognition()`.

No change in behavior; covered by adjusting existing API tests to use the adjusted SPI.

* Platform/cocoa/ImageAnalysisUtilities.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _startImageAnalysis:target:]):
(-[WKWebView _startImageAnalysis:]): Deleted.

Rename this SPI entirely; this is safe to rename because the only existing client of this method (apart from API
tests) will simultaneously adopt the new SPI method with both `source` and `target` arguments.

* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::requestTextRecognition):
* UIProcess/PageClient.h:
(WebKit::PageClient::requestTextRecognition):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestTextRecognition):
(WebKit::WebPageProxy::startImageAnalysis):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::requestTextRecognition):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView requestTextRecognition:imageData:source:target:completionHandler:]):
(-[WKContentView requestTextRecognition:imageData:identifier:completionHandler:]): Deleted.
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::requestTextRecognition):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestTextRecognition):
(WebKit::WebPage::startImageAnalysis):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

See WebKit changes for more information.

* TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm:
(TestWebKitAPI::TEST):

Canonical link: https://commits.webkit.org/250645@main

Modified Paths

Diff

Modified: trunk/Source/WebCore/html/shadow/imageOverlay.css (294324 => 294325)


--- trunk/Source/WebCore/html/shadow/imageOverlay.css	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebCore/html/shadow/imageOverlay.css	2022-05-17 16:38:25 UTC (rev 294325)
@@ -62,6 +62,8 @@
     line-height: 1.2em;
     box-sizing: border-box;
     white-space: normal;
+    word-break: break-word;
+    letter-spacing: normal;
 }
 
 div.image-overlay-line, .image-overlay-text, div.image-overlay-block {

Modified: trunk/Source/WebCore/page/ImageAnalysisQueue.cpp (294324 => 294325)


--- trunk/Source/WebCore/page/ImageAnalysisQueue.cpp	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebCore/page/ImageAnalysisQueue.cpp	2022-05-17 16:38:25 UTC (rev 294325)
@@ -112,16 +112,16 @@
     m_resumeProcessingTimer.startOneShot(resumeProcessingDelay);
 }
 
-void ImageAnalysisQueue::enqueueAllImages(Document& document, const String& identifier)
+void ImageAnalysisQueue::enqueueAllImages(Document& document, const String& source, const String& target)
 {
     if (!m_page)
         return;
 
-    if (m_identifier != identifier) {
+    if (source != m_source || target != m_target)
         clear();
-        m_identifier = identifier;
-    }
 
+    m_source = source;
+    m_target = target;
     enqueueAllImagesRecursive(document);
 }
 
@@ -152,8 +152,8 @@
         if (auto* image = element->cachedImage(); image && !image->errorOccurred())
             m_queuedElements.set(*element, image->url());
 
-        auto allowSnapshots = m_identifier.isEmpty() ? TextRecognitionOptions::AllowSnapshots::Yes : TextRecognitionOptions::AllowSnapshots::No;
-        m_page->chrome().client().requestTextRecognition(*element, { m_identifier, allowSnapshots }, [this, page = m_page] (auto&&) {
+        auto allowSnapshots = m_target.isEmpty() ? TextRecognitionOptions::AllowSnapshots::Yes : TextRecognitionOptions::AllowSnapshots::No;
+        m_page->chrome().client().requestTextRecognition(*element, { m_source, m_target, allowSnapshots }, [this, page = m_page] (auto&&) {
             if (!page || page->imageAnalysisQueueIfExists() != this)
                 return;
 
@@ -172,7 +172,8 @@
     m_resumeProcessingTimer.stop();
     m_queue = { };
     m_queuedElements.clear();
-    m_identifier = { };
+    m_source = { };
+    m_target = { };
     m_currentTaskNumber = 0;
 }
 

Modified: trunk/Source/WebCore/page/ImageAnalysisQueue.h (294324 => 294325)


--- trunk/Source/WebCore/page/ImageAnalysisQueue.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebCore/page/ImageAnalysisQueue.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -46,7 +46,7 @@
     ImageAnalysisQueue(Page&);
     ~ImageAnalysisQueue();
 
-    WEBCORE_EXPORT void enqueueAllImages(Document&, const String& identifier);
+    WEBCORE_EXPORT void enqueueAllImages(Document&, const String& source, const String& target);
     void clear();
 
     void enqueueIfNeeded(HTMLImageElement&);
@@ -67,7 +67,8 @@
     static bool firstIsHigherPriority(const Task&, const Task&);
     unsigned nextTaskNumber() { return ++m_currentTaskNumber; }
 
-    String m_identifier;
+    String m_source;
+    String m_target;
     WeakPtr<Page> m_page;
     Timer m_resumeProcessingTimer;
     WeakHashMap<HTMLImageElement, URL> m_queuedElements;

Modified: trunk/Source/WebCore/platform/TextRecognitionOptions.h (294324 => 294325)


--- trunk/Source/WebCore/platform/TextRecognitionOptions.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebCore/platform/TextRecognitionOptions.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -30,7 +30,8 @@
 namespace WebCore {
 
 struct TextRecognitionOptions {
-    String identifier;
+    String source;
+    String target;
 
     enum class AllowSnapshots : bool { No, Yes };
     AllowSnapshots allowSnapshots { AllowSnapshots::Yes };

Modified: trunk/Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.h (294324 => 294325)


--- trunk/Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -60,7 +60,7 @@
 RetainPtr<CocoaImageAnalyzerRequest> createImageAnalyzerRequest(CGImageRef, VKAnalysisTypes);
 
 #if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
-void requestImageAnalysisWithIdentifier(CocoaImageAnalyzer *, NSURL *, const String& identifier, CGImageRef, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&);
+void requestImageAnalysisWithIdentifiers(CocoaImageAnalyzer *, NSURL *, const String& source, const String& target, CGImageRef, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&);
 void requestImageAnalysisMarkup(CGImageRef, CompletionHandler<void(CGImageRef, CGRect)>&&);
 
 std::pair<RetainPtr<NSData>, RetainPtr<CFStringRef>> imageDataForCroppedImageResult(CGImageRef, const String& sourceMIMEType);

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2022-05-17 16:38:25 UTC (rev 294325)
@@ -2314,15 +2314,15 @@
     });
 }
 
-- (void)_startImageAnalysis:(NSString *)identifier
+- (void)_startImageAnalysis:(NSString *)source target:(NSString *)target
 {
 #if ENABLE(IMAGE_ANALYSIS)
     THROW_IF_SUSPENDED;
 
-    if (!_page || !_page->preferences().textRecognitionEnhancementsEnabled())
+    if (!_page || !_page->preferences().imageAnalysisQueueEnabled())
         return;
 
-    _page->startImageAnalysis(identifier);
+    _page->startImageAnalysis(source, target);
 #endif
 }
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -425,7 +425,7 @@
 - (void)_suspendPage:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0));
 - (void)_resumePage:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0));
 
-- (void)_startImageAnalysis:(NSString *)identifier WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+- (void)_startImageAnalysis:(NSString *)identifier target:(NSString *)targetIdentifier WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
 
 - (void)_dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void(^)(_WKDataTask *))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
 

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -594,7 +594,7 @@
     bool shouldRequestCandidates() const;
 
 #if ENABLE(IMAGE_ANALYSIS)
-    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&);
+    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&);
     void computeHasVisualSearchResults(const URL& imageURL, ShareableBitmap& imageBitmap, CompletionHandler<void(bool)>&&);
 #endif
 

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm	2022-05-17 16:38:25 UTC (rev 294325)
@@ -249,7 +249,7 @@
     return request;
 }
 
-void WebViewImpl::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&& completion)
+void WebViewImpl::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&& completion)
 {
     if (!isLiveTextAvailableAndEnabled()) {
         completion({ });
@@ -265,10 +265,11 @@
     auto cgImage = imageBitmap->makeCGImage();
 
 #if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
-    if (!identifier.isEmpty())
-        return requestImageAnalysisWithIdentifier(ensureImageAnalyzer(), imageURL, identifier, cgImage.get(), WTFMove(completion));
+    if (!target.isEmpty())
+        return requestImageAnalysisWithIdentifiers(ensureImageAnalyzer(), imageURL, source, target, cgImage.get(), WTFMove(completion));
 #else
-    UNUSED_PARAM(identifier);
+    UNUSED_PARAM(source);
+    UNUSED_PARAM(target);
 #endif
 
     auto request = createImageAnalyzerRequest(cgImage.get(), imageURL, [NSURL _web_URLWithWTFString:m_page->currentURL()], VKAnalysisTypeText);

Modified: trunk/Source/WebKit/UIProcess/PageClient.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/PageClient.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/PageClient.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -557,7 +557,7 @@
     virtual bool isInMultitaskingMode() const { return false; }
 
 #if ENABLE(IMAGE_ANALYSIS)
-    virtual void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&& completion) { completion({ }); }
+    virtual void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&& completion) { completion({ }); }
     virtual void computeHasVisualSearchResults(const URL&, ShareableBitmap&, CompletionHandler<void(bool)>&& completion) { completion(false); }
 #endif
 

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2022-05-17 16:38:25 UTC (rev 294325)
@@ -8862,9 +8862,9 @@
 
 #if ENABLE(IMAGE_ANALYSIS)
 
-void WebPageProxy::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(TextRecognitionResult&&)>&& completionHandler)
+void WebPageProxy::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(TextRecognitionResult&&)>&& completionHandler)
 {
-    pageClient().requestTextRecognition(imageURL, imageData, identifier, WTFMove(completionHandler));
+    pageClient().requestTextRecognition(imageURL, imageData, source, target, WTFMove(completionHandler));
 }
 
 void WebPageProxy::computeHasVisualSearchResults(const URL& imageURL, ShareableBitmap& imageBitmap, CompletionHandler<void(bool)>&& completion)
@@ -8882,10 +8882,10 @@
     sendWithAsyncReply(Messages::WebPage::UpdateWithTextRecognitionResult(WTFMove(results), context, location), WTFMove(completionHandler));
 }
 
-void WebPageProxy::startImageAnalysis(const String& identifier)
+void WebPageProxy::startImageAnalysis(const String& source, const String& target)
 {
     if (hasRunningProcess())
-        send(Messages::WebPage::StartImageAnalysis(identifier));
+        send(Messages::WebPage::StartImageAnalysis(source, target));
 }
 
 #endif // ENABLE(IMAGE_ANALYSIS)

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -1756,10 +1756,10 @@
 #endif
 
 #if ENABLE(IMAGE_ANALYSIS)
-    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&);
+    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&);
     void updateWithTextRecognitionResult(WebCore::TextRecognitionResult&&, const WebCore::ElementContext&, const WebCore::FloatPoint& location, CompletionHandler<void(TextRecognitionUpdateResult)>&&);
     void computeHasVisualSearchResults(const URL& imageURL, ShareableBitmap& imageBitmap, CompletionHandler<void(bool)>&&);
-    void startImageAnalysis(const String& identifier);
+    void startImageAnalysis(const String& source, const String& target);
 #endif
 
 #if ENABLE(MEDIA_CONTROLS_CONTEXT_MENUS) && USE(UICONTEXTMENU)

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in	2022-05-17 16:38:25 UTC (rev 294325)
@@ -217,7 +217,7 @@
     SetHasHadSelectionChangesFromUserInteraction(bool hasHadUserSelectionChanges)
 
 #if ENABLE(IMAGE_ANALYSIS)
-    RequestTextRecognition(URL imageURL, WebKit::ShareableBitmap::Handle imageData, String identifier) -> (struct WebCore::TextRecognitionResult result)
+    RequestTextRecognition(URL imageURL, WebKit::ShareableBitmap::Handle imageData, String source, String target) -> (struct WebCore::TextRecognitionResult result)
 #endif
 
 #if HAVE(TRANSLATION_UI_SERVICES) && ENABLE(CONTEXT_MENUS)

Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -122,7 +122,7 @@
 #endif
 
 #if ENABLE(IMAGE_ANALYSIS)
-    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&) final;
+    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&) final;
 #endif
 
     RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy&) override;

Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm	2022-05-17 16:38:25 UTC (rev 294325)
@@ -465,9 +465,9 @@
 
 #if ENABLE(IMAGE_ANALYSIS)
 
-void PageClientImpl::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(TextRecognitionResult&&)>&& completion)
+void PageClientImpl::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(TextRecognitionResult&&)>&& completion)
 {
-    [m_contentView requestTextRecognition:imageURL imageData:imageData identifier:identifier completionHandler:WTFMove(completion)];
+    [m_contentView requestTextRecognition:imageURL imageData:imageData source:source target:target completionHandler:WTFMove(completion)];
 }
 
 #endif // ENABLE(IMAGE_ANALYSIS)

Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -794,7 +794,7 @@
 
 #if ENABLE(IMAGE_ANALYSIS)
 - (void)_endImageAnalysisGestureDeferral:(WebKit::ShouldPreventGestures)shouldPreventGestures;
-- (void)requestTextRecognition:(NSURL *)imageURL imageData:(const WebKit::ShareableBitmap::Handle&)imageData identifier:(NSString *)identifier completionHandler:(CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&)completion;
+- (void)requestTextRecognition:(NSURL *)imageURL imageData:(const WebKit::ShareableBitmap::Handle&)imageData source:(NSString *)source target:(NSString *)target completionHandler:(CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&)completion;
 #endif
 
 #if HAVE(UIFINDINTERACTION)

Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2022-05-17 16:38:25 UTC (rev 294325)
@@ -10809,7 +10809,7 @@
     return NO;
 }
 
-- (void)requestTextRecognition:(NSURL *)imageURL imageData:(const WebKit::ShareableBitmap::Handle&)imageData identifier:(NSString *)identifier completionHandler:(CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&)completion
+- (void)requestTextRecognition:(NSURL *)imageURL imageData:(const WebKit::ShareableBitmap::Handle&)imageData source:(NSString *)source target:(NSString *)target completionHandler:(CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&)completion
 {
     auto imageBitmap = WebKit::ShareableBitmap::create(imageData);
     if (!imageBitmap) {
@@ -10824,10 +10824,11 @@
     }
 
 #if ENABLE(IMAGE_ANALYSIS_ENHANCEMENTS)
-    if (identifier.length)
-        return WebKit::requestImageAnalysisWithIdentifier(self.imageAnalyzer, imageURL, identifier, cgImage.get(), WTFMove(completion));
+    if (target.length)
+        return WebKit::requestImageAnalysisWithIdentifiers(self.imageAnalyzer, imageURL, source, target, cgImage.get(), WTFMove(completion));
 #else
-    UNUSED_PARAM(identifier);
+    UNUSED_PARAM(source);
+    UNUSED_PARAM(target);
 #endif
 
     auto request = [self createImageAnalyzerRequest:VKAnalysisTypeText image:cgImage.get()];

Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -131,7 +131,7 @@
     void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) override;
 
 #if ENABLE(IMAGE_ANALYSIS)
-    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&) override;
+    void requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(WebCore::TextRecognitionResult&&)>&&) override;
     void computeHasVisualSearchResults(const URL&, ShareableBitmap&, CompletionHandler<void(bool)>&&) override;
 #endif
 

Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm (294324 => 294325)


--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm	2022-05-17 16:38:25 UTC (rev 294325)
@@ -484,9 +484,9 @@
 
 #if ENABLE(IMAGE_ANALYSIS)
 
-void PageClientImpl::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& identifier, CompletionHandler<void(TextRecognitionResult&&)>&& completion)
+void PageClientImpl::requestTextRecognition(const URL& imageURL, const ShareableBitmap::Handle& imageData, const String& source, const String& target, CompletionHandler<void(TextRecognitionResult&&)>&& completion)
 {
-    m_impl->requestTextRecognition(imageURL, imageData, identifier, WTFMove(completion));
+    m_impl->requestTextRecognition(imageURL, imageData, source, target, WTFMove(completion));
 }
 
 void PageClientImpl::computeHasVisualSearchResults(const URL& imageURL, ShareableBitmap& imageBitmap, CompletionHandler<void(bool)>&& completion)

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (294324 => 294325)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2022-05-17 16:38:25 UTC (rev 294325)
@@ -7808,7 +7808,7 @@
 
     auto cachedImage = renderImage.cachedImage();
     auto imageURL = cachedImage ? element.document().completeURL(cachedImage->url().string()) : URL { };
-    sendWithAsyncReply(Messages::WebPageProxy::RequestTextRecognition(WTFMove(imageURL), WTFMove(bitmapHandle), options.identifier), [webPage = WeakPtr { *this }, weakElement = WeakPtr { element }] (auto&& result) {
+    sendWithAsyncReply(Messages::WebPageProxy::RequestTextRecognition(WTFMove(imageURL), WTFMove(bitmapHandle), options.source, options.target), [webPage = WeakPtr { *this }, weakElement = WeakPtr { element }] (auto&& result) {
         RefPtr protectedPage { webPage.get() };
         if (!protectedPage)
             return;
@@ -7879,13 +7879,10 @@
     completionHandler(updateResult);
 }
 
-void WebPage::startImageAnalysis(const String& identifier)
+void WebPage::startImageAnalysis(const String& source, const String& target)
 {
-    if (RefPtr document = m_mainFrame->coreFrame()->document()) {
-        // We only consider main document content for now, to match the behavior of the corresponding feature
-        // that will trigger this codepath.
-        corePage()->imageAnalysisQueue().enqueueAllImages(*document, identifier);
-    }
+    if (RefPtr document = m_mainFrame->coreFrame()->document())
+        corePage()->imageAnalysisQueue().enqueueAllImages(*document, source, target);
 }
 
 #endif // ENABLE(IMAGE_ANALYSIS)

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (294324 => 294325)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2022-05-17 16:38:25 UTC (rev 294325)
@@ -1462,7 +1462,7 @@
 #if ENABLE(IMAGE_ANALYSIS)
     void requestTextRecognition(WebCore::Element&, WebCore::TextRecognitionOptions&&, CompletionHandler<void(RefPtr<WebCore::Element>&&)>&& = { });
     void updateWithTextRecognitionResult(const WebCore::TextRecognitionResult&, const WebCore::ElementContext&, const WebCore::FloatPoint& location, CompletionHandler<void(TextRecognitionUpdateResult)>&&);
-    void startImageAnalysis(const String& identifier);
+    void startImageAnalysis(const String& source, const String& target);
 #endif
 
     void requestImageBitmap(const WebCore::ElementContext&, CompletionHandler<void(const ShareableBitmap::Handle&, const String& sourceMIMEType)>&&);

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (294324 => 294325)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in	2022-05-17 16:38:25 UTC (rev 294325)
@@ -675,7 +675,7 @@
 
 #if ENABLE(IMAGE_ANALYSIS)
     UpdateWithTextRecognitionResult(struct WebCore::TextRecognitionResult result, struct WebCore::ElementContext element, WebCore::FloatPoint location) -> (enum:uint8_t WebKit::TextRecognitionUpdateResult result)
-    StartImageAnalysis(String identifier)
+    StartImageAnalysis(String source, String target)
 #endif
 
     ScrollToRect(WebCore::FloatRect targetRect, WebCore::FloatPoint origin)

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm (294324 => 294325)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm	2022-05-17 15:40:24 UTC (rev 294324)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm	2022-05-17 16:38:25 UTC (rev 294325)
@@ -246,7 +246,7 @@
 
     auto webView = createWebViewWithTextRecognitionEnhancements();
     [webView synchronouslyLoadTestPageNamed:@"multiple-images"];
-    [webView _startImageAnalysis:nil];
+    [webView _startImageAnalysis:nil target:nil];
     [webView waitForImageAnalysisRequests:5];
 
     NSArray<NSString *> *overlaysAsText = [webView objectByEvaluatingJavaScript:@"imageOverlaysAsText()"];
@@ -268,7 +268,7 @@
     }];
     Util::run(&doneInsertingFrame);
 
-    [webView _startImageAnalysis:nil];
+    [webView _startImageAnalysis:nil target:nil];
     [webView waitForImageAnalysisRequests:10];
 }
 
@@ -278,7 +278,7 @@
 
     auto webView = createWebViewWithTextRecognitionEnhancements();
     [webView synchronouslyLoadTestPageNamed:@"image"];
-    [webView _startImageAnalysis:nil];
+    [webView _startImageAnalysis:nil target:nil];
     [webView waitForImageAnalysisRequests:1];
 
     [webView objectByEvaluatingJavaScript:@"document.querySelector('img').src = ''"];
@@ -291,7 +291,7 @@
 
     auto webView = createWebViewWithTextRecognitionEnhancements();
     [webView synchronouslyLoadTestPageNamed:@"multiple-images"];
-    [webView _startImageAnalysis:nil];
+    [webView _startImageAnalysis:nil target:nil];
     [webView waitForImageAnalysisRequests:5];
 
     [webView objectByEvaluatingJavaScript:@"appendImage('apple.gif')"];
@@ -313,7 +313,7 @@
 
     auto webView = createWebViewWithTextRecognitionEnhancements();
     [webView synchronouslyLoadTestPageNamed:@"multiple-images"];
-    [webView _startImageAnalysis:nil];
+    [webView _startImageAnalysis:nil target:nil];
     [webView waitForImageAnalysisRequests:5];
 
     [webView synchronouslyLoadTestPageNamed:@"simple"];
@@ -329,7 +329,7 @@
     auto requestSwizzler = makeImageAnalysisRequestSwizzler(processRequestWithResults);
     auto webView = createWebViewWithTextRecognitionEnhancements();
     [webView synchronouslyLoadTestPageNamed:@"offscreen-image"];
-    [webView _startImageAnalysis:nil];
+    [webView _startImageAnalysis:nil target:nil];
     [webView waitForImageAnalysisRequests:2];
 
     auto firstRequestedImage = [processedRequests().first() image];
@@ -345,7 +345,7 @@
     auto requestSwizzler = makeImageAnalysisRequestSwizzler(processRequestWithError);
     auto webView = createWebViewWithTextRecognitionEnhancements();
     [webView synchronouslyLoadTestPageNamed:@"fade-in-image"];
-    [webView _startImageAnalysis:@"foo"];
+    [webView _startImageAnalysis:@"foo" target:@"bar"];
     [webView waitForImageAnalysisRequests:1];
 
     CGImagePixelReader reader { [processedRequests().first() image] };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to