Diff
Modified: trunk/Source/WebCore/ChangeLog (275433 => 275434)
--- trunk/Source/WebCore/ChangeLog 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebCore/ChangeLog 2021-04-02 19:37:24 UTC (rev 275434)
@@ -1,3 +1,16 @@
+2021-04-02 Chris Dumez <[email protected]>
+
+ Make sure we are no longer show the previous page when running a JS prompt
+ https://bugs.webkit.org/show_bug.cgi?id=215782
+ <rdar://problem/67698601>
+
+ Reviewed by Simon Fraser.
+
+ Add linked-on-after check for the behavior change to minimize the risk of
+ breakage.
+
+ * platform/cocoa/VersionChecks.h:
+
2021-04-02 Devin Rousso <[email protected]>
[iPadOS] unable to reorder tabs on `*.mybinder.org`
Modified: trunk/Source/WebCore/platform/cocoa/VersionChecks.h (275433 => 275434)
--- trunk/Source/WebCore/platform/cocoa/VersionChecks.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebCore/platform/cocoa/VersionChecks.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -71,6 +71,7 @@
FirstWithoutWeChatScrollingQuirk = DYLD_IOS_VERSION_14_5,
FirstWithDOMWindowReuseRestriction = DYLD_IOS_VERSION_14_5,
FirstWithSharedNetworkProcess = DYLD_IOS_VERSION_14_5,
+ FirstWithBlankViewOnJSPrompt = DYLD_IOS_VERSION_14_5,
#elif PLATFORM(MAC)
FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11,
FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_MACOSX_VERSION_10_13,
@@ -92,6 +93,7 @@
FirstWithHTMLDocumentSupportedPropertyNames = DYLD_MACOSX_VERSION_11_3,
FirstWithNullOriginForNonSpecialSchemedURLs = DYLD_MACOSX_VERSION_12_00,
FirstWithDOMWindowReuseRestriction = DYLD_MACOSX_VERSION_11_3,
+ FirstWithBlankViewOnJSPrompt = DYLD_MACOSX_VERSION_11_3,
#endif
};
Modified: trunk/Source/WebKit/ChangeLog (275433 => 275434)
--- trunk/Source/WebKit/ChangeLog 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/ChangeLog 2021-04-02 19:37:24 UTC (rev 275434)
@@ -1,3 +1,54 @@
+2021-04-02 Chris Dumez <[email protected]>
+
+ Make sure we are no longer show the previous page when running a JS prompt
+ https://bugs.webkit.org/show_bug.cgi?id=215782
+ <rdar://problem/67698601>
+
+ Reviewed by Simon Fraser.
+
+ Make sure we are no longer show the previous page when running a JS prompt.
+ If we have not yet done a layer tree commit since the last load commit, then
+ we are likely still showing the previous page. If we are asked to run a JS
+ prompt / alert / confirm at this point, it would be confusing to still show
+ the previous page. In order to address the issue, we now make the view blank
+ in such scenario (ideally, we'd have painted the new page but this is
+ currently not a trivial thing to do).
+
+ To make the view blank, the approach chosen was to add a blank overlay view
+ on top of the content. This overlay view gets taken down as soon as we
+ paint the view again.
+
+ * SourcesCocoa.txt:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _hasBlankOverlay]):
+ (-[WKWebView _setHasBlankOverlay:]):
+ * UIProcess/API/Cocoa/WKWebViewInternal.h:
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/Cocoa/PageClientImplCocoa.h:
+ * UIProcess/Cocoa/PageClientImplCocoa.mm:
+ (WebKit::PageClientImplCocoa::setHasBlankOverlay):
+ * UIProcess/Cocoa/WKBlankOverlayView.h: Added.
+ * UIProcess/Cocoa/WKBlankOverlayView.mm: Added.
+ (-[WKBlankOverlayView initWithFrame:]):
+ * UIProcess/PageClient.h:
+ (WebKit::PageClient::setHasBlankOverlay):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * UIProcess/ios/WebPageProxyIOS.mm:
+ (WebKit::WebPageProxy::didCommitLayerTree):
+ * UIProcess/mac/WebPageProxyMac.mm:
+ (WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):
+ * WebKit.xcodeproj/project.pbxproj:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::didCommitLoad):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ (WebKit::TiledCoreAnimationDrawingArea::updateRendering):
+ * WebProcess/WebPage/mac/WebPageMac.mm:
+ (WebKit::WebPage::didUpdateRendering):
+
2021-04-02 Per Arne <[email protected]>
Add IOKit method filter telemetry
Modified: trunk/Source/WebKit/SourcesCocoa.txt (275433 => 275434)
--- trunk/Source/WebKit/SourcesCocoa.txt 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/SourcesCocoa.txt 2021-04-02 19:37:24 UTC (rev 275434)
@@ -413,6 +413,7 @@
UIProcess/Cocoa/WebProcessProxyCocoa.mm
UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm
UIProcess/Cocoa/WebViewImpl.mm
+UIProcess/Cocoa/WKBlankOverlayView.mm
UIProcess/Cocoa/WKContactPicker.mm
UIProcess/Cocoa/WKEditCommand.mm
UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -1455,6 +1455,26 @@
#endif // ENABLE(ATTACHMENT_ELEMENT)
+- (BOOL)_hasBlankOverlay
+{
+ return !!_blankOverlayView;
+}
+
+- (void)_setHasBlankOverlay:(BOOL)hasBlankOverlay
+{
+ if (!!_blankOverlayView == hasBlankOverlay)
+ return;
+
+ if (hasBlankOverlay) {
+ auto backgroundColor = _page->backgroundColor().valueOr(WebCore::Color::white);
+ _blankOverlayView = adoptNS([[WKBlankOverlayView alloc] initWithFrame:[self bounds] color:platformColor(backgroundColor)]);
+ [self addSubview:_blankOverlayView.get()];
+ } else {
+ [_blankOverlayView removeFromSuperview];
+ _blankOverlayView = nullptr;
+ }
+}
+
- (id <_WKAppHighlightDelegate>)_appHighlightDelegate
{
#if ENABLE(APP_HIGHLIGHTS)
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -25,6 +25,7 @@
#import "PDFPluginIdentifier.h"
#import "SameDocumentNavigationType.h"
+#import "WKBlankOverlayView.h"
#import "WKShareSheet.h"
#import "WKWebViewConfiguration.h"
#import "WKWebViewPrivate.h"
@@ -132,6 +133,8 @@
_WKRenderingProgressEvents _observedRenderingProgressEvents;
BOOL _usePlatformFindUI;
+ RetainPtr<WKBlankOverlayView> _blankOverlayView;
+
#if PLATFORM(MAC)
std::unique_ptr<WebKit::WebViewImpl> _impl;
RetainPtr<WKTextFinderClient> _textFinderClient;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -366,6 +366,8 @@
- (void)_didEnableBrowserExtensions:(NSDictionary<NSString *, NSString *> *)extensionIDToNameMap WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
- (void)_didDisableBrowserExtensions:(NSSet<NSString *> *)extensionIDs WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+@property (nonatomic, setter=_setHasBlankOverlay:) BOOL _hasBlankOverlay WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
+
@property (nonatomic, weak, setter=_setAppHighlightDelegate:) id <_WKAppHighlightDelegate> _appHighlightDelegate WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
- (void)_restoreAppHighlights:(NSArray<NSData *> *)data WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
- (void)_addAppHighlight WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
Modified: trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -60,6 +60,8 @@
bool scrollingUpdatesDisabledForTesting() final;
+ void setHasBlankOverlay(bool) final;
+
#if ENABLE(ATTACHMENT_ELEMENT)
void didInsertAttachment(API::Attachment&, const String& source) final;
void didRemoveAttachment(API::Attachment&) final;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -28,6 +28,7 @@
#import "WKWebViewConfigurationPrivate.h"
#import "WKWebViewInternal.h"
+#import "WKWebViewPrivate.h"
#import "WKWebViewPrivateForTesting.h"
#import <WebCore/AlternativeTextUIController.h>
#import <wtf/Vector.h>
@@ -79,6 +80,11 @@
return [m_webView _scrollingUpdatesDisabledForTesting];
}
+void PageClientImplCocoa::setHasBlankOverlay(bool hasBlankOverlay)
+{
+ [m_webView _setHasBlankOverlay:hasBlankOverlay];
+}
+
#if ENABLE(ATTACHMENT_ELEMENT)
void PageClientImplCocoa::didInsertAttachment(API::Attachment& attachment, const String& source)
Added: trunk/Source/WebKit/UIProcess/Cocoa/WKBlankOverlayView.h (0 => 275434)
--- trunk/Source/WebKit/UIProcess/Cocoa/WKBlankOverlayView.h (rev 0)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WKBlankOverlayView.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if PLATFORM(MAC)
+#import <AppKit/AppKit.h>
+
+using ColorType = NSColor;
+using ViewType = NSView;
+using RectType = NSRect;
+#else
+#import <UIKit/UIKit.h>
+
+using ColorType = UIColor;
+using ViewType = UIView;
+using RectType = CGRect;
+#endif
+
+@interface WKBlankOverlayView : ViewType
+
+- (instancetype)initWithFrame:(RectType)frame color:(ColorType*)color;
+
+@end
Added: trunk/Source/WebKit/UIProcess/Cocoa/WKBlankOverlayView.mm (0 => 275434)
--- trunk/Source/WebKit/UIProcess/Cocoa/WKBlankOverlayView.mm (rev 0)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WKBlankOverlayView.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "WKBlankOverlayView.h"
+
+@implementation WKBlankOverlayView {
+}
+
+- (instancetype)initWithFrame:(RectType)frame color:(ColorType*)color
+{
+ if (!(self = [super initWithFrame:frame]))
+ return nil;
+
+#if PLATFORM(MAC)
+ [self setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
+ [self setWantsLayer:YES];
+#else
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
+#endif
+ [[self layer] setBackgroundColor:[color CGColor]];
+ [[self layer] setName:@"WKBlankOverlayView layer"];
+
+ return self;
+}
+
+@end
Modified: trunk/Source/WebKit/UIProcess/PageClient.h (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/PageClient.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/PageClient.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -519,6 +519,8 @@
virtual void setMouseEventPolicy(WebCore::MouseEventPolicy) { }
+ virtual void setHasBlankOverlay(bool) { }
+
#if HAVE(PASTEBOARD_DATA_OWNER)
virtual WebCore::DataOwnerType dataOwnerForPasteboard(PasteboardAccessIntent) const { return WebCore::DataOwnerType::Undefined; }
#endif
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-04-02 19:37:24 UTC (rev 275434)
@@ -2470,6 +2470,33 @@
}
#endif
+void WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate()
+{
+#if PLATFORM(COCOA)
+ ASSERT(m_hasUpdatedRenderingAfterDidCommitLoad);
+ RELEASE_LOG_IF_ALLOWED(Process, "stopMakingViewBlankDueToLackOfRenderingUpdate:");
+ pageClient().setHasBlankOverlay(false);
+#endif
+}
+
+// If we have not painted yet since the last load commit, then we are likely still displaying the previous page.
+// Displaying a JS prompt for the new page with the old page behind would be confusing so we add a blank overlay
+// on top of the view in this case.
+void WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit()
+{
+#if PLATFORM(COCOA)
+ if (!m_hasUpdatedRenderingAfterDidCommitLoad) {
+ static bool shouldMakeViewBlank = linkedOnOrAfter(WebCore::SDKVersion::FirstWithBlankViewOnJSPrompt);
+ // Add a blank overlay view to make the view blank. This overlay will be taken down once
+ // when we've painted for the first time after committing a load.
+ if (shouldMakeViewBlank) {
+ RELEASE_LOG_IF_ALLOWED(Process, "makeViewBlankIfUnpaintedSinceLastLoadCommit: Making the view blank because of a JS prompt before the first paint for its page");
+ pageClient().setHasBlankOverlay(true);
+ }
+ }
+#endif
+}
+
void WebPageProxy::discardQueuedMouseEvents()
{
while (m_mouseEventQueue.size() > 1)
@@ -4647,10 +4674,12 @@
m_hasCommittedAnyProvisionalLoads = true;
m_process->didCommitProvisionalLoad();
+#if PLATFORM(COCOA)
+ if (frame->isMainFrame()) {
+ m_hasUpdatedRenderingAfterDidCommitLoad = false;
#if PLATFORM(IOS_FAMILY)
- if (frame->isMainFrame()) {
- m_hasReceivedLayerTreeTransactionAfterDidCommitLoad = false;
m_firstLayerTreeTransactionIdAfterDidCommitLoad = downcast<RemoteLayerTreeDrawingAreaProxy>(*drawingArea()).nextLayerTreeTransactionID();
+#endif
}
#endif
@@ -5639,6 +5668,9 @@
if (auto* automationSession = process().processPool().automationSession())
automationSession->willShowJavaScriptDialog(*this);
}
+
+ makeViewBlankIfUnpaintedSinceLastLoadCommit();
+
m_uiClient->runJavaScriptAlert(*this, message, frame, WTFMove(frameInfo), WTFMove(reply));
}
@@ -5657,6 +5689,8 @@
automationSession->willShowJavaScriptDialog(*this);
}
+ makeViewBlankIfUnpaintedSinceLastLoadCommit();
+
m_uiClient->runJavaScriptConfirm(*this, message, frame, WTFMove(frameInfo), WTFMove(reply));
}
@@ -5675,6 +5709,8 @@
automationSession->willShowJavaScriptDialog(*this);
}
+ makeViewBlankIfUnpaintedSinceLastLoadCommit();
+
m_uiClient->runJavaScriptPrompt(*this, message, defaultValue, frame, WTFMove(frameInfo), WTFMove(reply));
}
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -2194,6 +2194,9 @@
void didPerformDictionaryLookup(const WebCore::DictionaryPopupInfo&);
#endif
+ void stopMakingViewBlankDueToLackOfRenderingUpdate();
+ void makeViewBlankIfUnpaintedSinceLastLoadCommit();
+
// Spelling and grammar.
void checkSpellingOfString(const String& text, CompletionHandler<void(int32_t misspellingLocation, int32_t misspellingLength)>&&);
void checkGrammarOfString(const String& text, CompletionHandler<void(Vector<WebCore::GrammarDetail>&&, int32_t badGrammarLocation, int32_t badGrammarLength)>&&);
@@ -2213,6 +2216,7 @@
void didReceiveEvent(uint32_t opaqueType, bool handled);
#if PLATFORM(MAC)
+ void didUpdateRenderingAfterCommittingLoad();
void fontAtSelectionCallback(const FontInfo&, double, bool, CallbackID);
#endif
#if PLATFORM(IOS_FAMILY)
@@ -2515,7 +2519,6 @@
Optional<WebCore::InputMode> m_pendingInputModeChange;
TransactionID m_firstLayerTreeTransactionIdAfterDidCommitLoad;
int32_t m_deviceOrientation { 0 };
- bool m_hasReceivedLayerTreeTransactionAfterDidCommitLoad { true };
bool m_hasNetworkRequestsOnSuspended { false };
bool m_isKeyboardAnimatingIn { false };
bool m_isScrollingOrZooming { false };
@@ -2642,6 +2645,10 @@
bool m_isInPrintingMode { false };
bool m_isPerformingDOMPrintOperation { false };
+#if PLATFORM(COCOA)
+ bool m_hasUpdatedRenderingAfterDidCommitLoad { true };
+#endif
+
WebCore::ResourceRequest m_decidePolicyForResponseRequest;
bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false };
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-04-02 19:37:24 UTC (rev 275434)
@@ -371,6 +371,7 @@
RecordAutocorrectionResponse(int32_t response, String replacedString, String replacementString);
SetEditableElementIsFocused(bool editableElementIsFocused)
+ DidUpdateRenderingAfterCommittingLoad()
#endif
#if USE(DICTATION_ALTERNATIVES)
Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -340,9 +340,10 @@
themeColorChanged(layerTreeTransaction.themeColor());
pageExtendedBackgroundColorDidChange(layerTreeTransaction.pageExtendedBackgroundColor());
- if (!m_hasReceivedLayerTreeTransactionAfterDidCommitLoad) {
+ if (!m_hasUpdatedRenderingAfterDidCommitLoad) {
if (layerTreeTransaction.transactionID() >= m_firstLayerTreeTransactionIdAfterDidCommitLoad) {
- m_hasReceivedLayerTreeTransactionAfterDidCommitLoad = true;
+ m_hasUpdatedRenderingAfterDidCommitLoad = true;
+ stopMakingViewBlankDueToLackOfRenderingUpdate();
m_lastVisibleContentRectUpdate = VisibleContentRectUpdateInfo();
}
}
Modified: trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm (275433 => 275434)
--- trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/UIProcess/mac/WebPageProxyMac.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -660,6 +660,15 @@
return m_preferences->store().getBoolValueForKey(WebPreferencesKey::useiTunesAVOutputContextKey());
}
+void WebPageProxy::didUpdateRenderingAfterCommittingLoad()
+{
+ if (m_hasUpdatedRenderingAfterDidCommitLoad)
+ return;
+
+ m_hasUpdatedRenderingAfterDidCommitLoad = true;
+ stopMakingViewBlankDueToLackOfRenderingUpdate();
+}
+
#if ENABLE(UI_PROCESS_PDF_HUD)
void WebPageProxy::createPDFHUD(PDFPluginIdentifier identifier, const WebCore::IntRect& rect)
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (275433 => 275434)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-04-02 19:37:24 UTC (rev 275434)
@@ -948,6 +948,7 @@
44EC3EA9247F5C090059489C /* _WKDragActionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44EC3EA8247F5C080059489C /* _WKDragActionsInternal.h */; };
460F488F1F996F7100CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 460F488D1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp */; };
460F48901F996F7100CF4B87 /* WebSWContextManagerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 460F488E1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessages.h */; };
+ 4613A74425D32CCF00A5033A /* WKBlankOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4613A74225D32CB800A5033A /* WKBlankOverlayView.h */; };
4614F13225DED875007006E7 /* GPUProcessConnectionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 46AC532425DED81E003B57EC /* GPUProcessConnectionParameters.h */; };
461CCCA5231485A700B659B9 /* UIRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 463236852314833F00A48FA7 /* UIRemoteObjectRegistry.h */; };
461CCCA6231485AA00B659B9 /* WebRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 46323683231481EF00A48FA7 /* WebRemoteObjectRegistry.h */; };
@@ -3843,6 +3844,8 @@
4603011B234BE31E009C8217 /* WebBackForwardCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardCache.h; sourceTree = "<group>"; };
460F488D1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSWContextManagerConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/WebSWContextManagerConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
460F488E1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSWContextManagerConnectionMessages.h; path = DerivedSources/WebKit2/WebSWContextManagerConnectionMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4613A74225D32CB800A5033A /* WKBlankOverlayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKBlankOverlayView.h; sourceTree = "<group>"; };
+ 4613A74325D32CB900A5033A /* WKBlankOverlayView.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKBlankOverlayView.mm; sourceTree = "<group>"; };
462107D71F38DBD300DD7810 /* PingLoad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PingLoad.cpp; sourceTree = "<group>"; };
46323683231481EF00A48FA7 /* WebRemoteObjectRegistry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebRemoteObjectRegistry.h; sourceTree = "<group>"; };
463236842314825C00A48FA7 /* WebRemoteObjectRegistry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebRemoteObjectRegistry.cpp; sourceTree = "<group>"; };
@@ -6981,6 +6984,8 @@
51D124321E6DE521002B2820 /* WebURLSchemeHandlerCocoa.mm */,
2DFC7DB91BCCC19500C1548C /* WebViewImpl.h */,
2DFC7DBA1BCCC19500C1548C /* WebViewImpl.mm */,
+ 4613A74225D32CB800A5033A /* WKBlankOverlayView.h */,
+ 4613A74325D32CB900A5033A /* WKBlankOverlayView.mm */,
E596DD68251E71D300C275A7 /* WKContactPicker.h */,
E596DD69251E71D400C275A7 /* WKContactPicker.mm */,
2ECF66CC21D6B77E009E5C3F /* WKEditCommand.h */,
@@ -12497,6 +12502,7 @@
BC646C1B11DD399F006455B0 /* WKBackForwardListRef.h in Headers */,
BCDDB317124EBD130048D13C /* WKBase.h in Headers */,
7CD5EBBB1746A83E000C1C45 /* WKBaseMac.h in Headers */,
+ 4613A74425D32CCF00A5033A /* WKBlankOverlayView.h in Headers */,
BCBAAC73144E619E0053F82F /* WKBrowsingContextController.h in Headers */,
BCBAAC74144E61A50053F82F /* WKBrowsingContextControllerInternal.h in Headers */,
3788A05C14743C90006319E5 /* WKBrowsingContextControllerPrivate.h in Headers */,
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (275433 => 275434)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-04-02 19:37:24 UTC (rev 275434)
@@ -6194,6 +6194,9 @@
scalePage(1, IntPoint());
}
+#if PLATFORM(MAC)
+ m_didUpdateRenderingAfterCommittingLoad = false;
+#endif
#if PLATFORM(IOS_FAMILY)
m_hasReceivedVisibleContentRectsAfterDidCommitLoad = false;
m_hasRestoredExposedContentRectAfterDidCommitLoad = false;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (275433 => 275434)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-04-02 19:37:24 UTC (rev 275434)
@@ -630,6 +630,8 @@
#if PLATFORM(MAC)
void setTopOverhangImage(WebImage*);
void setBottomOverhangImage(WebImage*);
+
+ void didUpdateRendering();
void setUseSystemAppearance(bool);
@@ -2250,6 +2252,10 @@
bool m_canUseCredentialStorage { true };
+#if PLATFORM(MAC)
+ bool m_didUpdateRenderingAfterCommittingLoad { false };
+#endif
+
Vector<String> m_corsDisablingPatterns;
#if ENABLE(IPC_TESTING_API)
Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (275433 => 275434)
--- trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -486,6 +486,7 @@
}
sendDidFirstLayerFlushIfNeeded();
+ m_webPage.didUpdateRendering();
handleActivityStateChangeCallbacksIfNeeded();
invalidateRenderingUpdateRunLoopObserver();
}
Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm (275433 => 275434)
--- trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm 2021-04-02 19:33:16 UTC (rev 275433)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm 2021-04-02 19:37:24 UTC (rev 275434)
@@ -1032,6 +1032,15 @@
{
}
+void WebPage::didUpdateRendering()
+{
+ if (m_didUpdateRenderingAfterCommittingLoad)
+ return;
+
+ m_didUpdateRenderingAfterCommittingLoad = true;
+ send(Messages::WebPageProxy::DidUpdateRenderingAfterCommittingLoad());
+}
+
#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS_FAMILY)
void WebPage::playbackTargetSelected(PlaybackTargetClientContextIdentifier contextId, const WebCore::MediaPlaybackTargetContext& targetContext) const
{