Title: [117203] trunk/Source
Revision
117203
Author
fsam...@chromium.org
Date
2012-05-15 19:00:00 -0700 (Tue, 15 May 2012)

Log Message

[Chromium] Reset ScriptInstance in HTMLPlugInElement on WebPluginContainerImpl::setPlugin
https://bugs.webkit.org/show_bug.cgi?id=86535

Source/WebCore:

Reviewed by Darin Fisher.

When we swap out WebPluginImpls for the Browser Plugin, the HTMLPlugInElement continues
to use a now invalid ScriptInstance, so we reset the ScriptInstance on WebPluginContainerImpl::setPlugin

* html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::resetInstance):
(WebCore):
* html/HTMLPlugInElement.h:
(HTMLPlugInElement):

Source/WebKit/chromium:

Reviewed by Darin Fisher.

* src/WebPluginContainerImpl.cpp:
(WebKit::WebPluginContainerImpl::setPlugin):
(WebKit):
* src/WebPluginContainerImpl.h:
(WebPluginContainerImpl):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (117202 => 117203)


--- trunk/Source/WebCore/ChangeLog	2012-05-16 01:46:48 UTC (rev 117202)
+++ trunk/Source/WebCore/ChangeLog	2012-05-16 02:00:00 UTC (rev 117203)
@@ -1,3 +1,19 @@
+2012-05-15  Fady Samuel  <fsam...@chromium.org>
+
+        [Chromium] Reset ScriptInstance in HTMLPlugInElement on WebPluginContainerImpl::setPlugin
+        https://bugs.webkit.org/show_bug.cgi?id=86535
+
+        Reviewed by Darin Fisher.
+        
+        When we swap out WebPluginImpls for the Browser Plugin, the HTMLPlugInElement continues
+        to use a now invalid ScriptInstance, so we reset the ScriptInstance on WebPluginContainerImpl::setPlugin
+
+        * html/HTMLPlugInElement.cpp:
+        (WebCore::HTMLPlugInElement::resetInstance):
+        (WebCore):
+        * html/HTMLPlugInElement.h:
+        (HTMLPlugInElement):
+
 2012-05-15  Robert Hogan  <rob...@webkit.org>
 
         Heap-use-after-free in WebCore::RenderBlock::layoutRunsAndFloats

Modified: trunk/Source/WebCore/html/HTMLPlugInElement.cpp (117202 => 117203)


--- trunk/Source/WebCore/html/HTMLPlugInElement.cpp	2012-05-16 01:46:48 UTC (rev 117202)
+++ trunk/Source/WebCore/html/HTMLPlugInElement.cpp	2012-05-16 02:00:00 UTC (rev 117203)
@@ -88,6 +88,11 @@
     HTMLFrameOwnerElement::detach();
 }
 
+void HTMLPlugInElement::resetInstance()
+{
+    m_instance.clear();
+}
+
 PassScriptInstance HTMLPlugInElement::getInstance()
 {
     Frame* frame = document()->frame();

Modified: trunk/Source/WebCore/html/HTMLPlugInElement.h (117202 => 117203)


--- trunk/Source/WebCore/html/HTMLPlugInElement.h	2012-05-16 01:46:48 UTC (rev 117202)
+++ trunk/Source/WebCore/html/HTMLPlugInElement.h	2012-05-16 02:00:00 UTC (rev 117203)
@@ -40,6 +40,8 @@
 public:
     virtual ~HTMLPlugInElement();
 
+    void resetInstance();
+
     PassScriptInstance getInstance();
 
     Widget* pluginWidget();

Modified: trunk/Source/WebKit/chromium/ChangeLog (117202 => 117203)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-05-16 01:46:48 UTC (rev 117202)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-05-16 02:00:00 UTC (rev 117203)
@@ -1,3 +1,16 @@
+2012-05-15  Fady Samuel  <fsam...@chromium.org>
+
+        [Chromium] Reset ScriptInstance in HTMLPlugInElement on WebPluginContainerImpl::setPlugin
+        https://bugs.webkit.org/show_bug.cgi?id=86535
+
+        Reviewed by Darin Fisher.
+
+        * src/WebPluginContainerImpl.cpp:
+        (WebKit::WebPluginContainerImpl::setPlugin):
+        (WebKit):
+        * src/WebPluginContainerImpl.h:
+        (WebPluginContainerImpl):
+
 2012-05-15  Mark Pilgrim  <pilg...@chromium.org>
 
         [Chromium] Move blobRegistry to Platform.h

Modified: trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp (117202 => 117203)


--- trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp	2012-05-16 01:46:48 UTC (rev 117202)
+++ trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp	2012-05-16 02:00:00 UTC (rev 117203)
@@ -234,6 +234,14 @@
         reportGeometry();
 }
 
+void WebPluginContainerImpl::setPlugin(WebPlugin* plugin)
+{
+    if (plugin != m_webPlugin) {
+        m_element->resetInstance();
+        m_webPlugin = plugin;
+    }
+}
+
 bool WebPluginContainerImpl::supportsPaginatedPrint() const
 {
     return m_webPlugin->supportsPaginatedPrint();

Modified: trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h (117202 => 117203)


--- trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h	2012-05-16 01:46:48 UTC (rev 117202)
+++ trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h	2012-05-16 02:00:00 UTC (rev 117203)
@@ -112,7 +112,7 @@
 
     // This cannot be null.
     WebPlugin* plugin() { return m_webPlugin; }
-    void setPlugin(WebPlugin* plugin) { m_webPlugin = plugin; }
+    void setPlugin(WebPlugin*);
 
     // Printing interface. The plugin can support custom printing
     // (which means it controls the layout, number of pages etc).
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to