Title: [129701] trunk/Source/WebKit2
- Revision
- 129701
- Author
- [email protected]
- Date
- 2012-09-26 13:54:26 -0700 (Wed, 26 Sep 2012)
Log Message
[WK2] Update WebPageProxy::reattachToWebProcess() for multi-web process mode
https://bugs.webkit.org/show_bug.cgi?id=97726
Reviewed by Anders Carlsson.
* UIProcess/WebContext.cpp:
(WebKit::WebContext::ensureSharedWebProcess): createNewWebProcess() now takes care
of adding the new process to m_processes.
(WebKit::WebContext::createNewWebProcess): Every time we call this function, we need
to add the result to m_processes. Better do it internally to avoid mistakes.
(WebKit::WebContext::warmInitialProcess): Updated for the above.
(WebKit::WebContext::createWebPage): Ditto.
(WebKit::WebContext::relaunchProcessIfNecessary): This function makes no sense in
multi-web process mode. Assert that we didnt get here accidentally.
* UIProcess/WebContext.h: (WebKit::WebContext::sendToAllProcessesRelaunchingThemIfNecessary):
Only call relaunchProcessIfNecessary in single process mode. The functionality that
needs this behavior will be greatly refactored for multi-web process.
* UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::reattachToWebProcess):
We already know that we need a new process, "relaunch if necessary" is not the
right logic. Also added a few more assertions checking that process state is
as expected.
* UIProcess/WebResourceCacheManagerProxy.cpp:
(WebKit::WebResourceCacheManagerProxy::getCacheOrigins): Removed relaunchProcessIfNecessary().
It will be called inside sendToAllProcessesRelaunchingThemIfNecessary().
* UIProcess/Plugins/WebPluginSiteDataManager.cpp:
(WebKit::WebPluginSiteDataManager::getSitesWithData): Ditto.
(WebKit::WebPluginSiteDataManager::clearSiteData): Ditto.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (129700 => 129701)
--- trunk/Source/WebKit2/ChangeLog 2012-09-26 20:51:32 UTC (rev 129700)
+++ trunk/Source/WebKit2/ChangeLog 2012-09-26 20:54:26 UTC (rev 129701)
@@ -1,3 +1,37 @@
+2012-09-26 Alexey Proskuryakov <[email protected]>
+
+ [WK2] Update WebPageProxy::reattachToWebProcess() for multi-web process mode
+ https://bugs.webkit.org/show_bug.cgi?id=97726
+
+ Reviewed by Anders Carlsson.
+
+ * UIProcess/WebContext.cpp:
+ (WebKit::WebContext::ensureSharedWebProcess): createNewWebProcess() now takes care
+ of adding the new process to m_processes.
+ (WebKit::WebContext::createNewWebProcess): Every time we call this function, we need
+ to add the result to m_processes. Better do it internally to avoid mistakes.
+ (WebKit::WebContext::warmInitialProcess): Updated for the above.
+ (WebKit::WebContext::createWebPage): Ditto.
+ (WebKit::WebContext::relaunchProcessIfNecessary): This function makes no sense in
+ multi-web process mode. Assert that we didnt get here accidentally.
+
+ * UIProcess/WebContext.h: (WebKit::WebContext::sendToAllProcessesRelaunchingThemIfNecessary):
+ Only call relaunchProcessIfNecessary in single process mode. The functionality that
+ needs this behavior will be greatly refactored for multi-web process.
+
+ * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::reattachToWebProcess):
+ We already know that we need a new process, "relaunch if necessary" is not the
+ right logic. Also added a few more assertions checking that process state is
+ as expected.
+
+ * UIProcess/WebResourceCacheManagerProxy.cpp:
+ (WebKit::WebResourceCacheManagerProxy::getCacheOrigins): Removed relaunchProcessIfNecessary().
+ It will be called inside sendToAllProcessesRelaunchingThemIfNecessary().
+
+ * UIProcess/Plugins/WebPluginSiteDataManager.cpp:
+ (WebKit::WebPluginSiteDataManager::getSitesWithData): Ditto.
+ (WebKit::WebPluginSiteDataManager::clearSiteData): Ditto.
+
2012-09-26 Carlos Garcia Campos <[email protected]>
[GTK] Don't use the C API internally in WebKitJavascriptResult
Modified: trunk/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp (129700 => 129701)
--- trunk/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp 2012-09-26 20:51:32 UTC (rev 129700)
+++ trunk/Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp 2012-09-26 20:54:26 UTC (rev 129701)
@@ -163,8 +163,6 @@
m_pendingGetSitesWithData.set(callbackID, state);
state->getSitesWithDataForNextPlugin();
#else
- m_webContext->relaunchProcessIfNecessary();
-
Vector<PluginModuleInfo> plugins = m_webContext->pluginInfoStore().plugins();
Vector<String> pluginPaths;
for (size_t i = 0; i < plugins.size(); ++i)
@@ -225,8 +223,6 @@
m_pendingClearSiteData.set(callbackID, state);
state->clearSiteDataForNextPlugin();
#else
- m_webContext->relaunchProcessIfNecessary();
-
Vector<PluginModuleInfo> plugins = m_webContext->pluginInfoStore().plugins();
Vector<String> pluginPaths;
for (size_t i = 0; i < plugins.size(); ++i)
Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (129700 => 129701)
--- trunk/Source/WebKit2/UIProcess/WebContext.cpp 2012-09-26 20:51:32 UTC (rev 129700)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp 2012-09-26 20:54:26 UTC (rev 129701)
@@ -304,7 +304,7 @@
void WebContext::ensureSharedWebProcess()
{
if (m_processes.isEmpty())
- m_processes.append(createNewWebProcess());
+ createNewWebProcess();
}
PassRefPtr<WebProcessProxy> WebContext::createNewWebProcess()
@@ -366,6 +366,8 @@
injectedBundleInitializationUserData = m_injectedBundleInitializationUserData;
process->send(Messages::WebProcess::InitializeWebProcess(parameters, WebContextUserMessageEncoder(injectedBundleInitializationUserData.get())), 0);
+ m_processes.append(process);
+
return process.release();
}
@@ -376,7 +378,7 @@
return;
}
- m_processes.append(createNewWebProcess());
+ createNewWebProcess();
m_haveInitialEmptyProcess = true;
}
@@ -514,7 +516,6 @@
} else {
// FIXME (Multi-WebProcess): <rdar://problem/12239661> Consider limiting the number of web processes in per-tab process model.
process = createNewWebProcess();
- m_processes.append(process);
}
}
@@ -529,10 +530,10 @@
if (m_processModel == ProcessModelSharedSecondaryProcess) {
ensureSharedWebProcess();
return m_processes[0].get();
- } else {
- // FIXME (Multi-WebProcess): What should this do in this model?
- return 0;
}
+
+ ASSERT_NOT_REACHED();
+ return 0;
}
DownloadProxy* WebContext::download(WebPageProxy* initiatingPage, const ResourceRequest& request)
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (129700 => 129701)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2012-09-26 20:51:32 UTC (rev 129700)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2012-09-26 20:54:26 UTC (rev 129701)
@@ -370,7 +370,9 @@
template<typename U> void WebContext::sendToAllProcessesRelaunchingThemIfNecessary(const U& message)
{
- relaunchProcessIfNecessary();
+// FIXME (Multi-WebProcess): WebContext doesn't track processes that have exited, so it cannot relaunch these. Perhaps this functionality won't be needed in this mode.
+ if (m_processModel == ProcessModelSharedSecondaryProcess)
+ relaunchProcessIfNecessary();
sendToAllProcesses(message);
}
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (129700 => 129701)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2012-09-26 20:51:32 UTC (rev 129700)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2012-09-26 20:54:26 UTC (rev 129701)
@@ -342,10 +342,13 @@
void WebPageProxy::reattachToWebProcess()
{
ASSERT(!isValid());
+ ASSERT(m_process);
+ ASSERT(!m_process->isValid());
+ ASSERT(!m_process->isLaunching());
m_isValid = true;
- m_process = m_process->context()->relaunchProcessIfNecessary();
+ m_process = m_process->context()->createNewWebProcess();
m_process->addExistingWebPage(this, m_pageID);
initializeWebPage();
Modified: trunk/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp (129700 => 129701)
--- trunk/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp 2012-09-26 20:51:32 UTC (rev 129700)
+++ trunk/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp 2012-09-26 20:54:26 UTC (rev 129701)
@@ -64,7 +64,6 @@
void WebResourceCacheManagerProxy::getCacheOrigins(PassRefPtr<ArrayCallback> prpCallback)
{
RefPtr<ArrayCallback> callback = prpCallback;
- m_webContext->relaunchProcessIfNecessary();
uint64_t callbackID = callback->callbackID();
m_arrayCallbacks.set(callbackID, callback.release());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes