Diff
Modified: trunk/Source/WebCore/ChangeLog (281817 => 281818)
--- trunk/Source/WebCore/ChangeLog 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebCore/ChangeLog 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1,3 +1,21 @@
+2021-08-31 Sihui Liu <[email protected]>
+
+ REGRESSION (r281771): ASSERTION FAILED: !m_deletionHasBegun under WebCore::Permissions::~Permissions()
+ https://bugs.webkit.org/show_bug.cgi?id=229714
+ <rdar://problem/82581552>
+
+ Reviewed by Chris Dumez.
+
+ PageConfiguration should hold Ref<PermissionController> instead of UniqueRef.
+
+ * Modules/permissions/PermissionController.h:
+ * loader/EmptyClients.cpp:
+ (WebCore::pageConfigurationWithEmptyClients):
+ * page/Page.h:
+ * page/PageConfiguration.cpp:
+ (WebCore::PageConfiguration::PageConfiguration):
+ * page/PageConfiguration.h:
+
2021-08-31 Kate Cheney <[email protected]>
Loads after session restore marked app initiated in Safari
Modified: trunk/Source/WebCore/Modules/permissions/PermissionController.h (281817 => 281818)
--- trunk/Source/WebCore/Modules/permissions/PermissionController.h 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebCore/Modules/permissions/PermissionController.h 2021-08-31 20:37:53 UTC (rev 281818)
@@ -36,7 +36,6 @@
struct PermissionDescriptor;
class PermissionController : public ThreadSafeRefCounted<PermissionController> {
- WTF_MAKE_FAST_ALLOCATED;
public:
virtual ~PermissionController() = default;
virtual PermissionState query(ClientOrigin&&, PermissionDescriptor&&) = 0;
@@ -43,9 +42,15 @@
virtual void request(ClientOrigin&&, PermissionDescriptor&&, CompletionHandler<void(PermissionState)>&&) = 0;
virtual void addObserver(PermissionObserver&) = 0;
virtual void removeObserver(PermissionObserver&) = 0;
+protected:
+ PermissionController() = default;
};
class DummyPermissionController final : public PermissionController {
+public:
+ static Ref<DummyPermissionController> create() { return adoptRef(*new DummyPermissionController); }
+private:
+ DummyPermissionController() = default;
PermissionState query(ClientOrigin&&, PermissionDescriptor&&) final { return PermissionState::Denied; }
void request(ClientOrigin&&, PermissionDescriptor&&, CompletionHandler<void(PermissionState)>&& completionHandler) final { completionHandler(PermissionState::Denied); }
void addObserver(PermissionObserver&) final { }
Modified: trunk/Source/WebCore/loader/EmptyClients.cpp (281817 => 281818)
--- trunk/Source/WebCore/loader/EmptyClients.cpp 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebCore/loader/EmptyClients.cpp 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1195,7 +1195,7 @@
makeUniqueRef<DummySpeechRecognitionProvider>(),
makeUniqueRef<EmptyMediaRecorderProvider>(),
EmptyBroadcastChannelRegistry::create(),
- makeUniqueRef<DummyPermissionController>()
+ DummyPermissionController::create()
};
static NeverDestroyed<EmptyChromeClient> dummyChromeClient;
Modified: trunk/Source/WebCore/page/Page.h (281817 => 281818)
--- trunk/Source/WebCore/page/Page.h 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebCore/page/Page.h 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1197,7 +1197,7 @@
const bool m_httpsUpgradeEnabled { true };
mutable MediaSessionGroupIdentifier m_mediaSessionGroupIdentifier;
- UniqueRef<PermissionController> m_permissionController;
+ Ref<PermissionController> m_permissionController;
#if ENABLE(IMAGE_ANALYSIS)
// FIXME: These should be refactored to use a weak hash map of HTMLElement to std::pair<TextRecognitionResult, IntSize>.
Modified: trunk/Source/WebCore/page/PageConfiguration.cpp (281817 => 281818)
--- trunk/Source/WebCore/page/PageConfiguration.cpp 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebCore/page/PageConfiguration.cpp 2021-08-31 20:37:53 UTC (rev 281818)
@@ -59,7 +59,7 @@
namespace WebCore {
-PageConfiguration::PageConfiguration(PAL::SessionID sessionID, UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider, Ref<CacheStorageProvider>&& cacheStorageProvider, Ref<UserContentProvider>&& userContentProvider, Ref<BackForwardClient>&& backForwardClient, Ref<CookieJar>&& cookieJar, UniqueRef<ProgressTrackerClient>&& progressTrackerClient, UniqueRef<FrameLoaderClient>&& loaderClientForMainFrame, UniqueRef<SpeechRecognitionProvider>&& speechRecognitionProvider, UniqueRef<MediaRecorderProvider>&& mediaRecorderProvider, Ref<BroadcastChannelRegistry>&& broadcastChannelRegistry, UniqueRef<PermissionController>&& permissionController)
+PageConfiguration::PageConfiguration(PAL::SessionID sessionID, UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider, Ref<CacheStorageProvider>&& cacheStorageProvider, Ref<UserContentProvider>&& userContentProvider, Ref<BackForwardClient>&& backForwardClient, Ref<CookieJar>&& cookieJar, UniqueRef<ProgressTrackerClient>&& progressTrackerClient, UniqueRef<FrameLoaderClient>&& loaderClientForMainFrame, UniqueRef<SpeechRecognitionProvider>&& speechRecognitionProvider, UniqueRef<MediaRecorderProvider>&& mediaRecorderProvider, Ref<BroadcastChannelRegistry>&& broadcastChannelRegistry, Ref<PermissionController>&& permissionController)
: sessionID(sessionID)
, editorClient(WTFMove(editorClient))
, socketProvider(WTFMove(socketProvider))
Modified: trunk/Source/WebCore/page/PageConfiguration.h (281817 => 281818)
--- trunk/Source/WebCore/page/PageConfiguration.h 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebCore/page/PageConfiguration.h 2021-08-31 20:37:53 UTC (rev 281818)
@@ -75,7 +75,7 @@
class PageConfiguration {
WTF_MAKE_NONCOPYABLE(PageConfiguration); WTF_MAKE_FAST_ALLOCATED;
public:
- WEBCORE_EXPORT PageConfiguration(PAL::SessionID, UniqueRef<EditorClient>&&, Ref<SocketProvider>&&, UniqueRef<LibWebRTCProvider>&&, Ref<CacheStorageProvider>&&, Ref<UserContentProvider>&&, Ref<BackForwardClient>&&, Ref<CookieJar>&&, UniqueRef<ProgressTrackerClient>&&, UniqueRef<FrameLoaderClient>&&, UniqueRef<SpeechRecognitionProvider>&&, UniqueRef<MediaRecorderProvider>&&, Ref<BroadcastChannelRegistry>&&, UniqueRef<PermissionController>&&);
+ WEBCORE_EXPORT PageConfiguration(PAL::SessionID, UniqueRef<EditorClient>&&, Ref<SocketProvider>&&, UniqueRef<LibWebRTCProvider>&&, Ref<CacheStorageProvider>&&, Ref<UserContentProvider>&&, Ref<BackForwardClient>&&, Ref<CookieJar>&&, UniqueRef<ProgressTrackerClient>&&, UniqueRef<FrameLoaderClient>&&, UniqueRef<SpeechRecognitionProvider>&&, UniqueRef<MediaRecorderProvider>&&, Ref<BroadcastChannelRegistry>&&, Ref<PermissionController>&&);
WEBCORE_EXPORT ~PageConfiguration();
PageConfiguration(PageConfiguration&&);
@@ -140,7 +140,7 @@
ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking { ShouldRelaxThirdPartyCookieBlocking::No };
bool httpsUpgradeEnabled { true };
- UniqueRef<PermissionController> permissionController;
+ Ref<PermissionController> permissionController;
};
}
Modified: trunk/Source/WebKit/ChangeLog (281817 => 281818)
--- trunk/Source/WebKit/ChangeLog 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKit/ChangeLog 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1,3 +1,17 @@
+2021-08-31 Sihui Liu <[email protected]>
+
+ REGRESSION (r281771): ASSERTION FAILED: !m_deletionHasBegun under WebCore::Permissions::~Permissions()
+ https://bugs.webkit.org/show_bug.cgi?id=229714
+ <rdar://problem/82581552>
+
+ Reviewed by Chris Dumez.
+
+ * WebProcess/WebCoreSupport/WebPermissionController.cpp:
+ (WebKit::WebPermissionController::create):
+ * WebProcess/WebCoreSupport/WebPermissionController.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::m_appHighlightsVisible):
+
2021-08-31 Kate Cheney <[email protected]>
Loads after session restore marked app initiated in Safari
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp (281817 => 281818)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp 2021-08-31 20:37:53 UTC (rev 281818)
@@ -33,6 +33,11 @@
namespace WebKit {
+Ref<WebPermissionController> WebPermissionController::create(WebPage& page)
+{
+ return adoptRef(*new WebPermissionController(page));
+}
+
WebPermissionController::WebPermissionController(WebPage& page)
: m_page(makeWeakPtr(page))
{
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h (281817 => 281818)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h 2021-08-31 20:37:53 UTC (rev 281818)
@@ -37,9 +37,11 @@
class WebPermissionController final : public CanMakeWeakPtr<WebPermissionController>, public WebCore::PermissionController {
public:
+ static Ref<WebPermissionController> create(WebPage&);
+
+private:
explicit WebPermissionController(WebPage&);
-private:
// WebCore::PermissionController
WebCore::PermissionState query(WebCore::ClientOrigin&&, WebCore::PermissionDescriptor&&) final;
void request(WebCore::ClientOrigin&&, WebCore::PermissionDescriptor&&, CompletionHandler<void(WebCore::PermissionState)>&&) final;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (281817 => 281818)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-08-31 20:37:53 UTC (rev 281818)
@@ -566,7 +566,7 @@
makeUniqueRef<WebSpeechRecognitionProvider>(m_identifier),
makeUniqueRef<MediaRecorderProvider>(*this),
WebProcess::singleton().broadcastChannelRegistry(),
- makeUniqueRef<WebPermissionController>(*this)
+ WebPermissionController::create(*this)
);
pageConfiguration.chromeClient = new WebChromeClient(*this);
#if ENABLE(CONTEXT_MENUS)
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (281817 => 281818)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1,3 +1,15 @@
+2021-08-31 Sihui Liu <[email protected]>
+
+ REGRESSION (r281771): ASSERTION FAILED: !m_deletionHasBegun under WebCore::Permissions::~Permissions()
+ https://bugs.webkit.org/show_bug.cgi?id=229714
+ <rdar://problem/82581552>
+
+ Reviewed by Chris Dumez.
+
+ * WebView/WebView.mm:
+ (-[WebView _commonInitializationWithFrameName:groupName:]):
+ (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
+
2021-08-26 Darin Adler <[email protected]>
Cut down on use of CFGetTypeID, using dynamic_cf_cast instead; related streamlining
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (281817 => 281818)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1538,7 +1538,7 @@
makeUniqueRef<WebCore::DummySpeechRecognitionProvider>(),
makeUniqueRef<WebCore::MediaRecorderProvider>(),
WebBroadcastChannelRegistry::getOrCreate([[self preferences] privateBrowsingEnabled]),
- makeUniqueRef<WebCore::DummyPermissionController>()
+ WebCore::DummyPermissionController::create()
);
#if !PLATFORM(IOS_FAMILY)
pageConfiguration.chromeClient = new WebChromeClient(self);
@@ -1817,7 +1817,7 @@
makeUniqueRef<WebCore::DummySpeechRecognitionProvider>(),
makeUniqueRef<WebCore::MediaRecorderProvider>(),
WebBroadcastChannelRegistry::getOrCreate([[self preferences] privateBrowsingEnabled]),
- makeUniqueRef<WebCore::DummyPermissionController>()
+ WebCore::DummyPermissionController::create()
);
pageConfiguration.chromeClient = new WebChromeClientIOS(self);
#if ENABLE(DRAG_SUPPORT)
Modified: trunk/Source/WebKitLegacy/win/ChangeLog (281817 => 281818)
--- trunk/Source/WebKitLegacy/win/ChangeLog 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKitLegacy/win/ChangeLog 2021-08-31 20:37:53 UTC (rev 281818)
@@ -1,3 +1,14 @@
+2021-08-31 Sihui Liu <[email protected]>
+
+ REGRESSION (r281771): ASSERTION FAILED: !m_deletionHasBegun under WebCore::Permissions::~Permissions()
+ https://bugs.webkit.org/show_bug.cgi?id=229714
+ <rdar://problem/82581552>
+
+ Reviewed by Chris Dumez.
+
+ * WebView.cpp:
+ (WebView::initWithFrame):
+
2021-08-30 Sihui Liu <[email protected]>
Add stubs for Permissions API
Modified: trunk/Source/WebKitLegacy/win/WebView.cpp (281817 => 281818)
--- trunk/Source/WebKitLegacy/win/WebView.cpp 2021-08-31 20:26:48 UTC (rev 281817)
+++ trunk/Source/WebKitLegacy/win/WebView.cpp 2021-08-31 20:37:53 UTC (rev 281818)
@@ -3135,7 +3135,7 @@
makeUniqueRef<DummySpeechRecognitionProvider>(),
makeUniqueRef<MediaRecorderProvider>(),
WebBroadcastChannelRegistry::getOrCreate(false),
- makeUniqueRef<DummyPermissionController>()
+ WebCore::DummyPermissionController::create()
);
configuration.chromeClient = new WebChromeClient(this);
#if ENABLE(CONTEXT_MENUS)