2009-03-03 Anders Carlsson <andersca@apple.com>
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Mar 2009 19:29:58 +0000 (19:29 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Mar 2009 19:29:58 +0000 (19:29 +0000)
        Reviewed by Darin Adler.

        Fix <rdar://problem/6633834>.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::instantiatePlugin):
        Create a new plug-in instance if the plug-in host has crashed.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::invalidate):
        Add a null check for the plug-in host proxy.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@41400 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/mac/ChangeLog
WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm
WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm

index bb09fcd337f8fefd6b8348af67a407aa87cdbd93..016cfabdf1a6797ca1585595ee133547fb4d45e0 100644 (file)
@@ -1,3 +1,17 @@
+2009-03-03  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Darin Adler.
+
+        Fix <rdar://problem/6633834>.
+        
+        * Plugins/Hosted/NetscapePluginHostManager.mm:
+        (WebKit::NetscapePluginHostManager::instantiatePlugin):
+        Create a new plug-in instance if the plug-in host has crashed.
+        
+        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
+        (WebKit::NetscapePluginInstanceProxy::invalidate):
+        Add a null check for the plug-in host proxy.
+
 2009-03-02  Sam Weinig  <sam@webkit.org>
 
         Reviewed by Mark Rowe.
index 9bd08f479f1b7ee377e54fdbf6e090510105adf4..b7fcbfb5cf3272958e0b71fe5874fd4aac0a247f 100644 (file)
@@ -222,6 +222,8 @@ PassRefPtr<NetscapePluginInstanceProxy> NetscapePluginHostManager::instantiatePl
         // Try to spawn it again.
         hostProxy = hostForPackage(pluginPackage);
         
+        // Create a new instance.
+        instance = NetscapePluginInstanceProxy::create(hostProxy, pluginView);
         kr = _WKPHInstantiatePlugin(hostProxy->port(), (uint8_t*)[data bytes], [data length], instance->pluginID());
     }
 
index 6d54646c1dec8bbec3f44ea979937ec44541b457..531b42c70b19d696ad10f3a9e6071ab566a0fd3a 100644 (file)
@@ -152,6 +152,10 @@ void NetscapePluginInstanceProxy::cleanup()
 
 void NetscapePluginInstanceProxy::invalidate()
 {
+    // If the plug-in host has died, the proxy will be null.
+    if (!m_pluginHostProxy)
+        return;
+    
     m_pluginHostProxy->removePluginInstance(this);
     m_pluginHostProxy = 0;
 }