Title: [135924] branches/safari-536.28-branch/Source/WebKit2

Diff

Modified: branches/safari-536.28-branch/Source/WebKit2/ChangeLog (135923 => 135924)


--- branches/safari-536.28-branch/Source/WebKit2/ChangeLog	2012-11-27 22:34:45 UTC (rev 135923)
+++ branches/safari-536.28-branch/Source/WebKit2/ChangeLog	2012-11-27 22:42:14 UTC (rev 135924)
@@ -1,3 +1,44 @@
+2012-11-27  Lucas Forschler  <[email protected]>
+
+        Merge r128205 and parts of r127334.
+
+    2012-09-11  Brady Eidson  <[email protected]>
+
+            We should wait longer before killing the PluginProcess.
+            <rdar://problem/12067728> and https://bugs.webkit.org/show_bug.cgi?id=96407
+
+            Reviewed by Anders Carlsson.
+
+            Currently we kill the PluginProcess 15 seconds after the last plug-in is destroyed.
+            This is short enough that most users will have the process killed many times during browsing sessions,
+            which is painful because relaunching the process is I/O and kernel intensive.
+
+            In an ideal world we could keep it around forever until the system tells us resources are running low.
+
+            In reality we do want to kill it occasionally to get a clean slate from any plug-in leaks.
+
+            A reasonable balance for now is to set a minimum lifetime of 30 minutes on the plug-in process and to 
+            extend the termination timer from 15 seconds to 10 minutes.
+
+            * PluginProcess/PluginProcess.cpp:
+            (WebKit::PluginProcess::PluginProcess):
+            (WebKit::PluginProcess::initializePluginProcess):
+            (WebKit::PluginProcess::setMinimumLifetime):
+            (WebKit):
+            (WebKit::PluginProcess::minimumLifetimeTimerFired):
+            * PluginProcess/PluginProcess.h:
+            (PluginProcess):
+
+            * Shared/Plugins/PluginProcessCreationParameters.cpp:
+            (WebKit::PluginProcessCreationParameters::encode):
+            (WebKit::PluginProcessCreationParameters::decode):
+            * Shared/Plugins/PluginProcessCreationParameters.h:
+            (PluginProcessCreationParameters):
+
+            * UIProcess/Plugins/PluginProcessProxy.cpp:
+            (WebKit):
+            (WebKit::PluginProcessProxy::didFinishLaunching):
+
 2012-11-27  Anders Carlsson  <[email protected]>
 
         <rdar://problem/11755093>

Modified: branches/safari-536.28-branch/Source/WebKit2/PluginProcess/PluginProcess.cpp (135923 => 135924)


--- branches/safari-536.28-branch/Source/WebKit2/PluginProcess/PluginProcess.cpp	2012-11-27 22:34:45 UTC (rev 135923)
+++ branches/safari-536.28-branch/Source/WebKit2/PluginProcess/PluginProcess.cpp	2012-11-27 22:42:14 UTC (rev 135924)
@@ -65,8 +65,6 @@
 
 namespace WebKit {
 
-static const double shutdownTimeout = 15.0;
-
 PluginProcess& PluginProcess::shared()
 {
     DEFINE_STATIC_LOCAL(PluginProcess, pluginProcess, ());
@@ -74,7 +72,7 @@
 }
 
 PluginProcess::PluginProcess()
-    : ChildProcess(shutdownTimeout)
+    : ChildProcess(0)
     , m_supportsAsynchronousPluginInitialization(false)
 #if PLATFORM(MAC)
     , m_compositingRenderServerPort(MACH_PORT_NULL)
@@ -159,6 +157,8 @@
     m_pluginPath = parameters.pluginPath;
     m_supportsAsynchronousPluginInitialization = parameters.supportsAsynchronousPluginInitialization;
 
+    setTerminationTimeout(parameters.terminationTimeout);
+
     platformInitialize(parameters);
 }
 

Modified: branches/safari-536.28-branch/Source/WebKit2/Shared/ChildProcess.h (135923 => 135924)


--- branches/safari-536.28-branch/Source/WebKit2/Shared/ChildProcess.h	2012-11-27 22:34:45 UTC (rev 135923)
+++ branches/safari-536.28-branch/Source/WebKit2/Shared/ChildProcess.h	2012-11-27 22:42:14 UTC (rev 135924)
@@ -63,6 +63,8 @@
     explicit ChildProcess(double terminationTimeout);
     ~ChildProcess();
 
+    void setTerminationTimeout(double seconds) { m_terminationTimeout = seconds; }
+
 private:
     void terminationTimerFired();
 

Modified: branches/safari-536.28-branch/Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.cpp (135923 => 135924)


--- branches/safari-536.28-branch/Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.cpp	2012-11-27 22:34:45 UTC (rev 135923)
+++ branches/safari-536.28-branch/Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.cpp	2012-11-27 22:42:14 UTC (rev 135924)
@@ -41,6 +41,7 @@
 {
     encoder->encode(pluginPath);
     encoder->encode(supportsAsynchronousPluginInitialization);
+    encoder->encode(terminationTimeout);
 
 #if PLATFORM(MAC)
     encoder->encode(parentProcessName);
@@ -54,7 +55,8 @@
         return false;
     if (!decoder->decode(result.supportsAsynchronousPluginInitialization))
         return false;
-
+    if (!decoder->decode(result.terminationTimeout))
+        return false;
 #if PLATFORM(MAC)
     if (!decoder->decode(result.parentProcessName))
         return false;

Modified: branches/safari-536.28-branch/Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.h (135923 => 135924)


--- branches/safari-536.28-branch/Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.h	2012-11-27 22:34:45 UTC (rev 135923)
+++ branches/safari-536.28-branch/Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.h	2012-11-27 22:42:14 UTC (rev 135924)
@@ -50,6 +50,8 @@
     String pluginPath;
     bool supportsAsynchronousPluginInitialization;
 
+    double terminationTimeout;
+
 #if PLATFORM(MAC)
     String parentProcessName;
     CoreIPC::MachPort acceleratedCompositingPort;

Modified: branches/safari-536.28-branch/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp (135923 => 135924)


--- branches/safari-536.28-branch/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp	2012-11-27 22:34:45 UTC (rev 135923)
+++ branches/safari-536.28-branch/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp	2012-11-27 22:42:14 UTC (rev 135924)
@@ -47,6 +47,8 @@
 
 namespace WebKit {
 
+static const double shutdownTimeout = 5 * 60;
+
 PassRefPtr<PluginProcessProxy> PluginProcessProxy::create(PluginProcessManager* PluginProcessManager, const PluginModuleInfo& pluginInfo)
 {
     return adoptRef(new PluginProcessProxy(PluginProcessManager, pluginInfo));
@@ -202,6 +204,8 @@
 
     parameters.pluginPath = m_pluginInfo.path;
 
+    parameters.terminationTimeout = shutdownTimeout;
+
     platformInitializePluginProcess(parameters);
 
     // Initialize the plug-in host process.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to