summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/HTMLPlugInImageElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/html/HTMLPlugInImageElement.cpp')
-rw-r--r--Source/WebCore/html/HTMLPlugInImageElement.cpp21
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