summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/HTMLPlugInImageElement.h
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
commit881da28418d380042aa95a97f0cbd42560a64f7c (patch)
treea794dff3274695e99c651902dde93d934ea7a5af /Source/WebCore/html/HTMLPlugInImageElement.h
parent7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff)
parent0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff)
downloadqtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
Diffstat (limited to 'Source/WebCore/html/HTMLPlugInImageElement.h')
-rw-r--r--Source/WebCore/html/HTMLPlugInImageElement.h124
1 files changed, 49 insertions, 75 deletions
diff --git a/Source/WebCore/html/HTMLPlugInImageElement.h b/Source/WebCore/html/HTMLPlugInImageElement.h
index d5e296639..0e74e5dc0 100644
--- a/Source/WebCore/html/HTMLPlugInImageElement.h
+++ b/Source/WebCore/html/HTMLPlugInImageElement.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009, 2011, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2008, 2009, 2011, 2012, 2014 Apple Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -23,15 +23,13 @@
#include "HTMLPlugInElement.h"
-#include "RenderStyle.h"
-#include <wtf/OwnPtr.h>
-
namespace WebCore {
class HTMLImageLoader;
class FrameLoader;
class Image;
class MouseEvent;
+class RenderStyle;
class Widget;
enum PluginCreationOption {
@@ -39,25 +37,21 @@ enum PluginCreationOption {
CreateOnlyNonNetscapePlugins,
};
-enum PreferPlugInsForImagesOption {
- ShouldPreferPlugInsForImages,
- ShouldNotPreferPlugInsForImages
-};
-
-// Base class for HTMLObjectElement and HTMLEmbedElement
+// Base class for HTMLAppletElement, HTMLEmbedElement, and HTMLObjectElement.
+// FIXME: Should HTMLAppletElement inherit from HTMLPlugInElement directly instead?
class HTMLPlugInImageElement : public HTMLPlugInElement {
public:
virtual ~HTMLPlugInImageElement();
RenderEmbeddedObject* renderEmbeddedObject() const;
- virtual void setDisplayState(DisplayState) OVERRIDE;
+ virtual void setDisplayState(DisplayState) override;
virtual void updateWidget(PluginCreationOption) = 0;
const String& serviceType() const { return m_serviceType; }
const String& url() const { return m_url; }
- const KURL& loadedUrl() const { return m_loadedUrl; }
+ const URL& loadedUrl() const { return m_loadedUrl; }
const String loadedMimeType() const
{
@@ -67,23 +61,21 @@ public:
return mimeType;
}
- bool shouldPreferPlugInsForImages() const { return m_shouldPreferPlugInsForImages; }
-
// Public for FrameView::addWidgetToUpdate()
bool needsWidgetUpdate() const { return m_needsWidgetUpdate; }
void setNeedsWidgetUpdate(bool needsWidgetUpdate) { m_needsWidgetUpdate = needsWidgetUpdate; }
-
+
void userDidClickSnapshot(PassRefPtr<MouseEvent>, bool forwardEvent);
void checkSnapshotStatus();
Image* snapshotImage() const { return m_snapshotImage.get(); }
- void restartSnapshottedPlugIn();
+ WEBCORE_EXPORT void restartSnapshottedPlugIn();
// Plug-in URL might not be the same as url() with overriding parameters.
- void subframeLoaderWillCreatePlugIn(const KURL& plugInURL);
- void subframeLoaderDidCreatePlugIn(const Widget*);
+ void subframeLoaderWillCreatePlugIn(const URL& plugInURL);
+ void subframeLoaderDidCreatePlugIn(const Widget&);
- void setIsPrimarySnapshottedPlugIn(bool);
- bool partOfSnapshotOverlay(Node*);
+ WEBCORE_EXPORT void setIsPrimarySnapshottedPlugIn(bool);
+ bool partOfSnapshotOverlay(const Node*) const;
bool needsCheckForSizeChange() const { return m_needsCheckForSizeChange; }
void setNeedsCheckForSizeChange() { m_needsCheckForSizeChange = true; }
@@ -99,63 +91,58 @@ public:
SnapshotDecision snapshotDecision() const { return m_snapshotDecision; }
protected:
- HTMLPlugInImageElement(const QualifiedName& tagName, Document*, bool createdByParser, PreferPlugInsForImagesOption);
+ HTMLPlugInImageElement(const QualifiedName& tagName, Document&, bool createdByParser);
- bool isImageType();
+ virtual void didMoveToNewDocument(Document* oldDocument) override;
+ virtual bool requestObject(const String& url, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues) override final;
- OwnPtr<HTMLImageLoader> m_imageLoader;
- String m_serviceType;
- String m_url;
- KURL m_loadedUrl;
-
- static void updateWidgetCallback(Node*, unsigned = 0);
- virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;
- virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;
+ bool isImageType();
+ HTMLImageLoader* imageLoader() { return m_imageLoader.get(); }
bool allowedToLoadFrameURL(const String& url);
bool wouldLoadAsNetscapePlugin(const String& url, const String& serviceType);
- virtual void didMoveToNewDocument(Document* oldDocument) OVERRIDE;
-
- virtual void documentWillSuspendForPageCache() OVERRIDE;
- virtual void documentDidResumeFromPageCache() OVERRIDE;
-
- virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
+ String m_serviceType;
+ String m_url;
- virtual bool isRestartedPlugin() const OVERRIDE { return m_isRestartedPlugin; }
+ std::unique_ptr<HTMLImageLoader> m_imageLoader;
private:
- virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) OVERRIDE;
- virtual bool willRecalcStyle(StyleChange) OVERRIDE;
+ virtual bool isPlugInImageElement() const override final { return true; }
+ virtual bool isRestartedPlugin() const override final { return m_isRestartedPlugin; }
- void didAddUserAgentShadowRoot(ShadowRoot*) OVERRIDE;
+ virtual void finishParsingChildren() override final;
+ virtual void didAddUserAgentShadowRoot(ShadowRoot*) override final;
- virtual void finishParsingChildren() OVERRIDE;
-
- void updateWidgetIfNecessary();
+ virtual RenderPtr<RenderElement> createElementRenderer(Ref<RenderStyle>&&, const RenderTreePosition&) override;
+ virtual bool childShouldCreateRenderer(const Node&) const override;
+ virtual bool willRecalcStyle(Style::Change) override final;
+ virtual void didAttachRenderers() override final;
+ virtual void willDetachRenderers() override final;
- virtual void updateSnapshot(PassRefPtr<Image>) OVERRIDE;
- virtual void dispatchPendingMouseClick() OVERRIDE;
- void simulatedMouseClickTimerFired(DeferrableOneShotTimer<HTMLPlugInImageElement>*);
+ virtual void prepareForDocumentSuspension() override final;
+ virtual void resumeFromDocumentSuspension() override final;
- void swapRendererTimerFired(Timer<HTMLPlugInImageElement>*);
+ virtual void defaultEventHandler(Event*) override final;
+ virtual void dispatchPendingMouseClick() override final;
- void restartSimilarPlugIns();
+ virtual void updateSnapshot(PassRefPtr<Image>) override final;
- virtual bool isPlugInImageElement() const OVERRIDE { return true; }
+ void startLoadingImage();
+ void updateWidgetIfNecessary();
- void removeSnapshotTimerFired(Timer<HTMLPlugInImageElement>*);
+ void simulatedMouseClickTimerFired();
- virtual void defaultEventHandler(Event*) OVERRIDE;
+ void restartSimilarPlugIns();
+ void removeSnapshotTimerFired();
+ bool isTopLevelFullPagePlugin(const RenderEmbeddedObject&) const;
+ URL m_loadedUrl;
bool m_needsWidgetUpdate;
- bool m_shouldPreferPlugInsForImages;
bool m_needsDocumentActivationCallbacks;
- RefPtr<RenderStyle> m_customStyleForPageCache;
RefPtr<MouseEvent> m_pendingClickEventFromSnapshot;
- DeferrableOneShotTimer<HTMLPlugInImageElement> m_simulatedMouseClickTimer;
- Timer<HTMLPlugInImageElement> m_swapRendererTimer;
- Timer<HTMLPlugInImageElement> m_removeSnapshotTimer;
+ DeferrableOneShotTimer m_simulatedMouseClickTimer;
+ Timer m_removeSnapshotTimer;
RefPtr<Image> m_snapshotImage;
bool m_createdDuringUserGesture;
bool m_isRestartedPlugin;
@@ -164,27 +151,14 @@ private:
bool m_deferredPromotionToPrimaryPlugIn;
IntSize m_sizeWhenSnapshotted;
SnapshotDecision m_snapshotDecision;
+ bool m_plugInDimensionsSpecified;
};
-inline HTMLPlugInImageElement* toHTMLPlugInImageElement(Node* node)
-{
- ASSERT_WITH_SECURITY_IMPLICATION(!node || node->isPluginElement());
- HTMLPlugInElement* plugInElement = static_cast<HTMLPlugInElement*>(node);
- ASSERT_WITH_SECURITY_IMPLICATION(plugInElement->isPlugInImageElement());
- return static_cast<HTMLPlugInImageElement*>(plugInElement);
-}
-
-inline const HTMLPlugInImageElement* toHTMLPlugInImageElement(const Node* node)
-{
- ASSERT_WITH_SECURITY_IMPLICATION(!node || node->isPluginElement());
- const HTMLPlugInElement* plugInElement = static_cast<const HTMLPlugInElement*>(node);
- ASSERT_WITH_SECURITY_IMPLICATION(plugInElement->isPlugInImageElement());
- return static_cast<const HTMLPlugInImageElement*>(plugInElement);
-}
-
-// This will catch anyone doing an unnecessary cast.
-void toHTMLPlugInImageElement(const HTMLPlugInImageElement*);
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::HTMLPlugInImageElement)
+ static bool isType(const WebCore::HTMLPlugInElement& element) { return element.isPlugInImageElement(); }
+ static bool isType(const WebCore::Node& node) { return is<WebCore::HTMLPlugInElement>(node) && isType(downcast<WebCore::HTMLPlugInElement>(node)); }
+SPECIALIZE_TYPE_TRAITS_END()
+
#endif // HTMLPlugInImageElement_h