Changeset 260684 in webkit
- Timestamp:
- Apr 24, 2020 5:51:20 PM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r260683 r260684 1 2020-04-24 Chris Dumez <cdumez@apple.com> 2 3 [iOS] Unable to sign up on twitter.com 4 https://bugs.webkit.org/show_bug.cgi?id=211003 5 <rdar://problem/58804852> 6 7 Reviewed by Darin Adler. 8 9 This is similar to the bug we had on nytimes.com and that was fixed in 10 r258767. However, instead of a 'resize' event, it is a 'change' event 11 on a MediaQueryList that is getting twitter.com in a bad state. 12 13 The issue is that when we home out of Safari, SpringBoard takes does 14 a snapshot sequence at various sizes / orientations and this causes 15 many JS events to get fired (e.g. 'resize', 'orientationchange', 16 'change', ...), which can get some sites in a bad state. To address 17 the issue, we now prevent firing of ALL JS events during the 18 SpringBoard snapshot, instead of merely preventing the 'resize' ones. 19 20 * dom/EventTarget.cpp: 21 (WebCore::EventTarget::fireEventListeners): 22 * page/FrameView.cpp: 23 (WebCore::FrameView::sendResizeEventIfNeeded): 24 * page/Page.h: 25 (WebCore::Page::shouldFireEvents const): 26 (WebCore::Page::setShouldFireEvents): 27 (WebCore::Page::shouldFireResizeEvents const): Deleted. 28 (WebCore::Page::setShouldFireResizeEvents): Deleted. 29 1 30 2020-04-24 Saam Barati <sbarati@apple.com> 2 31 -
trunk/Source/WebCore/dom/EventTarget.cpp
r259009 r260684 41 41 #include "JSEventListener.h" 42 42 #include "JSLazyEventListener.h" 43 #include "Logging.h" 43 44 #include "Quirks.h" 44 45 #include "ScriptController.h" … … 252 253 return; 253 254 255 // FIXME: Remove once <rdar://problem/62344280> is fixed. 256 if (is<Document>(scriptExecutionContext())) { 257 auto* page = downcast<Document>(*scriptExecutionContext()).page(); 258 if (page && !page->shouldFireEvents()) { 259 RELEASE_LOG_IF(page->isAlwaysOnLoggingAllowed(), Events, "%p - EventTarget::fireEventListeners: Not firing %{public}s event because events are temporarily disabled for this page", this, event.type().string().utf8().data()); 260 return; 261 } 262 } 263 254 264 SetForScope<bool> firingEventListenersScope(data->isFiringEventListeners, true); 255 265 -
trunk/Source/WebCore/page/FrameView.cpp
r260171 r260684 3377 3377 #endif 3378 3378 3379 if (page && !page->shouldFireResizeEvents()) {3380 FRAMEVIEW_RELEASE_LOG_IF_ALLOWED(Events, "sendResizeEventIfNeeded: Not firing resize events because they are temporarily disabled for this page");3381 return;3382 }3383 3384 3379 LOG_WITH_STREAM(Events, stream << "FrameView" << this << "sendResizeEventIfNeeded scheduling resize event for document" << frame().document() << ", size " << currentSize); 3385 3380 frame().document()->setNeedsDOMWindowResizeEvent(); -
trunk/Source/WebCore/page/Page.h
r260643 r260684 745 745 WEBCORE_EXPORT void removeInjectedUserStyleSheet(UserStyleSheet&); 746 746 747 bool shouldFire ResizeEvents() const { return m_shouldFireResizeEvents; }748 void setShouldFire ResizeEvents(bool shouldFireResizeEvents) { m_shouldFireResizeEvents = shouldFireResizeEvents; }747 bool shouldFireEvents() const { return m_shouldFireEvents; } 748 void setShouldFireEvents(bool shouldFireEvents) { m_shouldFireEvents = shouldFireEvents; } 749 749 750 750 bool hasBeenNotifiedToInjectUserScripts() const { return m_hasBeenNotifiedToInjectUserScripts; } … … 1034 1034 Vector<UserContentURLPattern> m_corsDisablingPatterns; 1035 1035 Vector<UserStyleSheet> m_userStyleSheetsPendingInjection; 1036 bool m_shouldFire ResizeEvents { true };1036 bool m_shouldFireEvents { true }; 1037 1037 bool m_loadsSubresources { true }; 1038 1038 bool m_loadsFromNetwork { true }; -
trunk/Source/WebKit/ChangeLog
r260672 r260684 1 2020-04-24 Chris Dumez <cdumez@apple.com> 2 3 [iOS] Unable to sign up on twitter.com 4 https://bugs.webkit.org/show_bug.cgi?id=211003 5 <rdar://problem/58804852> 6 7 Reviewed by Darin Adler. 8 9 * UIProcess/WebPageProxy.cpp: 10 * UIProcess/WebPageProxy.h: 11 * UIProcess/ios/WKApplicationStateTrackingView.mm: 12 (-[WKApplicationStateTrackingView _willBeginSnapshotSequence]): 13 (-[WKApplicationStateTrackingView _didCompleteSnapshotSequence]): 14 * WebProcess/WebPage/WebPage.cpp: 15 (WebKit::WebPage::setShouldFireEvents): 16 (WebKit::WebPage::setShouldFireResizeEvents): Deleted. 17 * WebProcess/WebPage/WebPage.h: 18 * WebProcess/WebPage/WebPage.messages.in: 19 1 20 2020-04-24 Christopher Reid <chris.reid@sony.com> 2 21 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r260658 r260684 10105 10105 } 10106 10106 10107 void WebPageProxy::setShouldFire ResizeEvents(bool shouldFireResizeEvents)10108 { 10109 send(Messages::WebPage::SetShouldFire ResizeEvents(shouldFireResizeEvents));10107 void WebPageProxy::setShouldFireEvents(bool shouldFireEvents) 10108 { 10109 send(Messages::WebPage::SetShouldFireEvents(shouldFireEvents)); 10110 10110 } 10111 10111 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r260658 r260684 1732 1732 #endif 1733 1733 1734 void setShouldFire ResizeEvents(bool);1734 void setShouldFireEvents(bool); 1735 1735 void setNeedsDOMWindowResizeEvent(); 1736 1736 -
trunk/Source/WebKit/UIProcess/ios/WKApplicationStateTrackingView.mm
r258767 r260684 110 110 return; 111 111 112 page->setShouldFire ResizeEvents(false);112 page->setShouldFireEvents(false); 113 113 } 114 114 … … 119 119 return; 120 120 121 page->setShouldFire ResizeEvents(true);121 page->setShouldFireEvents(true); 122 122 } 123 123 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r260652 r260684 3308 3308 } 3309 3309 3310 void WebPage::setShouldFire ResizeEvents(bool shouldFireResizeEvents)3311 { 3312 RELEASE_LOG_IF_ALLOWED(Resize, "setShouldFire ResizeEvents(%d)", shouldFireResizeEvents);3310 void WebPage::setShouldFireEvents(bool shouldFireEvents) 3311 { 3312 RELEASE_LOG_IF_ALLOWED(Resize, "setShouldFireEvents(%d)", shouldFireEvents); 3313 3313 3314 3314 if (m_page) 3315 m_page->setShouldFire ResizeEvents(shouldFireResizeEvents);3315 m_page->setShouldFireEvents(shouldFireEvents); 3316 3316 } 3317 3317 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r260652 r260684 1707 1707 void urlSchemeTaskDidComplete(uint64_t handlerIdentifier, uint64_t taskIdentifier, const WebCore::ResourceError&); 1708 1708 1709 void setShouldFire ResizeEvents(bool);1709 void setShouldFireEvents(bool); 1710 1710 void setNeedsDOMWindowResizeEvent(); 1711 1711 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in
r260652 r260684 603 603 GetProcessDisplayName() -> (String displayName) Async 604 604 605 SetShouldFire ResizeEvents(bool shouldFireResizeEvents)605 SetShouldFireEvents(bool shouldFireEvents) 606 606 SetNeedsDOMWindowResizeEvent() 607 607
Note: See TracChangeset
for help on using the changeset viewer.