⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 271287 in webkit


Ignore:
Timestamp:
Jan 7, 2021, 11:34:45 PM (6 years ago)
Author:
commit-queue@webkit.org
Message:

Use WeakHashSet instead of HashSet<T*>
https://bugs.webkit.org/show_bug.cgi?id=220455

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-07
Reviewed by Geoffrey Garen.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::invalidateAndCancel):
(WebKit::NetworkSession::registerNetworkDataTask):
(WebKit::NetworkSession::unregisterNetworkDataTask):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::registerNetworkDataTask): Deleted.
(WebKit::NetworkSession::unregisterNetworkDataTask): Deleted.

  • UIProcess/WebPageGroup.cpp:

(WebKit::WebPageGroup::addPage):
(WebKit::WebPageGroup::removePage):
(WebKit::WebPageGroup::setPreferences):

  • UIProcess/WebPageGroup.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPageProxy::~WebPageProxy):

  • UIProcess/WebPreferences.cpp:

(WebKit::WebPreferences::~WebPreferences):
(WebKit::WebPreferences::addPage):
(WebKit::WebPreferences::removePage):
(WebKit::WebPreferences::update):
(WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):

  • UIProcess/WebPreferences.h:
  • WebProcess/Geolocation/WebGeolocationManager.cpp:

(WebKit::WebGeolocationManager::registerWebPage):
(WebKit::WebGeolocationManager::unregisterWebPage):
(WebKit::WebGeolocationManager::setEnableHighAccuracyForPage):
(WebKit::WebGeolocationManager::isUpdating const):
(WebKit::WebGeolocationManager::isHighAccuracyEnabled const):

  • WebProcess/Geolocation/WebGeolocationManager.h:

(WebKit::WebGeolocationManager::isUpdating const): Deleted.
(WebKit::WebGeolocationManager::isHighAccuracyEnabled const): Deleted.

