Title: [164820] trunk/Source/WebKit2
- Revision
- 164820
- Author
- [email protected]
- Date
- 2014-02-27 11:41:12 -0800 (Thu, 27 Feb 2014)
Log Message
Make WebProcessProxy::pages() return an IteratorRange
https://bugs.webkit.org/show_bug.cgi?id=129440
Reviewed by Dan Bernstein.
* UIProcess/API/C/WKPage.cpp:
(WKPageCopyRelatedPages):
Move the implementation of WebPageProxy::relatedPages here.
* UIProcess/WebContext.cpp:
(WebKit::WebContext::createNewWebProcessRespectingProcessCountLimit):
Use std::min_element here instead of a manual loop.
* UIProcess/WebPageProxy.cpp:
Remove WebPageProxy::relatedPages().
* UIProcess/WebProcessProxy.cpp:
Remove WebProcessProxy::pages().
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::pages):
Make this return an IteratorRange.
(WebKit::WebProcessProxy::pageCount):
New function that returns the page count.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (164819 => 164820)
--- trunk/Source/WebKit2/ChangeLog 2014-02-27 19:39:42 UTC (rev 164819)
+++ trunk/Source/WebKit2/ChangeLog 2014-02-27 19:41:12 UTC (rev 164820)
@@ -1,3 +1,31 @@
+2014-02-27 Anders Carlsson <[email protected]>
+
+ Make WebProcessProxy::pages() return an IteratorRange
+ https://bugs.webkit.org/show_bug.cgi?id=129440
+
+ Reviewed by Dan Bernstein.
+
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageCopyRelatedPages):
+ Move the implementation of WebPageProxy::relatedPages here.
+
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::createNewWebProcessRespectingProcessCountLimit):
+ Use std::min_element here instead of a manual loop.
+
+ * UIProcess/WebPageProxy.cpp:
+ Remove WebPageProxy::relatedPages().
+
+ * UIProcess/WebProcessProxy.cpp:
+ Remove WebProcessProxy::pages().
+
+ * UIProcess/WebProcessProxy.h:
+ (WebKit::WebProcessProxy::pages):
+ Make this return an IteratorRange.
+
+ (WebKit::WebProcessProxy::pageCount):
+ New function that returns the page count.
+
2014-02-27 Alexey Proskuryakov <[email protected]>
[Mac][WK2] Remove hardcoded Cmd+B and Cmd+I from WKView.mm
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (164819 => 164820)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-02-27 19:39:42 UTC (rev 164819)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-02-27 19:41:12 UTC (rev 164820)
@@ -1653,7 +1653,14 @@
WKArrayRef WKPageCopyRelatedPages(WKPageRef pageRef)
{
- return toAPI(toImpl(pageRef)->relatedPages().leakRef());
+ Vector<RefPtr<API::Object>> relatedPages;
+
+ for (auto& page : toImpl(pageRef)->process().pages()) {
+ if (page != toImpl(pageRef))
+ relatedPages.append(page);
+ }
+
+ return toAPI(API::Array::create(std::move(relatedPages)).leakRef());
}
void WKPageSetMayStartMediaWhenInWindow(WKPageRef pageRef, bool mayStartMedia)
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (164819 => 164820)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2014-02-27 19:39:42 UTC (rev 164819)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2014-02-27 19:41:12 UTC (rev 164820)
@@ -761,16 +761,12 @@
if (m_processes.size() < m_webProcessCountLimit)
return createNewWebProcess();
- // Choose a process with fewest pages, to achieve flat distribution.
- WebProcessProxy* result = nullptr;
- unsigned fewestPagesSeen = UINT_MAX;
- for (unsigned i = 0; i < m_processes.size(); ++i) {
- if (fewestPagesSeen > m_processes[i]->pages().size()) {
- result = m_processes[i].get();
- fewestPagesSeen = m_processes[i]->pages().size();
- }
- }
- return *result;
+ // 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;
}
PassRefPtr<WebPageProxy> WebContext::createWebPage(PageClient& pageClient, WebPageConfiguration configuration)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (164819 => 164820)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-02-27 19:39:42 UTC (rev 164819)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-02-27 19:41:12 UTC (rev 164820)
@@ -422,22 +422,6 @@
preferencesDidChange();
}
-PassRefPtr<API::Array> WebPageProxy::relatedPages() const
-{
- // pages() returns a list of pages in WebProcess, so this page may or may not be among them - a client can use a reference to WebPageProxy after the page has closed.
- Vector<WebPageProxy*> pages = m_process->pages();
-
- Vector<RefPtr<API::Object>> result;
- result.reserveInitialCapacity(pages.size());
-
- for (const auto& page : pages) {
- if (page != this)
- result.uncheckedAppend(page);
- }
-
- return API::Array::create(std::move(result));
-}
-
void WebPageProxy::setLoaderClient(std::unique_ptr<API::LoaderClient> loaderClient)
{
if (!loaderClient) {
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (164819 => 164820)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2014-02-27 19:39:42 UTC (rev 164819)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2014-02-27 19:41:12 UTC (rev 164820)
@@ -211,13 +211,6 @@
}
}
-Vector<WebPageProxy*> WebProcessProxy::pages() const
-{
- Vector<WebPageProxy*> result;
- copyValuesToVector(m_pageMap, result);
- return result;
-}
-
WebBackForwardListItem* WebProcessProxy::webBackForwardItem(uint64_t itemID) const
{
return m_backForwardListItemMap.get(itemID);
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (164819 => 164820)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h 2014-02-27 19:39:42 UTC (rev 164819)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h 2014-02-27 19:41:12 UTC (rev 164820)
@@ -81,8 +81,10 @@
PassRefPtr<WebPageProxy> createWebPage(PageClient&, const WebPageConfiguration&);
void addExistingWebPage(WebPageProxy*, uint64_t pageID);
void removeWebPage(uint64_t pageID);
- Vector<WebPageProxy*> pages() const;
+ WTF::IteratorRange<WebPageProxyMap::const_iterator::Values> pages() const { return m_pageMap.values(); }
+ unsigned pageCount() const { return m_pageMap.size(); }
+
WebBackForwardListItem* webBackForwardItem(uint64_t itemID) const;
ResponsivenessTimer* responsivenessTimer() { return &m_responsivenessTimer; }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes