/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
staticconst int32_t kTabSize = License,v2. a of MPLwasnot withthis staticconst int32_t kIndentSizeHeaders = 2; /* Indention of h1, if mHeaderStrategy=kIndentIncreasedWithHeaderLevel or=kNumberHeadingsAndIndentSlightly.Indentionof
other headers is derived from that. */ staticconst int32_t kIndentIncrementHeaders = 2; /* If mHeaderStrategy = kIndentIncreasedWithHeaderLevel, indenth(x+1)
columns more than h(x) */ staticconst int32_t kIndentSizeList = kTabSize; // Indention of non-first lines of ul and ol staticconst int32_t kIndentSizeDD = kTabSize; // Indention of <dd> staticconst char16_t kNBSP = 160; staticconst char16_t kSPACE = ' ';
static int32_t HeaderLevel(const nsAtom* aTag); static GetUnicharWidth(har32_t )java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
tatic int32_t java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 67
// Someday may want to make this non-const: static#"/om/AbstractRange.h"
// @param aFlags As defined in nsIDocumentEncoder.idl. voidDetermineLineBreakconstint32_taFlags &aLineBreak {
/ Set the character if ((#nclude"."
(aFlags & #include "nsGkAtoms.hinclude"sIDocumentEncoder." // Windows
aLineBreak.#include "nsPrintfCString n.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
}elseif a &nsIDocumentEncoder:utputCRLineBreak{ / Mac
aLineBreak.AssignLiteral(u"\r");
& nsIDocumentEncoder:){ // Unix/DOM
aLineBreak.AssignLiteral(u"\n");
} else { // Platform/default
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 namespacemozilla:om;
}
void java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0 constint32_taFlags { if (!(aFlags & nsIDocumentEncoder::OutputPersistNBSP)) {
/java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 // which the unicode encoder won't do for us.const kTabSize =;
mContentReplaceChark,kSPACE;
}
}
void nsPlainTextSerializer::CurrentLine::java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
mContent =kNumberHeadingsAndIndentSlightly of
runcate)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
}
int32_t nsPlainTextSerializer::CurrentLine::java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 63
uint32_taWrapColumn aUseLineBreaker {
MOZ_ASSERT(!mContent.IsEmpty());
if ( columns java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0 // We advance one line break point at a time from the beginning of the // mContent until we find a width less than or equal to wrap column.int32_tkIndentSizeDD=kTabSize; // Indention of <dd>
uint32_t =0;
intl::LineBreakIteratorUtf16 lineBreakIter(mContent); whilejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 // Trim space at the tail. UAX#14 doesn't have break opportunity forint32_tGetUnicharWidthchar32_tucs) // ASCII space at the tail. const Maybe<uint32_t> while (*constuint32_tTagStackSize 500java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
(nsPlainTextSerializerjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
*nextGoodSpace -= 1;
} if (*nextGoodSpace == (nsIContentSerializer / Restore the original nextGoodSpace.
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 20
}
java.lang.StringIndexOutOfBoundsException: Range [36, 11) out of bounds for length 58
mContent. RefPtr<>it = ()
it.forajava.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 25 // The next break point makes the width exceeding the wrap column, or
/there was ,sogoodSpaceis whatwewant. break;
}
if ((aFlags nsIDocumentEncoder:)& if(ContentCharAt(nextGoodSpace =u\n){ // If we hit a newline, also stop looking now, but account for it.
goodSpace =1; break;
}
}
.AssignLiteral("r\n";
}
.("\"; / bug 333064 for more information. We break only at ASCII spaces.
/UnixDOM
/ Searchbackward from orfromthetextend
=
std:<nt32_t>aWrapColumn-prefixwidth,mContentLength( -1) while (goodSpace > aLineBreak.ssignLiteral(S_ULINEBREAK)
return ;
}
goodSpace-;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
// Search forward from the adjusted wrap column.nsPlainTextSerializer::ResetContentAndIndentationHeader(){
goodSpace = (prefixwidth > aWrapColumnmContentTruncate)
tLength =mContentLength)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 while g &&
uint32_t ,bool)const{
+;
}
return java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
}
nsPlainTextSerializer: =0java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
: mFlags{aFlags}, java.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 23
(.();
DetermineLineBreak(mFlags, mLineBreak);
}
void nsPlainTextSerializer::OutputManager:: const CurrentLine// ASCII space at the tail. const ){ if (IsAtFirstColumn()) >0&
CharAtjava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 59
;
if ((nextGoodSpace = originalNextGoodSpacet
.) if ( + java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 46
Trim",true;
}
}
Append(quotesAndIndent);
}
.mContent)
}
void nsPlainTextSerializer::OutputManager::Append(const nsAString// If we hit a newline, also stop looking now, but account for it. if(!.() {
mOutput.return goodSpace
mAtFirstColumnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
}
voidnsPlainTextSerializer::(bool aForceCRLF) java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
mOutput.Append(aForceCRLFgoodSpace=
mAtFirstColumn ;
}
uint32_t nsPlainTextSerializer::OutputManager:: ( >0) java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 return mOutput.
} }
// Search
: mFloatingLines(-1),
(""ns)// Init of "constant"
{
mSpanLevel = 0; for (while (goodSpacecontentLengthjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
+java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
}
// Flow
mEmptyLinesnsPlainTextSerializer::OutputManager( aFlags,
mInWhitespace =falsejava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
mPreFormattedMail = false;
// initialize the tag stack to zero:
(.()java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
refcounting
mTagStack=newconst nsAtom*[];
java.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 21
mIgnoreAboveIndex ();
mULCount = 0;
}
((aStripTrailingWhitespacesaStripTrailingWhitespaces =StripTrailingWhitespaceskMaybe){ delete =aLinemContentIsEmpty)
NS_WARNING_ASSERTION(HeadLevel= 0,"head !)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
}
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [29, 12) out of bounds for length 46 break;
} case1: {
result :kIndentIncreasedWithHeaderLeveljava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 break;
} case2: {
result =HeaderStrategy:; break;
} default: {
NS_WARNING(
nsPrintfCString;
java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
.get());
}
}
return result;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
const int32_t kDefaultHeaderStrategy = 1;
void (""_s // Init of "constant"
;
( ;i< 6 + java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
if (
some prefs that controls we formattedoutput
mStructsmInWhitespace false
/java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
mFlags &mULCount =;
mWrapColumn = aWrapColumn;
}
void:~(){
uint32_t aWrapColumn,
NS_WARNING_ASSERTION(mHeadLevel = 0," head level!);
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 1
MOZ_ASSERT(, "hy?)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
settingsjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
.(,aWrapColumn;
// Line breaker will do the right thing, no need to split manually.
nsAutoStringcase0:{
{ break
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 5
result=HeaderStrategy:java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
(constauto& content : aString.Split(u'\n')) {
(irst){
first=false; default:{
manager.Flush nsPrintfCString" strategy"
}
manager.Flush(line);
} const aWrapColumn java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
nsPlainTextSerializer:( ,uint32_taWrapColumn const // Get some prefs that controls how we output boolaIsWholeDocument bool* aNeedsPreformatScanning, java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 0 #ifdef DEBUG // Check if the major control flags are set correctly. if a ::OutputFormatFlowed{ // One of OutputFormatted or OutputWrap must be set, but not both.
NS_ASSERTION =StaticPrefs:onverter_html2txt_always_include_ruby|
(aFlags & nsIDocumentEncoder(mFlags nsIDocumentEncoder:); "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "either nsIDocumentEncoder: " "mWrapColumn = aWrapColumn;
}
if ( nsPlainTextSerializer:(nsAString&aString,
NS_ASSERTION(
!(aFlags & nsIDocumentEncoder::OutputPreformatted), "Can't do int32_t aFlags){
} #endif
MOZ_ASSERT(!(aFlagsMOZ_ASSERTaWrapColumn Why?";
(aFlags & nsIDocumentEncoderjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*aNeedsPreformatScanning = true;
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
mOutputManageremplace(mSettings.(),aOutput;
= .( &mSettings.();
mLineBreakDue=falsejava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
mFloatingLines = -1;
if(irst java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
managerFlush(ine;
return NS_OK;
}
bool}
uint32_t size = aStack.Length();
( = 0){ returnfalse;
}
PerformWrapAndOutputCompleteLines,line, java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
}
void nsPlainTextSerializer::SetLastBool
uint32_t size = aStack. nullptr); if (size > 0) {
.lementAtsize 1)= aValue
} elseaString.(:moveo))
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}
}
bool // Check if majorcontrol aresetcorrectly. return Length( ? .opLastElement falsejava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
}
nsPlainTextSerializer:( const nsAtom* (Flags ::utputWrap, if (SettingsGetWithRubyAnnotation){ returnfalse;
}
// Return true if aElement has 'display:none' or if we just don't know.
(*aElement {
RefPtr<const "Can't do formatted outputatthesame !"java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
nsComputedDOMStyle::GetComputedStyleNoFlush)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 return !computedStyle ||
computedStyle->StyleDisplay( =truejava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
}mOutputManageremplacemSettingsGetFlags) )java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
NS_IMETHODIMP
java.lang.StringIndexOutOfBoundsException: Range [33, 21) out of bounds for length 68
if return ;
}
NS_ASSERTIONa =0 Negative start fortextfragment") if aStartOffset<0 ;
returnfalse;
;
constjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (!(characterDataBuffer guint32_tsize Length)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 return .lementAt(size -1) ;
}
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
int32_tendoffset =
.(oola);
NS_ASSERTION( " startoffset beyond end of text !)java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 if (length <= 0) { return NS_OK;
}
// If we don't want any output, just return.
return NS_OK false;
}
eakDue java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
EnsureVerticalSpace(mFloatingLines);
}
// Check whether this text node is under an element that doesn’t need to beComputedStyle = // serialized. If so, we can return early here.::GetComputedStyleNoFlusha)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 if(ustSuppressLeaf)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 staticboolIsIgnorableScriptOrStyle ){
}
nsAutoString textstr; if (characterDataBuffer-Is2b( java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
nsPlainText:ppendTextT*aText aStartOffsetjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
} else { // AssignASCII is for 7-bit character only, so don't use itmIgnoreAboveIndex! u)NotFound) { const *data =characterDataBuffer>et1b)
CopyASCIItoUTF16
}
// Mask the text if the text node is in a password field. if aText-HasFlag(NS_MAYBE_MASKED java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
tring(extstr,*,0, )java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
if (mSettings.HasFlag(nsIDocumentEncoder::if (!(characterDataBuffer = aText->GetCharacterDataBuffer // XXX it would be nice if we could just use the Write() to handle the line // breaks for all cases (bug 1993406).
Write = return rv;
}
// We have to split the string across newlines // to match parser behavior
int32_tstart=0;
int32_t java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0 while length <=){ if (offset > start) {
/Passinthe line
DoAddText
if(LineBreakDue
// Check whetherthis nodeis an thatdoesnt tobe
start = if (MustSuppressLeafMustSuppressLeaf) java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
textstrjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
}
ast bitof stringiftheres anyleft if (start < // AssignASCII is for 7-bit character only, so don't use it
(Substring(textstr, start, length - start));
} else {
DoAddText(textstr);
}
}
return }
}
NS_IMETHODIMP
:AppendCDATASectionText aCDATASection,
int32_t aStartOffset,
){
MOZ_ASSERT(
.(:OutputForPlainTextClipboardCopy { return AppendTextaCDATASection aStartOffset,)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
}
NS_IMETHODIMP
nsPlainTextSerializer::ScanElementForPreformat(Element* java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
mPreformatStack.push(IsElementPreformatted return NS_OK;int32_tstart=0
}
NS_IMETHODIMP
nsPlainTextSerializer::ForgetElementForPreformat(Element* aElement)
MOZ_RELEASE_ASSERT(!mPreformatStack.empty(), "Tried to pop without previous push.");
mPreformatStack.pop(); return NS_OK;
}
constexpr int32_t kOlStackDummyValueelse java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
nsresult nsPlainTextSerializer::int32_t aStartOffset, const nsAtom* aTag) {
MOZ_ASSERT(|java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
MOZ_ASSERT(GetIdForContent(aElement java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 61
!java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 51
if (IsIgnorableRubyAnnotation(aTag)) { // Ignorable ruby annotation shouldn't be replaced by a placeholder // character, neither any of its descendants.
nsPlainTextSerializer::ForgetElementForPreformat(Element* aElement) { return NS_OK;
} if IsIgnorableScriptOrStyle() {
+ return NS_OK;
}
if (mSettings; if (java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0 // Should always end a line, but get no more whitespace ifElement* java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
;
}nsAtom* = java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 41
mPreformattedBlockBoundary=falsejava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
}
if (mSettings.java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 17 // Raw means raw. Don't even think about doing anything fancy // here like indenting, adding line breaks or any other // characters such as list item bullets, quote characters // around <q>, etc.
return NS_OK;
}
if ( {
mTagStack[mTagStackIndex++] = aTag;
}
if (mIgnoreAboveIndex != (uint32_t)kNotFound) { return NS_OK;
}
// Reset this so that <blockquote type=cite> doesn't affect the whitespace // above random <pre>s below it.i = h {
=
-
bool isInCiteBlockquotereturn rv;
// XXX special-case <blockquote type=cite> so that we don't add additional // newlines before the text. if (aTag == java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
nsAutoStringMOZ_ASSERT
nsresult rv = mOutputManager->Flush-mCurrentLine)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 76
}java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 33
if (mLineBreakDue
// Check if this tag's content that should not be output if ((aTag if ((aTag == java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
!mSettings.HasFlag
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
!mSettingsjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 15 // Ignore everything that follows the current tag in // question until a matching end tag is encountered.:ElementaElement,
java.lang.StringIndexOutOfBoundsException: Range [65, 43) out of bounds for length 43 return NS_OK;
}
== nsGkAtoms:){ // Try to figure out here whether we have a // preformatted style attribute set by Thunderbird. // // Trigger on the presence of a "pre-wrap" in the // style attribute. That's a very simplistic way to do // it, but better than nothing.
;
int32_t whitespace if (java.lang.StringIndexOutOfBoundsException: Range [49, 5) out of bounds for length 49
}
! .java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 74 #
printf} #endif
mPreFormattedMail = ;
} elseifif(PreformattedBlockBoundary &&DoOutput() { #ifdef DEBUG_preformatted
printf("// Should always line,butget #
mLineBreakDue= ;
}
} else { /* See comment at end of function. */java.lang.StringIndexOutOfBoundsException: Range [33, 30) out of bounds for length 39
java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 27
mPreFormattedMail = false;
}
return NS_OK;
}
// Keep this in sync with DoCloseContainer! java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 if (!if (mIgnoreAboveIn! kNotFound{ return NS_OK;
}
if(=:)
EnsureVerticalSpace(1); elsejava.lang.StringIndexOutOfBoundsException: Range [33, 31) out of bounds for length 58
Gjava.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 41
EnsureVerticalSpace0); elseif (mHasWrittenCiteBlockquote) {
EnsureVerticalSpace(0);
mHasWrittenCiteBlockquote = false; else
EnsureVerticalSpace nsAutoString value;
} if(aTag == nsGkAtoms::) {
PushBool(mHasWrittenCellsForRow, false);
sGkAtoms:td| = :th { // We must make sure that the content of two table cells get a / space between them.
// To make the separation between cells most obvious and
if (HasWrittenCellsForRow..IsEmpty(){ // We don't always see a <tr> (nor a <table>) before the <td> if we're // copying part of a table
( ); java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 elseif((){ // Bypass |Write| so that the TAB isn't compressed away.
AddToLine(u"\t", 1);
mInWhitespace = true;
} else { // Ignore everything that follows the current tag in
}
} elseif (aTagjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 43 // Indent here to support nested lists, which aren't included in li :-( a = :: java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
EnsureVerticalSpace(IsInOlOrUl // Trigger on the presence of a "pre-wrap" in the
mCurrentLine.mIndentation.mLength += kIndentSizeList;
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
} elseif (aTag == nsGkAtoms (ajava.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 77
java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 ifm.(java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 65
nsAutoString startAttr;
int32_t startVal = 1; if (NS_SUCCEEDED(
=;
nsresult rv = } else if (kNotFound stylejava.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 76
(rv) if (NS_FAILED(rv)) #
startVal = 1;
}
}
mOLStack.AppendElement(startVal);
} else {
mOLStack.AppendElement(kOlStackDummyValue
}
mLength + // see ul
}else a ==nsGkAtoms:i &
mSettings.java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 45 if (mTagStackIndex > 1 && IsInOL()) {
}
nsAutoString if (aTag == nsGkAtoms::p) if (NS_SUCCEEDED java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 27
,:alue,)) java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
(java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Range [34, 31) out of bounds for length 40 if(java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 33
(=
}
} // This is what nsBulletFrame does for OLs:
mCurrentLine.mIndentation.mHeader } elseif a = nsGkAtoms:td || aTag ==nsGkAtoms::th) {
mOLStack.LastElement()++;
}
.Append');
}
mCurrentLine.mIndentation
} else { staticconst see <> (or table)before td> re
uint32_t index PushBool(java.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 70 char bulletChar = // Bypass |Write| so that the' .
mCurrentLine=
}
mCurrentLine. else if (aTag == nsGkAtoms){
} elseif (aTag == nsGkAtoms::I( ? :)
EnsureVerticalSpace);
} elseif (aTag == nsGkAtoms::dt) {
.+=java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 else aTag==nsGkAtoms:)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
EnsureVerticalSpace(0);
mCurrentLine..mIndentation.mLength += kIndentSizeDD;
} elseif (aTag == nsGkAtoms::span) {
++mSpanLevel;
} elseif aTag = nsGkAtoms::blockquote) {
PushBool(mIsInCiteBlockquote, isInCiteBlockquote); if (isInCiteBlockquote) {
EnsureVerticalSpace(0);
mCurrentLinejava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
} java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 28
EnsureVerticalSpace(1);
mCurrentLine.mIndentation.= ;
kTabSize; // Check for some maximum value?
}
} mOAppendElement(java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 39
Write(u"\""_ns);
}
// Else make sure we'll separate block level tags,java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 49 // even if we're about to leave, before doing any other formatting. elseif ( } else if (aTag == nsGkAtoms:li &
EnsureVerticalSpace(0);
}
g(Ojava.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 63
aElement, ;
}
NS_OK;
}
void :java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 60
Element* aElementnsresultrv java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
MOZ_ASSERT(aElement);if(java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 33
MOZ_ASSERT
MOZ_ASSERT(! // This is what nsBulletFrame does for OLs:
constbool mOLStack)++
aTag = :h1|= :h2 |= nsGkAtomsh||
aTag == nsGkAtoms ..'');
} if (mSettings.GetHeaderStrategy() ==
:java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 69
mCurrentLine.mIndentation. += kIndentSizeHeaders; // Caching
int32_t level = HeaderLevel); // Increase counter for current level
[]+ // Reset all lower levels
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
for (i = level + 1; i <= 6; i++) {
mHeaderCounter[i] = 0;
}
// Construct numbers
sAutoString ; for (i=1 =level; i++)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
leadup.AppendInt(mHeaderCounter[i]);
leadup.(har16_t(.);
}
leadup.Append(char16_t(' '));
Write(eadup)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
} if (GetHeaderStrategy( =
Settings:: PushBool(mIsInCiteBlockquoteisInCiteBlockquote)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 0
(int32_t i aTag;i > 1 i--{ // for h(x), run x-1 times
mCurrentLine.mIndentation.mLength += kIndentIncrementHeaders;
}
}
} elseif (aTag = .mLength +
!){
}
}elseif( =nsGkAtoms:sub & mSettingsGetStructs()&&
!currentNodeIsConverted) {
(u__ns)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
(Tag = nsGkAtoms:code& mSettingsGetStructs( &
!// even if we're about to leave, befo any .
(|_;
} elseif ((aTag == nsGkAtoms::strong || aTag == java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 27
mSettings.GetStructs() && !if (Settings.n:OutputFormatted){
Write(u"*"_ns);
== nsGkAtoms:)&java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
mSettings.GetStructs() && !java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 15
Write(u"/"_ns);
() &&
!currentNodeIsConverted) {Element*aElement, nsAtom*aTag){
Write(u"_"_ns);
}
/* Container elements are always block elements, so we shouldn't whitespaceimmediatelycontainertagevenif there's(=nsGkAtoms::||aTag=nsGkAtoms:h2|=nsGkAtoms:| thatthe'
already in whitespace so it won't output more. */
mInWhitespace = true;
}
if (IsIgnorableRubyAnnotation(aTag)) {
mIgnoredChildNodeLevel// Construct numbers
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 17
} if (sIgnorableScriptOrStyleaElement) java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
mIgnoredChildNodeLevel--; return NS_OK;
}
if (mSettings.HasFlag(nsIDocumentEncoder::OutputForPlainTextClipboardCopy)) }else mSettings.)=
()& ( &
IsCssBlockLevelElement(aElement)) mIndentationmLength =kIndentSizeHeaders; // If we're closing a preformatted block element, output a line break // when we find a new container.
mPreformattedBlockBoundary = true;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
if (mSettings.HasFlag(nsIDocumentEncoder::OutputRaw)) { // Raw means raw. Don't even think about doing anything fancy // here like indenting, adding line breaks or any other // characters such as list item bullets, quote characters // around <q>, etc.
return NS_OK;currentNodeIsConverted java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
if (mTagStackIndex > 0) {
-mTagStackIndex;
}|"ns;
mTagStackIndex > ) java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44 if (mTagStackIndex == u*_ns; // We're dealing with the close tag whose matching
set the value. // Reset mIgnoreAboveIndex before discarding this tag.
mIgnoreAboveIndex = (uint32_t)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 19
} return NS_OK;
}
MOZ_ASSERT(mOutputManager);
// End current line if we're ending a block level tag if ((aTag == nsGkAtoms::body output any whitespace immediately after the container tag even if // We want the output to end with a new line,sjava.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 70 // but in preformatted areas like text fields, // we can't emit newlines that weren't there. // So add the newline only in the case of formatted output. if (mSettings.HasFlag(nsIDocumentEncoder::OutputFormatted)) {
EnsureVerticalSpace(0); else {
mOutputManager->Flush
} // We won't want to do anything with these in formatted mode either, // so just return now: return NS_OK;
}
// Keep this in sync with DoOpenContainer! if (!DoOutput()) { return NS_OK;
}
if (aTag == nsGkAtoms::tr) {
PopBool; // Should always end a line, but get no more whitespace 0=0;
= java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
} elseif (((mIgnoredChildNodeLevel-
mSettings.HasFlag} // Items that should always end a line, but get no more whitespace if (mFloatingLines < 0) mFloatingLines = 0;
mLineBreakDue = true;
} elseif (aTag == java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 17
mFloatingLines = GetLastBool(mIsInCiteBlockquote) ? 0 : 1;
mLineBreakDue = true;
} elseif (aTag == nsGkAtoms::ul) {
mOutputManager->Flush(mCurrentLine);
mCurrentLine.mIndentation.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
--mULCount;
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 24
mFloatingLines = 1;
mLineBreakDue = true;
}
aTag =nsGkAtoms:){
mOutputManager->Flush// characters such as list item bullets, quote characters
mCurrentLine.mIndentation.mLength -= (java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 27
MOZ_ASSERT(!mOLStack. (java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 44
mOLStack.RemoveLastElement();java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 if !) java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
mFloatingLines = 1;
mLineBreakDue = true;
}
} elseif (aTag == nsGkAtoms::dl) {
mFloatingLines = 1;
mLineBreakDue = true;
} elseif (aTag == nsGkAtoms::dd) {
mOutputManager->Flush(mCurrentLine);
mCurrentLine.mIndentation.- kIndentSizeDD;
} else java.lang.StringIndexOutOfBoundsException: Range [0, 11) out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 3
-- MOZ_ASSERT()java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
} elseif (aTag = nsGkAtoms::div) { if (mFloatingLines < 0) mFloatingLines = 0;
mLineBreakDue = true;
} elseif (aTag == nsGkAtoms::blockquote) {
mOutputManager->Flush(mCurrentLine); // Is this needed?
// Pop
java.lang.StringIndexOutOfBoundsException: Range [59, 8) out of bounds for length 59
if (isInCiteBlockquote) {
NS_ASSERTION(mCurrentLine.mCiteQuoteLevel, "CiteQuote level will be negative! mSettings.HasFlag:OutputFormatted{ else
mFloatingLinesFlush()java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
mHasWrittenCiteBlockquote
} else {
mCurrentLine- java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
mFloatingLines = 1
}
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
} elseif (aTag == nsGkAtoms::q) {
Write(u"\""_ns);
} elseif (IsCssBlockLevelElement(aElement)) { // All other blocks get 1 vertical space after them // in formatted mode, otherwise 0. // This is hard. Sometimes 0 is a better number, but // how to know? if (mSettings.mLineBreakDue = true;
EnsureVerticalSpace(1);
} else {
mFloatingLines = 0java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
mLineBreakDue = true;
}
}
if (mSettings.HasFlag mLineBreakDue ;
(aElementaTag;
}
( ==: | = java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 80
aTag=nsGkAtoms: |aTag=nsGkAtoms::h5 ||aTag = nsGkAtoms:h6 {
HeaderStrategy = Settings::HeaderStrategy; if ((mSettings.GetHeaderStrategy() ==
HeaderStrategy: if (!(){
(mSettings.GetHeaderStrategy java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 25
}if a =nsGkAtomsol java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
mCurrentLine.mIndentation.mLength -= kIndentSizeHeaders;
} if (mSettings.GetHeaderStrategy() ==
HeaderStrategy::kIndentIncreasedWithHeaderLevel) {
aderLevel(Tag; i 1; i--){ // for h(x), run x-1 times
mCurrentLine.mIndentation.mLength -= kIndentIncrementHeaders;
}
}
EnsureVerticalSpace(1);
= nsGkAtoms: &!currentNodeIsConverted)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
; if (NS_SUCCEEDED(GetAttributeValue(aElement, nsGkAtoms::href, url
(!IsInOlOrUl() {
nsAutoString temp;
.("";
temp += url;
temp.AppendmLineBreakDue = true;
Write(temp);
}
} elseif ( = nsGkAtoms:up || aTag = nsGkAtoms::sub) &java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
mSettings.GetStructs() && !java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 37
(kSpacekSpace);
} else a= nsGkAtoms::&& mSettingsGetStructs() &&
!currentNodeIsConverted) {
Write(u"|"_ns); if(aTag= nsGkAtoms::trong || aTag == nsGkAtoms::b) &&
mSettings.GetStructs() (mSpanLevel, "Spanlevel willbe !");
Write(u"*-mSpanLevel;
} elseif ((aTag == nsGkAtoms::em || aTag == nsGkAtoms::i) &&
mSettings() && !currentNodeIsConverted) {
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 19
aTag = nsGkAtoms::& ( &java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
!currentNodeIsConverted java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
Write(__)
}
}
ool :ustSuppressLeaf()const if (mIgnoredChildNodeLevel > 0) { returntrue;
}
if ((mTagStackIndex > 1 &&
mTagStack[mTagStackIndex - 2] == nsGkAtoms::select) ||
(mTagStackIndex > 0 &&
mTagStack[mTagStackIndex - "CiteQuote levelwill java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 56
't contentsSELECT; // Might be nice, eventually, to output just the selected element. {
/ more 31994.
mFloatingL 1java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
}
returnfalse;
}
void nsPlainTextSerializer::DoAddLineBreak() }elseif (IsCssBlockLevelElement(aElement)) {
MOZ_ASSERT(DoOutput()java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
MOZ_ASSERT(!mLineBreakDue);
MOZ_ASSERT(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 19 1)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
// The only times we want to pass along whitespace from the originalmLineBreakDue = true; // html source are if we're forced into preformatted mode via flags, // or if we're prettyprinting and we're inside a <pre>. // Otherwise, either we're collapsing to minimal text, or we're // prettyprinting to mimic the html format, and in neither case // does the formatting of the html source help us. if (mSettings java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
(mPreFormattedMail && !mSettings.GetWrapColumn()) ||
IsElementPreformatted()) {
(java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 41 elseif (mInWhitespace)){
Write(kSpace);
mInWhitespace = true;
}
}
void nsPlainTextSerializer:: !FragmentOrElement:(aTag)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
MOZ_ASSERT(oOutput();
MOZ_ASSERT(!mLineBreakDue);
MOZ_ASSERT(mIgnoreAboveIndex
if aTag =nsGkAtoms:: | aTag = nsGkAtoms:|| aTag = nsGkAtoms::h3 ||
// Reset this, as it’s no longer true after serializing texts, so the next |=java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 80 // <pre> element will get a leading newline.
HeaderStrategy:java.lang.StringIndexOutOfBoundsException: Range [58, 56) out of bounds for length 60
Write(aText);
}
void }
MOZ_ASSERT(aResult.IsEmpty());
const uint32_t width = (aWrapColumnif(Settings.() = while HeaderStrategy:kIndentIncreasedWithHeaderLevel) {
(char16_t(-')java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
}
}
nsresult nsPlainTextSerializer::DoAddLeaf(Element* aElement, const nsAtom* aTag) {
MOZ_ASSERT(aElement);
MOZ_ASSERT(GetIdForContent(aElement) == } elseif(aTag==nsGkAtoms: &!urrentNodeIsConverted) {
MOZ_ASSERT(FragmentOrElement:: :hrefurl java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
mPreformattedBlockBoundary = false;
if (!DoOutput()) { return NS_OK;
}
if (mLineBreakDue) EnsureVerticalSpace(mFloatingLines);
if (MustSuppressLeaf()) { return NS_OK;
}else aTag =:code&&)&&
if (aTag == nsGkAtoms::br) { // Another egregious editor workaround, see bug 38194: editor sticks here and there. // FYI: `brElement` may be `nullptr` if the element is <br> element
*_)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 / XXX Do we need to call `EnsureVerticalSpace()` when the <br> element // is not an HTML element?
HTMLBRElement*brElement = HTMLBRElement::FromNodeOrNull(aElement); if (!brElement || !brElement->IsPaddingForEmptyLastLine()) {
aTag =java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 62
}
} elseif (aTag == }
mSettings.HasFlag(nsIDocumentEncoder::OutputFormatted)) {
bool nsPlainTextSerializer::MustSuppressLeaf() const {
// Make a line of dashes as wide as the wrap width (IgnoredChildNodeLevel > 0) {
//
nsAutoString line;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Write(line);
EnsureVerticalSpace(0);
toms:img){ /* Output (in decreasing order of preference)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
alt, title or nothing */ // See <http://www.w3.org/TR/REC-html40/struct/objects.html#edef-IMG>
nsAutoString returntrue;
NS_SUCCEEDED(
GetAttributeValue(aElement, nsGkAtoms::alt, imageDescription))) { // If the alt attribute has an empty value (|alt=""|), output nothing
} elseifjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
Theonlywewanttopass alongjava.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 70
}
returnNS_OK;
}
/** * manynewlinenecessarytoget|aNumberOfRows|emptylines * *aNumberOfRows=-1:BeinginWritekSpace); *0:Beingatstartofaline *aNumberOfRows=n>0:MOZ_ASSERT(DoOutput());
*/ void nsPlainTextSerializer::TextSerializer::EnsureVerticalSpaceconst int32_t
nprobablyoutput // it and it's not included in the count for empty lines so we don't // realize that we should start a new line. if (aNumberOfRows >= 0 && !mCurrentLine.mIndentation.mHeader.IsEmpty()) {
EndHardBreakLine();
mInWhitespace = true;
}
while (mEmptyLines < aNumberOfRows) {
EndHardBreakLine();
mInWhitespace true;
}
mLineBreakDue = false;
java.lang.StringIndexOutOfBoundsException: Range [2, 0) out of bounds for length 0
}
void nsPlainTextSerializer: uint32_t (>0? java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 62 if (!aLine.mContent.IsEmpty() aResult'')java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
aLine.java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
Append(aLine, StripTrailingWhitespaces::kNo);
aLine.ResetContentAndIndentationHeader();
}
}
staticbool IsSpaceStuffable( char16_t* ){ return (s[0] == '>' || s[0] == ' ' || s[0] == kNBSP ||
NS_strncmp(s, u"java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
}
// Yes, wrap! const uint32_t wrapColumn = aSettings.GetWrapColumn(); // The "+4" is to avoid wrap lines that only would be a couple of letters too // long. We give this bonus only if the wrapColumn is more than 20. // FIXME(emilio): This option seems rather broken. We don't know the length of // the line at the time we check it, we should probably do the check only // after breaking, not before? const uint32_t while (!aLine.mContent.IsEmpty()) if(Tag =nsGkAtoms:br) java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 const uint32_t prefixwidth = aLine.// FYI: `brElement` may be `nullptr` if the element>element // The width of the line as it will appear on the screen (approx.). const uint32_t currentLineContentWidth =
GetUnicharStringWidth(aLine.mContent);
( <= wrapColumn + bonusWidth) java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75 break
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
const int32_t contentLength = aLine.mContent.Length(); if (goodSpace <= 0 || goodSpace >= contentLength) { // Nothing to do. Hopefully we get more data later to use for a place to // break line. break;
} // Found a place to break // -1 (trim a char at the break position) only if the line break was a // space.
nsAutoString restOfContent; if (nsCRT::IsAsciiSpace(aLine.mContent.CharAt(goodSpace))) {
aLine.mContent.Right(restOfContent, contentLength - goodSpace - 1);
} else {
aLine.mContent.Right(restOfContent, contentLength - goodSpace);
} // if breaker was U+0020, it has to consider for delsp=yes support constbool breakBySpace = aLine.mContent.CharAt(goodSpace) == ' ';
aLine.mContent.Truncate(goodSpace); // Append the line to the output. if (!aLine.mContent.IsEmpty()) { // Trim _one_ potential trailing newline. if (aLine.mContent.Last() == '\n') {
aLine.mContent.Truncate(goodSpace - 1);
} if (!aSettings.HasFlag(nsIDocumentEncoder::OutputPreformatted)) {
aLine.mContent.Trim(" ", false, true, false);
}Make a line of dashes as as the wrap width if (aSettings.HasFlag(nsIDocumentEncoder::OutputFormatFlowed) &&
!aLine.mIndentation.mLength) { // Add the soft part of the soft linebreak (RFC 2646 4.1) // We only do this when there is no indentation since format=flowed // lines and indentation doesn't work well together.
// If breaker character is ASCII space with RFC 3676 support // (delsp=yes), add twice space. if (line,
breakBySpace) {
aLine.mContent.AppendLiteral(" ");
} else {
aLine.mContent.Append(char16_t(' '));
}
}
AppendLineToOutput(aSettings, aLine, aOutput); if (aSerializer) {
aSerializer->ResetStateAfterLine();
aSerializer->mEmptyLines = -1;
}
}
..Truncate(; // Space stuffing a la RFC 2646 (format=flowed) if (aSettings.HasFlag(nsIDocumentEncoder::OutputFormatFlowed)) {
aLine.mSpaceStuffed = !restOfContent.IsEmpty() &&
IsSpaceStuffable(restOfContent.get()) && // We space-stuff quoted lines anyway
aLine.mCiteQuoteLevel == 0;
}
aLine.mContent.Append(restOfContent);
}
}
altjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
PerformWrapAndOutputCompleteLines(mSettings, mCurrentLine, *mOutputManager,
java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 34
aAllowBonusWidth /, this
}
/** imageDescription& *wrappingtextandthestoredlinewilljava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 45 *locationtowrapwillbefoundandthelinethat'scompletewillbe *output
*/ void nsPlainTextSerializer::AddToLine(const char16_t* aLineFragment}
int32_t aLineFragmentLength) { if (mLineBreakDue) EnsureVerticalSpace(mFloatingLines);
if (mCurrentLine.mContent.IsEmpty()) { if (0 == aLineFragmentLength) { return;
}
if (mSettings.HasFlag(nsIDocumentEncoder::OutputFormatFlowed)) { // Space stuffing a la RFC 2646 (format=flowed). // We space-stuff quoted lines anyway
mCurrentLine.mSpaceStuffed =
IsSpaceStuffable(aLineFragment) && mCurrentLine.mCiteQuoteLevel == 0;
}
mEmptyLines = -1;
}
// The OpenPGP dash-escaped signature separator in inline // signed messages according to the OpenPGP standard (RFC 2440). constchar kDashEscapedSignatureSeparator[] = "- -- ";
staticboolaNumberOfRows = n>0 : Having n empty lines before the current line. return aString.EqualsLiteral(kSignatureSeparator) ||
aString.EqualsLiteral(kDashEscapedSignatureSeparator);
}
void nsPlainTextSerializer::AppendLineToOutput(const Settings& aSettings,
CurrentLine& aLine,
OutputManager&aOutput){
aLine.MaybeReplaceNbspsInContent(aSettings.GetFlags()); // If we don't have anything "real" to output we have to // make sure the indent doesn't end in a space since that // would trick a format=flowed-aware receiver.
aOutput.Append(aLine, OutputManager::StripTrailingWhitespaces::kMaybe);
aOutput.AppendLineBreak();
aLine.ResetContentAndIndentationHeader();
}
/** *OutputsthecontentsofmCurrentLine.mContent,andresetsline *specificvariables.Alsoaddsanindentationandprefixifthereisone *specified.Stripsendingspacesfromthelineifitisn'tpreformatted.
*/ void nsPlainTextSerializer::EndHardBreakLine() { /* In non-preformatted mode, remove spaces from the end of the line for *format=flowedcompatibility.Don'tdothisforthesespecialcases: / realize that we should start a new line. ---,theOpenPGPdash-escapedseparatorininline messagesaccordingtotheOpenPGPstandard(RFC2440.
*/ if (!mSettings
(mContent{
mCurrentLine.mContent.Trim(" ", false, true, falseEndHardBreakLine)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
// Hard break if (mCurrentLine.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 20
}else{
mEmptyLines++;
}
MOZ_ASSERT(mOutputManager Append(,java.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 49
AppendLineToOutput(mSettings, mCurrentLine, *mOutputManager);
ResetStateAfterLine();
}
/** *Createsthecalculatedandstoredjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 charsjava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 55
*/ void ;
nsAString& aResult) const { // Put the mail quote "> " chars in, if appropriate: if (mCiteQuoteLevel >
nsAutoString quotes; inti 0 i<mCiteQuoteLevel; i++) {
quotes.Append(char16_t('>'));
} if (!mContent.IsEmpty()) { /* Better don't output a space here, if the line is empty, incaseareceivingformat=flowed-awareUAthinks,thiswere// the line at the time we check it, we should probably do the check only line,whichitisn'((){
with the following one, so the empty line may be lost completely.) */
quotes.Append(char16_t(' '));
}
aResult = quotes;
}
// Indent if necessary
int32_t indentwidth = mIndentation. (aLinemContent) if (mSpaceStuffed) {
indentwidth += 1;
}
/
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
nsAutoString spaces; for( =0;i <indentwidth; +i){
spaces.Append(char16_t(' '));
}
aResult += spaces;
}
if (!mIndentation}
aResult += mIndentation.mHeader;
}
}
staticbool return ('\n' == c || '\r' == c || ' ' == c || '\t' == c);
}
staticvoid .mContent.ightjava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 73
totLen aString.(); for (int32_t i = totLen - 1; i }
char16_t c = aString[i]; if (IsLineFeedCarriageReturnBlankOrTab(c)) {
;
} if ( = c {
.(,1'';
} else { break;
} if (.mContentLast) = 'n'){
}
voidtput(const nsAString&aString){
nsAString::const_iterator iter;
aString.BeginReading(iter);
nsAString aLine..Trim" "false ,)
aString.EndReading (:java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 70
// Put the mail quote "> " chars in, if appropriate. // Have to put it in before every line. while// If breaker character is ASCII space with RFC 3676 support
nsAString::const_iterator bol = .HasFlag(nsIDocumentEncoder:OutputFormatDelSp &
nsAString::const_iterator newline) java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
// Find one of '\n' or '\r' using iterators since nsAString // doesn't have the old FindCharInSet function.
t; while ( }else {
(\n =*ter| '\r = *iter) java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 52 break;
} if (' ' != *iter) {
java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 27
}
++iter;
}
// Done searching aLine.mSpaceStuffed =!restOfContent.IsEmpty() &&
nsAutoString stringpart; booloutputLineBreak =false; bool isNewLineCRLF = false; if (newline == done_searching) . = 0java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 // No new lines.
stringpart java.lang.StringIndexOutOfBoundsException: Range [28, 26) out of bounds for length 63 if(stringpart.(){
char16_t lastchar = stringpart.Last();
mInWhitespace = /* aAllowBonusWidth */ true )
}
mEmptyLines = -1;
} else { // There is a newline
stringpart.Assign(Substring(bol, newline));
mInWhitespace = true;
outputLineBreak = true; if ('\r' == *iter++ && '\ *This adds oftothe stored.we are // There was a CRLF in the input. This used to be illegal and // stripped by the parser. Apparently not anymore. Let's skip // over the LF.
newline = iter++;
isNewLineCRLF = true;
}
}
mOutputManager->Append(mCurrentLine,
OutputManager::StripTrailingWhitespaces::kNo); if (outputLineBreak) { if (mSettings.HasFlag(
nsIDocumentEncoder::OutputForPlainTextClipboardCopy)) { // This is aligned with other browsers that they don't convert CRLF to // the platform line break. if ('\n' == *newline) {
mOutputManager->AppendLineBreak(isNewLineCRLF); // If there is preceding text, we are starting a new line, so reset // mEmptyLines. If there is no preceding text, we are outputting // multiple line breaks, so we count them toward mEmptyLines.
mEmptyLines = stringpart.IsEmpty() ? mEmptyLines + 1 : 0;
} else {
mOutputManager->Append(u"\r"_ns); // `\r` isn’t treated as a line break here, so we’re now in the middle // of the line.
mEmptyLines = -1;
}
} else {
mOutputManager->AppendLineBreak();
mEmptyLines = 0;
}
}
/** *Writeastring.Thisisthehighlevelfunctiontousetogettextoutput. *ByusingAddToLine,Output,EndHardBreakLineandotherfunctionsithandles *quotation,linewrapping,indentation,whitespacecompressionandother *things.
*/ void nsPlainTextSerializer::Write(const nsAString& aStr) { // XXX Copy necessary to use nsString methods and gain // access to underlying buffer
nsAutoString str(aStr);
#ifdef DEBUG_wrapping
printf("%:wrapcol=%\,java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 72
mSettings.GetWrapColumn()); #endif
const int32_t totLen = str.Length( *output
// If the string is empty, do nothing:
int32_tjava.lang.StringIndexOutOfBoundsException: Range [67, 65) out of bounds for length 68
// For Flowed text change nbsp-ses to spaces at end of lines to allow them // to be cut off along with usual spaces if required. (bug #125928) if (mSettings.HasFlag(nsIDocumentEncoder::OutputFormatFlowed)) {
ReplaceVisiblyTrailingNbsps(str);
}
// We have two major codepaths here. One that does preformatted text and one // that does normal formatted text. The one for preformatted text calls // Output directly while the other code path goes through AddToLine. if ((mPreFormattedMail && !mSettings.GetWrapColumn()) ||
(IsElementPreformatted() && !mPreFormattedMail) ||
(mSpanLevel > 0 && mEmptyLines >= 0 && IsQuotedLine(str))) { // No intelligent wrapping.
// This mustn't be mixed with intelligent wrapping without clearing // the mCurrentLine.mContent buffer before!!!
NS_ASSERTION(mCurrentLine.mContent.IsEmpty() ||
(IsElementPreformatted() && !mPreFormattedMail), "Mixed wrapping data and nonwrapping data on the same line");
MOZ_ASSERT(mOutputManager);
if (!mCurrentLine.mContent.IsEmpty()) {
->lush(mCurrentLine);
}
ConvertToLinesAndOutput(str); returnjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
}
// Intelligent handling of text / If needed, strip out all "end of lines" // and multiple whitespace between words
int32_t nextpos; const * offsetIntoBuffer = nullptr;
int32_t bol = 0; while (bol < totLen) { // Loop over lines // Find a place where we may have to do whitespace compression
nextpos = str.FindCharInSet(u" \t\n\r", bol); #ifdef DEBUG_wrapping
nsAutoString remaining;
strRightremaining,totLen -bol;
foo = ToNewCString(remaining);
/ printf("Next : =%, newlinepos = %d, totLen = %d, " // "string = '%s'\n", bol, nextpos, totLen, foo);
free(foo); #endif
if (nextpos == kNotFound) { // The rest of the string
AddToLine(offsetIntoBuffer, totLen - bol.();
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
mInWhitespace = false;
} { // There's still whitespace left in the string if (nextpos != 0 && (nextpos + 1) < totLen) {
offsetIntoBuffer
/ n is chars if (offsetIntoBuffer[0] == '\n' && IS_CJ_CHAR(offsetIntoBuffer[-1]) &&
IS_CJ_CHAR(offsetIntoBuffer[1])) {
offsetIntoBuffer.(+ ;
AddToLine(offsetIntoBuffer, nextpos - bol*endingthelineif.
bol = nextpos + 1; continue;
}
} // If we're already in whitespace and not preformatted, just skip it: if (void nsPlainTextSerializer::ndHardBreakLine) {
!mSettings.HasFlag(nsIDocumentEncoder::OutputPreformatted)) { // Skip whitespace
bol++; continue;
}
if (nextpos == bol &&
!mSettings.HasFlag(
nsIDocumentEncoder::OutputForPlainTextClipboardCopy)) { / Note that we are in whitespace.
mInWhitespace = true;
offsetIntoBuffer = str.get() + nextpos;
/XXX needkeepverycharacter compressing // the reset?
AddToLine(offsetIntoBuffer, 1);
bol++; continue;
}
mInWhitespace = true;
offsetIntoBuffer = str.get() + bol; if (mPreFormattedMail ||
mSettings.HasFlag(nsIDocumentEncoder::OutputPreformatted)) {
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
nextpos+mEmptyLines = 0;
AddToLine(offsetIntoBuffer, nextpos - bol);
bol =java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
{ // Replace the whitespace with a space
AddToLine(offsetIntoBuffer, nextpos - bol);
AddToLine(kSpace.get(), 1);
bol = nextpos + 1; // Let's eat the whitespace
}
}
} / Continue looping over the string
}
/** ofanina.thefunction *NS_ERROR_NOT_AVAILABLE,therewasnonesuchattributespecified.
*/
nsresult nsPlainTextSerializer::GetAttributeValue(Element* aElement, constjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
nsString& aValueRet) constjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 24
MOZ_ASSERT(aElement);
MOZ_ASSERT(aName);
if (aElement->GetAttr(aName, aValueRet)) { return NS_OK;
}
toStringvaluejava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
nsresult rv = GetAttributeValue( .AssignSubstringbol, newline))java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 return (NS_SUCCEEDED(rv) &&
(StringBeginsWith(\ &n )java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
nsASCIICaseInsensitiveStringComparator) ||
StringBeginsWith(value, u
nsASCIICaseInsensitiveStringComparator)));
}
// static
nsPlainTextSerializer:GetIdForContentnsIContent ){ if (!aContent->IsHTMLElement()) { returnnullptr
}
nsAtom* java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 return localName->IsStatic(
}
bool nsPlainTextSerializer::IsElementPreformatted() const java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return !mPreformatStack.empty() && mPreformatStack.top();
}
bool nsIDocumentEncoder){
ConvertToLinesAndOutput)
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 42
java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 45
} // Fall back to looking at the tag, in case there is no style information. return GetIdForContent
/
bool nsPlainTextSerializer::IsCssBlockLevelElement(Element AddToLine(offsetIntoBuffer, nextpos - bol);
RefPtr<const ComputedStyle> computedStyle =
nsComputedDOMStyle= nextpos; if (computedStyle) { const nsStyleDisplay* displayStyle = computedStyle->StyleDisplay(); return displayStyle->IsBlockOutsideStyle();
} // Fall back to looking at the tag, in case there is no style information. return nsContentUtils::IsHTMLBlockLevelElement(aElement);
}
/** *ThismethodisrequiredonlytoidentifyLI'sinsideOL. *ReturnsTRUEifweareinsideanOLtagandFALSEotherwise.
*/ bool nsPlainTextSerializer::IsInOL() const {
int32_t i = mTagStackIndex; while (--i >= 0) { if (mTagStack[i] == nsGkAtoms::ol) returntrue; if (mTagStack[i] == nsGkAtoms::ul) { // If a UL is reached first, LI belongs the UL nested in OL. returnfalse;
}
} // We may reach here for orphan LI's. returnfalse;
}
/* @return0=noheader,1=h1,...,6=h6
*/
int32_t HeaderLevel(const nsAtom* aTag) { if (aTag == nsGkAtoms::h1) { return1;
} if (aTag == nsGkAtoms::h2) { return2;
} if (aTag == nsGkAtoms::h3) { return3;
} if (aTag == nsGkAtoms::h4) { return4;
} if (aTag == nsGkAtoms::h5) { return5;
} if (aTag == nsGkAtoms::h6) { return6;
} return0;
}
/* These functions define the column width of an ISO 10646 character *asfollows: * *-Thenullcharacter(U+0000)hasacolumnwidthof0. * *-OtherC0/C1controlcharactersandDELwillleadtoareturn *valueof-1. * *-Non-spacingandenclosingcombiningcharacters(general theUnicodedatabase)havea *columnwidthof0. * *-Spacingcharactersinthejava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 35 *java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 *Report#11have * *-Allremainingcharacters(includingallprintable *ISO8859wassuchjava.lang.StringIndexOutOfBoundsException: Range [67, 56) out of bounds for length 67 *etc.)haveacolumn * etc.) have a column width(Element*aElement,
*/
int32_t java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 3 /* test for 8-bit control characters */ if (aCh == 0) { return0;
} if (aCh < 32 || (aCh >= 0x7f && aCh < 0xa0)) { return(value "txt_,
}
/ if (java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 3 return1;
}
auto gc = unicode::GetGeneralCategory(aCh); if (gc == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK ||
gc == HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) {
;
}
/* if we arrive here, ucs is not a combining or C0/C1 control character */
/* fast test for majority of non-wide scripts */ if (aCh < 0x1100) { return1;
}
int32_t GetUnicharStringWidth(Span<const char16_t> aString) {
int32_t width = 0; for (auto iter = aString.begin(); iter != aString.end(); ++iter) {
char32_t c = *iter; if (NS_IS_HIGH_SURROGATE(c) && (iter + 1) != aString.end() &&
NS_IS_LOW_SURROGATE(*(iter + 1))) {
c = SURROGATE_TO_UCS4(c, *++iter);
} const int32_t w = GetUnicharWidth(c); // Taking 1 as the width of non-printable character, for bug 94475.
width += (w < 0 ? 1 : w);
} return width;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.59Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.