Location:
trunk/Source/WebKit
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r271286 r271287  
     12021-01-07  Alex Christensen  <achristensen@webkit.org>
     2
     3        Use WeakHashSet instead of HashSet<T*>
     4        https://bugs.webkit.org/show_bug.cgi?id=220455
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        * NetworkProcess/NetworkSession.cpp:
     9        (WebKit::NetworkSession::invalidateAndCancel):
     10        (WebKit::NetworkSession::registerNetworkDataTask):
     11        (WebKit::NetworkSession::unregisterNetworkDataTask):
     12        * NetworkProcess/NetworkSession.h:
     13        (WebKit::NetworkSession::registerNetworkDataTask): Deleted.
     14        (WebKit::NetworkSession::unregisterNetworkDataTask): Deleted.
     15        * UIProcess/WebPageGroup.cpp:
     16        (WebKit::WebPageGroup::addPage):
     17        (WebKit::WebPageGroup::removePage):
     18        (WebKit::WebPageGroup::setPreferences):
     19        * UIProcess/WebPageGroup.h:
     20        * UIProcess/WebPageProxy.cpp:
     21        (WebKit::m_limitsNavigationsToAppBoundDomains):
     22        (WebKit::WebPageProxy::~WebPageProxy):
     23        * UIProcess/WebPreferences.cpp:
     24        (WebKit::WebPreferences::~WebPreferences):
     25        (WebKit::WebPreferences::addPage):
     26        (WebKit::WebPreferences::removePage):
     27        (WebKit::WebPreferences::update):
     28        (WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):
     29        * UIProcess/WebPreferences.h:
     30        * WebProcess/Geolocation/WebGeolocationManager.cpp:
     31        (WebKit::WebGeolocationManager::registerWebPage):
     32        (WebKit::WebGeolocationManager::unregisterWebPage):
     33        (WebKit::WebGeolocationManager::setEnableHighAccuracyForPage):
     34        (WebKit::WebGeolocationManager::isUpdating const):
     35        (WebKit::WebGeolocationManager::isHighAccuracyEnabled const):
     36        * WebProcess/Geolocation/WebGeolocationManager.h:
     37        (WebKit::WebGeolocationManager::isUpdating const): Deleted.
     38        (WebKit::WebGeolocationManager::isHighAccuracyEnabled const): Deleted.
     39
    1402021-01-07  Per Arne Vollan  <pvollan@apple.com>
    241
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp

    r270205 r271287  
    152152void NetworkSession::invalidateAndCancel()
    153153{
    154     for (auto* task : m_dataTaskSet)
    155         task->invalidateAndCancel();
     154    for (auto& task : m_dataTaskSet)
     155        task.invalidateAndCancel();
    156156#if ENABLE(RESOURCE_LOAD_STATISTICS)
    157157    if (m_resourceLoadStatistics)
     
    373373}
    374374
     375void NetworkSession::registerNetworkDataTask(NetworkDataTask& task)
     376{
     377    m_dataTaskSet.add(task);
     378}
     379
     380void NetworkSession::unregisterNetworkDataTask(NetworkDataTask& task)
     381{
     382    m_dataTaskSet.remove(task);
     383}
     384
    375385} // namespace WebKit
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.h

    r270249 r271287  
    8484    WebCore::NetworkStorageSession* networkStorageSession() const;
    8585
    86     void registerNetworkDataTask(NetworkDataTask& task) { m_dataTaskSet.add(&task); }
    87     void unregisterNetworkDataTask(NetworkDataTask& task) { m_dataTaskSet.remove(&task); }
     86    void registerNetworkDataTask(NetworkDataTask&);
     87    void unregisterNetworkDataTask(NetworkDataTask&);
    8888
    8989#if ENABLE(RESOURCE_LOAD_STATISTICS)
     
    160160    PAL::SessionID m_sessionID;
    161161    Ref<NetworkProcess> m_networkProcess;
    162     HashSet<NetworkDataTask*> m_dataTaskSet;
     162    WeakHashSet<NetworkDataTask> m_dataTaskSet;
    163163#if ENABLE(RESOURCE_LOAD_STATISTICS)
    164164    String m_resourceLoadStatisticsDirectory;
  • trunk/Source/WebKit/UIProcess/WebPageGroup.cpp

    r259159 r271287  
    9494}
    9595
    96 void WebPageGroup::addPage(WebPageProxy* page)
     96void WebPageGroup::addPage(WebPageProxy& page)
    9797{
    9898    m_pages.add(page);
    9999}
    100100
    101 void WebPageGroup::removePage(WebPageProxy* page)
     101void WebPageGroup::removePage(WebPageProxy& page)
    102102{
    103103    m_pages.remove(page);
     
    112112
    113113    for (auto& webPageProxy : m_pages)
    114         webPageProxy->setPreferences(*m_preferences);
     114        webPageProxy.setPreferences(*m_preferences);
    115115}
    116116
  • trunk/Source/WebKit/UIProcess/WebPageGroup.h

    r237146 r271287  
    3232#include <wtf/Forward.h>
    3333#include <wtf/HashSet.h>
     34#include <wtf/WeakHashSet.h>
    3435#include <wtf/text/WTFString.h>
    3536
     
    4950    virtual ~WebPageGroup();
    5051
    51     void addPage(WebPageProxy*);
    52     void removePage(WebPageProxy*);
     52    void addPage(WebPageProxy&);
     53    void removePage(WebPageProxy&);
    5354
    5455    uint64_t pageGroupID() const { return m_data.pageGroupID; }
     
    6566    RefPtr<WebPreferences> m_preferences;
    6667    Ref<WebUserContentControllerProxy> m_userContentController;
    67     HashSet<WebPageProxy*> m_pages;
     68    WeakHashSet<WebPageProxy> m_pages;
    6869};
    6970
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r271263 r271287  
    549549
    550550    m_preferences->addPage(*this);
    551     m_pageGroup->addPage(this);
     551    m_pageGroup->addPage(*this);
    552552
    553553    m_inspector = WebInspectorProxy::create(*this);
     
    605605
    606606    m_preferences->removePage(*this);
    607     m_pageGroup->removePage(this);
     607    m_pageGroup->removePage(*this);
    608608
    609609#ifndef NDEBUG
  • trunk/Source/WebKit/UIProcess/WebPreferences.cpp

    r270851 r271287  
    7777WebPreferences::~WebPreferences()
    7878{
    79     ASSERT(m_pages.isEmpty());
     79    ASSERT(m_pages.computesEmpty());
    8080}
    8181
     
    8787void WebPreferences::addPage(WebPageProxy& webPageProxy)
    8888{
    89     ASSERT(!m_pages.contains(&webPageProxy));
    90     m_pages.add(&webPageProxy);
     89    ASSERT(!m_pages.contains(webPageProxy));
     90    m_pages.add(webPageProxy);
    9191}
    9292
    9393void WebPreferences::removePage(WebPageProxy& webPageProxy)
    9494{
    95     ASSERT(m_pages.contains(&webPageProxy));
    96     m_pages.remove(&webPageProxy);
     95    ASSERT(m_pages.contains(webPageProxy));
     96    m_pages.remove(webPageProxy);
    9797}
    9898
     
    105105       
    106106    for (auto& webPageProxy : m_pages)
    107         webPageProxy->preferencesDidChange();
     107        webPageProxy.preferencesDidChange();
    108108}
    109109
     
    167167{
    168168    if (key == WebPreferencesKey::processSwapOnCrossSiteNavigationEnabledKey()) {
    169         for (auto* page : m_pages)
    170             page->process().processPool().configuration().setProcessSwapsOnNavigation(value);
     169        for (auto& page : m_pages)
     170            page.process().processPool().configuration().setProcessSwapsOnNavigation(value);
    171171
    172172        return;
  • trunk/Source/WebKit/UIProcess/WebPreferences.h

    r270851 r271287  
    3333#include <wtf/HashSet.h>
    3434#include <wtf/RefPtr.h>
     35#include <wtf/WeakHashSet.h>
    3536
    3637#define DECLARE_PREFERENCE_GETTER_AND_SETTERS(KeyUpper, KeyLower, TypeName, Type, DefaultValue, HumanReadableName, HumanReadableDescription) \
     
    139140    WebPreferencesStore m_store;
    140141
    141     HashSet<WebPageProxy*> m_pages;
     142    WeakHashSet<WebPageProxy> m_pages;
    142143    unsigned m_updateBatchCount { 0 };
    143144    bool m_needUpdateAfterBatch { false };
  • trunk/Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.cpp

    r256075 r271287  
    5555    bool wasUpdating = isUpdating();
    5656
    57     m_pageSet.add(&page);
     57    m_pageSet.add(page);
    5858
    5959    if (!wasUpdating)
     
    6565    bool highAccuracyWasEnabled = isHighAccuracyEnabled();
    6666
    67     m_pageSet.remove(&page);
    68     m_highAccuracyPageSet.remove(&page);
     67    m_pageSet.remove(page);
     68    m_highAccuracyPageSet.remove(page);
    6969
    7070    if (!isUpdating())
     
    8282
    8383    if (enabled)
    84         m_highAccuracyPageSet.add(&page);
     84        m_highAccuracyPageSet.add(page);
    8585    else
    86         m_highAccuracyPageSet.remove(&page);
     86        m_highAccuracyPageSet.remove(page);
    8787
    8888    bool highAccuracyShouldBeEnabled = isHighAccuracyEnabled();
     
    125125#endif // PLATFORM(IOS_FAMILY)
    126126
     127bool WebGeolocationManager::isUpdating() const
     128{
     129    return !m_pageSet.computesEmpty();
     130}
     131
     132bool WebGeolocationManager::isHighAccuracyEnabled() const
     133{
     134    return !m_highAccuracyPageSet.computesEmpty();
     135}
     136
    127137} // namespace WebKit
  • trunk/Source/WebKit/WebProcess/Geolocation/WebGeolocationManager.h

    r256075 r271287  
    3333#include <wtf/HashSet.h>
    3434#include <wtf/Noncopyable.h>
     35#include <wtf/WeakHashSet.h>
    3536
    3637namespace WebCore {
     
    6263    void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
    6364
    64     bool isUpdating() const { return !m_pageSet.isEmpty(); }
    65     bool isHighAccuracyEnabled() const { return !m_highAccuracyPageSet.isEmpty(); }
     65    bool isUpdating() const;
     66    bool isHighAccuracyEnabled() const;
    6667
    6768    void didChangePosition(const WebCore::GeolocationPositionData&);
     
    7273
    7374    WebProcess& m_process;
    74     HashSet<WebPage*> m_pageSet;
    75     HashSet<WebPage*> m_highAccuracyPageSet;
     75    WeakHashSet<WebPage> m_pageSet;
     76    WeakHashSet<WebPage> m_highAccuracyPageSet;
    7677};
    7778
Note: See TracChangeset for help on using the changeset viewer.