Changeset 250816 in webkit
- Timestamp:
- Oct 7, 2019 11:22:46 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 16 added
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r250811 r250816 1 2019-10-07 Ryosuke Niwa <rniwa@webkit.org> 2 3 Add IDL for requestIdleCallback 4 https://bugs.webkit.org/show_bug.cgi?id=202653 5 6 Reviewed by Geoffrey Garen. 7 8 Added basic tests for validating requestIdleCallback is enabled or disabled, and its identifier starts at 1 in each document. 9 10 * requestidlecallback: Added. 11 * requestidlecallback/requestidlecallback-enabled-expected.txt: Added. 12 * requestidlecallback/requestidlecallback-enabled.html: Added. 13 * requestidlecallback/requestidlecallback-id-expected.txt: Added. 14 * requestidlecallback/requestidlecallback-id.html: Added. 15 * requestidlecallback/requestidlecallback-not-enabled-expected.txt: Added. 16 * requestidlecallback/requestidlecallback-not-enabled.html: Added. 17 1 18 2019-10-07 Jiewen Tan <jiewen_tan@apple.com> 2 19 -
trunk/Source/WebCore/CMakeLists.txt
r249601 r250816 707 707 dom/GlobalEventHandlers.idl 708 708 dom/HashChangeEvent.idl 709 dom/IdleDeadline.idl 710 dom/IdleRequestCallback.idl 711 dom/IdleRequestOptions.idl 709 712 dom/InputEvent.idl 710 713 dom/KeyboardEvent.idl -
trunk/Source/WebCore/ChangeLog
r250811 r250816 1 2019-10-07 Ryosuke Niwa <rniwa@webkit.org> 2 3 Add IDL for requestIdleCallback 4 https://bugs.webkit.org/show_bug.cgi?id=202653 5 6 Reviewed by Geoffrey Garen. 7 8 Added the basic scaffolding for implementing requestIdleCallback disabled by default: 9 https://w3c.github.io/requestidlecallback/ 10 11 This patch just adds the support for calling requestIdleCallback which generates a monotonically increasing number. 12 The callback is never called for now. 13 14 Tests: requestidlecallback/requestidlecallback-enabled.html 15 requestidlecallback/requestidlecallback-id.html 16 requestidlecallback/requestidlecallback-not-enabled.html 17 18 * CMakeLists.txt: 19 * DerivedSources.make: 20 * Sources.txt: 21 * WebCore.xcodeproj/project.pbxproj: 22 * bindings/js/WebCoreBuiltinNames.h: 23 * dom/Document.cpp: 24 (WebCore::Document::requestIdleCallback): 25 (WebCore::Document::cancelIdleCallback): 26 * dom/Document.h: 27 * dom/IdleCallbackController.cpp: Added. 28 (WebCore::IdleCallbackController::queueIdleCallback): 29 (WebCore::IdleCallbackController::removeIdleCallback): 30 * dom/IdleCallbackController.h: Added. 31 * dom/IdleDeadline.cpp: Added. 32 (WebCore::IdleDeadline::timeRemaining const): 33 (WebCore::IdleDeadline::didTimeout const): 34 * dom/IdleDeadline.h: Added. 35 * dom/IdleDeadline.idl: Added. 36 * dom/IdleRequestCallback.h: Added. 37 * dom/IdleRequestCallback.idl: Added. 38 * dom/IdleRequestOptions.h: Added. 39 * dom/IdleRequestOptions.idl: Added. 40 * page/DOMWindow.cpp: 41 (WebCore::DOMWindow::requestIdleCallback): 42 (WebCore::DOMWindow::cancelIdleCallback): 43 * page/DOMWindow.h: 44 * page/DOMWindow.idl: 45 * page/Settings.yaml: 46 1 47 2019-10-07 Jiewen Tan <jiewen_tan@apple.com> 2 48 -
trunk/Source/WebCore/DerivedSources.make
r250048 r250816 607 607 $(WebCore)/dom/GlobalEventHandlers.idl \ 608 608 $(WebCore)/dom/HashChangeEvent.idl \ 609 $(WebCore)/dom/IdleDeadline.idl \ 610 $(WebCore)/dom/IdleRequestCallback.idl \ 611 $(WebCore)/dom/IdleRequestOptions.idl \ 609 612 $(WebCore)/dom/InputEvent.idl \ 610 613 $(WebCore)/dom/KeyboardEvent.idl \ -
trunk/Source/WebCore/Sources.txt
r250769 r250816 887 887 dom/IdTargetObserver.cpp 888 888 dom/IdTargetObserverRegistry.cpp 889 dom/IdleDeadline.cpp 890 dom/IdleCallbackController.cpp 889 891 dom/InlineClassicScript.cpp 890 892 dom/InlineStyleSheetOwner.cpp … … 2966 2968 JSIDBTransactionMode.cpp 2967 2969 JSIDBVersionChangeEvent.cpp 2970 JSIdleRequestCallback.cpp 2971 JSIdleRequestOptions.cpp 2972 JSIdleDeadline.cpp 2968 2973 JSImageBitmap.cpp 2969 2974 JSImageBitmapOptions.cpp -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r250769 r250816 2853 2853 9B6C41531344949000085B62 /* StringWithDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6C41521344949000085B62 /* StringWithDirection.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2854 2854 9B714E211C91166900AC0E92 /* EventPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B714E1F1C91166900AC0E92 /* EventPath.h */; }; 2855 9B742605234BE95600DB52E9 /* IdleRequestCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B742603234BE95600DB52E9 /* IdleRequestCallback.h */; }; 2856 9B74260B234BEA6E00DB52E9 /* IdleDeadline.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B742608234BEA6E00DB52E9 /* IdleDeadline.h */; }; 2857 9B864F02234C028A006D10EB /* IdleRequestOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B864F00234C028A006D10EB /* IdleRequestOptions.h */; }; 2858 9B864F06234C0893006D10EB /* IdleCallbackController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B864F05234C0893006D10EB /* IdleCallbackController.h */; }; 2855 2859 9BA273F4172206BB0097CE47 /* LogicalSelectionOffsetCaches.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BA273F3172206BB0097CE47 /* LogicalSelectionOffsetCaches.h */; }; 2856 2860 9BAAC45C21520128003D4A98 /* GCReachableRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAAC4562151E39E003D4A98 /* GCReachableRef.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 11069 11073 9B714E1E1C91166900AC0E92 /* EventPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventPath.cpp; sourceTree = "<group>"; }; 11070 11074 9B714E1F1C91166900AC0E92 /* EventPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventPath.h; sourceTree = "<group>"; }; 11075 9B742603234BE95600DB52E9 /* IdleRequestCallback.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IdleRequestCallback.h; sourceTree = "<group>"; }; 11076 9B742604234BE95600DB52E9 /* IdleRequestCallback.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = IdleRequestCallback.idl; sourceTree = "<group>"; }; 11077 9B742608234BEA6E00DB52E9 /* IdleDeadline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IdleDeadline.h; sourceTree = "<group>"; }; 11078 9B742609234BEA6E00DB52E9 /* IdleDeadline.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = IdleDeadline.cpp; sourceTree = "<group>"; }; 11079 9B74260A234BEA6E00DB52E9 /* IdleDeadline.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = IdleDeadline.idl; sourceTree = "<group>"; }; 11071 11080 9B85530520E733B5009EEF4F /* EventTargetFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EventTargetFactory.cpp; path = DerivedSources/WebCore/EventTargetFactory.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 11081 9B864F00234C028A006D10EB /* IdleRequestOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IdleRequestOptions.h; sourceTree = "<group>"; }; 11082 9B864F01234C028A006D10EB /* IdleRequestOptions.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = IdleRequestOptions.idl; sourceTree = "<group>"; }; 11083 9B864F05234C0893006D10EB /* IdleCallbackController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IdleCallbackController.h; sourceTree = "<group>"; }; 11084 9B864F07234C08A3006D10EB /* IdleCallbackController.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = IdleCallbackController.cpp; sourceTree = "<group>"; }; 11072 11085 9B9299B01F6796A4006723C2 /* WebContentReaderCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebContentReaderCocoa.mm; sourceTree = "<group>"; }; 11073 11086 9B9CADA72165DC7600E8D858 /* JSMutationRecordCustom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationRecordCustom.cpp; sourceTree = "<group>"; }; … … 27668 27681 2442BBF81194C9D300D49469 /* HashChangeEvent.h */, 27669 27682 8482B7441198C32E00BFB005 /* HashChangeEvent.idl */, 27683 9B864F07234C08A3006D10EB /* IdleCallbackController.cpp */, 27684 9B864F05234C0893006D10EB /* IdleCallbackController.h */, 27685 9B742609234BEA6E00DB52E9 /* IdleDeadline.cpp */, 27686 9B742608234BEA6E00DB52E9 /* IdleDeadline.h */, 27687 9B74260A234BEA6E00DB52E9 /* IdleDeadline.idl */, 27688 9B742603234BE95600DB52E9 /* IdleRequestCallback.h */, 27689 9B742604234BE95600DB52E9 /* IdleRequestCallback.idl */, 27690 9B864F00234C028A006D10EB /* IdleRequestOptions.h */, 27691 9B864F01234C028A006D10EB /* IdleRequestOptions.idl */, 27670 27692 C3CF17A015B0063F00276D39 /* IdTargetObserver.cpp */, 27671 27693 C3CF17A115B0063F00276D39 /* IdTargetObserver.h */, … … 29700 29722 49E911C50EF86D47009D0CAF /* IdentityTransformOperation.h in Headers */, 29701 29723 7CE9A12B1EA2F1DB00651AD1 /* IDLAttributes.json in Headers */, 29724 9B864F06234C0893006D10EB /* IdleCallbackController.h in Headers */, 29725 9B74260B234BEA6E00DB52E9 /* IdleDeadline.h in Headers */, 29726 9B742605234BE95600DB52E9 /* IdleRequestCallback.h in Headers */, 29727 9B864F02234C028A006D10EB /* IdleRequestOptions.h in Headers */, 29702 29728 C0C054CD1118C8E400CE2636 /* IDLParser.pm in Headers */, 29703 29729 7C5222961E1DAE03002CB8F7 /* IDLTypes.h in Headers */, -
trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h
r250551 r250816 131 131 macro(ImageBitmap) \ 132 132 macro(ImageBitmapRenderingContext) \ 133 macro(IdleDeadline) \ 133 134 macro(InputEvent) \ 134 135 macro(IntersectionObserver) \ … … 244 245 macro(caches) \ 245 246 macro(cancel) \ 247 macro(cancelIdleCallback) \ 246 248 macro(cloneArrayBuffer) \ 247 249 macro(close) \ … … 318 320 macro(reader) \ 319 321 macro(readyPromiseCapability) \ 322 macro(requestIdleCallback) \ 320 323 macro(response) \ 321 324 macro(responseCacheIsValid) \ -
trunk/Source/WebCore/dom/Document.cpp
r250774 r250816 110 110 #include "History.h" 111 111 #include "HitTestResult.h" 112 #include "IdleCallbackController.h" 112 113 #include "ImageBitmapRenderingContext.h" 113 114 #include "ImageLoader.h" … … 6362 6363 } 6363 6364 6365 int Document::requestIdleCallback(Ref<IdleRequestCallback>&& callback, Seconds timeout) 6366 { 6367 if (!m_idleCallbackController) 6368 m_idleCallbackController = makeUnique<IdleCallbackController>(); 6369 return m_idleCallbackController->queueIdleCallback(WTFMove(callback), timeout); 6370 } 6371 6372 void Document::cancelIdleCallback(int id) 6373 { 6374 if (!m_idleCallbackController) 6375 return; 6376 m_idleCallbackController->removeIdleCallback(id); 6377 } 6378 6364 6379 void Document::wheelEventHandlersChanged() 6365 6380 { -
trunk/Source/WebCore/dom/Document.h
r250803 r250816 146 146 class HitTestRequest; 147 147 class HitTestResult; 148 class IdleCallbackController; 149 class IdleRequestCallback; 148 150 class ImageBitmapRenderingContext; 149 151 class IntPoint; … … 1207 1209 void cancelAnimationFrame(int id); 1208 1210 1211 int requestIdleCallback(Ref<IdleRequestCallback>&&, Seconds timeout); 1212 void cancelIdleCallback(int id); 1213 1209 1214 EventTarget* errorEventTarget() final; 1210 1215 void logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, RefPtr<Inspector::ScriptCallStack>&&) final; … … 1839 1844 RefPtr<ScriptedAnimationController> m_scriptedAnimationController; 1840 1845 1846 std::unique_ptr<IdleCallbackController> m_idleCallbackController; 1847 1841 1848 void notifyMediaCaptureOfVisibilityChanged(); 1842 1849 -
trunk/Source/WebCore/page/DOMWindow.cpp
r250735 r250816 69 69 #include "HTTPParsers.h" 70 70 #include "History.h" 71 #include "IdleRequestOptions.h" 71 72 #include "InspectorInstrumentation.h" 72 73 #include "JSDOMPromiseDeferred.h" … … 1782 1783 } 1783 1784 1785 int DOMWindow::requestIdleCallback(Ref<IdleRequestCallback>&& callback, const IdleRequestOptions& options) 1786 { 1787 auto document = makeRefPtr(this->document()); 1788 if (!document) 1789 return 0; 1790 return document->requestIdleCallback(WTFMove(callback), Seconds::fromMilliseconds(options.timeout)); 1791 } 1792 1793 void DOMWindow::cancelIdleCallback(int id) 1794 { 1795 auto document = makeRefPtr(this->document()); 1796 if (!document) 1797 return; 1798 return document->cancelIdleCallback(id); 1799 } 1800 1784 1801 void DOMWindow::createImageBitmap(ImageBitmap::Source&& source, ImageBitmapOptions&& options, ImageBitmap::Promise&& promise) 1785 1802 { -
trunk/Source/WebCore/page/DOMWindow.h
r250803 r250816 66 66 class FloatRect; 67 67 class History; 68 class IdleRequestCallback; 68 69 class Location; 69 70 class MediaQueryList; … … 76 77 class PostMessageTimer; 77 78 class RequestAnimationFrameCallback; 79 class RequestIdleCallback; 78 80 class ScheduledAction; 79 81 class Screen; … … 89 91 #endif 90 92 93 struct IdleRequestOptions; 91 94 struct ImageBitmapOptions; 92 95 struct WindowFeatures; … … 276 279 int webkitRequestAnimationFrame(Ref<RequestAnimationFrameCallback>&&); 277 280 void cancelAnimationFrame(int id); 281 282 int requestIdleCallback(Ref<IdleRequestCallback>&&, const IdleRequestOptions&); 283 void cancelIdleCallback(int id); 278 284 279 285 // ImageBitmap -
trunk/Source/WebCore/page/DOMWindow.idl
r250558 r250816 94 94 void cancelAnimationFrame(long handle); // FIXME: handle should be an unsigned long. 95 95 96 [EnabledBySetting=requestIdleCallback] unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options); 97 [EnabledBySetting=requestIdleCallback] void cancelIdleCallback(unsigned long handle); 98 96 99 [CallWith=ExecState&IncumbentWindow, DoNotCheckSecurity, ForwardDeclareInHeader, MayThrowException] void postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []); 97 100 -
trunk/Source/WebCore/page/Settings.yaml
r249162 r250816 338 338 requestAnimationFrameEnabled: 339 339 initial: true 340 requestIdleCallbackEnabled: 341 initial: false 340 342 341 343 HTTPSUpgradeEnabled: -
trunk/Source/WebKit/ChangeLog
r250804 r250816 1 2019-10-07 Ryosuke Niwa <rniwa@webkit.org> 2 3 Add IDL for requestIdleCallback 4 https://bugs.webkit.org/show_bug.cgi?id=202653 5 6 Reviewed by Geoffrey Garen. 7 8 * Shared/WebPreferences.yaml: 9 1 10 2019-10-07 Kate Cheney <katherine_cheney@apple.com> 2 11 -
trunk/Source/WebKit/Shared/WebPreferences.yaml
r250780 r250816 362 362 type: bool 363 363 defaultValue: true 364 365 RequestIdleCallbackEnabled: 366 type: bool 367 defaultValue: false 368 humanReadableName: "requestIdleCallback" 369 humanReadableDescription: "Enable requestIdleCallback support" 370 category: experimental 364 371 365 372 DiagnosticLoggingEnabled: -
trunk/Source/WebKitLegacy/mac/ChangeLog
r250803 r250816 1 2019-10-07 Ryosuke Niwa <rniwa@webkit.org> 2 3 Add IDL for requestIdleCallback 4 https://bugs.webkit.org/show_bug.cgi?id=202653 5 6 Reviewed by Geoffrey Garen. 7 8 * WebView/WebPreferenceKeysPrivate.h: 9 * WebView/WebPreferences.mm: 10 (+[WebPreferences initialize]): 11 * WebView/WebPreferencesPrivate.h: 12 * WebView/WebView.mm: 13 (-[WebView _preferencesChanged:]): 14 1 15 2019-10-07 Yusuke Suzuki <ysuzuki@apple.com> 2 16 -
trunk/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h
r250584 r250816 273 273 #define WebKitResizeObserverEnabledPreferenceKey @"WebKitResizeObserverEnabled" 274 274 #define WebKitCoreMathMLEnabledPreferenceKey @"WebKitCoreMathMLEnabled" 275 #define WebKitRequestIdleCallbackEnabledPreferenceKey @"WebKitRequestIdleCallbackEnabled" 275 276 #define WebKitLinkPreloadResponsiveImagesEnabledPreferenceKey @"WebKitLinkPreloadResponsiveImagesEnabled" 276 277 -
trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
r250584 r250816 691 691 #endif 692 692 @NO, WebKitCoreMathMLEnabledPreferenceKey, 693 @NO, WebKitRequestIdleCallbackEnabledPreferenceKey, 693 694 @NO, WebKitLinkPreloadResponsiveImagesEnabledPreferenceKey, 694 695 @NO, WebKitCSSShadowPartsEnabledPreferenceKey, … … 3499 3500 } 3500 3501 3502 - (BOOL)requestIdleCallbackEnabled 3503 { 3504 return [self _boolValueForKey:WebKitRequestIdleCallbackEnabledPreferenceKey]; 3505 } 3506 3507 - (void)setRequestIdleCallbackEnabled:(BOOL)flag 3508 { 3509 [self _setBoolValue:flag forKey:WebKitRequestIdleCallbackEnabledPreferenceKey]; 3510 } 3511 3501 3512 - (BOOL)linkPreloadResponsiveImagesEnabled 3502 3513 { -
trunk/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h
r250584 r250816 612 612 - (void)setCoreMathMLEnabled:(BOOL)flag; 613 613 - (BOOL)coreMathMLEnabled; 614 615 - (void)setRequestIdleCallbackEnabled:(BOOL)flag; 616 - (BOOL)requestIdleCallbackEnabled; 614 617 615 618 - (void)setLinkPreloadResponsiveImagesEnabled:(BOOL)flag; … … 653 656 @property (nonatomic) BOOL resizeObserverEnabled; 654 657 @property (nonatomic) BOOL coreMathMLEnabled; 658 @property (nonatomic) BOOL requestIdleCallbackEnabled; 655 659 @property (nonatomic) BOOL linkPreloadResponsiveImagesEnabled; 656 660 -
trunk/Source/WebKitLegacy/mac/WebView/WebView.mm
r250738 r250816 3236 3236 3237 3237 settings.setCoreMathMLEnabled([preferences coreMathMLEnabled]); 3238 settings.setRequestIdleCallbackEnabled([preferences requestIdleCallbackEnabled]); 3238 3239 3239 3240 RuntimeEnabledFeatures::sharedFeatures().setServerTimingEnabled([preferences serverTimingEnabled]); -
trunk/Tools/ChangeLog
r250811 r250816 1 2019-10-07 Ryosuke Niwa <rniwa@webkit.org> 2 3 Add IDL for requestIdleCallback 4 https://bugs.webkit.org/show_bug.cgi?id=202653 5 6 Reviewed by Geoffrey Garen. 7 8 * DumpRenderTree/TestOptions.cpp: 9 (TestOptions::TestOptions): 10 * DumpRenderTree/TestOptions.h: 11 * DumpRenderTree/mac/DumpRenderTree.mm: 12 (setWebPreferencesForTestOptions): 13 1 14 2019-10-07 Jiewen Tan <jiewen_tan@apple.com> 2 15 -
trunk/Tools/DumpRenderTree/TestOptions.cpp
r249961 r250816 124 124 else if (key == "experimental:CoreMathMLEnabled") 125 125 enableCoreMathML = parseBooleanTestHeaderValue(value); 126 else if (key == "experimental:RequestIdleCallbackEnabled") 127 enableRequestIdleCallback = parseBooleanTestHeaderValue(value); 126 128 pairStart = pairEnd + 1; 127 129 } -
trunk/Tools/DumpRenderTree/TestOptions.h
r249961 r250816 52 52 bool enableResizeObserver { false }; 53 53 bool enableCoreMathML { false }; 54 bool enableRequestIdleCallback { false }; 54 55 std::string jscOptions; 55 56 std::string additionalSupportedImageTypes; -
trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm
r250584 r250816 1029 1029 preferences.resizeObserverEnabled = options.enableResizeObserver; 1030 1030 preferences.coreMathMLEnabled = options.enableCoreMathML; 1031 preferences.requestIdleCallbackEnabled = options.enableRequestIdleCallback; 1031 1032 preferences.privateBrowsingEnabled = options.useEphemeralSession; 1032 1033 preferences.usesPageCache = options.enablePageCache;
Note: See TracChangeset
for help on using the changeset viewer.