diff options
Diffstat (limited to 'Source/WebCore/html/HTMLPlugInImageElement.cpp')
-rw-r--r-- | Source/WebCore/html/HTMLPlugInImageElement.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/Source/WebCore/html/HTMLPlugInImageElement.cpp b/Source/WebCore/html/HTMLPlugInImageElement.cpp index 4954e36d5..7e7c27513 100644 --- a/Source/WebCore/html/HTMLPlugInImageElement.cpp +++ b/Source/WebCore/html/HTMLPlugInImageElement.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2008, 2011, 2012 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 @@ -31,7 +31,9 @@ #include "Page.h" #include "RenderEmbeddedObject.h" #include "RenderImage.h" +#include "RenderSnapshottedPlugIn.h" #include "SecurityOrigin.h" +#include "Settings.h" #include "StyleResolver.h" namespace WebCore { @@ -47,6 +49,9 @@ HTMLPlugInImageElement::HTMLPlugInImageElement(const QualifiedName& tagName, Doc , m_needsDocumentActivationCallbacks(false) { setHasCustomCallbacks(); + + if (document->page() && document->page()->settings()->plugInSnapshottingEnabled()) + setDisplayState(WaitingForSnapshot); } HTMLPlugInImageElement::~HTMLPlugInImageElement() @@ -83,7 +88,7 @@ bool HTMLPlugInImageElement::allowedToLoadFrameURL(const String& url) { ASSERT(document()); ASSERT(document()->frame()); - if (document()->frame()->page()->frameCount() >= Page::maxNumberOfFrames) + if (document()->frame()->page()->subframeCount() >= Page::maxNumberOfFrames) return false; KURL completeURL = document()->completeURL(url); @@ -141,6 +146,9 @@ RenderObject* HTMLPlugInImageElement::createRenderer(RenderArena* arena, RenderS image->setImageResource(RenderImageResource::create()); return image; } + + if (document()->page() && document()->page()->settings()->plugInSnapshottingEnabled()) + return new (arena) RenderSnapshottedPlugIn(this); return new (arena) RenderEmbeddedObject(this); } @@ -253,4 +261,13 @@ void HTMLPlugInImageElement::updateWidgetCallback(Node* n, unsigned) static_cast<HTMLPlugInImageElement*>(n)->updateWidgetIfNecessary(); } +void HTMLPlugInImageElement::updateSnapshot(PassRefPtr<Image> image) +{ + if (displayState() > WaitingForSnapshot || !renderer()->isSnapshottedPlugIn()) + return; + + toRenderSnapshottedPlugIn(renderer())->updateSnapshot(image); + setDisplayState(DisplayingSnapshot); +} + } // namespace WebCore |