Index: Source/core/html/HTMLPlugInElement.h |
diff --git a/Source/core/html/HTMLPlugInElement.h b/Source/core/html/HTMLPlugInElement.h |
index 33a69a078fa92c898f1a093ff453d286bdd75b6e..5f9fc01297e91103559aed986580517a70908826 100644 |
--- a/Source/core/html/HTMLPlugInElement.h |
+++ b/Source/core/html/HTMLPlugInElement.h |
@@ -46,7 +46,6 @@ public: |
void resetInstance(); |
SharedPersistent<v8::Object>* pluginWrapper(); |
- Widget* pluginWidget() const; |
NPObject* getNPObject(); |
bool canProcessDrag() const; |
const String& url() const { return m_url; } |
@@ -56,6 +55,9 @@ public: |
void setNeedsWidgetUpdate(bool needsWidgetUpdate) { m_needsWidgetUpdate = needsWidgetUpdate; } |
void updateWidget(); |
+ void requestPluginCreationWithoutRendererIfPossible(); |
+ void createPluginWithoutRenderer(); |
+ |
protected: |
HTMLPlugInElement(const QualifiedName& tagName, Document&, bool createdByParser, PreferPlugInsForImagesOption); |
@@ -120,7 +122,7 @@ private: |
DisplayState displayState() const { return m_displayState; } |
void setDisplayState(DisplayState state) { m_displayState = state; } |
const String loadedMimeType() const; |
- bool loadPlugin(const KURL&, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback); |
+ bool loadPlugin(const KURL&, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback, bool requireRenderer); |
bool pluginIsLoadable(const KURL&, const String& mimeType); |
bool wouldLoadAsNetscapePlugin(const String& url, const String& serviceType); |
@@ -131,6 +133,13 @@ private: |
bool m_needsWidgetUpdate; |
bool m_shouldPreferPlugInsForImages; |
DisplayState m_displayState; |
+ |
+ // Normally the Widget is stored in HTMLFrameOwnerElement::m_widget. |
+ // However, plugins can persist even when not rendered. In order to |
+ // prevent confusing code which may assume that widget() != null |
+ // means the frame is active, we save off m_widget here while |
+ // the plugin is persisting but not being displayed. |
+ RefPtr<Widget> m_persistedPluginWidget; |
}; |
DEFINE_NODE_TYPE_CASTS(HTMLPlugInElement, isPluginElement()); |