Index: Source/core/rendering/RenderEmbeddedObject.cpp |
diff --git a/Source/core/rendering/RenderEmbeddedObject.cpp b/Source/core/rendering/RenderEmbeddedObject.cpp |
deleted file mode 100644 |
index f6c09a12b30ee220288f38f0773538bd8a1578f8..0000000000000000000000000000000000000000 |
--- a/Source/core/rendering/RenderEmbeddedObject.cpp |
+++ /dev/null |
@@ -1,223 +0,0 @@ |
-/* |
- * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
- * (C) 2000 Simon Hausmann <hausmann@kde.org> |
- * (C) 2000 Stefan Schimanski (1Stein@gmx.de) |
- * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 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 |
- * License as published by the Free Software Foundation; either |
- * version 2 of the License, or (at your option) any later version. |
- * |
- * This library is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
- * Library General Public License for more details. |
- * |
- * You should have received a copy of the GNU Library General Public License |
- * along with this library; see the file COPYING.LIB. If not, write to |
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
- * Boston, MA 02110-1301, USA. |
- * |
- */ |
- |
-#include "config.h" |
-#include "core/rendering/RenderEmbeddedObject.h" |
- |
-#include "core/CSSValueKeywords.h" |
-#include "core/HTMLNames.h" |
-#include "core/frame/LocalFrame.h" |
-#include "core/frame/Settings.h" |
-#include "core/html/HTMLIFrameElement.h" |
-#include "core/html/HTMLPlugInElement.h" |
-#include "core/layout/LayoutTheme.h" |
-#include "core/layout/PaintInfo.h" |
-#include "core/page/Page.h" |
-#include "core/plugins/PluginView.h" |
-#include "core/rendering/RenderView.h" |
-#include "platform/fonts/Font.h" |
-#include "platform/fonts/FontSelector.h" |
-#include "platform/graphics/GraphicsContextStateSaver.h" |
-#include "platform/graphics/Path.h" |
-#include "platform/text/PlatformLocale.h" |
-#include "platform/text/TextRun.h" |
- |
-namespace blink { |
- |
-using namespace HTMLNames; |
- |
-static const float replacementTextRoundedRectHeight = 18; |
-static const float replacementTextRoundedRectLeftRightTextMargin = 6; |
-static const float replacementTextRoundedRectOpacity = 0.20f; |
-static const float replacementTextRoundedRectRadius = 5; |
-static const float replacementTextTextOpacity = 0.55f; |
- |
-RenderEmbeddedObject::RenderEmbeddedObject(Element* element) |
- : LayoutPart(element) |
- , m_showsUnavailablePluginIndicator(false) |
-{ |
- view()->frameView()->setIsVisuallyNonEmpty(); |
-} |
- |
-RenderEmbeddedObject::~RenderEmbeddedObject() |
-{ |
-} |
- |
-LayerType RenderEmbeddedObject::layerTypeRequired() const |
-{ |
- // This can't just use LayoutPart::layerTypeRequired, because LayerCompositor |
- // doesn't loop through RenderEmbeddedObjects the way it does frames in order |
- // to update the self painting bit on their Layer. |
- // Also, unlike iframes, embeds don't used the usesCompositing bit on RenderView |
- // in requiresAcceleratedCompositing. |
- if (requiresAcceleratedCompositing()) |
- return NormalLayer; |
- return LayoutPart::layerTypeRequired(); |
-} |
- |
-static String unavailablePluginReplacementText(Node* node, RenderEmbeddedObject::PluginUnavailabilityReason pluginUnavailabilityReason) |
-{ |
- Locale& locale = node ? toElement(node)->locale() : Locale::defaultLocale(); |
- switch (pluginUnavailabilityReason) { |
- case RenderEmbeddedObject::PluginMissing: |
- return locale.queryString(WebLocalizedString::MissingPluginText); |
- case RenderEmbeddedObject::PluginBlockedByContentSecurityPolicy: |
- return locale.queryString(WebLocalizedString::BlockedPluginText); |
- } |
- |
- ASSERT_NOT_REACHED(); |
- return String(); |
-} |
- |
-void RenderEmbeddedObject::setPluginUnavailabilityReason(PluginUnavailabilityReason pluginUnavailabilityReason) |
-{ |
- ASSERT(!m_showsUnavailablePluginIndicator); |
- m_showsUnavailablePluginIndicator = true; |
- m_pluginUnavailabilityReason = pluginUnavailabilityReason; |
- |
- m_unavailablePluginReplacementText = unavailablePluginReplacementText(node(), pluginUnavailabilityReason); |
-} |
- |
-bool RenderEmbeddedObject::showsUnavailablePluginIndicator() const |
-{ |
- return m_showsUnavailablePluginIndicator; |
-} |
- |
-void RenderEmbeddedObject::paintContents(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
-{ |
- Element* element = toElement(node()); |
- if (!isHTMLPlugInElement(element)) |
- return; |
- |
- LayoutPart::paintContents(paintInfo, paintOffset); |
-} |
- |
-void RenderEmbeddedObject::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
-{ |
- if (showsUnavailablePluginIndicator()) { |
- LayoutReplaced::paint(paintInfo, paintOffset); |
- return; |
- } |
- |
- LayoutPart::paint(paintInfo, paintOffset); |
-} |
- |
-void RenderEmbeddedObject::paintReplaced(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
-{ |
- if (!showsUnavailablePluginIndicator()) |
- return; |
- |
- if (paintInfo.phase == PaintPhaseSelection) |
- return; |
- |
- FloatRect contentRect; |
- Path path; |
- FloatRect replacementTextRect; |
- Font font; |
- TextRun run(""); |
- float textWidth; |
- if (!getReplacementTextGeometry(paintOffset, contentRect, path, replacementTextRect, font, run, textWidth)) |
- return; |
- |
- GraphicsContext* context = paintInfo.context; |
- GraphicsContextStateSaver stateSaver(*context); |
- context->clip(contentRect); |
- context->setFillColor(scaleAlpha(Color::white, replacementTextRoundedRectOpacity)); |
- context->fillPath(path); |
- |
- const FontMetrics& fontMetrics = font.fontMetrics(); |
- float labelX = roundf(replacementTextRect.location().x() + (replacementTextRect.size().width() - textWidth) / 2); |
- float labelY = roundf(replacementTextRect.location().y() + (replacementTextRect.size().height() - fontMetrics.height()) / 2 + fontMetrics.ascent()); |
- TextRunPaintInfo runInfo(run); |
- runInfo.bounds = replacementTextRect; |
- context->setFillColor(scaleAlpha(Color::black, replacementTextTextOpacity)); |
- context->drawBidiText(font, runInfo, FloatPoint(labelX, labelY)); |
-} |
- |
-bool RenderEmbeddedObject::getReplacementTextGeometry(const LayoutPoint& accumulatedOffset, FloatRect& contentRect, Path& path, FloatRect& replacementTextRect, Font& font, TextRun& run, float& textWidth) const |
-{ |
- contentRect = contentBoxRect(); |
- contentRect.moveBy(roundedIntPoint(accumulatedOffset)); |
- |
- FontDescription fontDescription; |
- LayoutTheme::theme().systemFont(CSSValueWebkitSmallControl, fontDescription); |
- fontDescription.setWeight(FontWeightBold); |
- Settings* settings = document().settings(); |
- ASSERT(settings); |
- if (!settings) |
- return false; |
- fontDescription.setComputedSize(fontDescription.specifiedSize()); |
- font = Font(fontDescription); |
- font.update(nullptr); |
- |
- run = TextRun(m_unavailablePluginReplacementText); |
- textWidth = font.width(run); |
- |
- replacementTextRect.setSize(FloatSize(textWidth + replacementTextRoundedRectLeftRightTextMargin * 2, replacementTextRoundedRectHeight)); |
- float x = (contentRect.size().width() / 2 - replacementTextRect.size().width() / 2) + contentRect.location().x(); |
- float y = (contentRect.size().height() / 2 - replacementTextRect.size().height() / 2) + contentRect.location().y(); |
- replacementTextRect.setLocation(FloatPoint(x, y)); |
- |
- path.addRoundedRect(replacementTextRect, FloatSize(replacementTextRoundedRectRadius, replacementTextRoundedRectRadius)); |
- |
- return true; |
-} |
- |
-void RenderEmbeddedObject::layout() |
-{ |
- ASSERT(needsLayout()); |
- |
- updateLogicalWidth(); |
- updateLogicalHeight(); |
- |
- m_overflow.clear(); |
- addVisualEffectOverflow(); |
- |
- updateLayerTransformAfterLayout(); |
- |
- if (!widget() && frameView()) |
- frameView()->addPartToUpdate(*this); |
- |
- clearNeedsLayout(); |
-} |
- |
-bool RenderEmbeddedObject::scroll(ScrollDirection direction, ScrollGranularity granularity, float) |
-{ |
- return false; |
-} |
- |
-CompositingReasons RenderEmbeddedObject::additionalCompositingReasons() const |
-{ |
- if (requiresAcceleratedCompositing()) |
- return CompositingReasonPlugin; |
- return CompositingReasonNone; |
-} |
- |
-RenderBox* RenderEmbeddedObject::embeddedContentBox() const |
-{ |
- if (!node() || !widget() || !widget()->isFrameView()) |
- return 0; |
- return toFrameView(widget())->embeddedContentBox(); |
-} |
- |
-} // namespace blink |