Changeset 242166 in webkit


Ignore:
Timestamp:
Feb 27, 2019 3:20:44 PM (5 years ago)
Author:
Alan Bujtas
Message:

[ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=195070
<rdar://problem/48417650>

Reviewed by Tim Horton.

Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.

  • page/ios/ContentChangeObserver.h:
  • page/ios/ContentChangeObserver.mm:

(WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
(WebCore::ContentChangeObserver::countOfObservedDOMTimers):
(WebCore::ContentChangeObserver::clearObservedDOMTimers):
(WebCore::ContentChangeObserver::setObservedContentChange):
(WebCore::ContentChangeObserver::containsObservedDOMTimer):
(WebCore::ContentChangeObserver::addObservedDOMTimer):
(WebCore::ContentChangeObserver::removeObservedDOMTimer):

  • platform/ios/wak/WKContentObservation.cpp:

(WKStartObservingDOMTimerScheduling):
(WKSetObservedContentChange):
(WebThreadGetObservedDOMTimers): Deleted.
(WebThreadCountOfObservedDOMTimers): Deleted.
(WebThreadClearObservedDOMTimers): Deleted.
(WebThreadContainsObservedDOMTimer): Deleted.
(WebThreadAddObservedDOMTimer): Deleted.
(WebThreadRemoveObservedDOMTimer): Deleted.

  • platform/ios/wak/WKContentObservation.h:
Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r242164 r242166  
     12019-02-27  Zalan Bujtas  <zalan@apple.com>
     2
     3        [ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
     4        https://bugs.webkit.org/show_bug.cgi?id=195070
     5        <rdar://problem/48417650>
     6
     7        Reviewed by Tim Horton.
     8
     9        Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.
     10
     11        * page/ios/ContentChangeObserver.h:
     12        * page/ios/ContentChangeObserver.mm:
     13        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
     14        (WebCore::ContentChangeObserver::countOfObservedDOMTimers):
     15        (WebCore::ContentChangeObserver::clearObservedDOMTimers):
     16        (WebCore::ContentChangeObserver::setObservedContentChange):
     17        (WebCore::ContentChangeObserver::containsObservedDOMTimer):
     18        (WebCore::ContentChangeObserver::addObservedDOMTimer):
     19        (WebCore::ContentChangeObserver::removeObservedDOMTimer):
     20        * platform/ios/wak/WKContentObservation.cpp:
     21        (WKStartObservingDOMTimerScheduling):
     22        (WKSetObservedContentChange):
     23        (WebThreadGetObservedDOMTimers): Deleted.
     24        (WebThreadCountOfObservedDOMTimers): Deleted.
     25        (WebThreadClearObservedDOMTimers): Deleted.
     26        (WebThreadContainsObservedDOMTimer): Deleted.
     27        (WebThreadAddObservedDOMTimer): Deleted.
     28        (WebThreadRemoveObservedDOMTimer): Deleted.
     29        * platform/ios/wak/WKContentObservation.h:
     30
    1312019-02-27  Justin Fan  <justin_fan@apple.com>
    232        Fix build errors after Web GPU buffer updates changed some IDL fields from unsigned long to unsigned long long.
  • trunk/Source/WebCore/page/ios/ContentChangeObserver.h

    r242108 r242166  
    9595
    9696    Page& m_page;
     97    HashSet<const DOMTimer*> m_DOMTimerList;
    9798};
    9899
  • trunk/Source/WebCore/page/ios/ContentChangeObserver.mm

    r242108 r242166  
    6161        return;
    6262    LOG_WITH_STREAM(ContentObservation, stream << "startObservingDOMTimerExecute: start observing (" << &timer << ") timer callback.");
    63     startObservingContentChanges();
     63    WKStartObservingContentChanges();
    6464    startObservingStyleRecalcScheduling();
    6565}
     
    100100        return;
    101101    LOG(ContentObservation, "startObservingStyleResolve: start observing style resolve.");
    102     startObservingContentChanges();
     102    WKStartObservingContentChanges();
    103103}
    104104
     
    168168{
    169169    WKStartObservingDOMTimerScheduling();
     170    clearObservedDOMTimers();
    170171}
    171172
     
    212213unsigned ContentChangeObserver::countOfObservedDOMTimers()
    213214{
    214     return WebThreadCountOfObservedDOMTimers();
     215    return m_DOMTimerList.size();
    215216}
    216217
    217218void ContentChangeObserver::clearObservedDOMTimers()
    218219{
    219     WebThreadClearObservedDOMTimers();
     220    m_DOMTimerList.clear();
    220221}
    221222
     
    227228bool ContentChangeObserver::containsObservedDOMTimer(const DOMTimer& timer)
    228229{
    229     return WebThreadContainsObservedDOMTimer(const_cast<DOMTimer*>(&timer));
     230    return m_DOMTimerList.contains(&timer);
    230231}
    231232
    232233void ContentChangeObserver::addObservedDOMTimer(const DOMTimer& timer)
    233234{
    234     WebThreadAddObservedDOMTimer(const_cast<DOMTimer*>(&timer));
     235    ASSERT(isObservingDOMTimerScheduling());
     236    if (observedContentChange() == WKContentVisibilityChange)
     237        return;
     238    m_DOMTimerList.add(&timer);
    235239}
    236240
    237241void ContentChangeObserver::removeObservedDOMTimer(const DOMTimer& timer)
    238242{
    239     WebThreadRemoveObservedDOMTimer(const_cast<DOMTimer*>(&timer));
     243    m_DOMTimerList.remove(&timer);
     244    // Force reset the content change flag when the last observed content modifier is removed. We should not be in indeterminate state anymore.
     245    if (!countOfObservedDOMTimers() && observedContentChange() == WKContentIndeterminateChange)
     246        setObservedContentChange(WKContentNoChange);
    240247}
    241248
  • trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp

    r238759 r242166  
    6060{
    6161    _WKObservingDOMTimerScheduling = true;
    62     WebThreadClearObservedDOMTimers();
    6362}
    6463
     
    111110    if (change == WKContentVisibilityChange) {
    112111        _WKContentChange = change;
    113         // Don't need to listen to DOM timers/style recalcs anymore.
    114         WebThreadClearObservedDOMTimers();
    115112        _WKObservingNextStyleRecalc = false;
    116113        return;
     
    124121}
    125122
    126 using DOMTimerList = HashSet<void*>;
    127 static DOMTimerList& WebThreadGetObservedDOMTimers()
    128 {
    129     ASSERT(WebThreadIsLockedOrDisabled());
    130     static NeverDestroyed<DOMTimerList> observedDOMTimers;
    131     return observedDOMTimers;
    132 }
    133 
    134 int WebThreadCountOfObservedDOMTimers(void)
    135 {
    136     return WebThreadGetObservedDOMTimers().size();
    137 }
    138 
    139 void WebThreadClearObservedDOMTimers()
    140 {
    141     WebThreadGetObservedDOMTimers().clear();
    142 }
    143 
    144 bool WebThreadContainsObservedDOMTimer(void* timer)
    145 {
    146     return WebThreadGetObservedDOMTimers().contains(timer);
    147 }
    148 
    149 void WebThreadAddObservedDOMTimer(void* timer)
    150 {
    151     ASSERT(_WKObservingDOMTimerScheduling);
    152     if (_WKContentChange != WKContentVisibilityChange)
    153         WebThreadGetObservedDOMTimers().add(timer);
    154 }
    155 
    156 void WebThreadRemoveObservedDOMTimer(void* timer)
    157 {
    158     WebThreadGetObservedDOMTimers().remove(timer);
    159     // Force reset the content change flag when the last observed content modifier is removed. We should not be in indeterminate state anymore.
    160     if (WebThreadCountOfObservedDOMTimers())
    161         return;
    162     if (WKObservedContentChange() != WKContentIndeterminateChange)
    163         return;
    164     _WKContentChange = WKContentNoChange;
    165 }
    166 
    167123#endif // PLATFORM(IOS_FAMILY)
  • trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h

    r238759 r242166  
    5656WEBCORE_EXPORT WKContentChange WKObservedContentChange(void);
    5757
    58 WEBCORE_EXPORT int WebThreadCountOfObservedDOMTimers(void);
    59 WEBCORE_EXPORT void WebThreadClearObservedDOMTimers(void);
    60 
    6158#ifdef __cplusplus
    6259}
Note: See TracChangeset for help on using the changeset viewer.