Changeset 167148 in webkit


Ignore:
Timestamp:
Apr 11, 2014 2:09:13 PM (10 years ago)
Author:
beidson@apple.com
Message:

Aggregate multiple "respondToChangedSelection" calls to one scan for telephone numbers
https://bugs.webkit.org/show_bug.cgi?id=131559

Reviewed by Gavin Barraclough.

No new tests (Perf-only change to an untested feature)

  • editing/Editor.cpp:

(WebCore::Editor::Editor):
(WebCore::Editor::respondToChangedSelection): Start a one shot timer for scanSelectionForTelephoneNumbers

instead of scanning synchronously.

(WebCore::Editor::scanSelectionForTelephoneNumbers):

  • editing/Editor.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r167147 r167148  
     12014-04-11  Brady Eidson  <beidson@apple.com>
     2
     3        Aggregate multiple "respondToChangedSelection" calls to one scan for telephone numbers
     4        https://bugs.webkit.org/show_bug.cgi?id=131559
     5
     6        Reviewed by Gavin Barraclough.
     7
     8        No new tests (Perf-only change to an untested feature)
     9
     10        * editing/Editor.cpp:
     11        (WebCore::Editor::Editor):
     12        (WebCore::Editor::respondToChangedSelection): Start a one shot timer for scanSelectionForTelephoneNumbers
     13          instead of scanning synchronously.
     14        (WebCore::Editor::scanSelectionForTelephoneNumbers):
     15        * editing/Editor.h:
     16
    1172014-04-11  Antti Koivisto  <antti@apple.com>
    218
  • trunk/Source/WebCore/editing/Editor.cpp

    r166968 r167148  
    11531153    , m_editorUIUpdateTimerShouldCheckSpellingAndGrammar(false)
    11541154    , m_editorUIUpdateTimerWasTriggeredByDictation(false)
     1155#if ENABLE(TELEPHONE_NUMBER_DETECTION) && !PLATFORM(IOS)
     1156    , m_telephoneNumberDetectionUpdateTimer(this, &Editor::scanSelectionForTelephoneNumbers)
     1157#endif
    11551158{
    11561159}
     
    33193322
    33203323#if ENABLE(TELEPHONE_NUMBER_DETECTION) && !PLATFORM(IOS)
    3321     Vector<RefPtr<Range>> markedRanges;
    3322     scanSelectionForTelephoneNumbers(markedRanges);
    3323     if (client())
    3324         client()->selectedTelephoneNumberRangesChanged(markedRanges);
     3324    m_telephoneNumberDetectionUpdateTimer.startOneShot(0);
    33253325#endif
    33263326
     
    33383338
    33393339#if ENABLE(TELEPHONE_NUMBER_DETECTION) && !PLATFORM(IOS)
    3340 void Editor::scanSelectionForTelephoneNumbers(Vector<RefPtr<Range>>& markedRanges)
     3340void Editor::scanSelectionForTelephoneNumbers(Timer<Editor>&)
    33413341{
    33423342    if (!TelephoneNumberDetector::isSupported())
     
    33483348    clearDataDetectedTelephoneNumbers();
    33493349
     3350    Vector<RefPtr<Range>> markedRanges;
     3351
    33503352    RefPtr<Range> selectedRange = m_frame.selection().toNormalizedRange();
    3351     if (!selectedRange || (selectedRange->startContainer() == selectedRange->endContainer() && selectedRange->startOffset() == selectedRange->endOffset()))
    3352         return;
     3353    if (!selectedRange || (selectedRange->startContainer() == selectedRange->endContainer() && selectedRange->startOffset() == selectedRange->endOffset())) {
     3354        if (client())
     3355            client()->selectedTelephoneNumberRangesChanged(markedRanges);
     3356        return;
     3357    }
    33533358
    33543359    // FIXME: This won't work if a phone number spans multiple chunks of text from the perspective of the TextIterator
     
    33613366        scanRangeForTelephoneNumbers(*textChunk.range(), textChunk.text(), markedRanges);
    33623367    }
     3368
     3369    if (client())
     3370        client()->selectedTelephoneNumberRangesChanged(markedRanges);
    33633371}
    33643372
  • trunk/Source/WebCore/editing/Editor.h

    r166965 r167148  
    474474    bool unifiedTextCheckerEnabled() const;
    475475
    476 #if ENABLE(TELEPHONE_NUMBER_DETECTION) && !PLATFORM(IOS)
    477     void scanSelectionForTelephoneNumbers(Vector<RefPtr<Range>>& markedRanges);
    478     void scanRangeForTelephoneNumbers(Range&, const StringView&, Vector<RefPtr<Range>>& markedRanges);
    479     void clearDataDetectedTelephoneNumbers();
    480 #endif
    481 
    482476#if PLATFORM(COCOA)
    483477    PassRefPtr<SharedBuffer> selectionInWebArchiveFormat();
     
    512506    bool m_editorUIUpdateTimerShouldCheckSpellingAndGrammar;
    513507    bool m_editorUIUpdateTimerWasTriggeredByDictation;
     508
     509#if ENABLE(TELEPHONE_NUMBER_DETECTION) && !PLATFORM(IOS)
     510    void scanSelectionForTelephoneNumbers(Timer<Editor>&);
     511    void scanRangeForTelephoneNumbers(Range&, const StringView&, Vector<RefPtr<Range>>& markedRanges);
     512    void clearDataDetectedTelephoneNumbers();
     513
     514    Timer<Editor> m_telephoneNumberDetectionUpdateTimer;
     515#endif
    514516};
    515517
Note: See TracChangeset for help on using the changeset viewer.