Title: [116794] trunk/Source/WebCore
Revision
116794
Author
[email protected]
Date
2012-05-11 12:40:30 -0700 (Fri, 11 May 2012)

Log Message

REGRESSION(r116687): [Chromium] plugins/embed-attributes-style.html shows a garbled string
https://bugs.webkit.org/show_bug.cgi?id=86170

Reviewed by Andreas Kling.

The string we are passing to the TextRun constructor needs to stay alive for longer so revert back to the old
behavior where we store it as a member variable.

* rendering/RenderEmbeddedObject.cpp:
(WebCore::unavailablePluginReplacementText):
(WebCore):
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
* rendering/RenderEmbeddedObject.h:
(RenderEmbeddedObject):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (116793 => 116794)


--- trunk/Source/WebCore/ChangeLog	2012-05-11 19:21:53 UTC (rev 116793)
+++ trunk/Source/WebCore/ChangeLog	2012-05-11 19:40:30 UTC (rev 116794)
@@ -1,3 +1,21 @@
+2012-05-11  Anders Carlsson  <[email protected]>
+
+        REGRESSION(r116687): [Chromium] plugins/embed-attributes-style.html shows a garbled string
+        https://bugs.webkit.org/show_bug.cgi?id=86170
+
+        Reviewed by Andreas Kling.
+
+        The string we are passing to the TextRun constructor needs to stay alive for longer so revert back to the old
+        behavior where we store it as a member variable.
+
+        * rendering/RenderEmbeddedObject.cpp:
+        (WebCore::unavailablePluginReplacementText):
+        (WebCore):
+        (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
+        (WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
+        * rendering/RenderEmbeddedObject.h:
+        (RenderEmbeddedObject):
+
 2012-05-11  Simon Fraser  <[email protected]>
 
         CVDisplayLink keeps running after a single requestAnimationFrame

Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp (116793 => 116794)


--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp	2012-05-11 19:21:53 UTC (rev 116793)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp	2012-05-11 19:40:30 UTC (rev 116794)
@@ -102,11 +102,28 @@
 }
 #endif
 
+static String unavailablePluginReplacementText(RenderEmbeddedObject::PluginUnavailabilityReason pluginUnavailabilityReason)
+{
+    switch (pluginUnavailabilityReason) {
+    case RenderEmbeddedObject::PluginMissing:
+        return missingPluginText();
+    case RenderEmbeddedObject::PluginCrashed:
+        return crashedPluginText();
+    case RenderEmbeddedObject::InsecurePluginVersion:
+        return insecurePluginVersionText();
+    }
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
 void RenderEmbeddedObject::setPluginUnavailabilityReason(PluginUnavailabilityReason pluginUnavailabilityReason)
 {
     ASSERT(!m_showsUnavailablePluginIndicator);
     m_showsUnavailablePluginIndicator = true;
     m_pluginUnavailabilityReason = pluginUnavailabilityReason;
+
+    m_unavailablePluginReplacementText = unavailablePluginReplacementText(pluginUnavailabilityReason);
 }
 
 bool RenderEmbeddedObject::showsUnavailablePluginIndicator() const
@@ -193,8 +210,8 @@
     fontDescription.setComputedSize(fontDescription.specifiedSize());
     font = Font(fontDescription, 0, 0);
     font.update(0);
-    
-    run = TextRun(unavailablePluginReplacementText());
+
+    run = TextRun(m_unavailablePluginReplacementText);
     textWidth = font.width(run);
     
     replacementTextRect.setSize(FloatSize(textWidth + replacementTextRoundedRectLeftRightTextMargin * 2, replacementTextRoundedRectHeight));
@@ -207,21 +224,6 @@
     return true;
 }
 
-String RenderEmbeddedObject::unavailablePluginReplacementText() const
-{
-    switch (m_pluginUnavailabilityReason) {
-    case PluginMissing:
-        return missingPluginText();
-    case PluginCrashed:
-        return crashedPluginText();
-    case InsecurePluginVersion:
-        return insecurePluginVersionText();
-    }
-
-    ASSERT_NOT_REACHED();
-    return String();
-}
-
 void RenderEmbeddedObject::layout()
 {
     ASSERT(needsLayout());

Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.h (116793 => 116794)


--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.h	2012-05-11 19:21:53 UTC (rev 116793)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.h	2012-05-11 19:40:30 UTC (rev 116794)
@@ -78,12 +78,12 @@
     bool isInUnavailablePluginIndicator(MouseEvent*) const;
     bool isInUnavailablePluginIndicator(const LayoutPoint&) const;
     bool getReplacementTextGeometry(const LayoutPoint& accumulatedOffset, FloatRect& contentRect, Path&, FloatRect& replacementTextRect, Font&, TextRun&, float& textWidth) const;
-    String unavailablePluginReplacementText() const;
 
     bool m_hasFallbackContent; // FIXME: This belongs on HTMLObjectElement.
 
     bool m_showsUnavailablePluginIndicator;
     PluginUnavailabilityReason m_pluginUnavailabilityReason;
+    String m_unavailablePluginReplacementText;
     bool m_unavailablePluginIndicatorIsPressed;
     bool m_mouseDownWasInUnavailablePluginIndicator;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to