Skip to content

Commit

Permalink
UnifiedPDF: Lookup pill has the wrong font size
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=270835
rdar://123667947

Reviewed by Abrar Rahman Protyasha and Simon Fraser.

Adopt TextIndicator for all UnifiedPDF text indication paths
(Lookup from force-press and from the context menu, in addition to
the existing find-in-page case).

* Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::showDefinitionForAttributedString):
(WebKit::PDFPlugin::textForImmediateActionHitTestAtPoint):
(WebKit::PDFPlugin::lookupTextAtLocation): Deleted.
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:
(WebKit::PDFPluginBase::textIndicatorForCurrentSelection):
(WebKit::PDFPluginBase::textIndicatorForSelection): Deleted.
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm:
(WebKit::PDFPluginBase::performImmediateActionHitTestAtLocation):
(WebKit::PDFPluginBase::dictionaryPopupInfoForSelection):
Move this PDFPlugin-specific code here from WebPageMac.

* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::performContextMenuAction):
(WebKit::UnifiedPDFPlugin::textIndicatorForCurrentSelection):
(WebKit::UnifiedPDFPlugin::textIndicatorForSelection):
(WebKit::UnifiedPDFPlugin::performDictionaryLookupAtLocation):
(WebKit::UnifiedPDFPlugin::dictionaryPopupInfoForSelection):
(WebKit::UnifiedPDFPlugin::showDefinitionForSelection):
(WebKit::UnifiedPDFPlugin::textForImmediateActionHitTestAtPoint):
Share more code between find and lookup.

(WebKit::UnifiedPDFPlugin::searchInDictionary): Deleted.
(WebKit::UnifiedPDFPlugin::showDefinitionForAttributedString): Deleted.
(WebKit::UnifiedPDFPlugin::lookupTextAtLocation): Deleted.
* Source/WebKit/WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::textIndicatorForCurrentSelection):
(WebKit::PluginView::performImmediateActionHitTestAtLocation const):
(WebKit::PluginView::textIndicatorForSelection): Deleted.
(WebKit::PluginView::lookupTextAtLocation const): Deleted.
* Source/WebKit/WebProcess/Plugins/PluginView.h:
Get rid of LookupTextResult.

* Source/WebKit/WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::updateFindIndicator):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::performImmediateActionHitTestAtLocation):
(WebKit::WebPage::dictionaryPopupInfoForSelectionInPDFPlugin): Deleted.

Canonical link: https://commits.webkit.org/275994@main
  • Loading branch information
hortont424 committed Mar 12, 2024
1 parent 94f1c31 commit 92a81df
Show file tree
Hide file tree
Showing 11 changed files with 104 additions and 120 deletions.
3 changes: 1 addition & 2 deletions Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h
Expand Up @@ -74,7 +74,6 @@ class PluginView;
class WebFrame;
class WebKeyboardEvent;
class WebWheelEvent;
struct LookupTextResult;
struct WebHitTestResultData;

