Changeset 242166 in webkit
- Timestamp:
- Feb 27, 2019 3:20:44 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r242164 r242166 1 2019-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 1 31 2019-02-27 Justin Fan <justin_fan@apple.com> 2 32 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 95 95 96 96 Page& m_page; 97 HashSet<const DOMTimer*> m_DOMTimerList; 97 98 }; 98 99 -
trunk/Source/WebCore/page/ios/ContentChangeObserver.mm
r242108 r242166 61 61 return; 62 62 LOG_WITH_STREAM(ContentObservation, stream << "startObservingDOMTimerExecute: start observing (" << &timer << ") timer callback."); 63 startObservingContentChanges();63 WKStartObservingContentChanges(); 64 64 startObservingStyleRecalcScheduling(); 65 65 } … … 100 100 return; 101 101 LOG(ContentObservation, "startObservingStyleResolve: start observing style resolve."); 102 startObservingContentChanges();102 WKStartObservingContentChanges(); 103 103 } 104 104 … … 168 168 { 169 169 WKStartObservingDOMTimerScheduling(); 170 clearObservedDOMTimers(); 170 171 } 171 172 … … 212 213 unsigned ContentChangeObserver::countOfObservedDOMTimers() 213 214 { 214 return WebThreadCountOfObservedDOMTimers();215 return m_DOMTimerList.size(); 215 216 } 216 217 217 218 void ContentChangeObserver::clearObservedDOMTimers() 218 219 { 219 WebThreadClearObservedDOMTimers();220 m_DOMTimerList.clear(); 220 221 } 221 222 … … 227 228 bool ContentChangeObserver::containsObservedDOMTimer(const DOMTimer& timer) 228 229 { 229 return WebThreadContainsObservedDOMTimer(const_cast<DOMTimer*>(&timer));230 return m_DOMTimerList.contains(&timer); 230 231 } 231 232 232 233 void ContentChangeObserver::addObservedDOMTimer(const DOMTimer& timer) 233 234 { 234 WebThreadAddObservedDOMTimer(const_cast<DOMTimer*>(&timer)); 235 ASSERT(isObservingDOMTimerScheduling()); 236 if (observedContentChange() == WKContentVisibilityChange) 237 return; 238 m_DOMTimerList.add(&timer); 235 239 } 236 240 237 241 void ContentChangeObserver::removeObservedDOMTimer(const DOMTimer& timer) 238 242 { 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); 240 247 } 241 248 -
trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp
r238759 r242166 60 60 { 61 61 _WKObservingDOMTimerScheduling = true; 62 WebThreadClearObservedDOMTimers();63 62 } 64 63 … … 111 110 if (change == WKContentVisibilityChange) { 112 111 _WKContentChange = change; 113 // Don't need to listen to DOM timers/style recalcs anymore.114 WebThreadClearObservedDOMTimers();115 112 _WKObservingNextStyleRecalc = false; 116 113 return; … … 124 121 } 125 122 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 167 123 #endif // PLATFORM(IOS_FAMILY) -
trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h
r238759 r242166 56 56 WEBCORE_EXPORT WKContentChange WKObservedContentChange(void); 57 57 58 WEBCORE_EXPORT int WebThreadCountOfObservedDOMTimers(void);59 WEBCORE_EXPORT void WebThreadClearObservedDOMTimers(void);60 61 58 #ifdef __cplusplus 62 59 }
Note: See TracChangeset
for help on using the changeset viewer.