Changeset 163671 in webkit


Ignore:
Timestamp:
Feb 7, 2014 5:57:02 PM (10 years ago)
Author:
andersca@apple.com
Message:

Simplify web page creation
https://bugs.webkit.org/show_bug.cgi?id=128425

Reviewed by Andreas Kling.

Add a WebPageConfiguration class and stick the page group, preferences, session etc there
instead of adding more and more parameters to the WebPageProxy constructor.

Make WebContext::createWebPage fill in the missing pieces in the WebPageConfiguration object.

  • UIProcess/API/ios/WKContentView.mm:

(-[WKContentView initWithFrame:configuration:]):
(-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):

  • UIProcess/WebContext.cpp:

(WebKit::WebContext::createWebPage):

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

(WebKit::WebPageProxy::create):
(WebKit::WebPageProxy::WebPageProxy):

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

(WebKit::WebProcessProxy::createWebPage):

  • UIProcess/WebProcessProxy.h:
Location:
trunk/Source/WebKit2
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r163669 r163671  
     12014-02-07  Anders Carlsson  <andersca@apple.com>
     2
     3        Simplify web page creation
     4        https://bugs.webkit.org/show_bug.cgi?id=128425
     5
     6        Reviewed by Andreas Kling.
     7
     8        Add a WebPageConfiguration class and stick the page group, preferences, session etc there
     9        instead of adding more and more parameters to the WebPageProxy constructor.
     10
     11        Make WebContext::createWebPage fill in the missing pieces in the WebPageConfiguration object.
     12
     13        * UIProcess/API/ios/WKContentView.mm:
     14        (-[WKContentView initWithFrame:configuration:]):
     15        (-[WKContentView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
     16        * UIProcess/API/mac/WKView.mm:
     17        (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]):
     18        * UIProcess/WebContext.cpp:
     19        (WebKit::WebContext::createWebPage):
     20        * UIProcess/WebContext.h:
     21        * UIProcess/WebPageProxy.cpp:
     22        (WebKit::WebPageProxy::create):
     23        (WebKit::WebPageProxy::WebPageProxy):
     24        * UIProcess/WebPageProxy.h:
     25        * UIProcess/WebProcessProxy.cpp:
     26        (WebKit::WebProcessProxy::createWebPage):
     27        * UIProcess/WebProcessProxy.h:
     28
    1292014-02-07  Tim Horton  <timothy_horton@apple.com>
    230
  • trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm

    r163666 r163671  
    104104    _pageClient = std::make_unique<PageClientImpl>(self);
    105105
    106     _page = configuration.processClass->_context->createWebPage(*_pageClient, nullptr);
     106    WebPageConfiguration webPageConfiguration;
     107
     108    _page = configuration.processClass->_context->createWebPage(*_pageClient, std::move(webPageConfiguration));
    107109    _page->initializeWebPage();
    108110    _page->setIntrinsicDeviceScaleFactor([UIScreen mainScreen].scale);
     
    251253
    252254    _pageClient = std::make_unique<PageClientImpl>(self);
    253     _page = toImpl(contextRef)->createWebPage(*_pageClient, toImpl(pageGroupRef), toImpl(relatedPage));
     255
     256    WebPageConfiguration webPageConfiguration;
     257    webPageConfiguration.group = toImpl(pageGroupRef);
     258    webPageConfiguration.relatedPage = toImpl(relatedPage);
     259
     260    _page = toImpl(contextRef)->createWebPage(*_pageClient, std::move(webPageConfiguration));
    254261    _page->initializeWebPage();
    255262    _page->setIntrinsicDeviceScaleFactor([UIScreen mainScreen].scale);
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r163669 r163671  
    29472947    _data = [[WKViewData alloc] init];
    29482948
     2949    WebPageConfiguration webPageConfiguration;
     2950    webPageConfiguration.pageGroup = toImpl(pageGroupRef);
     2951    webPageConfiguration.relatedPage = toImpl(relatedPage);
     2952
    29492953    _data->_pageClient = std::make_unique<PageClientImpl>(self);
    2950     _data->_page = toImpl(contextRef)->createWebPage(*_data->_pageClient, toImpl(pageGroupRef), toImpl(relatedPage));
     2954    _data->_page = toImpl(contextRef)->createWebPage(*_data->_pageClient, std::move(webPageConfiguration));
    29512955    _data->_page->setIntrinsicDeviceScaleFactor([self _intrinsicDeviceScaleFactor]);
    29522956    _data->_page->initializeWebPage();
  • trunk/Source/WebKit2/UIProcess/WebContext.cpp

    r163656 r163671  
    764764}
    765765
    766 PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageGroup* pageGroup, API::Session& session, WebPageProxy* relatedPage)
    767 {
     766PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageConfiguration configuration)
     767{
     768    if (!configuration.pageGroup)
     769        configuration.pageGroup = &m_defaultPageGroup.get();
     770    if (!configuration.preferences)
     771        configuration.preferences = &configuration.pageGroup->preferences();
     772    if (!configuration.session)
     773        configuration.session = configuration.preferences->privateBrowsingEnabled() ? &API::Session::legacyPrivateSession() : &API::Session::defaultSession();
     774
    768775    RefPtr<WebProcessProxy> process;
    769776    if (m_processModel == ProcessModelSharedSecondaryProcess) {
     
    773780            process = m_processes.last();
    774781            m_haveInitialEmptyProcess = false;
    775         } else if (relatedPage) {
     782        } else if (configuration.relatedPage) {
    776783            // Sharing processes, e.g. when creating the page via window.open().
    777             process = &relatedPage->process();
     784            process = &configuration.relatedPage->process();
    778785        } else
    779786            process = &createNewWebProcessRespectingProcessCountLimit();
    780787    }
    781788
    782     return process->createWebPage(pageClient, pageGroup ? *pageGroup : m_defaultPageGroup.get(), session);
    783 }
    784 
    785 PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageGroup* pageGroup, WebPageProxy* relatedPage)
    786 {
    787     WebPageGroup* group = pageGroup ? pageGroup : &m_defaultPageGroup.get();
    788     return createWebPage(pageClient, group, group->preferences().privateBrowsingEnabled() ? API::Session::legacyPrivateSession() : API::Session::defaultSession(), relatedPage);
     789    return process->createWebPage(pageClient, std::move(configuration));
    789790}
    790791
  • trunk/Source/WebKit2/UIProcess/WebContext.h

    r163121 r163671  
    7575class WebPageProxy;
    7676struct StatisticsData;
     77struct WebPageConfiguration;
    7778struct WebProcessCreationParameters;
    7879   
     
    157158    StorageManager& storageManager() const { return *m_storageManager; }
    158159
    159     PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageGroup*, API::Session&, WebPageProxy* relatedPage = 0);
    160     PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageGroup*, WebPageProxy* relatedPage = 0);
     160    PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageConfiguration);
    161161
    162162    const String& injectedBundlePath() const { return m_injectedBundlePath; }
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r163666 r163671  
    247247#endif // !LOG_DISABLED
    248248
    249 PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient& pageClient, WebProcessProxy& process, WebPageGroup& pageGroup, WebPreferences& preferences, API::Session& session, uint64_t pageID)
    250 {
    251     return adoptRef(new WebPageProxy(pageClient, process, pageGroup, preferences, session, pageID));
    252 }
    253 
    254 WebPageProxy::WebPageProxy(PageClient& pageClient, WebProcessProxy& process, WebPageGroup& pageGroup, WebPreferences& preferences, API::Session& session, uint64_t pageID)
     249PassRefPtr<WebPageProxy> WebPageProxy::create(PageClient& pageClient, WebProcessProxy& process, uint64_t pageID, const WebPageConfiguration& configuration)
     250{
     251    return adoptRef(new WebPageProxy(pageClient, process, pageID, configuration));
     252}
     253
     254WebPageProxy::WebPageProxy(PageClient& pageClient, WebProcessProxy& process, uint64_t pageID, const WebPageConfiguration& configuration)
    255255    : m_pageClient(pageClient)
    256256    , m_loaderClient(std::make_unique<API::LoaderClient>())
     
    258258    , m_uiClient(std::make_unique<API::UIClient>())
    259259    , m_process(process)
    260     , m_pageGroup(pageGroup)
    261     , m_preferences(preferences)
     260    , m_pageGroup(*configuration.pageGroup)
     261    , m_preferences(*configuration.preferences)
    262262    , m_mainFrame(nullptr)
    263263    , m_userAgent(standardUserAgent())
     
    302302#endif
    303303    , m_pageID(pageID)
    304     , m_session(session)
     304    , m_session(*configuration.session)
    305305    , m_isPageSuspended(false)
    306306#if PLATFORM(MAC)
     
    370370    // FIXME: If we ever expose the session storage size as a preference, we need to pass it here.
    371371    m_process->context().storageManager().createSessionStorageNamespace(m_pageID, m_process->isValid() ? m_process->connection() : 0, std::numeric_limits<unsigned>::max());
    372     setSession(session);
     372    setSession(*configuration.session);
    373373}
    374374
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r163663 r163671  
    324324#endif
    325325
     326struct WebPageConfiguration {
     327    WebPageGroup* pageGroup = nullptr;
     328    WebPreferences* preferences = nullptr;
     329    API::Session* session = nullptr;
     330    WebPageProxy* relatedPage = nullptr;
     331};
     332
    326333class WebPageProxy : public API::ObjectImpl<API::Object::Type::Page>
    327334#if ENABLE(INPUT_TYPE_COLOR)
     
    332339    , public IPC::MessageSender {
    333340public:
    334     static PassRefPtr<WebPageProxy> create(PageClient&, WebProcessProxy&, WebPageGroup&, WebPreferences&, API::Session&, uint64_t pageID);
     341    static PassRefPtr<WebPageProxy> create(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
    335342    virtual ~WebPageProxy();
    336343
     
    880887
    881888private:
    882     WebPageProxy(PageClient&, WebProcessProxy&, WebPageGroup&, WebPreferences&, API::Session&, uint64_t pageID);
     889    WebPageProxy(PageClient&, WebProcessProxy&, uint64_t pageID, const WebPageConfiguration&);
    883890    void platformInitialize();
    884891
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp

    r163597 r163671  
    169169}
    170170
    171 PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient& pageClient, WebPageGroup& pageGroup, API::Session& session)
     171PassRefPtr<WebPageProxy> WebProcessProxy::createWebPage(PageClient& pageClient, const WebPageConfiguration& configuration)
    172172{
    173173    uint64_t pageID = generatePageID();
    174     RefPtr<WebPageProxy> webPage = WebPageProxy::create(pageClient, *this, pageGroup, pageGroup.preferences(), session, pageID);
     174    RefPtr<WebPageProxy> webPage = WebPageProxy::create(pageClient, *this, pageID, configuration);
    175175    m_pageMap.set(pageID, webPage.get());
    176176    globalPageMap().set(pageID, webPage.get());
  • trunk/Source/WebKit2/UIProcess/WebProcessProxy.h

    r162271 r163671  
    7979
    8080    static WebPageProxy* webPage(uint64_t pageID);
    81     PassRefPtr<WebPageProxy> createWebPage(PageClient&, WebPageGroup&, API::Session&);
     81    PassRefPtr<WebPageProxy> createWebPage(PageClient&, const WebPageConfiguration&);
    8282    void addExistingWebPage(WebPageProxy*, uint64_t pageID);
    8383    void removeWebPage(uint64_t pageID);
Note: See TracChangeset for help on using the changeset viewer.