Changeset 209937 in webkit


Ignore:
Timestamp:
Dec 16, 2016 2:05:54 PM (7 years ago)
Author:
jer.noble@apple.com
Message:

Small refactor: Use HashCountedSet rather than HashMap<..., int> to store client counts in WebPlaybackSessionManager{,Proxy}.
https://bugs.webkit.org/show_bug.cgi?id=165807

Reviewed by Eric Carlson.

  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:

(WebKit::WebPlaybackSessionManagerProxy::addClientForContext):
(WebKit::WebPlaybackSessionManagerProxy::removeClientForContext):

  • WebProcess/cocoa/WebPlaybackSessionManager.h:
  • WebProcess/cocoa/WebPlaybackSessionManager.mm:

(WebKit::WebPlaybackSessionManager::addClientForContext):
(WebKit::WebPlaybackSessionManager::removeClientForContext):

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r209931 r209937  
     12016-12-16  Jer Noble  <jer.noble@apple.com>
     2
     3        Small refactor: Use HashCountedSet rather than HashMap<..., int> to store client counts in WebPlaybackSessionManager{,Proxy}.
     4        https://bugs.webkit.org/show_bug.cgi?id=165807
     5
     6        Reviewed by Eric Carlson.
     7
     8        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
     9        * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
     10        (WebKit::WebPlaybackSessionManagerProxy::addClientForContext):
     11        (WebKit::WebPlaybackSessionManagerProxy::removeClientForContext):
     12        * WebProcess/cocoa/WebPlaybackSessionManager.h:
     13        * WebProcess/cocoa/WebPlaybackSessionManager.mm:
     14        (WebKit::WebPlaybackSessionManager::addClientForContext):
     15        (WebKit::WebPlaybackSessionManager::removeClientForContext):
     16
    1172016-12-16  Wenson Hsieh  <wenson_hsieh@apple.com>
    218
  • trunk/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h

    r206350 r209937  
    3333#include <WebCore/TimeRanges.h>
    3434#include <WebCore/WebPlaybackSessionModel.h>
     35#include <wtf/HashCountedSet.h>
    3536#include <wtf/HashMap.h>
    3637#include <wtf/HashSet.h>
     
    204205    HashMap<uint64_t, ModelInterfaceTuple> m_contextMap;
    205206    uint64_t m_controlsManagerContextId { 0 };
    206     HashMap<uint64_t, int> m_clientCounts;
     207    HashCountedSet<uint64_t> m_clientCounts;
    207208};
    208209
  • trunk/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm

    r206350 r209937  
    282282void WebPlaybackSessionManagerProxy::addClientForContext(uint64_t contextId)
    283283{
    284     auto addResult = m_clientCounts.add(contextId, 1);
    285     if (!addResult.isNewEntry)
    286         addResult.iterator->value++;
     284    m_clientCounts.add(contextId);
    287285}
    288286
    289287void WebPlaybackSessionManagerProxy::removeClientForContext(uint64_t contextId)
    290288{
    291     ASSERT(m_clientCounts.contains(contextId));
    292 
    293     int clientCount = m_clientCounts.get(contextId);
    294     ASSERT(clientCount > 0);
    295     clientCount--;
    296 
    297     if (clientCount <= 0) {
    298         m_clientCounts.remove(contextId);
    299 
    300         RefPtr<WebPlaybackSessionModelContext> model;
    301         RefPtr<PlatformWebPlaybackSessionInterface> interface;
    302         std::tie(model, interface) = ensureModelAndInterface(contextId);
    303         interface->invalidate();
    304         m_contextMap.remove(contextId);
     289    if (!m_clientCounts.remove(contextId))
    305290        return;
    306     }
    307 
    308     m_clientCounts.set(contextId, clientCount);
     291
     292    ensureInterface(contextId).invalidate();
     293    m_contextMap.remove(contextId);
    309294}
    310295
  • trunk/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h

    r206350 r209937  
    3535#include <WebCore/WebPlaybackSessionInterface.h>
    3636#include <WebCore/WebPlaybackSessionModelMediaElement.h>
     37#include <wtf/HashCountedSet.h>
    3738#include <wtf/HashMap.h>
    3839#include <wtf/RefCounted.h>
     
    152153    HashMap<uint64_t, ModelInterfaceTuple> m_contextMap;
    153154    uint64_t m_controlsManagerContextId { 0 };
    154     HashMap<uint64_t, int> m_clientCounts;
     155    HashCountedSet<uint64_t> m_clientCounts;
    155156};
    156157
  • trunk/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm

    r208096 r209937  
    214214void WebPlaybackSessionManager::addClientForContext(uint64_t contextId)
    215215{
    216     auto addResult = m_clientCounts.add(contextId, 1);
    217     if (!addResult.isNewEntry)
    218         addResult.iterator->value++;
     216    m_clientCounts.add(contextId);
    219217}
    220218
     
    222220{
    223221    ASSERT(m_clientCounts.contains(contextId));
    224 
    225     int clientCount = m_clientCounts.get(contextId);
    226     ASSERT(clientCount > 0);
    227     clientCount--;
    228 
    229     if (clientCount <= 0) {
    230         m_clientCounts.remove(contextId);
     222    if (m_clientCounts.remove(contextId))
    231223        removeContext(contextId);
    232         return;
    233     }
    234 
    235     m_clientCounts.set(contextId, clientCount);
    236224}
    237225
Note: See TracChangeset for help on using the changeset viewer.