Changeset 176297 in webkit
- Timestamp:
- Nov 18, 2014, 4:56:33 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 14 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/page/DOMTimer.cpp (modified) (5 diffs)
-
WebCore/page/DOMTimer.h (modified) (2 diffs)
-
WebCore/page/Settings.in (modified) (1 diff)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/WebView/WebPreferenceKeysPrivate.h (modified) (1 diff)
-
WebKit/mac/WebView/WebPreferences.mm (modified) (2 diffs)
-
WebKit/mac/WebView/WebPreferencesPrivate.h (modified) (1 diff)
-
WebKit/mac/WebView/WebView.mm (modified) (1 diff)
-
WebKit2/ChangeLog (modified) (1 diff)
-
WebKit2/Shared/WebPreferencesDefinitions.h (modified) (1 diff)
-
WebKit2/UIProcess/API/C/WKPreferences.cpp (modified) (1 diff)
-
WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (modified) (1 diff)
-
WebKit2/WebProcess/WebPage/WebPage.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r176296 r176297 1 2014-11-18 Chris Dumez <cdumez@apple.com> 2 3 Add a setting to toggle DOMTimer throttling support 4 https://bugs.webkit.org/show_bug.cgi?id=138844 5 <rdar://problem/19020874> 6 7 Reviewed by Andreas Kling. 8 9 Add a setting to disable DOM timers throttling, in order to help 10 developers determine if a specific issue is caused by timer 11 throttling. 12 13 * page/DOMTimer.cpp: 14 (WebCore::DOMTimerFireState::contextDocument): 15 (WebCore::DOMTimerFireState::scriptMadeUserObservableChanges): 16 (WebCore::DOMTimer::isDOMTimersThrottlingEnabled): 17 (WebCore::DOMTimer::updateThrottlingStateIfNecessary): 18 * page/DOMTimer.h: 19 * page/Settings.in: 20 1 21 2014-11-18 Beth Dakin <bdakin@apple.com> 2 22 -
trunk/Source/WebCore/page/DOMTimer.cpp
r176282 r176297 32 32 #include "InspectorInstrumentation.h" 33 33 #include "Logging.h" 34 #include "Page.h" 34 35 #include "PluginViewBase.h" 35 36 #include "ScheduledAction.h" 36 37 #include "ScriptExecutionContext.h" 38 #include "Settings.h" 37 39 #include "UserGestureIndicator.h" 38 40 #include <wtf/CurrentTime.h> … … 46 48 #include "ChromeClient.h" 47 49 #include "Frame.h" 48 #include "Page.h"49 50 #include "WKContentObservation.h" 50 51 #endif … … 78 79 } 79 80 81 Document* contextDocument() const { return m_contextIsDocument ? &downcast<Document>(m_context) : nullptr; } 82 80 83 void setScriptMadeUserObservableChanges() { m_scriptMadeUserObservableChanges = true; } 81 84 void setScriptMadeNonUserObservableChanges() { m_scriptMadeNonUserObservableChanges = true; } … … 92 95 return true; 93 96 97 Document* document = contextDocument(); 94 98 // To be conservative, we also consider any DOM Tree change to be user observable. 95 return m_contextIsDocument && downcast<Document>(m_context).domTreeVersion() != m_initialDOMTreeVersion;99 return document && document->domTreeVersion() != m_initialDOMTreeVersion; 96 100 } 97 101 … … 252 256 } 253 257 258 inline bool DOMTimer::isDOMTimersThrottlingEnabled(Document& document) const 259 { 260 auto* page = document.page(); 261 if (!page) 262 return true; 263 return page->settings().domTimersThrottlingEnabled(); 264 } 265 254 266 void DOMTimer::updateThrottlingStateIfNecessary(const DOMTimerFireState& fireState) 255 267 { 268 Document* contextDocument = fireState.contextDocument(); 269 // We don't throttle timers in worker threads. 270 if (!contextDocument) 271 return; 272 273 if (UNLIKELY(!isDOMTimersThrottlingEnabled(*contextDocument))) { 274 if (m_throttleState == ShouldThrottle) { 275 // Unthrottle the timer in case it was throttled before the setting was updated. 276 LOG(DOMTimers, "%p - Unthrottling DOM timer because throttling was disabled via settings.", this); 277 m_throttleState = ShouldNotThrottle; 278 updateTimerIntervalIfNecessary(); 279 } 280 return; 281 } 282 256 283 if (fireState.scriptMadeUserObservableChanges()) { 257 284 ASSERT(m_elementsCausingThrottling.isEmpty()); -
trunk/Source/WebCore/page/DOMTimer.h
r176239 r176297 36 36 37 37 class DOMTimerFireState; 38 class Document; 38 39 class HTMLPlugInElement; 39 40 class IntRect; … … 66 67 double intervalClampedToMinimum() const; 67 68 69 bool isDOMTimersThrottlingEnabled(Document&) const; 68 70 bool isIntervalDependentOnViewport() const { return m_throttleState == ShouldThrottle && !m_elementsCausingThrottling.isEmpty(); } 69 71 void registerForViewportChanges(); -
trunk/Source/WebCore/page/Settings.in
r176199 r176297 77 77 scriptMarkupEnabled initial=true 78 78 needsSiteSpecificQuirks initial=false 79 domTimersThrottlingEnabled initial=true 79 80 webArchiveDebugModeEnabled initial=false, conditional=WEB_ARCHIVE 80 81 localFileContentSniffingEnabled initial=false -
trunk/Source/WebKit/mac/ChangeLog
r176288 r176297 1 2014-11-18 Chris Dumez <cdumez@apple.com> 2 3 Add a setting to toggle DOMTimer throttling support 4 https://bugs.webkit.org/show_bug.cgi?id=138844 5 <rdar://problem/19020874> 6 7 Reviewed by Andreas Kling. 8 9 Add a setting to disable DOM timers throttling, in order to help 10 developers determine if a specific issue is caused by timer 11 throttling. 12 13 * WebView/WebPreferenceKeysPrivate.h: 14 * WebView/WebPreferences.mm: 15 (+[WebPreferences initialize]): 16 (-[WebPreferences domTimersThrottlingEnabled]): 17 (-[WebPreferences setDOMTimersThrottlingEnabled:]): 18 * WebView/WebPreferencesPrivate.h: 19 * WebView/WebView.mm: 20 (-[WebView _preferencesChanged:]): 21 1 22 2014-11-18 Tim Horton <timothy_horton@apple.com> 2 23 -
trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
r176199 r176297 88 88 #define WebKitAuthorAndUserStylesEnabledPreferenceKey @"WebKitAuthorAndUserStylesEnabledPreferenceKey" 89 89 #define WebKitApplicationChromeModeEnabledPreferenceKey @"WebKitApplicationChromeModeEnabledPreferenceKey" 90 #define WebKitDOMTimersThrottlingEnabledPreferenceKey @"WebKitDOMTimersThrottlingEnabledPreferenceKey" 90 91 #define WebKitWebArchiveDebugModeEnabledPreferenceKey @"WebKitWebArchiveDebugModeEnabledPreferenceKey" 91 92 #define WebKitLocalFileContentSniffingEnabledPreferenceKey @"WebKitLocalFileContentSniffingEnabledPreferenceKey" -
trunk/Source/WebKit/mac/WebView/WebPreferences.mm
r176199 r176297 477 477 [NSNumber numberWithBool:YES], WebKitAuthorAndUserStylesEnabledPreferenceKey, 478 478 [NSNumber numberWithBool:NO], WebKitApplicationChromeModeEnabledPreferenceKey, 479 [NSNumber numberWithBool:YES], WebKitDOMTimersThrottlingEnabledPreferenceKey, 479 480 [NSNumber numberWithBool:NO], WebKitWebArchiveDebugModeEnabledPreferenceKey, 480 481 [NSNumber numberWithBool:NO], WebKitLocalFileContentSniffingEnabledPreferenceKey, … … 1223 1224 { 1224 1225 [self _setBoolValue:flag forKey:WebKitApplicationChromeModeEnabledPreferenceKey]; 1226 } 1227 1228 - (BOOL)domTimersThrottlingEnabled 1229 { 1230 return [self _boolValueForKey:WebKitDOMTimersThrottlingEnabledPreferenceKey]; 1231 } 1232 1233 - (void)setDOMTimersThrottlingEnabled:(BOOL)flag 1234 { 1235 [self _setBoolValue:flag forKey:WebKitDOMTimersThrottlingEnabledPreferenceKey]; 1225 1236 } 1226 1237 -
trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h
r176199 r176297 103 103 - (void)setAutomaticallyDetectsCacheModel:(BOOL)automaticallyDetectsCacheModel; 104 104 105 - (BOOL)domTimersThrottlingEnabled; 106 - (void)setDOMTimersThrottlingEnabled:(BOOL)domTimersThrottlingEnabled; 107 105 108 - (BOOL)webArchiveDebugModeEnabled; 106 109 - (void)setWebArchiveDebugModeEnabled:(BOOL)webArchiveDebugModeEnabled; -
trunk/Source/WebKit/mac/WebView/WebView.mm
r176265 r176297 2223 2223 2224 2224 settings.setNeedsSiteSpecificQuirks(_private->useSiteSpecificSpoofing); 2225 settings.setDOMTimersThrottlingEnabled([preferences domTimersThrottlingEnabled]); 2225 2226 settings.setWebArchiveDebugModeEnabled([preferences webArchiveDebugModeEnabled]); 2226 2227 settings.setLocalFileContentSniffingEnabled([preferences localFileContentSniffingEnabled]); -
trunk/Source/WebKit2/ChangeLog
r176290 r176297 1 2014-11-18 Chris Dumez <cdumez@apple.com> 2 3 Add a setting to toggle DOMTimer throttling support 4 https://bugs.webkit.org/show_bug.cgi?id=138844 5 <rdar://problem/19020874> 6 7 Reviewed by Andreas Kling. 8 9 Add a setting to disable DOM timers throttling, in order to help 10 developers determine if a specific issue is caused by timer 11 throttling. 12 13 * Shared/WebPreferencesDefinitions.h: 14 * UIProcess/API/C/WKPreferences.cpp: 15 (WKPreferencesSetDOMTimersThrottlingEnabled): 16 (WKPreferencesGetDOMTimersThrottlingEnabled): 17 * UIProcess/API/C/WKPreferencesRefPrivate.h: 18 * WebProcess/WebPage/WebPage.cpp: 19 (WebKit::WebPage::updatePreferences): 20 1 21 2014-11-18 Geoffrey Garen <ggaren@apple.com> 2 22 -
trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h
r176199 r176297 121 121 macro(TabsToLinks, tabsToLinks, Bool, bool, DEFAULT_WEBKIT_TABSTOLINKS_ENABLED) \ 122 122 macro(DNSPrefetchingEnabled, dnsPrefetchingEnabled, Bool, bool, false) \ 123 macro(DOMTimersThrottlingEnabled, domTimersThrottlingEnabled, Bool, bool, true) \ 123 124 macro(WebArchiveDebugModeEnabled, webArchiveDebugModeEnabled, Bool, bool, false) \ 124 125 macro(LocalFileContentSniffingEnabled, localFileContentSniffingEnabled, Bool, bool, false) \ -
trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp
r176199 r176297 580 580 } 581 581 582 void WKPreferencesSetDOMTimersThrottlingEnabled(WKPreferencesRef preferencesRef, bool enabled) 583 { 584 toImpl(preferencesRef)->setDOMTimersThrottlingEnabled(enabled); 585 } 586 587 bool WKPreferencesGetDOMTimersThrottlingEnabled(WKPreferencesRef preferencesRef) 588 { 589 return toImpl(preferencesRef)->domTimersThrottlingEnabled(); 590 } 591 582 592 void WKPreferencesSetWebArchiveDebugModeEnabled(WKPreferencesRef preferencesRef, bool enabled) 583 593 { -
trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h
r176199 r176297 117 117 WK_EXPORT WKStringRef WKPreferencesCopyFTPDirectoryTemplatePath(WKPreferencesRef preferences); 118 118 119 // Defaults to true. 120 WK_EXPORT void WKPreferencesSetDOMTimersThrottlingEnabled(WKPreferencesRef preferences, bool enabled); 121 WK_EXPORT bool WKPreferencesGetDOMTimersThrottlingEnabled(WKPreferencesRef preferences); 122 119 123 // Defaults to false. 120 124 WK_EXPORT void WKPreferencesSetWebArchiveDebugModeEnabled(WKPreferencesRef preferences, bool enabled); -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r176229 r176297 2661 2661 settings.setForceFTPDirectoryListings(store.getBoolValueForKey(WebPreferencesKey::forceFTPDirectoryListingsKey())); 2662 2662 settings.setDNSPrefetchingEnabled(store.getBoolValueForKey(WebPreferencesKey::dnsPrefetchingEnabledKey())); 2663 settings.setDOMTimersThrottlingEnabled(store.getBoolValueForKey(WebPreferencesKey::domTimersThrottlingEnabledKey())); 2663 2664 #if ENABLE(WEB_ARCHIVE) 2664 2665 settings.setWebArchiveDebugModeEnabled(store.getBoolValueForKey(WebPreferencesKey::webArchiveDebugModeEnabledKey()));
Note:
See TracChangeset
for help on using the changeset viewer.