Title: [130214] trunk/Source/WebKit2
Revision
130214
Author
a...@apple.com
Date
2012-10-02 14:49:33 -0700 (Tue, 02 Oct 2012)

Log Message

        <rdar://problem/12407139> WebKit2 should provide API that returns all pages in the same process as a given page
        https://bugs.webkit.org/show_bug.cgi?id=98193

        Reviewed by Sam Weinig.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageCopyRelatedPages):
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::relatedPages):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::pages):
        * UIProcess/WebProcessProxy.h:
        Added. This should work once a process has crashed, too.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (130213 => 130214)


--- trunk/Source/WebKit2/ChangeLog	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/ChangeLog	2012-10-02 21:49:33 UTC (rev 130214)
@@ -1,3 +1,21 @@
+2012-10-02  Alexey Proskuryakov  <a...@apple.com>
+
+        <rdar://problem/12407139> WebKit2 should provide API that returns all pages in the same process as a given page
+        https://bugs.webkit.org/show_bug.cgi?id=98193
+
+        Reviewed by Sam Weinig.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageCopyRelatedPages):
+        * UIProcess/API/C/WKPagePrivate.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::relatedPages):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::pages):
+        * UIProcess/WebProcessProxy.h:
+        Added. This should work once a process has crashed, too.
+
 2012-10-02  Anders Carlsson  <ander...@apple.com>
 
         Allow LayerTreeHost subclasses to return a custom GraphicsLayerFactory

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (130213 => 130214)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2012-10-02 21:49:33 UTC (rev 130214)
@@ -738,3 +738,7 @@
     toImpl(pageRef)->postMessageToInjectedBundle(toImpl(messageNameRef)->string(), toImpl(messageBodyRef));
 }
 
+WKArrayRef WKPageCopyRelatedPages(WKPageRef pageRef)
+{
+    return toAPI(toImpl(pageRef)->relatedPages().leakRef());
+}

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h (130213 => 130214)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPagePrivate.h	2012-10-02 21:49:33 UTC (rev 130214)
@@ -94,6 +94,8 @@
 
 WK_EXPORT void WKPageSetMediaVolume(WKPageRef page, float volume);
 
+WK_EXPORT WKArrayRef WKPageCopyRelatedPages(WKPageRef page);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (130213 => 130214)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2012-10-02 21:49:33 UTC (rev 130214)
@@ -277,6 +277,21 @@
     return m_isValid;
 }
 
+PassRefPtr<ImmutableArray> WebPageProxy::relatedPages() const
+{
+    Vector<WebPageProxy*> pages = m_process->pages();
+    ASSERT(pages.contains(this));
+
+    Vector<RefPtr<APIObject> > result;
+    result.reserveCapacity(pages.size() - 1);
+    for (size_t i = 0; i < pages.size(); ++i) {
+        if (pages[i] != this)
+            result.append(pages[i]);
+    }
+
+    return ImmutableArray::adopt(result);
+}
+
 void WebPageProxy::initializeLoaderClient(const WKPageLoaderClient* loadClient)
 {
     m_loaderClient.initialize(loadClient);

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (130213 => 130214)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2012-10-02 21:49:33 UTC (rev 130214)
@@ -623,6 +623,8 @@
 
     bool isValid();
 
+    PassRefPtr<ImmutableArray> relatedPages() const;
+
     const String& urlAtProcessExit() const { return m_urlAtProcessExit; }
     WebFrameProxy::LoadState loadStateAtProcessExit() const { return m_loadStateAtProcessExit; }
 

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (130213 => 130214)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2012-10-02 21:49:33 UTC (rev 130214)
@@ -186,6 +186,13 @@
     m_pageMap.remove(pageID);
 }
 
+Vector<WebPageProxy*> WebProcessProxy::pages() const
+{
+    Vector<WebPageProxy*> result;
+    copyValuesToVector(m_pageMap, result);
+    return result;
+}
+
 #if ENABLE(WEB_INTENTS)
 void WebProcessProxy::removeMessagePortChannel(uint64_t channelID)
 {

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (130213 => 130214)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2012-10-02 21:37:31 UTC (rev 130213)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2012-10-02 21:49:33 UTC (rev 130214)
@@ -84,6 +84,7 @@
     PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebContext*, WebPageGroup*);
     void addExistingWebPage(WebPageProxy*, uint64_t pageID);
     void removeWebPage(uint64_t pageID);
+    Vector<WebPageProxy*> pages() const;
 
 #if ENABLE(WEB_INTENTS)
     void removeMessagePortChannel(uint64_t channelID);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to