Changeset 228309 in webkit
- Timestamp:
- Feb 8, 2018, 8:16:52 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 12 edited
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/bindings/js/DOMWrapperWorld.h (modified) (2 diffs)
-
Source/WebCore/bindings/js/JSDOMAbstractOperations.h (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h (modified) (1 diff)
-
Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm (modified) (1 diff)
-
Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp (modified) (1 diff)
-
Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h (modified) (1 diff)
-
Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp (modified) (1 diff)
-
Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (modified) (7 diffs)
-
Tools/TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior.cpp (added)
-
Tools/TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp (added)
-
Tools/TestWebKitAPI/Tests/WebKit/override-builtins-test.html (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r228308 r228309 1 2018-02-08 Chris Dumez <cdumez@apple.com> 2 3 There should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld 4 https://bugs.webkit.org/show_bug.cgi?id=182524 5 <rdar://problem/9057327> 6 7 Reviewed by Ryosuke Niwa. 8 9 Add new flag on DOMWrapperWorld indicating if the [OverrideBuiltins] behavior should 10 be enabled in this world or not. The behavior is enabled by default for Web-compatibility. 11 This flag is queried in accessVisibleNamedProperty() when doing the named property 12 lookup. 13 14 Covered by new API test. 15 16 * bindings/js/DOMWrapperWorld.h: 17 (WebCore::DOMWrapperWorld::disableOverrideBuiltinsBehavior): 18 (WebCore::DOMWrapperWorld::shouldDisableOverrideBuiltinsBehavior const): 19 * bindings/js/JSDOMAbstractOperations.h: 20 (WebCore::accessVisibleNamedProperty): 21 1 22 2018-02-08 Per Arne Vollan <pvollan@apple.com> 2 23 -
trunk/Source/WebCore/bindings/js/DOMWrapperWorld.h
r228260 r228309 48 48 bool shadowRootIsAlwaysOpen() const { return m_shadowRootIsAlwaysOpen; } 49 49 50 void disableOverrideBuiltinsBehavior() { m_shouldDisableOverrideBuiltinsBehavior = true; } 51 bool shouldDisableOverrideBuiltinsBehavior() const { return m_shouldDisableOverrideBuiltinsBehavior; } 52 50 53 DOMObjectWrapperMap& wrappers() { return m_wrappers; } 51 54 … … 64 67 bool m_isNormal; 65 68 bool m_shadowRootIsAlwaysOpen { false }; 69 bool m_shouldDisableOverrideBuiltinsBehavior { false }; 66 70 }; 67 71 -
trunk/Source/WebCore/bindings/js/JSDOMAbstractOperations.h
r223746 r228309 105 105 106 106 // 3. If O implements an interface that has the [OverrideBuiltins] extended attribute, then return true. 107 if (overrideBuiltins == OverrideBuiltins::Yes )107 if (overrideBuiltins == OverrideBuiltins::Yes && !worldForDOMObject(thisObject).shouldDisableOverrideBuiltinsBehavior()) 108 108 return result; 109 109 -
trunk/Source/WebKit/ChangeLog
r228307 r228309 1 2018-02-08 Chris Dumez <cdumez@apple.com> 2 3 There should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld 4 https://bugs.webkit.org/show_bug.cgi?id=182524 5 <rdar://problem/9057327> 6 7 Reviewed by Ryosuke Niwa. 8 9 Add C API on WKBundleScriptWorld and Cocoa API on WKWebProcessPlugInScriptWorld to 10 disable the [OverrideBuiltins] behavior on a given script world. 11 12 The [OverrideBuiltins] behavior [1] is legacy behavior that is needed for Web compatibility 13 but allowing the client to disable this behavior in a given world makes development easier 14 and running injected script on uncontrolled content a lot more reliable. 15 16 [1] https://heycam.github.io/webidl/#OverrideBuiltins 17 18 * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: 19 * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm: 20 (-[WKWebProcessPlugInScriptWorld disableOverrideBuiltinsBehavior]): 21 * WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp: 22 (WKBundleScriptWorldDisableOverrideBuiltinsBehavior): 23 * WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h: 24 * WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp: 25 (WebKit::InjectedBundleScriptWorld::disableOverrideBuiltinsBehavior): 26 * WebProcess/InjectedBundle/InjectedBundleScriptWorld.h: 27 1 28 2018-02-08 Ross Kirsling <ross.kirsling@sony.com> 2 29 -
trunk/Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h
r205559 r228309 40 40 - (void)clearWrappers; 41 41 - (void)makeAllShadowRootsOpen WK_API_AVAILABLE(macosx(10.12), ios(10.0)); 42 - (void)disableOverrideBuiltinsBehavior WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 42 43 43 44 @end -
trunk/Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm
r216810 r228309 62 62 } 63 63 64 - (void)disableOverrideBuiltinsBehavior 65 { 66 _world->disableOverrideBuiltinsBehavior(); 67 } 68 64 69 - (NSString *)name 65 70 { -
trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp
r216810 r228309 59 59 } 60 60 61 void WKBundleScriptWorldDisableOverrideBuiltinsBehavior(WKBundleScriptWorldRef scriptWorldRef) 62 { 63 toImpl(scriptWorldRef)->disableOverrideBuiltinsBehavior(); 64 } 65 61 66 WKStringRef WKBundleScriptWorldCopyName(WKBundleScriptWorldRef scriptWorldRef) 62 67 { -
trunk/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h
r197172 r228309 39 39 WK_EXPORT void WKBundleScriptWorldClearWrappers(WKBundleScriptWorldRef scriptWorld); 40 40 WK_EXPORT void WKBundleScriptWorldMakeAllShadowRootsOpen(WKBundleScriptWorldRef scriptWorld); 41 WK_EXPORT void WKBundleScriptWorldDisableOverrideBuiltinsBehavior(WKBundleScriptWorldRef scriptWorld); 41 42 WK_EXPORT WKStringRef WKBundleScriptWorldCopyName(WKBundleScriptWorldRef scriptWorld); 42 43 -
trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp
r216810 r228309 113 113 } 114 114 115 void InjectedBundleScriptWorld::disableOverrideBuiltinsBehavior() 116 { 117 m_world->disableOverrideBuiltinsBehavior(); 118 } 119 115 120 } // namespace WebKit -
trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h
r216810 r228309 52 52 void clearWrappers(); 53 53 void makeAllShadowRootsOpen(); 54 void disableOverrideBuiltinsBehavior(); 54 55 55 56 const String& name() const { return m_name; } -
trunk/Tools/ChangeLog
r228304 r228309 1 2018-02-08 Chris Dumez <cdumez@apple.com> 2 3 There should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld 4 https://bugs.webkit.org/show_bug.cgi?id=182524 5 <rdar://problem/9057327> 6 7 Reviewed by Ryosuke Niwa. 8 9 Add API test coverage. 10 11 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 12 * TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior.cpp: Added. 13 (TestWebKitAPI::runJavaScriptAlert): 14 (TestWebKitAPI::TEST): 15 * TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp: Added. 16 (TestWebKitAPI::InjectedBundleDisableOverrideBuiltinsBehaviorTest::InjectedBundleDisableOverrideBuiltinsBehaviorTest): 17 (TestWebKitAPI::InjectedBundleDisableOverrideBuiltinsBehaviorTest::initialize): 18 * TestWebKitAPI/Tests/WebKit/override-builtins-test.html: Added. 19 1 20 2018-02-08 Michael Catanzaro <mcatanzaro@igalia.com> 2 21 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r228253 r228309 535 535 7CEFA9661AC0B9E200B910FD /* _WKUserContentExtensionStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7CEFA9641AC0B9E200B910FD /* _WKUserContentExtensionStore.mm */; }; 536 536 7CFBCAE51743238F00B2BFCF /* WillLoad_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CFBCAE31743238E00B2BFCF /* WillLoad_Bundle.cpp */; }; 537 83148B06202AC6A400BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83148B05202AC68200BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior.cpp */; }; 538 83148B07202AC6AD00BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83148B04202AC68200BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp */; }; 539 83148B09202AC78D00BADE99 /* override-builtins-test.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 83148B08202AC76800BADE99 /* override-builtins-test.html */; }; 537 540 8349D3C21DB96DDE004A9F65 /* ContextMenuDownload.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8349D3C11DB96DDA004A9F65 /* ContextMenuDownload.mm */; }; 538 541 8349D3C41DB9728E004A9F65 /* link-with-download-attribute.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 8349D3C31DB9724F004A9F65 /* link-with-download-attribute.html */; }; … … 1021 1024 7CCB99231D3B4A46003922F6 /* open-multiple-external-url.html in Copy Resources */, 1022 1025 290A9BB91735F63800D71BBC /* OpenNewWindow.html in Copy Resources */, 1026 83148B09202AC78D00BADE99 /* override-builtins-test.html in Copy Resources */, 1023 1027 CEBCA1391E3A807A00C73293 /* page-with-csp-iframe.html in Copy Resources */, 1024 1028 CEBCA1381E3A807A00C73293 /* page-with-csp.html in Copy Resources */, … … 1523 1527 7CFBCAE31743238E00B2BFCF /* WillLoad_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WillLoad_Bundle.cpp; sourceTree = "<group>"; }; 1524 1528 81B50192140F232300D9EB58 /* StringBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringBuilder.cpp; sourceTree = "<group>"; }; 1529 83148B04202AC68200BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp; sourceTree = "<group>"; }; 1530 83148B05202AC68200BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleDisableOverrideBuiltinsBehavior.cpp; sourceTree = "<group>"; }; 1531 83148B08202AC76800BADE99 /* override-builtins-test.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "override-builtins-test.html"; sourceTree = "<group>"; }; 1525 1532 8349D3C11DB96DDA004A9F65 /* ContextMenuDownload.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ContextMenuDownload.mm; sourceTree = "<group>"; }; 1526 1533 8349D3C31DB9724F004A9F65 /* link-with-download-attribute.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "link-with-download-attribute.html"; sourceTree = "<group>"; }; … … 2586 2593 BC575AAC126E83B9006F0F12 /* InjectedBundleBasic.cpp */, 2587 2594 BC575AAF126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp */, 2595 83148B05202AC68200BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior.cpp */, 2596 83148B04202AC68200BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp */, 2588 2597 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */, 2589 2598 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */, … … 2811 2820 C99B675E1E39735C00FC6C80 /* no-autoplay-with-controls.html */, 2812 2821 CEA6CF2719CCF69D0064F5A7 /* open-and-close-window.html */, 2822 83148B08202AC76800BADE99 /* override-builtins-test.html */, 2813 2823 0EBBCC651FFF9DCE00FA42AB /* pop-up-check.html */, 2814 2824 F6FDDDD514241C48004F1729 /* push-state.html */, … … 3477 3487 7A95BDE11E9BEC5F00865498 /* InjectedBundleAppleEvent.cpp in Sources */, 3478 3488 7CCE7EFB1A411AE600447C4C /* InjectedBundleBasic.cpp in Sources */, 3489 83148B06202AC6A400BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior.cpp in Sources */, 3479 3490 7CCE7EFC1A411AE600447C4C /* InjectedBundleFrameHitTest.cpp in Sources */, 3480 3491 7CCE7EFD1A411AE600447C4C /* InjectedBundleInitializationUserDataCallbackWins.cpp in Sources */, … … 3757 3768 BC575AA2126E7660006F0F12 /* InjectedBundleController.cpp in Sources */, 3758 3769 1AEDE22613E5E7E700E62FE8 /* InjectedBundleControllerMac.mm in Sources */, 3770 83148B07202AC6AD00BADE99 /* InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp in Sources */, 3759 3771 378E64771632655E00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp in Sources */, 3760 3772 F660AA1515A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp in Sources */,
Note:
See TracChangeset
for help on using the changeset viewer.