Title: [185563] trunk/Source/WebKit2
Revision
185563
Author
[email protected]
Date
2015-06-15 12:29:06 -0700 (Mon, 15 Jun 2015)

Log Message

[WK2] BrowsingContextController.loadData API is leaking Navigation objects
https://bugs.webkit.org/show_bug.cgi?id=145977
<rdar://problem/21305706>

Reviewed by Darin Adler.

BrowsingContextController.loadData API was leaking Navigation objects.
The issue was due to WebPageProxy::loadData() creating a Navigation
object but not passing along the navigationID to the WebProcess when
sending the Messages::WebPage::LoadData IPC. As a result, the
WebProcess would use 0 as navigationID and we would end up creating a
new Navigation object later on for the same navigation.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadData):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadData):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (185562 => 185563)


--- trunk/Source/WebKit2/ChangeLog	2015-06-15 19:16:51 UTC (rev 185562)
+++ trunk/Source/WebKit2/ChangeLog	2015-06-15 19:29:06 UTC (rev 185563)
@@ -1,3 +1,25 @@
+2015-06-15  Chris Dumez  <[email protected]>
+
+        [WK2] BrowsingContextController.loadData API is leaking Navigation objects
+        https://bugs.webkit.org/show_bug.cgi?id=145977
+        <rdar://problem/21305706>
+
+        Reviewed by Darin Adler.
+
+        BrowsingContextController.loadData API was leaking Navigation objects.
+        The issue was due to WebPageProxy::loadData() creating a Navigation
+        object but not passing along the navigationID to the WebProcess when
+        sending the Messages::WebPage::LoadData IPC. As a result, the
+        WebProcess would use 0 as navigationID and we would end up creating a
+        new Navigation object later on for the same navigation.
+
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::loadData):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::loadData):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+
 2015-06-15  Dan Bernstein  <[email protected]>
 
         REGRESSION (r185298): Databases service has Web Content service’s entitlements

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (185562 => 185563)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-06-15 19:16:51 UTC (rev 185562)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-06-15 19:29:06 UTC (rev 185563)
@@ -918,7 +918,7 @@
         reattachToWebProcess();
 
     m_process->assumeReadAccessToBaseURL(baseURL);
-    m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, UserData(process().transformObjectsToHandles(userData).get())), m_pageID);
+    m_process->send(Messages::WebPage::LoadData(navigation->navigationID(), data->dataReference(), MIMEType, encoding, baseURL, UserData(process().transformObjectsToHandles(userData).get())), m_pageID);
     m_process->responsivenessTimer()->start();
 
     return WTF::move(navigation);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (185562 => 185563)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-06-15 19:16:51 UTC (rev 185562)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-06-15 19:29:06 UTC (rev 185563)
@@ -1067,11 +1067,11 @@
     }
 }
 
-void WebPage::loadData(const IPC::DataReference& data, const String& MIMEType, const String& encodingName, const String& baseURLString, const UserData& userData)
+void WebPage::loadData(uint64_t navigationID, const IPC::DataReference& data, const String& MIMEType, const String& encodingName, const String& baseURLString, const UserData& userData)
 {
     RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(data.data()), data.size());
     URL baseURL = baseURLString.isEmpty() ? blankURL() : URL(URL(), baseURLString);
-    loadDataImpl(0, sharedBuffer, MIMEType, encodingName, baseURL, URL(), userData);
+    loadDataImpl(navigationID, sharedBuffer, MIMEType, encodingName, baseURL, URL(), userData);
 }
 
 void WebPage::loadHTMLString(uint64_t navigationID, const String& htmlString, const String& baseURLString, const UserData& userData)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (185562 => 185563)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2015-06-15 19:16:51 UTC (rev 185562)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2015-06-15 19:29:06 UTC (rev 185563)
@@ -949,7 +949,7 @@
     // Actions
     void tryClose();
     void loadRequest(uint64_t navigationID, const WebCore::ResourceRequest&, const SandboxExtension::Handle&, uint64_t shouldOpenExternalURLsPolicy, const UserData&);
-    void loadData(const IPC::DataReference&, const String& MIMEType, const String& encodingName, const String& baseURL, const UserData&);
+    void loadData(uint64_t navigationID, const IPC::DataReference&, const String& MIMEType, const String& encodingName, const String& baseURL, const UserData&);
     void loadHTMLString(uint64_t navigationID, const String& htmlString, const String& baseURL, const UserData&);
     void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL, const String& provisionalLoadErrorURL, const UserData&);
     void loadPlainTextString(const String&, const UserData&);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (185562 => 185563)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2015-06-15 19:16:51 UTC (rev 185562)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2015-06-15 19:29:06 UTC (rev 185563)
@@ -127,7 +127,7 @@
 
     LoadURLInFrame(String url, uint64_t frameID)
     LoadRequest(uint64_t navigationID, WebCore::ResourceRequest request, WebKit::SandboxExtension::Handle sandboxExtensionHandle, uint64_t shouldOpenExternalURLsPolicy, WebKit::UserData userData)
-    LoadData(IPC::DataReference data, String MIMEType, String encoding, String baseURL, WebKit::UserData userData)
+    LoadData(uint64_t navigationID, IPC::DataReference data, String MIMEType, String encoding, String baseURL, WebKit::UserData userData)
     LoadHTMLString(uint64_t navigationID, String htmlString, String baseURL, WebKit::UserData userData)
     LoadAlternateHTMLString(String htmlString, String baseURL, String unreachableURL, String provisionalLoadErrorURL, WebKit::UserData userData)
     LoadPlainTextString(String string, WebKit::UserData userData)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to