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)