diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-30 12:48:17 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-30 12:48:17 +0200 |
commit | 881da28418d380042aa95a97f0cbd42560a64f7c (patch) | |
tree | a794dff3274695e99c651902dde93d934ea7a5af /Source/WebCore/html/HTMLPlugInImageElement.h | |
parent | 7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff) | |
parent | 0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff) | |
download | qtwebkit-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.h | 124 |
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 |