[SCM] WebKit Debian packaging branch, debian/experimental, updated. debian/1.3.8-1-1049-g2e11a8e
commit-queue at webkit.org
commit-queue at webkit.org
Fri Jan 21 15:06:11 UTC 2011
The following commit has been merged in the debian/experimental branch:
commit 32b882bc82adef4a5489faf9f0b22b1d4329bafb
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jan 7 01:58:47 2011 +0000
2011-01-06 Jenn Braithwaite <jennb at chromium.org>
Reviewed by Dmitry Titov.
When a live frame is moved between pages, some plug-in DOM methods cease to function
https://bugs.webkit.org/show_bug.cgi?id=45770
* fast/frames/iframe-reparenting-plugins-expected.txt: Added.
* fast/frames/iframe-reparenting-plugins.html: Added.
* fast/frames/resources/iframe-reparenting-plugins-iframe-content.html: Added.
* fast/frames/resources/iframe-reparenting-plugins-new-page.html: Added.
2011-01-06 Jenn Braithwaite <jennb at chromium.org>
Reviewed by Dmitry Titov.
When a live frame is moved between pages, some plug-in DOM methods cease to function
https://bugs.webkit.org/show_bug.cgi?id=45770
Test: fast/frames/iframe-reparenting-plugins.html
* page/Frame.cpp:
(WebCore::Frame::~Frame):
(WebCore::Frame::addObserver):
(WebCore::Frame::removeObserver):
* page/Frame.h:
(WebCore::FrameDestructionObserver::~FrameDestructionObserver):
Added observer to be notified when frame is destroyed.
* page/Page.cpp:
(WebCore::Page::~Page):
(WebCore::Page::refreshPlugins):
PluginData no longer stores page pointer.
* plugins/DOMMimeType.cpp:
(WebCore::DOMMimeType::DOMMimeType):
(WebCore::DOMMimeType::~DOMMimeType):
(WebCore::DOMMimeType::enabledPlugin):
* plugins/DOMMimeType.h:
(WebCore::DOMMimeType::create):
(WebCore::DOMMimeType::frameDestroyed):
Store frame instead of page pointer in DOMMimeType.
* plugins/DOMMimeTypeArray.cpp:
(WebCore::DOMMimeTypeArray::item):
(WebCore::DOMMimeTypeArray::namedItem):
Provide frame to create DOMMimeType.
* plugins/DOMPlugin.cpp:
(WebCore::DOMPlugin::DOMPlugin):
(WebCore::DOMPlugin::~DOMPlugin):
(WebCore::DOMPlugin::item):
(WebCore::DOMPlugin::namedItem):
* plugins/DOMPlugin.h:
(WebCore::DOMPlugin::create):
(WebCore::DOMPlugin::frameDestroyed):
Store frame instead of page pointer in DOMPlugin.
* plugins/DOMPluginArray.cpp:
(WebCore::DOMPluginArray::item):
(WebCore::DOMPluginArray::namedItem):
Provide frame to create DOMPlugin.
* plugins/PluginData.cpp:
(WebCore::PluginData::PluginData):
(WebCore::PluginData::initPlugins):
* plugins/PluginData.h:
No longer stores a pointer to the page.
Added page parameter to initPlugins.
* plugins/PluginDataNone.cpp:
(WebCore::PluginData::initPlugins):
* plugins/chromium/PluginDataChromium.cpp:
(WebCore::PluginData::initPlugins):
* plugins/gtk/PluginDataGtk.cpp:
(WebCore::PluginData::initPlugins):
* plugins/wx/PluginDataWx.cpp:
(WebCore::PluginData::initPlugins):
Updated platforms to add (unused) page parameter to initPlugins.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75217 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index f0cb3ef..a0b321c 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
+2011-01-06 Jenn Braithwaite <jennb at chromium.org>
+
+ Reviewed by Dmitry Titov.
+
+ When a live frame is moved between pages, some plug-in DOM methods cease to function
+ https://bugs.webkit.org/show_bug.cgi?id=45770
+
+ * fast/frames/iframe-reparenting-plugins-expected.txt: Added.
+ * fast/frames/iframe-reparenting-plugins.html: Added.
+ * fast/frames/resources/iframe-reparenting-plugins-iframe-content.html: Added.
+ * fast/frames/resources/iframe-reparenting-plugins-new-page.html: Added.
+
2011-01-06 Stephen White <senorblanco at chromium.org>
Unreviewed; test expectations update.
diff --git a/LayoutTests/fast/frames/iframe-reparenting-plugins-expected.txt b/LayoutTests/fast/frames/iframe-reparenting-plugins-expected.txt
new file mode 100644
index 0000000..956b659
--- /dev/null
+++ b/LayoutTests/fast/frames/iframe-reparenting-plugins-expected.txt
@@ -0,0 +1,12 @@
+This test verifies that plugin and mimetype in an iframe that is reparented to a different page continue to behave correctly.
+
+Loaded window 2.
+PASS: plugin OK.
+PASS: mimetype OK.
+
+Adopted iframe to first page.
+Window 2 unloaded.
+PASS: plugin OK.
+PASS: mimetype OK.
+
+
diff --git a/LayoutTests/fast/frames/iframe-reparenting-plugins.html b/LayoutTests/fast/frames/iframe-reparenting-plugins.html
new file mode 100644
index 0000000..cdba41b
--- /dev/null
+++ b/LayoutTests/fast/frames/iframe-reparenting-plugins.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<script>
+var window2, iframe;
+
+function log(message)
+{
+ document.getElementById("log").innerText += message + "\n";
+}
+
+function finish()
+{
+ var message = iframe.contentWindow.checkPlugins();
+ log(message);
+
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+}
+
+function window2Unloaded()
+{
+ log("Window 2 unloaded.");
+ setTimeout(finish, 0); // Let window close finish completely.
+}
+
+function window2Loaded()
+{
+ log("Loaded window 2.");
+ iframe = window2.document.getElementById("iframe");
+
+ var message = iframe.contentWindow.checkPlugins();
+ log(message);
+
+ window.document.adoptNode(iframe);
+ window.document.body.appendChild(iframe);
+ log("Adopted iframe to first page.");
+
+ window2.onunload = window2Unloaded;
+ window2.close();
+}
+
+function test()
+{
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ layoutTestController.setCanOpenWindows();
+ }
+
+ window2 = window.open("resources/iframe-reparenting-plugins-new-page.html");
+ window2.addEventListener("load", window2Loaded, false);
+}
+
+</script>
+<body onload="test()">
+<p>This test verifies that plugin and mimetype in an iframe that is
+reparented to a different page continue to behave correctly.
+<pre id=log></pre>
+</body>
+</html>
diff --git a/LayoutTests/fast/frames/resources/iframe-reparenting-plugins-iframe-content.html b/LayoutTests/fast/frames/resources/iframe-reparenting-plugins-iframe-content.html
new file mode 100644
index 0000000..3247e7b
--- /dev/null
+++ b/LayoutTests/fast/frames/resources/iframe-reparenting-plugins-iframe-content.html
@@ -0,0 +1,27 @@
+<script>
+// We can only guarantee that the Test PlugIn is installed.
+var plugin = navigator.plugins.namedItem("WebKit Test PlugIn");
+var mimetype = navigator.mimeTypes[0];
+
+// Called by test page after adopting this iframe and closing the
+// page that originally held this iframe.
+checkPlugins = function()
+{
+ if (!plugin) {
+ return "FAIL: Failed to find test plugin\n";
+ }
+
+ var message = "";
+ if (plugin.item(0).enabledPlugin)
+ message += "PASS: plugin OK.\n";
+ else
+ message += "FAIL: plugin references PluginData with no page.\n";
+
+ if (mimetype.enabledPlugin)
+ message += "PASS: mimetype OK.\n";
+ else
+ message += "FAIL: mimetype references PluginData with no page.\n";
+
+ return message;
+}
+</script>
diff --git a/LayoutTests/fast/frames/resources/iframe-reparenting-plugins-new-page.html b/LayoutTests/fast/frames/resources/iframe-reparenting-plugins-new-page.html
new file mode 100644
index 0000000..55a3090
--- /dev/null
+++ b/LayoutTests/fast/frames/resources/iframe-reparenting-plugins-new-page.html
@@ -0,0 +1,6 @@
+<html>
+<body>
+A New Page<br>
+<iframe id="iframe" src="iframe-reparenting-plugins-iframe-content.html"</iframe>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 74c2491..d6dd6eb 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,64 @@
+2011-01-06 Jenn Braithwaite <jennb at chromium.org>
+
+ Reviewed by Dmitry Titov.
+
+ When a live frame is moved between pages, some plug-in DOM methods cease to function
+ https://bugs.webkit.org/show_bug.cgi?id=45770
+
+ Test: fast/frames/iframe-reparenting-plugins.html
+
+ * page/Frame.cpp:
+ (WebCore::Frame::~Frame):
+ (WebCore::Frame::addObserver):
+ (WebCore::Frame::removeObserver):
+ * page/Frame.h:
+ (WebCore::FrameDestructionObserver::~FrameDestructionObserver):
+ Added observer to be notified when frame is destroyed.
+ * page/Page.cpp:
+ (WebCore::Page::~Page):
+ (WebCore::Page::refreshPlugins):
+ PluginData no longer stores page pointer.
+ * plugins/DOMMimeType.cpp:
+ (WebCore::DOMMimeType::DOMMimeType):
+ (WebCore::DOMMimeType::~DOMMimeType):
+ (WebCore::DOMMimeType::enabledPlugin):
+ * plugins/DOMMimeType.h:
+ (WebCore::DOMMimeType::create):
+ (WebCore::DOMMimeType::frameDestroyed):
+ Store frame instead of page pointer in DOMMimeType.
+ * plugins/DOMMimeTypeArray.cpp:
+ (WebCore::DOMMimeTypeArray::item):
+ (WebCore::DOMMimeTypeArray::namedItem):
+ Provide frame to create DOMMimeType.
+ * plugins/DOMPlugin.cpp:
+ (WebCore::DOMPlugin::DOMPlugin):
+ (WebCore::DOMPlugin::~DOMPlugin):
+ (WebCore::DOMPlugin::item):
+ (WebCore::DOMPlugin::namedItem):
+ * plugins/DOMPlugin.h:
+ (WebCore::DOMPlugin::create):
+ (WebCore::DOMPlugin::frameDestroyed):
+ Store frame instead of page pointer in DOMPlugin.
+ * plugins/DOMPluginArray.cpp:
+ (WebCore::DOMPluginArray::item):
+ (WebCore::DOMPluginArray::namedItem):
+ Provide frame to create DOMPlugin.
+ * plugins/PluginData.cpp:
+ (WebCore::PluginData::PluginData):
+ (WebCore::PluginData::initPlugins):
+ * plugins/PluginData.h:
+ No longer stores a pointer to the page.
+ Added page parameter to initPlugins.
+ * plugins/PluginDataNone.cpp:
+ (WebCore::PluginData::initPlugins):
+ * plugins/chromium/PluginDataChromium.cpp:
+ (WebCore::PluginData::initPlugins):
+ * plugins/gtk/PluginDataGtk.cpp:
+ (WebCore::PluginData::initPlugins):
+ * plugins/wx/PluginDataWx.cpp:
+ (WebCore::PluginData::initPlugins):
+ Updated platforms to add (unused) page parameter to initPlugins.
+
2011-01-05 Zhenyao Mo <zmo at google.com>
Reviewed by Kenneth Russell.
diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
index 5c5ad37..3997331 100644
--- a/WebCore/page/Frame.cpp
+++ b/WebCore/page/Frame.cpp
@@ -234,6 +234,10 @@ Frame::~Frame()
for (HashSet<DOMWindow*>::iterator it = m_liveFormerWindows.begin(); it != end; ++it)
(*it)->disconnectFrame();
+ HashSet<FrameDestructionObserver*>::iterator stop = m_destructionObservers.end();
+ for (HashSet<FrameDestructionObserver*>::iterator it = m_destructionObservers.begin(); it != stop; ++it)
+ (*it)->frameDestroyed();
+
if (m_view) {
m_view->hide();
m_view->clearFrame();
@@ -242,6 +246,16 @@ Frame::~Frame()
ASSERT(!m_lifeSupportTimer.isActive());
}
+void Frame::addDestructionObserver(FrameDestructionObserver* observer)
+{
+ m_destructionObservers.add(observer);
+}
+
+void Frame::removeDestructionObserver(FrameDestructionObserver* observer)
+{
+ m_destructionObservers.remove(observer);
+}
+
void Frame::setView(PassRefPtr<FrameView> view)
{
// We the custom scroll bars as early as possible to prevent m_doc->detach()
diff --git a/WebCore/page/Frame.h b/WebCore/page/Frame.h
index 892a5ea..da77966 100644
--- a/WebCore/page/Frame.h
+++ b/WebCore/page/Frame.h
@@ -71,6 +71,13 @@ namespace WebCore {
class TiledBackingStoreClient { };
#endif
+ class FrameDestructionObserver {
+ public:
+ virtual ~FrameDestructionObserver() { }
+
+ virtual void frameDestroyed() = 0;
+ };
+
class Frame : public RefCounted<Frame>, public TiledBackingStoreClient {
public:
static PassRefPtr<Frame> create(Page*, HTMLFrameOwnerElement*, FrameLoaderClient*);
@@ -83,6 +90,9 @@ namespace WebCore {
~Frame();
+ void addDestructionObserver(FrameDestructionObserver*);
+ void removeDestructionObserver(FrameDestructionObserver*);
+
void detachFromPage();
void pageDestroyed();
void disconnectOwnerElement();
@@ -199,6 +209,8 @@ namespace WebCore {
void injectUserScriptsForWorld(DOMWrapperWorld*, const UserScriptVector&, UserScriptInjectionTime);
void lifeSupportTimerFired(Timer<Frame>*);
+ HashSet<FrameDestructionObserver*> m_destructionObservers;
+
Page* m_page;
mutable FrameTree m_treeNode;
mutable FrameLoader m_loader;
diff --git a/WebCore/page/Page.cpp b/WebCore/page/Page.cpp
index b2c0241..808c561 100644
--- a/WebCore/page/Page.cpp
+++ b/WebCore/page/Page.cpp
@@ -211,8 +211,6 @@ Page::~Page()
frame->pageDestroyed();
m_editorClient->pageDestroyed();
- if (m_pluginData)
- m_pluginData->disconnectPage();
#if ENABLE(INSPECTOR)
m_inspectorController->inspectedPageDestroyed();
@@ -450,10 +448,8 @@ void Page::refreshPlugins(bool reload)
Page* page = *it;
// Clear out the page's plug-in data.
- if (page->m_pluginData) {
- page->m_pluginData->disconnectPage();
+ if (page->m_pluginData)
page->m_pluginData = 0;
- }
if (!reload)
continue;
diff --git a/WebCore/plugins/DOMMimeType.cpp b/WebCore/plugins/DOMMimeType.cpp
index e799314..114d218 100644
--- a/WebCore/plugins/DOMMimeType.cpp
+++ b/WebCore/plugins/DOMMimeType.cpp
@@ -29,14 +29,19 @@
namespace WebCore {
-DOMMimeType::DOMMimeType(PassRefPtr<PluginData> pluginData, unsigned index)
+DOMMimeType::DOMMimeType(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index)
: m_pluginData(pluginData)
+ , m_frame(frame)
, m_index(index)
{
+ if (m_frame)
+ m_frame->addDestructionObserver(this);
}
DOMMimeType::~DOMMimeType()
{
+ if (m_frame)
+ m_frame->removeDestructionObserver(this);
}
const String &DOMMimeType::type() const
@@ -64,11 +69,10 @@ const String &DOMMimeType::description() const
PassRefPtr<DOMPlugin> DOMMimeType::enabledPlugin() const
{
- const Page* p = m_pluginData->page();
- if (!p || !p->mainFrame()->loader()->subframeLoader()->allowPlugins(NotAboutToInstantiatePlugin))
+ if (!m_frame || !m_frame->page() || !m_frame->page()->mainFrame()->loader()->subframeLoader()->allowPlugins(NotAboutToInstantiatePlugin))
return 0;
- return DOMPlugin::create(m_pluginData.get(), m_pluginData->mimePluginIndices()[m_index]);
+ return DOMPlugin::create(m_pluginData.get(), m_frame, m_pluginData->mimePluginIndices()[m_index]);
}
} // namespace WebCore
diff --git a/WebCore/plugins/DOMMimeType.h b/WebCore/plugins/DOMMimeType.h
index cefdb48..74c62d0 100644
--- a/WebCore/plugins/DOMMimeType.h
+++ b/WebCore/plugins/DOMMimeType.h
@@ -20,20 +20,21 @@
#ifndef DOMMimeType_h
#define DOMMimeType_h
+#include "Frame.h"
+#include "PluginData.h"
+
#include <wtf/Forward.h>
#include <wtf/PassRefPtr.h>
-#include <wtf/RefPtr.h>
#include <wtf/RefCounted.h>
-
-#include "PluginData.h"
+#include <wtf/RefPtr.h>
namespace WebCore {
class DOMPlugin;
-class DOMMimeType : public RefCounted<DOMMimeType> {
+class DOMMimeType : public RefCounted<DOMMimeType>, private FrameDestructionObserver {
public:
- static PassRefPtr<DOMMimeType> create(PassRefPtr<PluginData> pluginData, unsigned index) { return adoptRef(new DOMMimeType(pluginData, index)); }
+ static PassRefPtr<DOMMimeType> create(PassRefPtr<PluginData> pluginData, Frame* frame, unsigned index) { return adoptRef(new DOMMimeType(pluginData, frame, index)); }
~DOMMimeType();
const String &type() const;
@@ -41,11 +42,15 @@ public:
const String &description() const;
PassRefPtr<DOMPlugin> enabledPlugin() const;
+ // FrameDestructionObserver
+ virtual void frameDestroyed() { m_frame = 0; }
+
private:
const MimeClassInfo& mimeClassInfo() const { return m_pluginData->mimes()[m_index]; }
- DOMMimeType(PassRefPtr<PluginData>, unsigned index);
+ DOMMimeType(PassRefPtr<PluginData>, Frame*, unsigned index);
RefPtr<PluginData> m_pluginData;
+ Frame* m_frame;
unsigned m_index;
};
diff --git a/WebCore/plugins/DOMMimeTypeArray.cpp b/WebCore/plugins/DOMMimeTypeArray.cpp
index 8c81bb7..82d4006 100644
--- a/WebCore/plugins/DOMMimeTypeArray.cpp
+++ b/WebCore/plugins/DOMMimeTypeArray.cpp
@@ -53,7 +53,7 @@ PassRefPtr<DOMMimeType> DOMMimeTypeArray::item(unsigned index)
const Vector<MimeClassInfo>& mimes = data->mimes();
if (index >= mimes.size())
return 0;
- return DOMMimeType::create(data, index).get();
+ return DOMMimeType::create(data, m_frame, index).get();
}
bool DOMMimeTypeArray::canGetItemsForName(const AtomicString& propertyName)
@@ -77,7 +77,7 @@ PassRefPtr<DOMMimeType> DOMMimeTypeArray::namedItem(const AtomicString& property
const Vector<MimeClassInfo>& mimes = data->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
if (mimes[i].type == propertyName)
- return DOMMimeType::create(data, i).get();
+ return DOMMimeType::create(data, m_frame, i).get();
}
return 0;
}
diff --git a/WebCore/plugins/DOMPlugin.cpp b/WebCore/plugins/DOMPlugin.cpp
index ac4fd03..8ddb507 100644
--- a/WebCore/plugins/DOMPlugin.cpp
+++ b/WebCore/plugins/DOMPlugin.cpp
@@ -25,14 +25,19 @@
namespace WebCore {
-DOMPlugin::DOMPlugin(PluginData* pluginData, unsigned index)
+DOMPlugin::DOMPlugin(PluginData* pluginData, Frame* frame, unsigned index)
: m_pluginData(pluginData)
+ , m_frame(frame)
, m_index(index)
{
+ if (m_frame)
+ m_frame->addDestructionObserver(this);
}
DOMPlugin::~DOMPlugin()
{
+ if (m_frame)
+ m_frame->removeDestructionObserver(this);
}
String DOMPlugin::name() const
@@ -65,7 +70,7 @@ PassRefPtr<DOMMimeType> DOMPlugin::item(unsigned index)
const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i) {
if (mimes[i] == mime && m_pluginData->mimePluginIndices()[i] == m_index)
- return DOMMimeType::create(m_pluginData.get(), i).get();
+ return DOMMimeType::create(m_pluginData.get(), m_frame, i).get();
}
return 0;
}
@@ -84,7 +89,7 @@ PassRefPtr<DOMMimeType> DOMPlugin::namedItem(const AtomicString& propertyName)
const Vector<MimeClassInfo>& mimes = m_pluginData->mimes();
for (unsigned i = 0; i < mimes.size(); ++i)
if (mimes[i].type == propertyName)
- return DOMMimeType::create(m_pluginData.get(), i).get();
+ return DOMMimeType::create(m_pluginData.get(), m_frame, i).get();
return 0;
}
diff --git a/WebCore/plugins/DOMPlugin.h b/WebCore/plugins/DOMPlugin.h
index 9700ab5..f305ec2 100644
--- a/WebCore/plugins/DOMPlugin.h
+++ b/WebCore/plugins/DOMPlugin.h
@@ -30,9 +30,9 @@ namespace WebCore {
class Plugin;
class PluginData;
-class DOMPlugin : public RefCounted<DOMPlugin> {
+class DOMPlugin : public RefCounted<DOMPlugin>, private FrameDestructionObserver {
public:
- static PassRefPtr<DOMPlugin> create(PluginData* pluginData, unsigned index) { return adoptRef(new DOMPlugin(pluginData, index)); }
+ static PassRefPtr<DOMPlugin> create(PluginData* pluginData, Frame* frame, unsigned index) { return adoptRef(new DOMPlugin(pluginData, frame, index)); }
~DOMPlugin();
String name() const;
@@ -45,11 +45,15 @@ public:
bool canGetItemsForName(const AtomicString& propertyName);
PassRefPtr<DOMMimeType> namedItem(const AtomicString& propertyName);
+ // FrameDestructionObserver
+ virtual void frameDestroyed() { m_frame = 0; }
+
private:
const PluginInfo& pluginInfo() const { return m_pluginData->plugins()[m_index]; }
- DOMPlugin(PluginData*, unsigned index);
+ DOMPlugin(PluginData*, Frame*, unsigned index);
RefPtr<PluginData> m_pluginData;
+ Frame* m_frame;
unsigned m_index;
};
diff --git a/WebCore/plugins/DOMPluginArray.cpp b/WebCore/plugins/DOMPluginArray.cpp
index 3717f32..766c3eb 100644
--- a/WebCore/plugins/DOMPluginArray.cpp
+++ b/WebCore/plugins/DOMPluginArray.cpp
@@ -53,7 +53,7 @@ PassRefPtr<DOMPlugin> DOMPluginArray::item(unsigned index)
const Vector<PluginInfo>& plugins = data->plugins();
if (index >= plugins.size())
return 0;
- return DOMPlugin::create(data, index).get();
+ return DOMPlugin::create(data, m_frame, index).get();
}
bool DOMPluginArray::canGetItemsForName(const AtomicString& propertyName)
@@ -77,7 +77,7 @@ PassRefPtr<DOMPlugin> DOMPluginArray::namedItem(const AtomicString& propertyName
const Vector<PluginInfo>& plugins = data->plugins();
for (unsigned i = 0; i < plugins.size(); ++i) {
if (plugins[i].name == propertyName)
- return DOMPlugin::create(data, i).get();
+ return DOMPlugin::create(data, m_frame, i).get();
}
return 0;
}
diff --git a/WebCore/plugins/PluginData.cpp b/WebCore/plugins/PluginData.cpp
index d24d234..b8e751d 100644
--- a/WebCore/plugins/PluginData.cpp
+++ b/WebCore/plugins/PluginData.cpp
@@ -32,9 +32,8 @@
namespace WebCore {
PluginData::PluginData(const Page* page)
- : m_page(page)
{
- initPlugins();
+ initPlugins(page);
for (unsigned i = 0; i < m_plugins.size(); ++i) {
const PluginInfo& plugin = m_plugins[i];
@@ -71,11 +70,11 @@ void PluginData::refresh()
platformStrategies()->pluginStrategy()->refreshPlugins();
}
-void PluginData::initPlugins()
+void PluginData::initPlugins(const Page* page)
{
ASSERT(m_plugins.isEmpty());
- platformStrategies()->pluginStrategy()->getPluginInfo(m_page, m_plugins);
+ platformStrategies()->pluginStrategy()->getPluginInfo(page, m_plugins);
}
#endif
diff --git a/WebCore/plugins/PluginData.h b/WebCore/plugins/PluginData.h
index f4cc62f..c6cde81 100644
--- a/WebCore/plugins/PluginData.h
+++ b/WebCore/plugins/PluginData.h
@@ -51,9 +51,6 @@ struct PluginInfo {
class PluginData : public RefCounted<PluginData> {
public:
static PassRefPtr<PluginData> create(const Page* page) { return adoptRef(new PluginData(page)); }
-
- void disconnectPage() { m_page = 0; }
- const Page* page() const { return m_page; }
const Vector<PluginInfo>& plugins() const { return m_plugins; }
const Vector<MimeClassInfo>& mimes() const { return m_mimes; }
@@ -66,13 +63,11 @@ public:
private:
PluginData(const Page*);
- void initPlugins();
+ void initPlugins(const Page*);
Vector<PluginInfo> m_plugins;
Vector<MimeClassInfo> m_mimes;
Vector<size_t> m_mimePluginIndices;
-
- const Page* m_page;
};
}
diff --git a/WebCore/plugins/PluginDataNone.cpp b/WebCore/plugins/PluginDataNone.cpp
index 3b98383..edfee5b 100644
--- a/WebCore/plugins/PluginDataNone.cpp
+++ b/WebCore/plugins/PluginDataNone.cpp
@@ -29,7 +29,7 @@
namespace WebCore {
-void PluginData::initPlugins()
+void PluginData::initPlugins(const Page*)
{
}
diff --git a/WebCore/plugins/chromium/PluginDataChromium.cpp b/WebCore/plugins/chromium/PluginDataChromium.cpp
index 378fccb..c924063 100644
--- a/WebCore/plugins/chromium/PluginDataChromium.cpp
+++ b/WebCore/plugins/chromium/PluginDataChromium.cpp
@@ -65,7 +65,7 @@ private:
static PluginCache pluginCache;
-void PluginData::initPlugins()
+void PluginData::initPlugins(const Page*)
{
const Vector<PluginInfo>& plugins = pluginCache.plugins();
for (size_t i = 0; i < plugins.size(); ++i)
diff --git a/WebCore/plugins/gtk/PluginDataGtk.cpp b/WebCore/plugins/gtk/PluginDataGtk.cpp
index ae4d98b..705bf9a 100644
--- a/WebCore/plugins/gtk/PluginDataGtk.cpp
+++ b/WebCore/plugins/gtk/PluginDataGtk.cpp
@@ -27,7 +27,7 @@
#include <stdio.h>
namespace WebCore {
-void PluginData::initPlugins()
+void PluginData::initPlugins(const Page*)
{
PluginDatabase *db = PluginDatabase::installedPlugins();
const Vector<PluginPackage*> &plugins = db->plugins();
diff --git a/WebCore/plugins/wx/PluginDataWx.cpp b/WebCore/plugins/wx/PluginDataWx.cpp
index a595c82..0eb890f 100644
--- a/WebCore/plugins/wx/PluginDataWx.cpp
+++ b/WebCore/plugins/wx/PluginDataWx.cpp
@@ -33,7 +33,7 @@
namespace WebCore {
-void PluginData::initPlugins()
+void PluginData::initPlugins(const Page*)
{
PluginDatabase* db = PluginDatabase::installedPlugins();
const Vector<PluginPackage*> &plugins = db->plugins();
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list