Changeset 261981 in webkit


Ignore:
Timestamp:
May 20, 2020 6:59:23 PM (4 years ago)
Author:
Darin Adler
Message:

Dictation context should be an object identifier, not a type-punned pointer
https://bugs.webkit.org/show_bug.cgi?id=212174

Reviewed by Anders Carlsson.

Source/WebCore:

  • Headers.cmake: Added DictationContext.h.
  • Sources.txt: Removed DictationAlternative.cpp.
  • WebCore.xcodeproj/project.pbxproj: Added DictationContext.h, removed DictationAlternative.cpp.
  • dom/DocumentMarker.h: Use DictationContext instead of uint64_t.
  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::timerFired): Ditto.

  • editing/AlternativeTextController.h: Ditto.
  • editing/DictationAlternative.h: Use DictationContext instead of uint64_t, but also

use CharacterRange rather than two "unsigned" values. Also convert into a simple
struct without constructors; don't really need those.

  • editing/DictationAlternative.cpp: Removed.
  • editing/DictationCommand.cpp:

(WebCore::DictationCommand::collectDictationAlternativesInRange): Updated for
changes to DictationAlternative.

  • editing/DictationContext.h: Added.
  • editing/Editor.h: Forward declare DictationAlternative rather than including

its header.

  • editing/cocoa/AlternativeTextContextController.h: Use a pair of maps to bind NSTextAlternatives

objects to object identifiers. Remove unnecessary explicit constructor and destructor. Also removed
unnecessary use of WTF_MAKE_FAST_ALLOCATED, since this is only used as a data member of another
class. Removed unused invalidContext constant.

  • editing/cocoa/AlternativeTextContextController.mm: Removed the unneeded includes.

This file treats NSTextAlternatives as an opaque Objective-C type and so doesn't need
any details of that class.
(WebCore::AlternativeTextContextController::addAlternatives): Changed to return a
DictationContext and use two maps, using HashMap::ensure to avoid double hashing.
(WebCore::AlternativeTextContextController::alternativesForContext): Added a null check.
(WebCore::AlternativeTextContextController::removeAlternativesForContext): Ditto. Also
updated to remove from both maps.
(WebCore::AlternativeTextContextController::clear): Clear both maps.

  • editing/cocoa/AlternativeTextUIController.h: Since this header is used only from Objective-C,

removed use of OBJC_CLASS. Put showAlternatives inside a macOS-specific block. Use DictationContext
instead of uint64_t.

  • editing/cocoa/AlternativeTextUIController.mm:

(WebCore::AlternativeTextUIController::addAlternatives): Use DictationContext instead of uint64_t.
(WebCore::AlternativeTextUIController::alternativesForContext): Ditto.
(WebCore::AlternativeTextUIController::showAlternatives): Ditto.
(WebCore::AlternativeTextUIController::handleAcceptedAlternative): Ditto.
(WebCore::AlternativeTextUIController::removeAlternatives): Ditto.

  • page/AlternativeTextClient.h: Use DictationContext instead of uint64_t.

Source/WebKit:

  • Scripts/webkit/messages.py: Added DictationContext to the list of types that are

not C++ classes.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DictationAlternative>::encode): Updated for change to
DictationAlternative structure.
(IPC::ArgumentCoder<DictationAlternative>::decode): Ditto.

  • UIProcess/Cocoa/PageClientImplCocoa.h: Use DictationContext instead of uint64_t.
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::addDictationAlternatives): Ditto.
(WebKit::PageClientImplCocoa::removeDictationAlternatives): Ditto.
(WebKit::PageClientImplCocoa::dictationAlternatives): Ditto.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::insertDictatedTextAsync): Ditto.

  • UIProcess/PageClient.h: Ditto.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showDictationAlternativeUI): Ditto.
(WebKit::WebPageProxy::removeDictationAlternatives): Ditto.
(WebKit::WebPageProxy::dictationAlternatives): Ditto.

  • UIProcess/WebPageProxy.h: Ditto.
  • UIProcess/WebPageProxy.messages.in: Ditto.
  • UIProcess/ios/PageClientImplIOS.h: Ditto.
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::showDictationAlternativeUI): Ditto.

  • UIProcess/mac/PageClientImplMac.h: Ditto.
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::showDictationAlternativeUI): Ditto.

  • UIProcess/mac/WebPageProxyMac.mm: Removed unneeded include of

DictationAlternative.h.

  • WebProcess/WebCoreSupport/WebAlternativeTextClient.h: Use DictationContext

instead of uint64_t. Also marked class final and made everything private.

  • WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:

(WebKit::WebAlternativeTextClient::removeDictationAlternatives): Ditto.
(WebKit::WebAlternativeTextClient::showDictationAlternativeUI): Ditto.
(WebKit::WebAlternativeTextClient::dictationAlternatives): Ditto.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebAlternativeTextClient.h: Use DictationContext instead of uint64_t.
  • WebCoreSupport/WebAlternativeTextClient.mm:

(WebAlternativeTextClient::removeDictationAlternatives): Ditto.
(WebAlternativeTextClient::showDictationAlternativeUI): Ditto.
(WebAlternativeTextClient::dictationAlternatives): Ditto.

  • WebView/WebHTMLView.mm: Added include of DictationAlternative.h, now needed because

it's forward declared in Editor.h.

  • WebView/WebView.mm: Ditto.

(-[WebView _getWebCoreDictationAlternatives:fromTextAlternatives:]): Updated for change
to DictationAlternative.
(-[WebView _showDictationAlternativeUI:forDictationContext:]): Use DictationContext
instead of uint64_t.
(-[WebView _removeDictationAlternatives:]): Ditto.
(-[WebView _dictationAlternatives:]): Ditto.

  • WebView/WebViewInternal.h: Updated for the above.
