Title: [212810] trunk/Source/WebKit2
Revision
212810
Author
commit-qu...@webkit.org
Date
2017-02-21 23:43:33 -0800 (Tue, 21 Feb 2017)

Log 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

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (212809 => 212810)


--- trunk/Source/WebKit2/ChangeLog	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/ChangeLog	2017-02-22 07:43:33 UTC (rev 212810)
@@ -1,3 +1,18 @@
+2017-02-21  Commit Queue  <commit-qu...@webkit.org>
+
+        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
+
 2017-02-21  Brady Eidson  <beid...@apple.com>
 
         Refactor WebViewImpl creation in preparation for supporting multiple WebsiteDataStores.

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2017-02-22 07:43:33 UTC (rev 212810)
@@ -549,12 +549,7 @@
 #endif
 
 #if PLATFORM(MAC)
-    _impl = WebKit::WebViewImpl::maybeCreate(self, self, processPool, WTFMove(pageConfiguration));
-    if (!_impl) {
-        [NSException raise:NSInternalInconsistencyException format:@"WKWebView initialization failed. Unable to create a new WebProcess."];
-        return;
-    }
-
+    _impl = std::make_unique<WebKit::WebViewImpl>(self, self, processPool, WTFMove(pageConfiguration));
     _page = &_impl->page();
 
     _impl->setAutomaticallyAdjustsContentInsets(true);

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2017-02-22 07:43:33 UTC (rev 212810)
@@ -904,13 +904,8 @@
     InitializeWebKit2();
 
     _data = [[WKViewData alloc] init];
+    _data->_impl = std::make_unique<WebViewImpl>(self, nullptr, processPool, WTFMove(configuration));
 
-    _data->_impl = WebViewImpl::maybeCreate(self, nullptr, processPool, WTFMove(configuration));
-    if (!_data->_impl) {
-        [NSException raise:NSInternalInconsistencyException format:@"[WKView initWithFrame:processPool:configuration:] failed to create a new WebProcess"];
-        return nil;
-    }
-
     [self maybeInstallIconLoadingClient];
 
     return self;

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h	2017-02-22 07:43:33 UTC (rev 212810)
@@ -120,7 +120,7 @@
     WTF_MAKE_FAST_ALLOCATED;
     WTF_MAKE_NONCOPYABLE(WebViewImpl);
 public:
-    static std::unique_ptr<WebViewImpl> maybeCreate(NSView <WebViewImplDelegate> *, WKWebView *outerWebView, WebProcessPool&, Ref<API::PageConfiguration>&&);
+    WebViewImpl(NSView <WebViewImplDelegate> *, WKWebView *outerWebView, WebProcessPool&, Ref<API::PageConfiguration>&&);
 
     ~WebViewImpl();
 
@@ -523,8 +523,6 @@
 #endif // HAVE(TOUCH_BAR)
 
 private:
-    WebViewImpl(NSView <WebViewImplDelegate> *, std::unique_ptr<PageClientImpl>&&, Ref<WebPageProxy>&&, WebProcessPool&);
-
 #if HAVE(TOUCH_BAR)
     void setUpTextTouchBar(NSTouchBar *);
     void updateTextTouchBar();

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm	2017-02-22 07:43:33 UTC (rev 212810)
@@ -1229,20 +1229,10 @@
     return options;
 }
 
-std::unique_ptr<WebViewImpl> WebViewImpl::maybeCreate(NSView <WebViewImplDelegate> *view, WKWebView *outerWebView, WebProcessPool& processPool, Ref<API::PageConfiguration>&& configuration)
-{
-    auto pageClient = std::make_unique<PageClientImpl>(view, outerWebView);
-    auto webPage = processPool.createWebPage(*pageClient, WTFMove(configuration));
-    if (!webPage)
-        return nullptr;
-
-    return std::unique_ptr<WebViewImpl>(new WebViewImpl(view, WTFMove(pageClient), *webPage, processPool));
-}
-
-WebViewImpl::WebViewImpl(NSView <WebViewImplDelegate> *view, std::unique_ptr<PageClientImpl>&& pageClient, Ref<WebPageProxy>&& page, WebProcessPool& processPool)
+WebViewImpl::WebViewImpl(NSView <WebViewImplDelegate> *view, WKWebView *outerWebView, WebProcessPool& processPool, Ref<API::PageConfiguration>&& configuration)
     : m_view(view)
-    , m_pageClient(WTFMove(pageClient))
-    , m_page(WTFMove(page))
+    , m_pageClient(std::make_unique<PageClientImpl>(view, outerWebView))
+    , m_page(processPool.createWebPage(*m_pageClient, WTFMove(configuration)))
     , m_weakPtrFactory(this)
     , m_needsViewFrameInWindowCoordinates(m_page->preferences().pluginsEnabled())
     , m_intrinsicContentSize(CGSizeMake(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric))

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2017-02-22 07:43:33 UTC (rev 212810)
@@ -716,13 +716,8 @@
     m_process->removeWebPage(m_pageID);
     m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID);
 
-    auto* newProcess = m_process->processPool().maybeCreateNewWebProcessRespectingProcessCountLimit(m_websiteDataStore.ptr());
-    if (!newProcess) {
-        WTFLogAlways("Couldn't reattach to a new web process");
-        return;
-    }
+    m_process = m_process->processPool().createNewWebProcessRespectingProcessCountLimit();
 
-    m_process = *newProcess;
     ASSERT(m_process->state() != ChildProcessProxy::State::Terminated);
     if (m_process->state() == ChildProcessProxy::State::Running)
         processDidFinishLaunching();

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2017-02-22 07:43:33 UTC (rev 212810)
@@ -557,7 +557,7 @@
     platformResolvePathsForSandboxExtensions();
 }
 
-WebProcessProxy& WebProcessPool::createNewWebProcess(WebsiteDataStore* websiteDataStore)
+WebProcessProxy& WebProcessPool::createNewWebProcess()
 {
     ensureNetworkProcess();
 
@@ -693,7 +693,7 @@
     if (m_processes.size() >= maximumNumberOfProcesses())
         return;
 
-    createNewWebProcess(nullptr);
+    createNewWebProcess();
     m_haveInitialEmptyProcess = true;
 }
 
@@ -769,25 +769,20 @@
 #endif
 }
 
-WebProcessProxy* WebProcessPool::maybeCreateNewWebProcessRespectingProcessCountLimit(WebsiteDataStore* websiteDataStore)
+WebProcessProxy& WebProcessPool::createNewWebProcessRespectingProcessCountLimit()
 {
     if (m_processes.size() < maximumNumberOfProcesses())
-        return &createNewWebProcess(websiteDataStore);
+        return createNewWebProcess();
 
-    // If a non-default WebsiteDataStore was passed in and we couldn't make a new web process for it,
-    // we should not return an existing process.
-    if (websiteDataStore && websiteDataStore != &API::WebsiteDataStore::defaultDataStore()->websiteDataStore())
-        return nullptr;
-
     // Choose the process with fewest pages.
     auto& process = *std::min_element(m_processes.begin(), m_processes.end(), [](const RefPtr<WebProcessProxy>& a, const RefPtr<WebProcessProxy>& b) {
         return a->pageCount() < b->pageCount();
     });
 
-    return process.get();
+    return *process;
 }
 
-RefPtr<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API::PageConfiguration>&& pageConfiguration)
+Ref<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API::PageConfiguration>&& pageConfiguration)
 {
     if (!pageConfiguration->pageGroup())
         pageConfiguration->setPageGroup(m_defaultPageGroup.ptr());
@@ -797,9 +792,7 @@
         pageConfiguration->setUserContentController(&pageConfiguration->pageGroup()->userContentController());
     if (!pageConfiguration->visitedLinkStore())
         pageConfiguration->setVisitedLinkStore(m_visitedLinkStore.ptr());
-
-    bool pageHasWebsiteDataStore = pageConfiguration->websiteDataStore();
-    if (!pageHasWebsiteDataStore) {
+    if (!pageConfiguration->websiteDataStore()) {
         ASSERT(!pageConfiguration->sessionID().isValid());
         pageConfiguration->setWebsiteDataStore(m_websiteDataStore.get());
         pageConfiguration->setSessionID(pageConfiguration->preferences()->privateBrowsingEnabled() ? SessionID::legacyPrivateSessionID() : SessionID::defaultSessionID());
@@ -806,7 +799,7 @@
     }
 
     RefPtr<WebProcessProxy> process;
-    if (m_haveInitialEmptyProcess && !pageHasWebsiteDataStore) {
+    if (m_haveInitialEmptyProcess) {
         process = m_processes.last();
         m_haveInitialEmptyProcess = false;
     } else if (pageConfiguration->relatedPage()) {
@@ -813,7 +806,7 @@
         // Sharing processes, e.g. when creating the page via window.open().
         process = &pageConfiguration->relatedPage()->process();
     } else
-        process = maybeCreateNewWebProcessRespectingProcessCountLimit(&pageConfiguration->websiteDataStore()->websiteDataStore());
+        process = &createNewWebProcessRespectingProcessCountLimit();
 
     return process->createWebPage(pageClient, WTFMove(pageConfiguration));
 }

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (212809 => 212810)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2017-02-22 06:57:13 UTC (rev 212809)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2017-02-22 07:43:33 UTC (rev 212810)
@@ -170,7 +170,7 @@
 
     API::WebsiteDataStore* websiteDataStore() const { return m_websiteDataStore.get(); }
 
-    RefPtr<WebPageProxy> createWebPage(PageClient&, Ref<API::PageConfiguration>&&);
+    Ref<WebPageProxy> createWebPage(PageClient&, Ref<API::PageConfiguration>&&);
 
     const String& injectedBundlePath() const { return m_configuration->injectedBundlePath(); }
 
@@ -258,7 +258,7 @@
 
     void allowSpecificHTTPSCertificateForHost(const WebCertificateInfo*, const String& host);
 
-    WebProcessProxy* maybeCreateNewWebProcessRespectingProcessCountLimit(WebsiteDataStore*); // Will return an existing one if limit is met.
+    WebProcessProxy& createNewWebProcessRespectingProcessCountLimit(); // Will return an existing one if limit is met.
     void warmInitialProcess();
 
     bool shouldTerminate(WebProcessProxy*);
@@ -397,7 +397,7 @@
     void platformInitializeWebProcess(WebProcessCreationParameters&);
     void platformInvalidateContext();
 
-    WebProcessProxy& createNewWebProcess(WebsiteDataStore*);
+    WebProcessProxy& createNewWebProcess();
 
     void requestWebContentStatistics(StatisticsRequest*);
     void requestNetworkingStatistics(StatisticsRequest*);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to