Changeset 273438 in webkit
- Timestamp:
- Feb 24, 2021, 2:03:41 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 6 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/dom/Window/postMessage-Object-prototype-expected.txt (added)
-
LayoutTests/fast/dom/Window/postMessage-Object-prototype.html (added)
-
LayoutTests/fast/dom/Window/resources/postMessage-Object-prototype-frame.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/bindings/js/ScriptState.cpp (modified) (1 diff)
-
Source/WebCore/bindings/js/ScriptState.h (modified) (2 diffs)
-
Source/WebCore/dom/ScriptExecutionContext.cpp (modified) (1 diff)
-
Source/WebCore/inspector/InspectorFrontendHost.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r273436 r273438 1 2021-02-24 Chris Dumez <cdumez@apple.com> 2 3 Regression(r268700) postMessage changes prototype of basic types 4 https://bugs.webkit.org/show_bug.cgi?id=222228 5 <rdar://problem/74612853> 6 7 Reviewed by Geoffrey Garen. 8 9 Add layout test coverage. 10 11 * fast/dom/Window/postMessage-Object-prototype-expected.txt: Added. 12 * fast/dom/Window/postMessage-Object-prototype.html: Added. 13 * fast/dom/Window/resources/postMessage-Object-prototype-frame.html: Added. 14 1 15 2021-02-24 Jonathan Bedard <jbedard@apple.com> 2 16 -
trunk/Source/WebCore/ChangeLog
r273435 r273438 1 2021-02-24 Chris Dumez <cdumez@apple.com> 2 3 Regression(r268700) postMessage changes prototype of basic types 4 https://bugs.webkit.org/show_bug.cgi?id=222228 5 <rdar://problem/74612853> 6 7 Reviewed by Geoffrey Garen. 8 9 r268700 updated ScriptExecutionContext::globalObject() to call: 10 `WebCore::globalObject(mainThreadNormalWorld(), downcast<Document>(*this).page())` 11 instead of 12 `frame ? frame->script().globalObject(mainThreadNormalWorld()) : nullptr` 13 14 This was not right for subframes because globalObject() gets the globalObject from 15 the page's main frame instead of the document's frame. 16 17 This patch gets rid of the error-prone WebCore::globalObject() taking in a Page* 18 and replaces it with one taking in a Frame* to avoid such issues in the future. 19 20 Test: fast/dom/Window/postMessage-Object-prototype.html 21 22 * bindings/js/ScriptState.cpp: 23 (WebCore::globalObject): 24 * bindings/js/ScriptState.h: 25 * dom/ScriptExecutionContext.cpp: 26 (WebCore::ScriptExecutionContext::globalObject): 27 * inspector/InspectorFrontendHost.cpp: 28 (WebCore::InspectorFrontendHost::addSelfToGlobalObjectInWorld): 29 (WebCore::InspectorFrontendHost::showContextMenu): 30 1 31 2021-02-24 Ziran Sun <zsun@igalia.com> 2 32 -
trunk/Source/WebCore/bindings/js/ScriptState.cpp
r268775 r273438 93 93 } 94 94 95 JSC::JSGlobalObject* globalObject(DOMWrapperWorld& world, Page* page)95 JSC::JSGlobalObject* globalObject(DOMWrapperWorld& world, Frame* frame) 96 96 { 97 return page ? page->mainFrame().script().globalObject(world) : nullptr;97 return frame ? frame->script().globalObject(world) : nullptr; 98 98 } 99 99 -
trunk/Source/WebCore/bindings/js/ScriptState.h
r268700 r273438 43 43 class Frame; 44 44 class Node; 45 class Page;46 45 class ScriptExecutionContext; 47 46 class WorkerOrWorkletGlobalScope; … … 54 53 55 54 JSC::JSGlobalObject* globalObject(DOMWrapperWorld&, Node*); 56 WEBCORE_EXPORT JSC::JSGlobalObject* globalObject(DOMWrapperWorld&, Page*);55 WEBCORE_EXPORT JSC::JSGlobalObject* globalObject(DOMWrapperWorld&, Frame*); 57 56 JSC::JSGlobalObject* globalObject(WorkerOrWorkletGlobalScope&); 58 57 -
trunk/Source/WebCore/dom/ScriptExecutionContext.cpp
r268868 r273438 513 513 { 514 514 if (is<Document>(*this)) 515 return WebCore::globalObject(mainThreadNormalWorld(), downcast<Document>(*this). page());515 return WebCore::globalObject(mainThreadNormalWorld(), downcast<Document>(*this).frame()); 516 516 517 517 if (is<WorkerOrWorkletGlobalScope>(*this)) -
trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp
r273077 r273438 159 159 void InspectorFrontendHost::addSelfToGlobalObjectInWorld(DOMWrapperWorld& world) 160 160 { 161 auto& lexicalGlobalObject = *globalObject(world, m_frontendPage );161 auto& lexicalGlobalObject = *globalObject(world, m_frontendPage ? &m_frontendPage->mainFrame() : nullptr); 162 162 auto& vm = lexicalGlobalObject.vm(); 163 163 JSC::JSLockHolder lock(vm); … … 504 504 ASSERT(m_frontendPage); 505 505 506 auto& lexicalGlobalObject = *globalObject(debuggerWorld(), m_frontendPage);506 auto& lexicalGlobalObject = *globalObject(debuggerWorld(), &m_frontendPage->mainFrame()); 507 507 auto& vm = lexicalGlobalObject.vm(); 508 508 auto value = lexicalGlobalObject.get(&lexicalGlobalObject, JSC::Identifier::fromString(vm, "InspectorFrontendAPI"));
Note:
See TracChangeset
for help on using the changeset viewer.