class PDFPlugin final : public PDFPluginBase {
Expand Down Expand Up @@ -174,7 +173,7 @@ class PDFPlugin final : public PDFPluginBase {
bool drawsFindOverlay() const final { return true; }

bool performDictionaryLookupAtLocation(const WebCore::FloatPoint&) override;
LookupTextResult lookupTextAtLocation(const WebCore::FloatPoint&, WebHitTestResultData&) override;
std::pair<String, RetainPtr<PDFSelection>> textForImmediateActionHitTestAtPoint(const WebCore::FloatPoint&, WebHitTestResultData&) override;

bool shouldCreateTransientPaintingSnapshot() const override { return true; }
RefPtr<WebCore::ShareableBitmap> snapshot() override;
Expand Down
3 changes: 1 addition & 2 deletions Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm
Expand Up @@ -1255,7 +1255,6 @@ static bool getEventTypeFromWebEvent(const WebEvent& event, NSEventType& eventTy
dictionaryPopupInfo.origin = convertFromPDFViewToRootView(IntPoint(point));
dictionaryPopupInfo.platformData.attributedString = WebCore::AttributedString::fromNSAttributedString(string);


NSRect rangeRect;
rangeRect.origin = NSMakePoint(point.x, point.y);
CGFloat scaleFactor = PDFPlugin::scaleFactor();
Expand Down Expand Up @@ -1441,7 +1440,7 @@ static NSPoint pointInLayoutSpaceForPointInWindowSpace(PDFLayerController* pdfLa
return NSPointFromCGPoint(newPoint);
}

LookupTextResult PDFPlugin::lookupTextAtLocation(const WebCore::FloatPoint& locationInViewCoordinates, WebHitTestResultData& data)
std::pair<String, RetainPtr<PDFSelection>> PDFPlugin::textForImmediateActionHitTestAtPoint(const WebCore::FloatPoint& locationInViewCoordinates, WebHitTestResultData& data)
{
auto selection = [m_pdfLayerController currentSelection];
if (existingSelectionContainsPoint(locationInViewCoordinates))
Expand Down
8 changes: 5 additions & 3 deletions Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h
Expand Up @@ -64,6 +64,7 @@ class Scrollbar;
class ShareableBitmap;
class SharedBuffer;
enum class PlatformCursorType : uint8_t;
struct DictionaryPopupInfo;
}

namespace WebKit {
Expand All @@ -75,7 +76,6 @@ class WebFrame;
class WebKeyboardEvent;
class WebMouseEvent;
class WebWheelEvent;
struct LookupTextResult;
struct WebHitTestResultData;

enum class ByteRangeRequestIdentifierType;
Expand Down Expand Up @@ -156,12 +156,14 @@ class PDFPluginBase : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr<PDF
virtual bool findString(const String& target, WebCore::FindOptions, unsigned maxMatchCount) = 0;
virtual Vector<WebCore::FloatRect> rectsForTextMatchesInRect(const WebCore::IntRect&) const { return { }; }
virtual bool drawsFindOverlay() const = 0;
virtual RefPtr<WebCore::TextIndicator> textIndicatorForSelection(OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition) { return { }; }
virtual RefPtr<WebCore::TextIndicator> textIndicatorForCurrentSelection(OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition) { return { }; }
virtual WebCore::DictionaryPopupInfo dictionaryPopupInfoForSelection(PDFSelection *, WebCore::TextIndicatorPresentationTransition);

virtual bool performDictionaryLookupAtLocation(const WebCore::FloatPoint&) = 0;
void performWebSearch(const String& query);

virtual LookupTextResult lookupTextAtLocation(const WebCore::FloatPoint&, WebHitTestResultData&) = 0;
bool performImmediateActionHitTestAtLocation(const WebCore::FloatPoint&, WebHitTestResultData&);
virtual std::pair<String, RetainPtr<PDFSelection>> textForImmediateActionHitTestAtPoint(const WebCore::FloatPoint&, WebHitTestResultData&) = 0;

virtual id accessibilityHitTest(const WebCore::IntPoint&) const = 0;
virtual id accessibilityObject() const = 0;
Expand Down
58 changes: 58 additions & 0 deletions Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm
Expand Up @@ -36,6 +36,7 @@
#import "WKAccessibilityPDFDocumentObject.h"
#import "WebEventConversion.h"
#import "WebFrame.h"
#import "WebHitTestResultData.h"
#import "WebLoaderStrategy.h"
#import "WebPage.h"
#import "WebPageProxyMessages.h"
Expand Down Expand Up @@ -930,6 +931,63 @@
return handleContextMenuEvent(event);
}

bool PDFPluginBase::performImmediateActionHitTestAtLocation(const WebCore::FloatPoint& locationInViewCoordinates, WebHitTestResultData& data)
{
auto [text, selection] = textForImmediateActionHitTestAtPoint(locationInViewCoordinates, data);
if (!selection)
return false;

data.lookupText = text;
data.isTextNode = true;
data.isSelected = true;
data.dictionaryPopupInfo = dictionaryPopupInfoForSelection(selection.get(), TextIndicatorPresentationTransition::FadeIn);
return true;
}

DictionaryPopupInfo PDFPluginBase::dictionaryPopupInfoForSelection(PDFSelection *selection, WebCore::TextIndicatorPresentationTransition presentationTransition)
{
DictionaryPopupInfo dictionaryPopupInfo;
if (!selection.string.length)
return dictionaryPopupInfo;

#if PLATFORM(MAC)
NSRect rangeRect = rectForSelectionInRootView(selection);
NSAttributedString *nsAttributedString = selection.attributedString;
RetainPtr scaledNSAttributedString = adoptNS([[NSMutableAttributedString alloc] initWithString:[nsAttributedString string]]);
NSFontManager *fontManager = [NSFontManager sharedFontManager];
CGFloat scaleFactor = contentScaleFactor();

[nsAttributedString enumerateAttributesInRange:NSMakeRange(0, [nsAttributedString length]) options:0 usingBlock:^(NSDictionary *attributes, NSRange range, BOOL *stop) {
RetainPtr<NSMutableDictionary> scaledAttributes = adoptNS([attributes mutableCopy]);

NSFont *font = [scaledAttributes objectForKey:NSFontAttributeName];
if (font) {
font = [fontManager convertFont:font toSize:font.pointSize * scaleFactor];
[scaledAttributes setObject:font forKey:NSFontAttributeName];
}

[scaledNSAttributedString addAttributes:scaledAttributes.get() range:range];
}];

rangeRect.size.height = nsAttributedString.size.height * scaleFactor;
rangeRect.size.width = nsAttributedString.size.width * scaleFactor;

TextIndicatorData dataForSelection;
dataForSelection.selectionRectInRootViewCoordinates = rangeRect;
dataForSelection.textBoundingRectInRootViewCoordinates = rangeRect;
dataForSelection.contentImageScaleFactor = scaleFactor;
dataForSelection.presentationTransition = presentationTransition;

dictionaryPopupInfo.origin = rangeRect.origin;
dictionaryPopupInfo.textIndicator = dataForSelection;
dictionaryPopupInfo.platformData.attributedString = WebCore::AttributedString::fromNSAttributedString(scaledNSAttributedString);
#else
UNUSED_PARAM(presentationTransition);
#endif

return dictionaryPopupInfo;
}

WebCore::AXObjectCache* PDFPluginBase::axObjectCache() const
{
ASSERT(isMainRunLoop());
Expand Down
Expand Up @@ -48,8 +48,6 @@ class PDFPluginPasswordField;
class PDFPluginPasswordForm;
class WebFrame;
class WebMouseEvent;

struct LookupTextResult;
struct PDFContextMenu;
struct PDFContextMenuItem;
struct PDFPageCoverage;
Expand Down Expand Up @@ -291,12 +289,13 @@ class UnifiedPDFPlugin final : public PDFPluginBase, public WebCore::GraphicsLay
Vector<WebCore::FloatRect> rectsForTextMatchesInRect(const WebCore::IntRect&) const final;
bool drawsFindOverlay() const final { return false; }
void collectFindMatchRects(const String&, WebCore::FindOptions);
RefPtr<WebCore::TextIndicator> textIndicatorForSelection(OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition) final;
RefPtr<WebCore::TextIndicator> textIndicatorForCurrentSelection(OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition) final;
RefPtr<WebCore::TextIndicator> textIndicatorForSelection(PDFSelection *, OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition);
bool performDictionaryLookupAtLocation(const WebCore::FloatPoint&) override;
[[maybe_unused]] bool searchInDictionary(const RetainPtr<PDFSelection>&);
std::optional<WebCore::FloatRect> selectionBoundsForFirstPageInDocumentSpace(const RetainPtr<PDFSelection>&) const;
bool showDefinitionForAttributedString(RetainPtr<NSAttributedString>&&, const WebCore::FloatRect& rectInDocumentSpace);
LookupTextResult lookupTextAtLocation(const WebCore::FloatPoint&, WebHitTestResultData&) override;
bool showDefinitionForSelection(PDFSelection *);
std::pair<String, RetainPtr<PDFSelection>> textForImmediateActionHitTestAtPoint(const WebCore::FloatPoint&, WebHitTestResultData&) override;
WebCore::DictionaryPopupInfo dictionaryPopupInfoForSelection(PDFSelection *, WebCore::TextIndicatorPresentationTransition) override;

id accessibilityHitTest(const WebCore::IntPoint&) const override;
id accessibilityObject() const override;
Expand Down
57 changes: 25 additions & 32 deletions Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm
Expand Up @@ -2301,10 +2301,11 @@ static bool isContextMenuEvent(const WebMouseEvent& event)
case ContextMenuItemTag::WebSearch:
performWebSearch(selectionString());
break;
case ContextMenuItemTag::DictionaryLookup:
searchInDictionary(m_currentSelection);
case ContextMenuItemTag::DictionaryLookup: {
RetainPtr selection = m_currentSelection;
showDefinitionForSelection(selection.get());
break;
case ContextMenuItemTag::Copy:
} case ContextMenuItemTag::Copy:
performCopyEditingOperation();
break;
case ContextMenuItemTag::CopyLink:
Expand Down Expand Up @@ -2834,9 +2835,15 @@ static NSStringCompareOptions compareOptionsForFindOptions(WebCore::FindOptions
});
}

RefPtr<TextIndicator> UnifiedPDFPlugin::textIndicatorForSelection(OptionSet<WebCore::TextIndicatorOption> options, WebCore::TextIndicatorPresentationTransition transition)
RefPtr<TextIndicator> UnifiedPDFPlugin::textIndicatorForCurrentSelection(OptionSet<WebCore::TextIndicatorOption> options, WebCore::TextIndicatorPresentationTransition transition)
{
auto selectionBounds = selectionBoundsForFirstPageInDocumentSpace(m_currentSelection);
RetainPtr selection = m_currentSelection;
return textIndicatorForSelection(selection.get(), options, transition);
}

RefPtr<TextIndicator> UnifiedPDFPlugin::textIndicatorForSelection(PDFSelection *selection, OptionSet<WebCore::TextIndicatorOption> options, WebCore::TextIndicatorPresentationTransition transition)
{
auto selectionBounds = selectionBoundsForFirstPageInDocumentSpace(selection);
if (!selectionBounds)
return nullptr;

Expand Down Expand Up @@ -2895,17 +2902,7 @@ static NSStringCompareOptions compareOptionsForFindOptions(WebCore::FindOptions
RetainPtr page = m_documentLayout.pageAtIndex(*pageIndex);
auto pagePoint = convertDown(CoordinateSpace::PDFDocumentLayout, CoordinateSpace::PDFPage, documentPoint, *pageIndex);
RetainPtr lookupSelection = [page selectionForWordAtPoint:pagePoint];
return searchInDictionary(WTFMove(lookupSelection));
}

bool UnifiedPDFPlugin::searchInDictionary(const RetainPtr<PDFSelection>& lookupSelection)
{
RetainPtr scaledString = [lookupSelection attributedStringScaled:(contentScaleFactor())];

if (auto selectionBounds = selectionBoundsForFirstPageInDocumentSpace(lookupSelection))
return showDefinitionForAttributedString(WTFMove(scaledString), *selectionBounds);

return false;
return showDefinitionForSelection(lookupSelection.get());
}

std::optional<FloatRect> UnifiedPDFPlugin::selectionBoundsForFirstPageInDocumentSpace(const RetainPtr<PDFSelection>& selection) const
Expand All @@ -2924,31 +2921,27 @@ static NSStringCompareOptions compareOptionsForFindOptions(WebCore::FindOptions
return { };
}

bool UnifiedPDFPlugin::showDefinitionForAttributedString(RetainPtr<NSAttributedString>&& string, const FloatRect& rectInDocumentSpace)
WebCore::DictionaryPopupInfo UnifiedPDFPlugin::dictionaryPopupInfoForSelection(PDFSelection *selection, WebCore::TextIndicatorPresentationTransition transition)
{
auto pluginRect = convertUp(CoordinateSpace::PDFDocumentLayout, CoordinateSpace::Plugin, rectInDocumentSpace);
auto rectInRootView = convertFromPluginToRootView(enclosingIntRect(pluginRect));
DictionaryPopupInfo dictionaryPopupInfo = PDFPluginBase::dictionaryPopupInfoForSelection(selection, transition);
if (auto textIndicator = textIndicatorForSelection(selection, { }, transition))
dictionaryPopupInfo.textIndicator = textIndicator->data();

DictionaryPopupInfo dictionaryPopupInfo;
dictionaryPopupInfo.origin = rectInRootView.location();
dictionaryPopupInfo.platformData.attributedString = WebCore::AttributedString::fromNSAttributedString(string.get());

// FIXME: Consider merging with textIndicatorForSelection in order to get
// a PDF snapshot instead of an attributed string replica.
TextIndicatorData dataForSelection;
dataForSelection.selectionRectInRootViewCoordinates = rectInRootView;
dataForSelection.textBoundingRectInRootViewCoordinates = rectInRootView;
dataForSelection.presentationTransition = TextIndicatorPresentationTransition::FadeIn;
dictionaryPopupInfo.textIndicator = dataForSelection;
return dictionaryPopupInfo;
}

bool UnifiedPDFPlugin::showDefinitionForSelection(PDFSelection *selection)
{
if (!m_frame || !m_frame->page())
return false;
RefPtr page = m_frame->page();

m_frame->protectedPage()->send(Messages::WebPageProxy::DidPerformDictionaryLookup(dictionaryPopupInfo));
auto dictionaryPopupInfo = dictionaryPopupInfoForSelection(selection, TextIndicatorPresentationTransition::Bounce);
page->send(Messages::WebPageProxy::DidPerformDictionaryLookup(dictionaryPopupInfo));
return true;
}

LookupTextResult UnifiedPDFPlugin::lookupTextAtLocation(const FloatPoint& rootViewPoint, WebHitTestResultData& data)
std::pair<String, RetainPtr<PDFSelection>> UnifiedPDFPlugin::textForImmediateActionHitTestAtPoint(const WebCore::FloatPoint& rootViewPoint, WebHitTestResultData& data)
{
if (existingSelectionContainsPoint(rootViewPoint))
return { selectionString(), m_currentSelection };
Expand Down
8 changes: 4 additions & 4 deletions Source/WebKit/WebProcess/Plugins/PluginView.cpp
Expand Up @@ -631,12 +631,12 @@ bool PluginView::drawsFindOverlay() const
return protectedPlugin()->drawsFindOverlay();
}

RefPtr<TextIndicator> PluginView::textIndicatorForSelection(OptionSet<WebCore::TextIndicatorOption> options, WebCore::TextIndicatorPresentationTransition transition)
RefPtr<TextIndicator> PluginView::textIndicatorForCurrentSelection(OptionSet<WebCore::TextIndicatorOption> options, WebCore::TextIndicatorPresentationTransition transition)
{
if (!m_isInitialized)
return { };

return protectedPlugin()->textIndicatorForSelection(options, transition);
return protectedPlugin()->textIndicatorForCurrentSelection(options, transition);
}

String PluginView::selectionString() const
Expand Down Expand Up @@ -987,9 +987,9 @@ id PluginView::accessibilityHitTest(const WebCore::IntPoint& point) const
return protectedPlugin()->accessibilityHitTest(point);
}

LookupTextResult PluginView::lookupTextAtLocation(const WebCore::FloatPoint& point, WebHitTestResultData& data) const
bool PluginView::performImmediateActionHitTestAtLocation(const WebCore::FloatPoint& point, WebHitTestResultData& data) const
{
return protectedPlugin()->lookupTextAtLocation(point, data);
return protectedPlugin()->performImmediateActionHitTestAtLocation(point, data);
}

WebCore::FloatRect PluginView::rectForSelectionInRootView(PDFSelection *selection) const
Expand Down
11 changes: 3 additions & 8 deletions Source/WebKit/WebProcess/Plugins/PluginView.h
Expand Up @@ -52,14 +52,8 @@ namespace WebKit {
class PDFPluginBase;
class WebFrame;
class WebPage;

struct WebHitTestResultData;

struct LookupTextResult {
String text;
RetainPtr<PDFSelection> correspondingSelection;
};

class PluginView final : public WebCore::PluginViewBase {
public:
static RefPtr<PluginView> create(WebCore::HTMLPlugInElement&, const URL&, const String& contentType, bool shouldUseManualLoader);
Expand Down Expand Up @@ -103,14 +97,15 @@ class PluginView final : public WebCore::PluginViewBase {
bool findString(const String& target, WebCore::FindOptions, unsigned maxMatchCount);
Vector<WebCore::FloatRect> rectsForTextMatchesInRect(const WebCore::IntRect&) const;
bool drawsFindOverlay() const;
RefPtr<WebCore::TextIndicator> textIndicatorForSelection(OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition);
RefPtr<WebCore::TextIndicator> textIndicatorForCurrentSelection(OptionSet<WebCore::TextIndicatorOption>, WebCore::TextIndicatorPresentationTransition);

String selectionString() const;

RefPtr<WebCore::FragmentedSharedBuffer> liveResourceData() const;

bool performDictionaryLookupAtLocation(const WebCore::FloatPoint&);
bool performImmediateActionHitTestAtLocation(const WebCore::FloatPoint&, WebHitTestResultData&) const;

LookupTextResult lookupTextAtLocation(const WebCore::FloatPoint&, WebHitTestResultData&) const;
WebCore::FloatRect rectForSelectionInRootView(PDFSelection *) const;
CGFloat contentScaleFactor() const;

Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/WebProcess/WebPage/FindController.cpp
Expand Up @@ -441,7 +441,7 @@ bool FindController::updateFindIndicator(bool isShowingOverlay, bool shouldAnima
auto [frame, indicator] = [&]() -> std::tuple<RefPtr<Frame>, RefPtr<TextIndicator>> {
#if ENABLE(PDF_PLUGIN)
if (RefPtr pluginView = mainFramePlugIn())
return { m_webPage->mainFrame(), pluginView->textIndicatorForSelection(textIndicatorOptions, presentationTransition) };
return { m_webPage->mainFrame(), pluginView->textIndicatorForCurrentSelection(textIndicatorOptions, presentationTransition) };
#endif
if (RefPtr selectedFrame = frameWithSelection(m_webPage->corePage())) {
if (auto selectedRange = selectedFrame->selection().selection().range(); selectedRange && ImageOverlay::isInsideOverlay(*selectedRange))
Expand Down
3 changes: 0 additions & 3 deletions Source/WebKit/WebProcess/WebPage/WebPage.h
Expand Up @@ -1960,9 +1960,6 @@ class WebPage : public API::ObjectImpl<API::Object::Type::BundlePage>, public IP
void performDictionaryLookupOfCurrentSelection();
void performDictionaryLookupForRange(WebCore::LocalFrame&, const WebCore::SimpleRange&, WebCore::TextIndicatorPresentationTransition);
WebCore::DictionaryPopupInfo dictionaryPopupInfoForRange(WebCore::LocalFrame&, const WebCore::SimpleRange&, WebCore::TextIndicatorPresentationTransition);
#if ENABLE(PDF_PLUGIN)
WebCore::DictionaryPopupInfo dictionaryPopupInfoForSelectionInPDFPlugin(PDFSelection *, PluginView&, WebCore::TextIndicatorPresentationTransition);
#endif

void windowAndViewFramesChanged(const ViewWindowCoordinates&);

Expand Down

0 comments on commit 92a81df

Please sign in to comment.