Location:
trunk/Source
Files:
38 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r261980 r261981  
     12020-05-20  Darin Adler  <darin@apple.com>
     2
     3        Dictation context should be an object identifier, not a type-punned pointer
     4        https://bugs.webkit.org/show_bug.cgi?id=212174
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * Headers.cmake: Added DictationContext.h.
     9        * Sources.txt: Removed DictationAlternative.cpp.
     10        * WebCore.xcodeproj/project.pbxproj: Added DictationContext.h, removed DictationAlternative.cpp.
     11
     12        * dom/DocumentMarker.h: Use DictationContext instead of uint64_t.
     13        * editing/AlternativeTextController.cpp:
     14        (WebCore::AlternativeTextController::timerFired): Ditto.
     15        * editing/AlternativeTextController.h: Ditto.
     16
     17        * editing/DictationAlternative.h: Use DictationContext instead of uint64_t, but also
     18        use CharacterRange rather than two "unsigned" values. Also convert into a simple
     19        struct without constructors; don't really need those.
     20
     21        * editing/DictationAlternative.cpp: Removed.
     22
     23        * editing/DictationCommand.cpp:
     24        (WebCore::DictationCommand::collectDictationAlternativesInRange): Updated for
     25        changes to DictationAlternative.
     26
     27        * editing/DictationContext.h: Added.
     28
     29        * editing/Editor.h: Forward declare DictationAlternative rather than including
     30        its header.
     31
     32        * editing/cocoa/AlternativeTextContextController.h: Use a pair of maps to bind NSTextAlternatives
     33        objects to object identifiers. Remove unnecessary explicit constructor and destructor. Also removed
     34        unnecessary use of WTF_MAKE_FAST_ALLOCATED, since this is only used as a data member of another
     35        class. Removed unused invalidContext constant.
     36        * editing/cocoa/AlternativeTextContextController.mm: Removed the unneeded includes.
     37        This file treats NSTextAlternatives as an opaque Objective-C type and so doesn't need
     38        any details of that class.
     39        (WebCore::AlternativeTextContextController::addAlternatives): Changed to return a
     40        DictationContext and use two maps, using HashMap::ensure to avoid double hashing.
     41        (WebCore::AlternativeTextContextController::alternativesForContext): Added a null check.
     42        (WebCore::AlternativeTextContextController::removeAlternativesForContext): Ditto. Also
     43        updated to remove from both maps.
     44        (WebCore::AlternativeTextContextController::clear): Clear both maps.
     45
     46        * editing/cocoa/AlternativeTextUIController.h: Since this header is used only from Objective-C,
     47        removed use of OBJC_CLASS. Put showAlternatives inside a macOS-specific block. Use DictationContext
     48        instead of uint64_t.
     49        * editing/cocoa/AlternativeTextUIController.mm:
     50        (WebCore::AlternativeTextUIController::addAlternatives): Use DictationContext instead of uint64_t.
     51        (WebCore::AlternativeTextUIController::alternativesForContext): Ditto.
     52        (WebCore::AlternativeTextUIController::showAlternatives): Ditto.
     53        (WebCore::AlternativeTextUIController::handleAcceptedAlternative): Ditto.
     54        (WebCore::AlternativeTextUIController::removeAlternatives): Ditto.
     55
     56        * page/AlternativeTextClient.h: Use DictationContext instead of uint64_t.
     57
    1582020-05-20  Zalan Bujtas  <zalan@apple.com>
    259
  • trunk/Source/WebCore/Headers.cmake

    r261791 r261981  
    496496    editing/CompositionUnderline.h
    497497    editing/DictationAlternative.h
     498    editing/DictationContext.h
    498499    editing/DictionaryPopupInfo.h
    499500    editing/EditAction.h
  • trunk/Source/WebCore/Sources.txt

    r261793 r261981  
    10411041editing/DeleteFromTextNodeCommand.cpp
    10421042editing/DeleteSelectionCommand.cpp
    1043 editing/DictationAlternative.cpp
    10441043editing/DictationCommand.cpp
    10451044editing/EditAction.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r261883 r261981  
    26842684                9382AAB40D8C386100F357A6 /* NodeWithIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 9382AAB10D8C386100F357A6 /* NodeWithIndex.h */; };
    26852685                9382DF5810A8D5C900925652 /* ColorSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 9382DF5710A8D5C900925652 /* ColorSpace.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2686                938430B42475DE40003F9617 /* DictationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 938430B22475DE3F003F9617 /* DictationContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
    26862687                938E65F109F09840008A48EC /* JSHTMLElementWrapperFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 938E65F009F09840008A48EC /* JSHTMLElementWrapperFactory.h */; };
    26872688                938E666209F09B87008A48EC /* JSHTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 938E666109F09B87008A48EC /* JSHTMLCanvasElement.h */; };
     
    1089410895                9382AAB10D8C386100F357A6 /* NodeWithIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeWithIndex.h; sourceTree = "<group>"; };
    1089510896                9382DF5710A8D5C900925652 /* ColorSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorSpace.h; sourceTree = "<group>"; };
     10897                938430B22475DE3F003F9617 /* DictationContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DictationContext.h; sourceTree = "<group>"; };
    1089610898                938E65F009F09840008A48EC /* JSHTMLElementWrapperFactory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JSHTMLElementWrapperFactory.h; path = DerivedSources/WebCore/JSHTMLElementWrapperFactory.h; sourceTree = BUILT_PRODUCTS_DIR; };
    1089710899                938E65F609F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JSHTMLElementWrapperFactory.cpp; path = DerivedSources/WebCore/JSHTMLElementWrapperFactory.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
     
    1432814330                CEBB8C3120786DCB00039547 /* FetchIdioms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FetchIdioms.h; sourceTree = "<group>"; };
    1432914331                CEBB8C3220786DCB00039547 /* FetchIdioms.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FetchIdioms.cpp; sourceTree = "<group>"; };
    14330                 CECADFC2153778FF00E37068 /* DictationAlternative.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DictationAlternative.cpp; sourceTree = "<group>"; };
    1433114332                CECADFC3153778FF00E37068 /* DictationAlternative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DictationAlternative.h; sourceTree = "<group>"; };
    1433214333                CECADFC4153778FF00E37068 /* DictationCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DictationCommand.cpp; sourceTree = "<group>"; };
     
    2195821959                                93309D91099E64910056E581 /* DeleteSelectionCommand.cpp */,
    2195921960                                93309D92099E64910056E581 /* DeleteSelectionCommand.h */,
    21960                                 CECADFC2153778FF00E37068 /* DictationAlternative.cpp */,
    2196121961                                CECADFC3153778FF00E37068 /* DictationAlternative.h */,
    2196221962                                CECADFC4153778FF00E37068 /* DictationCommand.cpp */,
    2196321963                                CECADFC5153778FF00E37068 /* DictationCommand.h */,
     21964                                938430B22475DE3F003F9617 /* DictationContext.h */,
    2196421965                                2D5646AF1B8F8493003C4994 /* DictionaryPopupInfo.h */,
    2196521966                                F49E98E421DEE6C1009AE55E /* EditAction.cpp */,
     
    3025330254                                CECADFC9153778FF00E37068 /* DictationCommand.h in Headers */,
    3025430255                                D0BD4F5D1408850F006839B6 /* DictationCommandIOS.h in Headers */,
     30256                                938430B42475DE40003F9617 /* DictationContext.h in Headers */,
    3025530257                                937FF3D51A1012D6008EBA31 /* DictionaryLookup.h in Headers */,
    3025630258                                2D5646B01B8F8493003C4994 /* DictionaryPopupInfo.h in Headers */,
  • trunk/Source/WebCore/dom/DocumentMarker.h

    r259575 r261981  
    2121#pragma once
    2222
     23#include "DictationContext.h"
    2324#include "SimpleRange.h"
    2425#include <wtf/Forward.h>
     
    8687
    8788    struct DictationData {
    88         uint64_t context;
     89        DictationContext context;
    8990        String originalText;
    9091    };
  • trunk/Source/WebCore/editing/AlternativeTextController.cpp

    r261018 r261981  
    287287        if (!m_rangeWithAlternative)
    288288            return;
    289         uint64_t dictationContext = WTF::get<AlternativeDictationContext>(m_details);
     289        auto dictationContext = WTF::get<DictationContext>(m_details);
    290290        if (!dictationContext)
    291291            return;
     
    293293        m_isActive = true;
    294294        if (!boundingBox.isEmpty()) {
    295             if (AlternativeTextClient* client = alternativeTextClient())
     295            if (auto client = alternativeTextClient())
    296296                client->showDictationAlternativeUI(boundingBox, dictationContext);
    297297        }
  • trunk/Source/WebCore/editing/AlternativeTextController.h

    r260831 r261981  
    106106#if USE(AUTOCORRECTION_PANEL)
    107107    using AutocorrectionReplacement = String;
    108     using AlternativeDictationContext = uint64_t;
    109108
    110109    struct AlternativeTextInfo {
     
    113112        AlternativeTextType type;
    114113        String originalText;
    115         Variant<AutocorrectionReplacement, AlternativeDictationContext> details;
     114        Variant<AutocorrectionReplacement, DictationContext> details;
    116115    };
    117116
     
    135134    AlternativeTextType m_type;
    136135    String m_originalText;
    137     Variant<AutocorrectionReplacement, AlternativeDictationContext> m_details;
     136    Variant<AutocorrectionReplacement, DictationContext> m_details;
    138137
    139138    String m_originalStringForLastDeletedAutocorrection;
  • trunk/Source/WebCore/editing/DictationAlternative.h

    r208646 r261981  
    2626#pragma once
    2727
    28 #include <stdint.h>
     28#include "CharacterRange.h"
     29#include "DictationContext.h"
    2930
    3031namespace WebCore {
     32
    3133struct DictationAlternative {
    32     WEBCORE_EXPORT DictationAlternative(unsigned start, unsigned length, uint64_t context);
    33     WEBCORE_EXPORT DictationAlternative();
    34     unsigned rangeStart;
    35     unsigned rangeLength;
    36 
    37     // This need to be 64 bit becauese it actually holds a pointer in WebKit.
    38     uint64_t dictationContext;
     34    CharacterRange range;
     35    DictationContext context;
    3936};
    4037
  • trunk/Source/WebCore/editing/DictationCommand.cpp

    r259575 r261981  
    6666        auto& markerController = textNode.document().markers();
    6767        for (auto& alternative : m_alternatives) {
    68             DocumentMarker::DictationData data { alternative.dictationContext, textToBeInserted.substring(alternative.rangeStart, alternative.rangeLength) };
    69             markerController.addMarker(textNode, alternative.rangeStart + offsetOfInsertion, alternative.rangeLength, DocumentMarker::DictationAlternatives, WTFMove(data));
    70             markerController.addMarker(textNode, alternative.rangeStart + offsetOfInsertion, alternative.rangeLength, DocumentMarker::SpellCheckingExemption);
     68            DocumentMarker::DictationData data { alternative.context, textToBeInserted.substring(alternative.range.location, alternative.range.length) };
     69            markerController.addMarker(textNode, alternative.range.location + offsetOfInsertion, alternative.range.length, DocumentMarker::DictationAlternatives, WTFMove(data));
     70            markerController.addMarker(textNode, alternative.range.location + offsetOfInsertion, alternative.range.length, DocumentMarker::SpellCheckingExemption);
    7171        }
    7272    }
     
    133133{
    134134    for (auto& alternative : m_alternatives) {
    135         if (alternative.rangeStart >= rangeStart && (alternative.rangeStart + alternative.rangeLength) <= rangeStart + rangeLength)
    136             alternatives.append(DictationAlternative(alternative.rangeStart - rangeStart, alternative.rangeLength, alternative.dictationContext));
     135        if (alternative.range.location >= rangeStart && (alternative.range.location + alternative.range.length) <= rangeStart + rangeLength)
     136            alternatives.append({ { alternative.range.location - rangeStart, alternative.range.length }, alternative.context });
    137137    }
    138138
  • trunk/Source/WebCore/editing/DictationContext.h

    r261980 r261981  
    11/*
    2  * Copyright (C) 2012 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #include "config.h"
    27 #include "DictationAlternative.h"
     26#pragma once
     27
     28#include <wtf/ObjectIdentifier.h>
    2829
    2930namespace WebCore {
    3031
    31 DictationAlternative::DictationAlternative(unsigned start, unsigned length, uint64_t context)
    32     : rangeStart(start)
    33     , rangeLength(length)
    34     , dictationContext(context)
    35 {
    36 }
    37    
    38 DictationAlternative::DictationAlternative()
    39     : rangeStart(0)
    40     , rangeLength(0)
    41     , dictationContext(0)
    42 {
    43 }
     32enum class DictationContextType { };
     33using DictationContext = ObjectIdentifier<DictationContextType>;
    4434
    45 }
     35} // namespace WebCore
  • trunk/Source/WebCore/editing/Editor.h

    r261897 r261981  
    2727
    2828#include "CompositionUnderline.h"
    29 #include "DictationAlternative.h"
    3029#include "DocumentMarker.h"
    3130#include "EditAction.h"
     
    8786
    8887struct CompositionHighlight;
     88struct DictationAlternative;
    8989struct FontAttributes;
    9090struct PasteboardPlainText;
  • trunk/Source/WebCore/editing/cocoa/AlternativeTextContextController.h

    r261232 r261981  
    2424 */
    2525
    26 #import <wtf/Forward.h>
     26#import "DictationContext.h"
    2727#import <wtf/HashMap.h>
     28#import <wtf/RetainPtr.h>
    2829
    2930@class NSTextAlternatives;
     
    3233
    3334class AlternativeTextContextController {
    34     WTF_MAKE_FAST_ALLOCATED;
    3535public:
    36     WEBCORE_EXPORT AlternativeTextContextController();
    37     WEBCORE_EXPORT ~AlternativeTextContextController();
    38 
    39     uint64_t addAlternatives(NSTextAlternatives *);
    40 
     36    DictationContext addAlternatives(NSTextAlternatives *);
     37    void removeAlternativesForContext(DictationContext);
    4138    void clear();
    4239
    43     NSTextAlternatives *alternativesForContext(uint64_t context);
    44 
    45     void removeAlternativesForContext(uint64_t context);
    46 
    47     static constexpr uint64_t invalidContext = 0;
     40    NSTextAlternatives *alternativesForContext(DictationContext) const;
    4841
    4942private:
    50     HashMap<uint64_t, RetainPtr<NSTextAlternatives>> m_alternativesObjectMap;
     43    HashMap<DictationContext, RetainPtr<NSTextAlternatives>> m_alternatives;
     44    HashMap<RetainPtr<NSTextAlternatives>, DictationContext> m_contexts;
    5145};
    5246
  • trunk/Source/WebCore/editing/cocoa/AlternativeTextContextController.mm

    r261232 r261981  
    2727#import "AlternativeTextContextController.h"
    2828
    29 #import <wtf/RetainPtr.h>
    30 
    31 #if USE(APPKit)
    32 #import <AppKit/NSTextAlternatives.h>
    33 #elif PLATFORM(IOS_FAMILY)
    34 #import <pal/spi/ios/UIKitSPI.h>
    35 #endif
    36 
    3729namespace WebCore {
    3830
    39 AlternativeTextContextController::AlternativeTextContextController() = default;
    40 
    41 AlternativeTextContextController::~AlternativeTextContextController() = default;
    42 
    43 uint64_t AlternativeTextContextController::addAlternatives(NSTextAlternatives *alternatives)
     31DictationContext AlternativeTextContextController::addAlternatives(NSTextAlternatives *alternatives)
    4432{
    45     // FIXME: Turning a pointer into an integer is a flawed algorithm to generate a unique ID. Can lead to aliasing to a new object that happens to occupy the same memory as an old one.
    46     uint64_t context = reinterpret_cast<uint64_t>(alternatives);
    47     if (!context)
    48         return invalidContext;
    49     if (alternativesForContext(context))
     33    if (!alternatives)
     34        return { };
     35    return m_contexts.ensure(alternatives, [&] {
     36        auto context = DictationContext::generate();
     37        m_alternatives.add(context, alternatives);
    5038        return context;
    51     auto result = m_alternativesObjectMap.add(context, alternatives);
    52     return result.isNewEntry ? context : invalidContext;
     39    }).iterator->value;
    5340}
    5441
    55 NSTextAlternatives *AlternativeTextContextController::alternativesForContext(uint64_t context)
     42NSTextAlternatives *AlternativeTextContextController::alternativesForContext(DictationContext context) const
    5643{
    57     return m_alternativesObjectMap.get(context).get();
     44    if (!context)
     45        return nil;
     46    return m_alternatives.get(context).get();
    5847}
    5948
    60 void AlternativeTextContextController::removeAlternativesForContext(uint64_t context)
     49void AlternativeTextContextController::removeAlternativesForContext(DictationContext context)
    6150{
    62     m_alternativesObjectMap.remove(context);
     51    if (!context)
     52        return;
     53    if (auto alternatives = m_alternatives.take(context))
     54        m_contexts.remove(alternatives);
    6355}
    6456
    6557void AlternativeTextContextController::clear()
    6658{
    67     m_alternativesObjectMap.clear();
     59    m_alternatives.clear();
     60    m_contexts.clear();
    6861}
    6962
  • trunk/Source/WebCore/editing/cocoa/AlternativeTextUIController.h

    r261232 r261981  
    2525
    2626#import "AlternativeTextContextController.h"
    27 #import <wtf/RetainPtr.h>
    2827
    29 OBJC_CLASS NSTextAlternatives;
    30 OBJC_CLASS NSView;
     28@class NSView;
    3129
    3230namespace WebCore {
     
    3735    WTF_MAKE_FAST_ALLOCATED;
    3836public:
    39     AlternativeTextUIController() = default;
    40 
    41     WEBCORE_EXPORT uint64_t addAlternatives(NSTextAlternatives *); // Returns a context ID.
    42 
     37    WEBCORE_EXPORT DictationContext addAlternatives(NSTextAlternatives *);
     38    WEBCORE_EXPORT void removeAlternatives(DictationContext);
    4339    WEBCORE_EXPORT void clear();
    4440
     41    WEBCORE_EXPORT Vector<String> alternativesForContext(DictationContext);
     42
     43#if USE(APPKIT)
    4544    using AcceptanceHandler = void (^)(NSString *);
    46     WEBCORE_EXPORT void showAlternatives(NSView *, const FloatRect& boundingBoxOfPrimaryString, uint64_t context, AcceptanceHandler);
    47 
    48     void WEBCORE_EXPORT removeAlternatives(uint64_t context);
    49 
    50     WEBCORE_EXPORT Vector<String> alternativesForContext(uint64_t context);
     45    WEBCORE_EXPORT void showAlternatives(NSView *, const FloatRect& boundingBoxOfPrimaryString, DictationContext, AcceptanceHandler);
     46#endif
    5147
    5248private:
    5349#if USE(APPKIT)
    54     void handleAcceptedAlternative(NSString *, uint64_t context, NSTextAlternatives *);
     50    void handleAcceptedAlternative(NSString *, DictationContext, NSTextAlternatives *);
    5551    void dismissAlternatives();
     52#endif
    5653
     54    AlternativeTextContextController m_contextController;
     55#if USE(APPKIT)
    5756    RetainPtr<NSView> m_view;
    5857#endif
    59     AlternativeTextContextController m_contextController;
    6058};
    6159
  • trunk/Source/WebCore/editing/cocoa/AlternativeTextUIController.mm

    r261232 r261981  
    4242namespace WebCore {
    4343
    44 uint64_t AlternativeTextUIController::addAlternatives(NSTextAlternatives *alternatives)
     44DictationContext AlternativeTextUIController::addAlternatives(NSTextAlternatives *alternatives)
    4545{
    4646    return m_contextController.addAlternatives(alternatives);
    4747}
    4848
    49 Vector<String> AlternativeTextUIController::alternativesForContext(uint64_t context)
     49Vector<String> AlternativeTextUIController::alternativesForContext(DictationContext context)
    5050{
    5151    return makeVector<String>(m_contextController.alternativesForContext(context).alternativeStrings);
     
    5757}
    5858
    59 void AlternativeTextUIController::showAlternatives(NSView *view, const FloatRect& boundingBoxOfPrimaryString, uint64_t context, AcceptanceHandler acceptanceHandler)
     59#if USE(APPKIT)
     60
     61void AlternativeTextUIController::showAlternatives(NSView *view, const FloatRect& boundingBoxOfPrimaryString, DictationContext context, AcceptanceHandler acceptanceHandler)
    6062{
    61 #if USE(APPKIT)
    6263    dismissAlternatives();
    6364    if (!view)
     
    7677        }
    7778    }];
    78 #else
    79     UNUSED_PARAM(view);
    80     UNUSED_PARAM(boundingBoxOfPrimaryString);
    81     UNUSED_PARAM(context);
    82     UNUSED_PARAM(acceptanceHandler);
    83 #endif
    8479}
    8580
    86 #if USE(APPKIT)
    87 
    88 void AlternativeTextUIController::handleAcceptedAlternative(NSString *acceptedAlternative, uint64_t context, NSTextAlternatives *alternatives)
     81void AlternativeTextUIController::handleAcceptedAlternative(NSString *acceptedAlternative, DictationContext context, NSTextAlternatives *alternatives)
    8982{
    9083    [alternatives noteSelectedAlternativeString:acceptedAlternative];
     
    10194#endif
    10295
    103 void AlternativeTextUIController::removeAlternatives(uint64_t context)
     96void AlternativeTextUIController::removeAlternatives(DictationContext context)
    10497{
    10598    m_contextController.removeAlternativesForContext(context);
  • trunk/Source/WebCore/page/AlternativeTextClient.h

    r253048 r261981  
    2626#pragma once
    2727
     28#include "DictationContext.h"
    2829#include "FloatRect.h"
    2930#include <wtf/Vector.h>
     
    6162#endif
    6263#if USE(DICTATION_ALTERNATIVES)
    63     virtual void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext) = 0;
    64     virtual void removeDictationAlternatives(uint64_t dictationContext) = 0;
    65     virtual Vector<String> dictationAlternatives(uint64_t dictationContext) = 0;
     64    virtual void showDictationAlternativeUI(const FloatRect& boundingBoxOfDictatedText, DictationContext) = 0;
     65    virtual void removeDictationAlternatives(DictationContext) = 0;
     66    virtual Vector<String> dictationAlternatives(DictationContext) = 0;
    6667#endif
    6768};
  • trunk/Source/WebKit/ChangeLog

    r261978 r261981  
     12020-05-20  Darin Adler  <darin@apple.com>
     2
     3        Dictation context should be an object identifier, not a type-punned pointer
     4        https://bugs.webkit.org/show_bug.cgi?id=212174
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * Scripts/webkit/messages.py: Added DictationContext to the list of types that are
     9        not C++ classes.
     10
     11        * Shared/WebCoreArgumentCoders.cpp:
     12        (IPC::ArgumentCoder<DictationAlternative>::encode): Updated for change to
     13        DictationAlternative structure.
     14        (IPC::ArgumentCoder<DictationAlternative>::decode): Ditto.
     15
     16        * UIProcess/Cocoa/PageClientImplCocoa.h: Use DictationContext instead of uint64_t.
     17        * UIProcess/Cocoa/PageClientImplCocoa.mm:
     18        (WebKit::PageClientImplCocoa::addDictationAlternatives): Ditto.
     19        (WebKit::PageClientImplCocoa::removeDictationAlternatives): Ditto.
     20        (WebKit::PageClientImplCocoa::dictationAlternatives): Ditto.
     21        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     22        (WebKit::WebPageProxy::insertDictatedTextAsync): Ditto.
     23        * UIProcess/PageClient.h: Ditto.
     24        * UIProcess/WebPageProxy.cpp:
     25        (WebKit::WebPageProxy::showDictationAlternativeUI): Ditto.
     26        (WebKit::WebPageProxy::removeDictationAlternatives): Ditto.
     27        (WebKit::WebPageProxy::dictationAlternatives): Ditto.
     28        * UIProcess/WebPageProxy.h: Ditto.
     29        * UIProcess/WebPageProxy.messages.in: Ditto.
     30        * UIProcess/ios/PageClientImplIOS.h: Ditto.
     31        * UIProcess/ios/PageClientImplIOS.mm:
     32        (WebKit::PageClientImpl::showDictationAlternativeUI): Ditto.
     33        * UIProcess/mac/PageClientImplMac.h: Ditto.
     34        * UIProcess/mac/PageClientImplMac.mm:
     35        (WebKit::PageClientImpl::showDictationAlternativeUI): Ditto.
     36
     37        * UIProcess/mac/WebPageProxyMac.mm: Removed unneeded include of
     38        DictationAlternative.h.
     39
     40        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: Use DictationContext
     41        instead of uint64_t. Also marked class final and made everything private.
     42        * WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:
     43        (WebKit::WebAlternativeTextClient::removeDictationAlternatives): Ditto.
     44        (WebKit::WebAlternativeTextClient::showDictationAlternativeUI): Ditto.
     45        (WebKit::WebAlternativeTextClient::dictationAlternatives): Ditto.
     46
    1472020-05-20  Tim Horton  <timothy_horton@apple.com>
    248
  • trunk/Source/WebKit/Scripts/webkit/messages.py

    r261900 r261981  
    207207        'String',
    208208        'WebCore::ColorSpace',
     209        'WebCore::DictationContext',
    209210        'WebCore::DocumentIdentifier',
    210211        'WebCore::DocumentOrWorkerIdentifier',
  • trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp

    r261848 r261981  
    19631963#endif // USE(LIBWPE)
    19641964
    1965 void ArgumentCoder<DictationAlternative>::encode(Encoder& encoder, const DictationAlternative& dictationAlternative)
    1966 {
    1967     encoder << dictationAlternative.rangeStart;
    1968     encoder << dictationAlternative.rangeLength;
    1969     encoder << dictationAlternative.dictationContext;
     1965void ArgumentCoder<DictationAlternative>::encode(Encoder& encoder, const DictationAlternative& alternative)
     1966{
     1967    encoder << alternative.range << alternative.context;
    19701968}
    19711969
    19721970Optional<DictationAlternative> ArgumentCoder<DictationAlternative>::decode(Decoder& decoder)
    19731971{
    1974     Optional<unsigned> rangeStart;
    1975     decoder >> rangeStart;
    1976     if (!rangeStart)
    1977         return WTF::nullopt;
    1978    
    1979     Optional<unsigned> rangeLength;
    1980     decoder >> rangeLength;
    1981     if (!rangeLength)
    1982         return WTF::nullopt;
    1983    
    1984     Optional<uint64_t> dictationContext;
    1985     decoder >> dictationContext;
    1986     if (!dictationContext)
    1987         return WTF::nullopt;
    1988    
    1989     return {{ WTFMove(*rangeStart), WTFMove(*rangeLength), WTFMove(*dictationContext) }};
     1972    Optional<CharacterRange> range;
     1973    decoder >> range;
     1974    if (!range)
     1975        return WTF::nullopt;
     1976
     1977    Optional<DictationContext> context;
     1978    decoder >> context;
     1979    if (!context)
     1980        return WTF::nullopt;
     1981
     1982    return {{ *range, *context }};
    19901983}
    19911984
  • trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h

    r261232 r261981  
    6363#endif
    6464
    65     uint64_t addDictationAlternatives(NSTextAlternatives *) final;
    66     void removeDictationAlternatives(uint64_t dictationContext) final;
    67     Vector<String> dictationAlternatives(uint64_t dictationContext) final;
     65    WebCore::DictationContext addDictationAlternatives(NSTextAlternatives *) final;
     66    void removeDictationAlternatives(WebCore::DictationContext) final;
     67    Vector<String> dictationAlternatives(WebCore::DictationContext) final;
    6868
    6969protected:
  • trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm

    r261833 r261981  
    9797}
    9898
    99 uint64_t PageClientImplCocoa::addDictationAlternatives(NSTextAlternatives *alternatives)
     99WebCore::DictationContext PageClientImplCocoa::addDictationAlternatives(NSTextAlternatives *alternatives)
    100100{
    101101    return m_alternativeTextUIController->addAlternatives(alternatives);
    102102}
    103103
    104 void PageClientImplCocoa::removeDictationAlternatives(uint64_t dictationContext)
     104void PageClientImplCocoa::removeDictationAlternatives(WebCore::DictationContext dictationContext)
    105105{
    106106    m_alternativeTextUIController->removeAlternatives(dictationContext);
    107107}
    108108
    109 Vector<String> PageClientImplCocoa::dictationAlternatives(uint64_t dictationContext)
     109Vector<String> PageClientImplCocoa::dictationAlternatives(WebCore::DictationContext dictationContext)
    110110{
    111111    return m_alternativeTextUIController->alternativesForContext(dictationContext);
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r261617 r261981  
    250250    Vector<DictationAlternative> dictationAlternatives;
    251251    for (const auto& alternativeWithRange : dictationAlternativesWithRange) {
    252         uint64_t dictationContext = pageClient().addDictationAlternatives(alternativeWithRange.alternatives.get());
    253         if (dictationContext)
    254             dictationAlternatives.append(DictationAlternative(alternativeWithRange.range.location, alternativeWithRange.range.length, dictationContext));
     252        if (auto context = pageClient().addDictationAlternatives(alternativeWithRange.alternatives.get()))
     253            dictationAlternatives.append({ alternativeWithRange.range, context });
    255254    }
    256255
  • trunk/Source/WebKit/UIProcess/PageClient.h

    r261802 r261981  
    362362
    363363#if USE(DICTATION_ALTERNATIVES)
    364     virtual uint64_t addDictationAlternatives(NSTextAlternatives *) = 0;
    365     virtual void removeDictationAlternatives(uint64_t dictationContext) = 0;
    366     virtual void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext) = 0;
    367     virtual Vector<String> dictationAlternatives(uint64_t dictationContext) = 0;
     364    virtual WebCore::DictationContext addDictationAlternatives(NSTextAlternatives *) = 0;
     365    virtual void removeDictationAlternatives(WebCore::DictationContext) = 0;
     366    virtual void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext) = 0;
     367    virtual Vector<String> dictationAlternatives(WebCore::DictationContext) = 0;
    368368#endif
    369369
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r261948 r261981  
    85358535#if USE(DICTATION_ALTERNATIVES)
    85368536
    8537 void WebPageProxy::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext)
     8537void WebPageProxy::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext dictationContext)
    85388538{
    85398539    pageClient().showDictationAlternativeUI(boundingBoxOfDictatedText, dictationContext);
    85408540}
    85418541
    8542 void WebPageProxy::removeDictationAlternatives(uint64_t dictationContext)
     8542void WebPageProxy::removeDictationAlternatives(WebCore::DictationContext dictationContext)
    85438543{
    85448544    pageClient().removeDictationAlternatives(dictationContext);
    85458545}
    85468546
    8547 void WebPageProxy::dictationAlternatives(uint64_t dictationContext, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
     8547void WebPageProxy::dictationAlternatives(WebCore::DictationContext dictationContext, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
    85488548{
    85498549    completionHandler(pageClient().dictationAlternatives(dictationContext));
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r261966 r261981  
    7676#include <WebCore/Color.h>
    7777#include <WebCore/DiagnosticLoggingClient.h>
     78#include <WebCore/DictationContext.h>
    7879#include <WebCore/DragActions.h>
    7980#include <WebCore/EventTrackingRegions.h>
     
    21292130
    21302131#if USE(DICTATION_ALTERNATIVES)
    2131     void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext);
    2132     void removeDictationAlternatives(uint64_t dictationContext);
    2133     void dictationAlternatives(uint64_t dictationContext, CompletionHandler<void(Vector<String>&&)>&&);
     2132    void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext);
     2133    void removeDictationAlternatives(WebCore::DictationContext);
     2134    void dictationAlternatives(WebCore::DictationContext, CompletionHandler<void(Vector<String>&&)>&&);
    21342135#endif
    21352136
  • trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in

    r261829 r261981  
    388388
    389389#if USE(DICTATION_ALTERNATIVES)
    390     ShowDictationAlternativeUI(WebCore::FloatRect boundingBoxOfDictatedText, uint64_t dictationContext)
    391     RemoveDictationAlternatives(uint64_t dictationContext)
    392     DictationAlternatives(uint64_t dictationContext) -> (Vector<String> alternatives) Synchronous
     390    ShowDictationAlternativeUI(WebCore::FloatRect boundingBoxOfDictatedText, WebCore::DictationContext dictationContext)
     391    RemoveDictationAlternatives(WebCore::DictationContext dictationContext)
     392    DictationAlternatives(WebCore::DictationContext dictationContext) -> (Vector<String> alternatives) Synchronous
    393393#endif
    394394
  • trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h

    r261640 r261981  
    4646enum class UndoOrRedo : bool;
    4747
    48 class PageClientImpl : public PageClientImplCocoa
     48class PageClientImpl final : public PageClientImplCocoa
    4949#if ENABLE(FULLSCREEN_API)
    5050    , public WebFullScreenManagerProxyClient
     
    268268    WTF::Optional<unsigned> activeTouchIdentifierForGestureRecognizer(UIGestureRecognizer*) override;
    269269
    270     void showDictationAlternativeUI(const WebCore::FloatRect&, uint64_t dictationContext) override;
     270    void showDictationAlternativeUI(const WebCore::FloatRect&, WebCore::DictationContext) final;
    271271
    272272    WeakObjCPtr<WKContentView> m_contentView;
  • trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm

    r261665 r261981  
    943943}
    944944
    945 void PageClientImpl::showDictationAlternativeUI(const WebCore::FloatRect&, uint64_t)
     945void PageClientImpl::showDictationAlternativeUI(const WebCore::FloatRect&, WebCore::DictationContext)
    946946{
    947947    notImplemented();
  • trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h

    r261320 r261981  
    181181    void intrinsicContentSizeDidChange(const WebCore::IntSize& intrinsicContentSize) override;
    182182
    183     void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext) override;
     183    void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext) final;
    184184
    185185    void setEditableElementIsFocused(bool) override;
  • trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm

    r261320 r261981  
    681681}
    682682
    683 void PageClientImpl::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext)
     683void PageClientImpl::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext dictationContext)
    684684{
    685685    if (!isViewVisible() || !isViewInWindow())
  • trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm

    r261299 r261981  
    5151#import "WebProcessProxy.h"
    5252#import <WebCore/AttributedString.h>
    53 #import <WebCore/DictationAlternative.h>
    5453#import <WebCore/DictionaryLookup.h>
    5554#import <WebCore/DragItem.h>
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebAlternativeTextClient.h

    r253048 r261981  
    3232class WebPage;
    3333
    34 class WebAlternativeTextClient : public WebCore::AlternativeTextClient {
     34class WebAlternativeTextClient final : public WebCore::AlternativeTextClient {
    3535    WTF_MAKE_FAST_ALLOCATED;
    3636public:
    3737    explicit WebAlternativeTextClient(WebPage*);
    3838    virtual ~WebAlternativeTextClient();
     39
     40private:
    3941#if USE(AUTOCORRECTION_PANEL)
    4042    void showCorrectionAlternative(WebCore::AlternativeTextType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings) override;
     
    4345    void recordAutocorrectionResponse(WebCore::AutocorrectionResponse, const String& replacedString, const String& replacementString) override;
    4446#endif
     47
    4548#if USE(DICTATION_ALTERNATIVES)
    46     void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext) override;
    47     void removeDictationAlternatives(uint64_t dictationContext) override;
    48     Vector<String> dictationAlternatives(uint64_t dictationContext) override;
     49    void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext) final;
     50    void removeDictationAlternatives(WebCore::DictationContext) final;
     51    Vector<String> dictationAlternatives(WebCore::DictationContext) final;
    4952#endif
    5053
    51 private:
    5254#if !(USE(AUTOCORRECTION_PANEL) || USE(DICTATION_ALTERNATIVES))
    5355    IGNORE_CLANG_WARNINGS_BEGIN("unused-private-field")
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp

    r261232 r261981  
    7070#endif
    7171
    72 void WebAlternativeTextClient::removeDictationAlternatives(uint64_t dictationContext)
     72void WebAlternativeTextClient::removeDictationAlternatives(WebCore::DictationContext dictationContext)
    7373{
    7474    m_page->send(Messages::WebPageProxy::RemoveDictationAlternatives(dictationContext));
    7575}
    7676
    77 void WebAlternativeTextClient::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext)
     77void WebAlternativeTextClient::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext dictationContext)
    7878{
    7979    m_page->send(Messages::WebPageProxy::ShowDictationAlternativeUI(boundingBoxOfDictatedText, dictationContext));
    8080}
    8181
    82 Vector<String> WebAlternativeTextClient::dictationAlternatives(uint64_t dictationContext)
     82Vector<String> WebAlternativeTextClient::dictationAlternatives(WebCore::DictationContext dictationContext)
    8383{
    8484    Vector<String> result;
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r261968 r261981  
     12020-05-20  Darin Adler  <darin@apple.com>
     2
     3        Dictation context should be an object identifier, not a type-punned pointer
     4        https://bugs.webkit.org/show_bug.cgi?id=212174
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * WebCoreSupport/WebAlternativeTextClient.h: Use DictationContext instead of uint64_t.
     9        * WebCoreSupport/WebAlternativeTextClient.mm:
     10        (WebAlternativeTextClient::removeDictationAlternatives): Ditto.
     11        (WebAlternativeTextClient::showDictationAlternativeUI): Ditto.
     12        (WebAlternativeTextClient::dictationAlternatives): Ditto.
     13
     14        * WebView/WebHTMLView.mm: Added include of DictationAlternative.h, now needed because
     15        it's forward declared in Editor.h.
     16        * WebView/WebView.mm: Ditto.
     17        (-[WebView _getWebCoreDictationAlternatives:fromTextAlternatives:]): Updated for change
     18        to DictationAlternative.
     19        (-[WebView _showDictationAlternativeUI:forDictationContext:]): Use DictationContext
     20        instead of uint64_t.
     21        (-[WebView _removeDictationAlternatives:]): Ditto.
     22        (-[WebView _dictationAlternatives:]): Ditto.
     23        * WebView/WebViewInternal.h: Updated for the above.
     24
    1252020-05-20  Alex Christensen  <achristensen@webkit.org>
    226
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebAlternativeTextClient.h

    r261232 r261981  
    4040    void recordAutocorrectionResponse(WebCore::AutocorrectionResponse, const String& replacedString, const String& replacementString) override;
    4141#endif
    42     void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext) override;
    43     void removeDictationAlternatives(uint64_t dictationContext) override;
    44     Vector<String> dictationAlternatives(uint64_t dictationContext) override;
     42    void showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, WebCore::DictationContext) override;
     43    void removeDictationAlternatives(WebCore::DictationContext) override;
     44    Vector<String> dictationAlternatives(WebCore::DictationContext) override;
    4545
    4646private:
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebAlternativeTextClient.mm

    r261232 r261981  
    7979#endif
    8080
    81 void WebAlternativeTextClient::removeDictationAlternatives(uint64_t dictationContext)
     81void WebAlternativeTextClient::removeDictationAlternatives(DictationContext dictationContext)
    8282{
    8383    [m_webView _removeDictationAlternatives:dictationContext];
    8484}
    8585
    86 void WebAlternativeTextClient::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext)
     86void WebAlternativeTextClient::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, DictationContext dictationContext)
    8787{
    8888    [m_webView _showDictationAlternativeUI:boundingBoxOfDictatedText forDictationContext:dictationContext];
    8989}
    9090
    91 Vector<String> WebAlternativeTextClient::dictationAlternatives(uint64_t dictationContext)
     91Vector<String> WebAlternativeTextClient::dictationAlternatives(DictationContext dictationContext)
    9292{
    9393    return [m_webView _dictationAlternatives:dictationContext];
  • trunk/Source/WebKitLegacy/mac/WebView/WebHTMLView.mm

    r261848 r261981  
    8484#import <WebCore/ContextMenu.h>
    8585#import <WebCore/ContextMenuController.h>
     86#import <WebCore/DictationAlternative.h>
    8687#import <WebCore/DictionaryLookup.h>
    8788#import <WebCore/Document.h>
  • trunk/Source/WebKitLegacy/mac/WebView/WebView.mm

    r261966 r261981  
    141141#import <WebCore/DatabaseManager.h>
    142142#import <WebCore/DeprecatedGlobalSettings.h>
     143#import <WebCore/DictationAlternative.h>
    143144#import <WebCore/DictionaryLookup.h>
    144145#import <WebCore/Document.h>
     
    94239424    for (auto& alternativeWithRange : alternativesWithRange) {
    94249425        if (auto dictationContext = _private->m_alternativeTextUIController->addAlternatives(alternativeWithRange.alternatives.get()))
    9425             alternatives.append(WebCore::DictationAlternative(alternativeWithRange.range.location, alternativeWithRange.range.length, dictationContext));
    9426     }
    9427 }
    9428 
    9429 - (void)_showDictationAlternativeUI:(const WebCore::FloatRect&)boundingBoxOfDictatedText forDictationContext:(uint64_t)dictationContext
     9426            alternatives.append({ alternativeWithRange.range, dictationContext });
     9427    }
     9428}
     9429
     9430- (void)_showDictationAlternativeUI:(const WebCore::FloatRect&)boundingBoxOfDictatedText forDictationContext:(WebCore::DictationContext)dictationContext
    94309431{
    94319432#if USE(AUTOCORRECTION_PANEL)
     
    94369437}
    94379438
    9438 - (void)_removeDictationAlternatives:(uint64_t)dictationContext
     9439- (void)_removeDictationAlternatives:(WebCore::DictationContext)dictationContext
    94399440{
    94409441    _private->m_alternativeTextUIController->removeAlternatives(dictationContext);
    94419442}
    94429443
    9443 - (Vector<String>)_dictationAlternatives:(uint64_t)dictationContext
     9444- (Vector<String>)_dictationAlternatives:(WebCore::DictationContext)dictationContext
    94449445{
    94459446    return _private->m_alternativeTextUIController->alternativesForContext(dictationContext);
  • trunk/Source/WebKitLegacy/mac/WebView/WebViewInternal.h

    r261232 r261981  
    135135
    136136- (void)_getWebCoreDictationAlternatives:(Vector<WebCore::DictationAlternative>&)alternatives fromTextAlternatives:(const Vector<WebCore::TextAlternativeWithRange>&)alternativesWithRange;
    137 - (void)_showDictationAlternativeUI:(const WebCore::FloatRect&)boundingBoxOfDictatedText forDictationContext:(uint64_t)dictationContext;
    138 - (void)_removeDictationAlternatives:(uint64_t)dictationContext;
    139 - (Vector<String>)_dictationAlternatives:(uint64_t)dictationContext;
     137- (void)_showDictationAlternativeUI:(const WebCore::FloatRect&)boundingBoxOfDictatedText forDictationContext:(WebCore::DictationContext)dictationContext;
     138- (void)_removeDictationAlternatives:(WebCore::DictationContext)dictationContext;
     139- (Vector<String>)_dictationAlternatives:(WebCore::DictationContext)dictationContext;
    140140
    141141#if ENABLE(SERVICE_CONTROLS)
Note: See TracChangeset for help on using the changeset viewer.