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

Changeset 212810 in webkit


Ignore:
Timestamp:
Feb 21, 2017, 11:43:33 PM (10 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r212786.
​https://bugs.webkit.org/show_bug.cgi?id=168710

It broke GTK+ port when using single shared process model
(Requested by KaL on #webkit).

Reverted changeset:

"Refactor WebViewImpl creation in preparation for supporting
multiple WebsiteDataStores."
​https://bugs.webkit.org/show_bug.cgi?id=168676
​http://trac.webkit.org/changeset/212786

Location:
trunk/Source/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r212786 r212810  
     12017-02-21  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r212786.
     4        https://bugs.webkit.org/show_bug.cgi?id=168710
     5
     6        It broke GTK+ port when using single shared process model
     7        (Requested by KaL on #webkit).
     8
     9        Reverted changeset:
     10
     11        "Refactor WebViewImpl creation in preparation for supporting
     12        multiple WebsiteDataStores."
     13        https://bugs.webkit.org/show_bug.cgi?id=168676
     14        http://trac.webkit.org/changeset/212786
     15
    1162017-02-21  Brady Eidson  <beidson@apple.com>
    217
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r212786 r212810  
    550550
    551551#if PLATFORM(MAC)
    552     _impl = WebKit::WebViewImpl::maybeCreate(self, self, processPool, WTFMove(pageConfiguration));
    553     if (!_impl) {
    554         [NSException raise:NSInternalInconsistencyException format:@"WKWebView initialization failed. Unable to create a new WebProcess."];
    555         return;
    556     }
    557 
     552    _impl = std::make_unique<WebKit::WebViewImpl>(self, self, processPool, WTFMove(pageConfiguration));
    558553    _page = &_impl->page();
    559554
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r212786 r212810  
    905905
    906906    _data = [[WKViewData alloc] init];
    907 
    908     _data->_impl = WebViewImpl::maybeCreate(self, nullptr, processPool, WTFMove(configuration));
    909     if (!_data->_impl) {
    910         [NSException raise:NSInternalInconsistencyException format:@"[WKView initWithFrame:processPool:configuration:] failed to create a new WebProcess"];
    911         return nil;
    912     }
     907    _data->_impl = std::make_unique<WebViewImpl>(self, nullptr, processPool, WTFMove(configuration));
    913908
    914909    [self maybeInstallIconLoadingClient];
  • trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h

    r212786 r212810  
    121121    WTF_MAKE_NONCOPYABLE(WebViewImpl);
    122122public:
    123     static std::unique_ptr<WebViewImpl> maybeCreate(NSView <WebViewImplDelegate> *, WKWebView *outerWebView, WebProcessPool&, Ref<API::PageConfiguration>&&);
     123    WebViewImpl(NSView <WebViewImplDelegate> *, WKWebView *outerWebView, WebProcessPool&, Ref<API::PageConfiguration>&&);
    124124
    125125    ~WebViewImpl();
    … …  
    524524
    525525private:
    526     WebViewImpl(NSView <WebViewImplDelegate> *, std::unique_ptr<PageClientImpl>&&, Ref<WebPageProxy>&&, WebProcessPool&);
    527 
    528526#if HAVE(TOUCH_BAR)
    529527    void setUpTextTouchBar(NSTouchBar *);
  • trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm

    r212786 r212810  
    12301230}
    12311231
    1232 std::unique_ptr<WebViewImpl> WebViewImpl::maybeCreate(NSView <WebViewImplDelegate> *view, WKWebView *outerWebView, WebProcessPool& processPool, Ref<API::PageConfiguration>&& configuration)
    1233 {
    1234     auto pageClient = std::make_unique<PageClientImpl>(view, outerWebView);
    1235     auto webPage = processPool.createWebPage(*pageClient, WTFMove(configuration));
    1236     if (!webPage)
    1237         return nullptr;
    1238 
    1239     return std::unique_ptr<WebViewImpl>(new WebViewImpl(view, WTFMove(pageClient), *webPage, processPool));
    1240 }
    1241 
    1242 WebViewImpl::WebViewImpl(NSView <WebViewImplDelegate> *view, std::unique_ptr<PageClientImpl>&& pageClient, Ref<WebPageProxy>&& page, WebProcessPool& processPool)
     1232WebViewImpl::WebViewImpl(NSView <WebViewImplDelegate> *view, WKWebView *outerWebView, WebProcessPool& processPool, Ref<API::PageConfiguration>&& configuration)
    12431233    : m_view(view)
    1244     , m_pageClient(WTFMove(pageClient))
    1245     , m_page(WTFMove(page))
     1234    , m_pageClient(std::make_unique<PageClientImpl>(view, outerWebView))
     1235    , m_page(processPool.createWebPage(*m_pageClient, WTFMove(configuration)))
    12461236    , m_weakPtrFactory(this)
    12471237    , m_needsViewFrameInWindowCoordinates(m_page->preferences().pluginsEnabled())
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r212786 r212810  
    717717    m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID);
    718718
    719     auto* newProcess = m_process->processPool().maybeCreateNewWebProcessRespectingProcessCountLimit(m_websiteDataStore.ptr());
    720     if (!newProcess) {
    721         WTFLogAlways("Couldn't reattach to a new web process");
    722         return;
    723     }
    724 
    725     m_process = *newProcess;
     719    m_process = m_process->processPool().createNewWebProcessRespectingProcessCountLimit();
     720
    726721    ASSERT(m_process->state() != ChildProcessProxy::State::Terminated);
    727722    if (m_process->state() == ChildProcessProxy::State::Running)
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp

    r212786 r212810  
    558558}
    559559
    560 WebProcessProxy& WebProcessPool::createNewWebProcess(WebsiteDataStore* websiteDataStore)
     560WebProcessProxy& WebProcessPool::createNewWebProcess()
    561561{
    562562    ensureNetworkProcess();
    … …  
    694694        return;
    695695
    696     createNewWebProcess(nullptr);
     696    createNewWebProcess();
    697697    m_haveInitialEmptyProcess = true;
    698698}
    … …  
    770770}
    771771
    772 WebProcessProxy* WebProcessPool::maybeCreateNewWebProcessRespectingProcessCountLimit(WebsiteDataStore* websiteDataStore)
     772WebProcessProxy& WebProcessPool::createNewWebProcessRespectingProcessCountLimit()
    773773{
    774774    if (m_processes.size() < maximumNumberOfProcesses())
    775         return &createNewWebProcess(websiteDataStore);
    776 
    777     // If a non-default WebsiteDataStore was passed in and we couldn't make a new web process for it,
    778     // we should not return an existing process.
    779     if (websiteDataStore && websiteDataStore != &API::WebsiteDataStore::defaultDataStore()->websiteDataStore())
    780         return nullptr;
     775        return createNewWebProcess();
    781776
    782777    // Choose the process with fewest pages.
    … …  
    785780    });
    786781
    787     return process.get();
    788 }
    789 
    790 RefPtr<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API::PageConfiguration>&& pageConfiguration)
     782    return *process;
     783}
     784
     785Ref<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API::PageConfiguration>&& pageConfiguration)
    791786{
    792787    if (!pageConfiguration->pageGroup())
    … …  
    798793    if (!pageConfiguration->visitedLinkStore())
    799794        pageConfiguration->setVisitedLinkStore(m_visitedLinkStore.ptr());
    800 
    801     bool pageHasWebsiteDataStore = pageConfiguration->websiteDataStore();
    802     if (!pageHasWebsiteDataStore) {
     795    if (!pageConfiguration->websiteDataStore()) {
    803796        ASSERT(!pageConfiguration->sessionID().isValid());
    804797        pageConfiguration->setWebsiteDataStore(m_websiteDataStore.get());
    … …  
    807800
    808801    RefPtr<WebProcessProxy> process;
    809     if (m_haveInitialEmptyProcess && !pageHasWebsiteDataStore) {
     802    if (m_haveInitialEmptyProcess) {
    810803        process = m_processes.last();
    811804        m_haveInitialEmptyProcess = false;
    … …  
    814807        process = &pageConfiguration->relatedPage()->process();
    815808    } else
    816         process = maybeCreateNewWebProcessRespectingProcessCountLimit(&pageConfiguration->websiteDataStore()->websiteDataStore());
     809        process = &createNewWebProcessRespectingProcessCountLimit();
    817810
    818811    return process->createWebPage(pageClient, WTFMove(pageConfiguration));
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.h

    r212786 r212810  
    171171    API::WebsiteDataStore* websiteDataStore() const { return m_websiteDataStore.get(); }
    172172
    173     RefPtr<WebPageProxy> createWebPage(PageClient&, Ref<API::PageConfiguration>&&);
     173    Ref<WebPageProxy> createWebPage(PageClient&, Ref<API::PageConfiguration>&&);
    174174
    175175    const String& injectedBundlePath() const { return m_configuration->injectedBundlePath(); }
    … …  
    259259    void allowSpecificHTTPSCertificateForHost(const WebCertificateInfo*, const String& host);
    260260
    261     WebProcessProxy* maybeCreateNewWebProcessRespectingProcessCountLimit(WebsiteDataStore*); // Will return an existing one if limit is met.
     261    WebProcessProxy& createNewWebProcessRespectingProcessCountLimit(); // Will return an existing one if limit is met.
    262262    void warmInitialProcess();
    263263
    … …  
    398398    void platformInvalidateContext();
    399399
    400     WebProcessProxy& createNewWebProcess(WebsiteDataStore*);
     400    WebProcessProxy& createNewWebProcess();
    401401
    402402    void requestWebContentStatistics(StatisticsRequest*);
Note: See TracChangeset for help on using the changeset viewer.