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

Reply via email to