Changeset 212810 in webkit
- Timestamp:
- Feb 21, 2017, 11:43:33 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/API/Cocoa/WKWebView.mm (modified) (1 diff)
-
UIProcess/API/mac/WKView.mm (modified) (1 diff)
-
UIProcess/Cocoa/WebViewImpl.h (modified) (2 diffs)
-
UIProcess/Cocoa/WebViewImpl.mm (modified) (1 diff)
-
UIProcess/WebPageProxy.cpp (modified) (1 diff)
-
UIProcess/WebProcessPool.cpp (modified) (7 diffs)
-
UIProcess/WebProcessPool.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r212786 r212810 1 2017-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 1 16 2017-02-21 Brady Eidson <beidson@apple.com> 2 17 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r212786 r212810 550 550 551 551 #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)); 558 553 _page = &_impl->page(); 559 554 -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r212786 r212810 905 905 906 906 _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)); 913 908 914 909 [self maybeInstallIconLoadingClient]; -
trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h
r212786 r212810 121 121 WTF_MAKE_NONCOPYABLE(WebViewImpl); 122 122 public: 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>&&); 124 124 125 125 ~WebViewImpl(); … … 524 524 525 525 private: 526 WebViewImpl(NSView <WebViewImplDelegate> *, std::unique_ptr<PageClientImpl>&&, Ref<WebPageProxy>&&, WebProcessPool&);527 528 526 #if HAVE(TOUCH_BAR) 529 527 void setUpTextTouchBar(NSTouchBar *); -
trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm
r212786 r212810 1230 1230 } 1231 1231 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) 1232 WebViewImpl::WebViewImpl(NSView <WebViewImplDelegate> *view, WKWebView *outerWebView, WebProcessPool& processPool, Ref<API::PageConfiguration>&& configuration) 1243 1233 : 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))) 1246 1236 , m_weakPtrFactory(this) 1247 1237 , m_needsViewFrameInWindowCoordinates(m_page->preferences().pluginsEnabled()) -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r212786 r212810 717 717 m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID); 718 718 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 726 721 ASSERT(m_process->state() != ChildProcessProxy::State::Terminated); 727 722 if (m_process->state() == ChildProcessProxy::State::Running) -
trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp
r212786 r212810 558 558 } 559 559 560 WebProcessProxy& WebProcessPool::createNewWebProcess( WebsiteDataStore* websiteDataStore)560 WebProcessProxy& WebProcessPool::createNewWebProcess() 561 561 { 562 562 ensureNetworkProcess(); … … 694 694 return; 695 695 696 createNewWebProcess( nullptr);696 createNewWebProcess(); 697 697 m_haveInitialEmptyProcess = true; 698 698 } … … 770 770 } 771 771 772 WebProcessProxy * WebProcessPool::maybeCreateNewWebProcessRespectingProcessCountLimit(WebsiteDataStore* websiteDataStore)772 WebProcessProxy& WebProcessPool::createNewWebProcessRespectingProcessCountLimit() 773 773 { 774 774 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(); 781 776 782 777 // Choose the process with fewest pages. … … 785 780 }); 786 781 787 return process.get();788 } 789 790 Ref Ptr<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API::PageConfiguration>&& pageConfiguration)782 return *process; 783 } 784 785 Ref<WebPageProxy> WebProcessPool::createWebPage(PageClient& pageClient, Ref<API::PageConfiguration>&& pageConfiguration) 791 786 { 792 787 if (!pageConfiguration->pageGroup()) … … 798 793 if (!pageConfiguration->visitedLinkStore()) 799 794 pageConfiguration->setVisitedLinkStore(m_visitedLinkStore.ptr()); 800 801 bool pageHasWebsiteDataStore = pageConfiguration->websiteDataStore(); 802 if (!pageHasWebsiteDataStore) { 795 if (!pageConfiguration->websiteDataStore()) { 803 796 ASSERT(!pageConfiguration->sessionID().isValid()); 804 797 pageConfiguration->setWebsiteDataStore(m_websiteDataStore.get()); … … 807 800 808 801 RefPtr<WebProcessProxy> process; 809 if (m_haveInitialEmptyProcess && !pageHasWebsiteDataStore) {802 if (m_haveInitialEmptyProcess) { 810 803 process = m_processes.last(); 811 804 m_haveInitialEmptyProcess = false; … … 814 807 process = &pageConfiguration->relatedPage()->process(); 815 808 } else 816 process = maybeCreateNewWebProcessRespectingProcessCountLimit(&pageConfiguration->websiteDataStore()->websiteDataStore());809 process = &createNewWebProcessRespectingProcessCountLimit(); 817 810 818 811 return process->createWebPage(pageClient, WTFMove(pageConfiguration)); -
trunk/Source/WebKit2/UIProcess/WebProcessPool.h
r212786 r212810 171 171 API::WebsiteDataStore* websiteDataStore() const { return m_websiteDataStore.get(); } 172 172 173 Ref Ptr<WebPageProxy> createWebPage(PageClient&, Ref<API::PageConfiguration>&&);173 Ref<WebPageProxy> createWebPage(PageClient&, Ref<API::PageConfiguration>&&); 174 174 175 175 const String& injectedBundlePath() const { return m_configuration->injectedBundlePath(); } … … 259 259 void allowSpecificHTTPSCertificateForHost(const WebCertificateInfo*, const String& host); 260 260 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. 262 262 void warmInitialProcess(); 263 263 … … 398 398 void platformInvalidateContext(); 399 399 400 WebProcessProxy& createNewWebProcess( WebsiteDataStore*);400 WebProcessProxy& createNewWebProcess(); 401 401 402 402 void requestWebContentStatistics(StatisticsRequest*);
Note:
See TracChangeset
for help on using the changeset viewer.