Title: [99262] trunk/Source/WebCore
- Revision
- 99262
- Author
- [email protected]
- Date
- 2011-11-03 21:52:03 -0700 (Thu, 03 Nov 2011)
Log Message
REGRESSION (r99076): Pasting into password fields is broken
https://bugs.webkit.org/show_bug.cgi?id=71483
Reviewed by Darin Adler.
The bug was caused by plainText serializing secured (instead of original) text.
Fixed the bug by adding new TextIterator behavior that serializes the original text
and using it in ReplacementFragment::ReplacementFragment.
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplacementFragment::ReplacementFragment):
* editing/TextIterator.cpp:
(WebCore::TextIterator::TextIterator):
(WebCore::TextIterator::emitText):
* editing/TextIterator.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (99261 => 99262)
--- trunk/Source/WebCore/ChangeLog 2011-11-04 04:18:05 UTC (rev 99261)
+++ trunk/Source/WebCore/ChangeLog 2011-11-04 04:52:03 UTC (rev 99262)
@@ -1,3 +1,21 @@
+2011-11-03 Ryosuke Niwa <[email protected]>
+
+ REGRESSION (r99076): Pasting into password fields is broken
+ https://bugs.webkit.org/show_bug.cgi?id=71483
+
+ Reviewed by Darin Adler.
+
+ The bug was caused by plainText serializing secured (instead of original) text.
+ Fixed the bug by adding new TextIterator behavior that serializes the original text
+ and using it in ReplacementFragment::ReplacementFragment.
+
+ * editing/ReplaceSelectionCommand.cpp:
+ (WebCore::ReplacementFragment::ReplacementFragment):
+ * editing/TextIterator.cpp:
+ (WebCore::TextIterator::TextIterator):
+ (WebCore::TextIterator::emitText):
+ * editing/TextIterator.h:
+
2011-11-03 Eric Carlson <[email protected]>
Add TrackEvent
Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (99261 => 99262)
--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp 2011-11-04 04:18:05 UTC (rev 99261)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp 2011-11-04 04:52:03 UTC (rev 99262)
@@ -163,7 +163,7 @@
}
RefPtr<Range> range = VisibleSelection::selectionFromContentsOfNode(holder.get()).toNormalizedRange();
- String text = plainText(range.get());
+ String text = plainText(range.get(), TextIteratorEmitsOriginalText);
removeInterchangeNodes(holder.get());
removeUnrenderedNodes(holder.get());
Modified: trunk/Source/WebCore/editing/TextIterator.cpp (99261 => 99262)
--- trunk/Source/WebCore/editing/TextIterator.cpp 2011-11-04 04:18:05 UTC (rev 99261)
+++ trunk/Source/WebCore/editing/TextIterator.cpp 2011-11-04 04:52:03 UTC (rev 99262)
@@ -257,6 +257,7 @@
, m_emitsCharactersBetweenAllVisiblePositions(false)
, m_entersTextControls(false)
, m_emitsTextWithoutTranscoding(false)
+ , m_emitsOriginalText(false)
, m_handledFirstLetter(false)
, m_ignoresStyleVisibility(false)
, m_emitsObjectReplacementCharacters(false)
@@ -277,6 +278,7 @@
, m_emitsCharactersBetweenAllVisiblePositions(behavior & TextIteratorEmitsCharactersBetweenAllVisiblePositions)
, m_entersTextControls(behavior & TextIteratorEntersTextControls)
, m_emitsTextWithoutTranscoding(behavior & TextIteratorEmitsTextsWithoutTranscoding)
+ , m_emitsOriginalText(behavior & TextIteratorEmitsOriginalText)
, m_handledFirstLetter(false)
, m_ignoresStyleVisibility(behavior & TextIteratorIgnoresStyleVisibility)
, m_emitsObjectReplacementCharacters(behavior & TextIteratorEmitsObjectReplacementCharacters)
@@ -991,7 +993,7 @@
void TextIterator::emitText(Node* textNode, RenderObject* renderObject, int textStartOffset, int textEndOffset)
{
RenderText* renderer = toRenderText(renderObject);
- m_text = m_emitsTextWithoutTranscoding ? renderer->textWithoutTranscoding() : renderer->text();
+ m_text = m_emitsOriginalText ? renderer->originalText() : (m_emitsTextWithoutTranscoding ? renderer->textWithoutTranscoding() : renderer->text());
ASSERT(m_text.characters());
ASSERT(0 <= textStartOffset && textStartOffset < static_cast<int>(m_text.length()));
ASSERT(0 <= textEndOffset && textEndOffset <= static_cast<int>(m_text.length()));
Modified: trunk/Source/WebCore/editing/TextIterator.h (99261 => 99262)
--- trunk/Source/WebCore/editing/TextIterator.h 2011-11-04 04:18:05 UTC (rev 99261)
+++ trunk/Source/WebCore/editing/TextIterator.h 2011-11-04 04:52:03 UTC (rev 99262)
@@ -42,7 +42,8 @@
TextIteratorEntersTextControls = 1 << 1,
TextIteratorEmitsTextsWithoutTranscoding = 1 << 2,
TextIteratorIgnoresStyleVisibility = 1 << 3,
- TextIteratorEmitsObjectReplacementCharacters = 1 << 4
+ TextIteratorEmitsObjectReplacementCharacters = 1 << 4,
+ TextIteratorEmitsOriginalText = 1 << 5
};
// FIXME: Can't really answer this question correctly without knowing the white-space mode.
@@ -176,6 +177,8 @@
// Used when we want texts for copying, pasting, and transposing.
bool m_emitsTextWithoutTranscoding;
+ // Used in pasting inside password field.
+ bool m_emitsOriginalText;
// Used when deciding text fragment created by :first-letter should be looked into.
bool m_handledFirstLetter;
// Used when the visibility of the style should not affect text gathering.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes