Title: [281818] trunk/Source
Revision
281818
Author
[email protected]
Date
2021-08-31 13:37:53 -0700 (Tue, 31 Aug 2021)

Log Message

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.

Source/WebCore:

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:

Source/WebKit:

* WebProcess/WebCoreSupport/WebPermissionController.cpp:
(WebKit::WebPermissionController::create):
* WebProcess/WebCoreSupport/WebPermissionController.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_appHighlightsVisible):

Source/WebKitLegacy/mac:

* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

Source/WebKitLegacy/win:

* WebView.cpp:
(WebView::initWithFrame):

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to