Changeset 162380 in webkit


Ignore:
Timestamp:
Jan 20, 2014 3:21:44 PM (10 years ago)
Author:
andersca@apple.com
Message:

Give each page a UserContentController
https://bugs.webkit.org/show_bug.cgi?id=127315

Reviewed by Andreas Kling.

Add a UserContentController object to PageGroup and have the page group set it on any
pages that are added to the page group.

This is another step towards moving handling of user content away from PageGroup and make it
possible for each page to have different user content.

  • page/Page.cpp:

(WebCore::Page::~Page):
(WebCore::Page::setUserContentController):

  • page/Page.h:

(WebCore::Page::userContentController):

  • page/PageGroup.cpp:

(WebCore::PageGroup::PageGroup):
(WebCore::PageGroup::addPage):
(WebCore::PageGroup::removePage):

  • page/PageGroup.h:
  • page/UserContentController.cpp:

(WebCore::UserContentController::addPage):
(WebCore::UserContentController::removePage):

  • page/UserContentController.h:
Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r162379 r162380  
     12014-01-20  Anders Carlsson  <andersca@apple.com>
     2
     3        Give each page a UserContentController
     4        https://bugs.webkit.org/show_bug.cgi?id=127315
     5
     6        Reviewed by Andreas Kling.
     7
     8        Add a UserContentController object to PageGroup and have the page group set it on any
     9        pages that are added to the page group.
     10
     11        This is another step towards moving handling of user content away from PageGroup and make it
     12        possible for each page to have different user content.
     13
     14        * page/Page.cpp:
     15        (WebCore::Page::~Page):
     16        (WebCore::Page::setUserContentController):
     17        * page/Page.h:
     18        (WebCore::Page::userContentController):
     19        * page/PageGroup.cpp:
     20        (WebCore::PageGroup::PageGroup):
     21        (WebCore::PageGroup::addPage):
     22        (WebCore::PageGroup::removePage):
     23        * page/PageGroup.h:
     24        * page/UserContentController.cpp:
     25        (WebCore::UserContentController::addPage):
     26        (WebCore::UserContentController::removePage):
     27        * page/UserContentController.h:
     28
    1292014-01-20  Jeremy Jones  <jeremyj@apple.com>
    230
  • trunk/Source/WebCore/page/Page.cpp

    r162264 r162380  
    8383#include "SubframeLoader.h"
    8484#include "TextResourceDecoder.h"
     85#include "UserContentController.h"
    8586#include "VisitedLinkState.h"
    8687#include "VoidCallback.h"
     
    241242    pageCounter.decrement();
    242243#endif
     244
     245    if (m_userContentController)
     246        m_userContentController->removePage(*this);
    243247}
    244248
     
    15781582}
    15791583
     1584void Page::setUserContentController(UserContentController* userContentController)
     1585{
     1586    if (m_userContentController)
     1587        m_userContentController->removePage(*this);
     1588
     1589    m_userContentController = userContentController;
     1590
     1591    if (m_userContentController)
     1592        m_userContentController->addPage(*this);
     1593}
     1594
    15801595Page::PageClients::PageClients()
    15811596    : alternativeTextClient(nullptr)
  • trunk/Source/WebCore/page/Page.h

    r162264 r162380  
    102102class Settings;
    103103class StorageNamespace;
     104class UserContentController;
    104105class ValidationMessageClient;
    105106
     
    419420    unsigned lastSpatialNavigationCandidateCount() const { return m_lastSpatialNavigationCandidatesCount; }
    420421
     422    void setUserContentController(UserContentController*);
     423    UserContentController* userContentController() { return m_userContentController.get(); }
     424
    421425private:
    422426    void initGroup();
     
    557561    unsigned m_lastSpatialNavigationCandidatesCount;
    558562    unsigned m_framesHandlingBeforeUnloadEvent;
     563
     564    RefPtr<UserContentController> m_userContentController;
    559565};
    560566
  • trunk/Source/WebCore/page/PageGroup.cpp

    r161106 r162380  
    3939#include "Settings.h"
    4040#include "StorageNamespace.h"
     41#include "UserContentController.h"
    4142#include <wtf/StdLibExtras.h>
    4243
     
    6566    , m_visitedLinksPopulated(false)
    6667    , m_identifier(getUniqueIdentifier())
     68    , m_userContentController(UserContentController::create())
    6769    , m_groupSettings(std::make_unique<GroupSettings>())
    6870{
     
    170172    ASSERT(!m_pages.contains(&page));
    171173    m_pages.add(&page);
     174
     175    page.setUserContentController(m_userContentController.get());
    172176}
    173177
     
    176180    ASSERT(m_pages.contains(&page));
    177181    m_pages.remove(&page);
     182
     183    page.setUserContentController(nullptr);
    178184}
    179185
  • trunk/Source/WebCore/page/PageGroup.h

    r161106 r162380  
    4343    class SecurityOrigin;
    4444    class StorageNamespace;
     45    class UserContentController;
    4546
    4647#if ENABLE(VIDEO_TRACK)
     
    124125        HashMap<RefPtr<SecurityOrigin>, RefPtr<StorageNamespace>> m_transientLocalStorageMap;
    125126
     127        RefPtr<UserContentController> m_userContentController;
    126128        std::unique_ptr<UserScriptMap> m_userScripts;
    127129        std::unique_ptr<UserStyleSheetMap> m_userStyleSheets;
  • trunk/Source/WebCore/page/UserContentController.cpp

    r162372 r162380  
    2727#include "UserContentController.h"
    2828
     29#include "DOMWrapperWorld.h"
     30#include "UserScript.h"
     31
    2932namespace WebCore {
    3033
     
    4245}
    4346
     47void UserContentController::addPage(Page& page)
     48{
     49    ASSERT(!m_pages.contains(&page));
     50    m_pages.add(&page);
     51}
     52
     53void UserContentController::removePage(Page& page)
     54{
     55    ASSERT(m_pages.contains(&page));
     56    m_pages.remove(&page);
     57}
     58
    4459} // namespace WebCore
  • trunk/Source/WebCore/page/UserContentController.h

    r162372 r162380  
    2727#define UserContentController_h
    2828
     29#include <wtf/HashMap.h>
     30#include <wtf/HashSet.h>
    2931#include <wtf/RefCounted.h>
    3032#include <wtf/RefPtr.h>
     33#include <wtf/Vector.h>
    3134
    3235namespace WebCore {
     36
     37class DOMWrapperWorld;
     38class Page;
     39class URL;
     40class UserScript;
    3341
    3442class UserContentController : public RefCounted<UserContentController> {
     
    3745    ~UserContentController();
    3846
     47    void addPage(Page&);
     48    void removePage(Page&);
     49
    3950private:
    4051    UserContentController();
     52
     53    HashSet<Page*> m_pages;
    4154};
    4255
Note: See TracChangeset for help on using the changeset viewer.