author | aceman <acelists@atlas.sk> |
Fri, 02 Mar 2012 17:23:01 -0500 | |
changeset 88177 | 7fa4f6cd52f54cf4221dce371381c489be8e23d0 |
parent 88176 | 73831fbed59f5e31cc325cf5c1f8b49866d5f5bd |
child 88178 | 031cfd3d00f6a7870e87642d223d41a28e1e1d62 |
push id | 22173 |
push user | bmo@edmorley.co.uk |
push date | Sat, 03 Mar 2012 13:14:42 +0000 |
treeherder | mozilla-central@ed57abebd328 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | ehsan |
bugs | 368758 |
milestone | 13.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/content/base/src/nsPlainTextSerializer.cpp +++ b/content/base/src/nsPlainTextSerializer.cpp @@ -103,17 +103,16 @@ nsPlainTextSerializer::nsPlainTextSerial mOutputString = nsnull; mHeadLevel = 0; mAtFirstColumn = true; mIndent = 0; mCiteQuoteLevel = 0; mStructs = true; // will be read from prefs later mHeaderStrategy = 1 /*indent increasingly*/; // ditto - mQuotesPreformatted = false; // ditto mDontWrapAnyQuotes = false; // ditto mHasWrittenCiteBlockquote = false; mSpanLevel = 0; for (PRInt32 i = 0; i <= 6; i++) { mHeaderCounter[i] = 0; } // Line breaker @@ -205,20 +204,16 @@ nsPlainTextSerializer::Init(PRUint32 aFl if (mFlags & nsIDocumentEncoder::OutputFormatted) { // Get some prefs that controls how we do formatted output mStructs = Preferences::GetBool(PREF_STRUCTS, mStructs); mHeaderStrategy = Preferences::GetInt(PREF_HEADER_STRATEGY, mHeaderStrategy); - // The quotesPreformatted pref is a temporary measure. See bug 69638. - mQuotesPreformatted = - Preferences::GetBool("editor.quotesPreformatted", mQuotesPreformatted); - // DontWrapAnyQuotes is set according to whether plaintext mail // is wrapping to window width -- see bug 134439. // We'll only want this if we're wrapping and formatted. if (mFlags & nsIDocumentEncoder::OutputWrap || mWrapColumn > 0) { mDontWrapAnyQuotes = Preferences::GetBool("mail.compose.wrap_to_window_width", mDontWrapAnyQuotes); } @@ -1631,17 +1626,17 @@ nsPlainTextSerializer::Write(const nsASt break; } } // 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 ((mPreFormatted && !mWrapColumn) || IsInPre() - || ((((!mQuotesPreformatted && mSpanLevel > 0) || mDontWrapAnyQuotes)) + || ((mSpanLevel > 0 || mDontWrapAnyQuotes) && mEmptyLines >= 0 && str.First() == PRUnichar('>'))) { // No intelligent wrapping. // This mustn't be mixed with intelligent wrapping without clearing // the mCurrentLine buffer before!!! NS_ASSERTION(mCurrentLine.IsEmpty(), "Mixed wrapping data and nonwrapping data on the same line"); if (!mCurrentLine.IsEmpty()) {
--- a/content/base/src/nsPlainTextSerializer.h +++ b/content/base/src/nsPlainTextSerializer.h @@ -171,21 +171,19 @@ protected: nsString mCurrentLine; PRUint32 mHeadLevel; bool mAtFirstColumn; // Handling of quoted text (for mail): // Quotes need to be wrapped differently from non-quoted text, // because quoted text has a few extra characters (e.g. ">> ") // which makes the line length longer. - // Mail can represent quotes in different ways: it can wrap - // quotes in a <pre> (if editor.quotesPreformatted is set), - // or not wrapped in any special tag (if mail.compose.wrap_to_window_width) - // or in a <span> (if neither of the above are set). - bool mQuotesPreformatted; // expect quotes wrapped in <pre> + // Mail can represent quotes in different ways: + // Not wrapped in any special tag (if mail.compose.wrap_to_window_width) + // or in a <span>. bool mDontWrapAnyQuotes; // no special quote markers bool mStructs; // Output structs (pref) // If we've just written out a cite blockquote, we need to remember it // so we don't duplicate spaces before a <pre wrap> (which mail uses to quote // old messages). bool mHasWrittenCiteBlockquote;
--- a/editor/composer/src/nsComposeTxtSrvFilter.cpp +++ b/editor/composer/src/nsComposeTxtSrvFilter.cpp @@ -41,17 +41,16 @@ #include "nsString.h" #include "nsINameSpaceManager.h" nsComposeTxtSrvFilter::nsComposeTxtSrvFilter() : mIsForMail(false) { mBlockQuoteAtom = do_GetAtom("blockquote"); - mPreAtom = do_GetAtom("pre"); mSpanAtom = do_GetAtom("span"); mTableAtom = do_GetAtom("table"); mMozQuoteAtom = do_GetAtom("_moz_quote"); mClassAtom = do_GetAtom("class"); mTypeAtom = do_GetAtom("type"); mScriptAtom = do_GetAtom("script"); mTextAreaAtom = do_GetAtom("textarea"); mSelectAreaAtom = do_GetAtom("select"); @@ -74,17 +73,17 @@ nsComposeTxtSrvFilter::Skip(nsIDOMNode* nsCOMPtr<nsIContent> content(do_QueryInterface(aNode)); if (content) { nsIAtom *tag = content->Tag(); if (tag == mBlockQuoteAtom) { if (mIsForMail) { *_retval = content->AttrValueIs(kNameSpaceID_None, mTypeAtom, mCiteAtom, eIgnoreCase); } - } else if (tag == mPreAtom || tag == mSpanAtom) { + } else if (tag == mSpanAtom) { if (mIsForMail) { *_retval = content->AttrValueIs(kNameSpaceID_None, mMozQuoteAtom, mTrueAtom, eIgnoreCase); if (!*_retval) { *_retval = content->AttrValueIs(kNameSpaceID_None, mClassAtom, mMozSignatureAtom, eCaseMatters); } }
--- a/editor/composer/src/nsComposeTxtSrvFilter.h +++ b/editor/composer/src/nsComposeTxtSrvFilter.h @@ -61,18 +61,17 @@ public: NS_DECL_NSITEXTSERVICESFILTER // Helper - Intializer void Init(bool aIsForMail) { mIsForMail = aIsForMail; } protected: bool mIsForMail; nsCOMPtr<nsIAtom> mBlockQuoteAtom; - nsCOMPtr<nsIAtom> mPreAtom; // mail plain text quotes are wrapped in pre tags - nsCOMPtr<nsIAtom> mSpanAtom; //or they may be wrapped in span tags (editor.quotesPreformatted). + nsCOMPtr<nsIAtom> mSpanAtom; // mail plain text quotes are wrapped in span tags nsCOMPtr<nsIAtom> mMozQuoteAtom; // _moz_quote_ nsCOMPtr<nsIAtom> mTableAtom; nsCOMPtr<nsIAtom> mClassAtom; nsCOMPtr<nsIAtom> mTypeAtom; nsCOMPtr<nsIAtom> mScriptAtom; nsCOMPtr<nsIAtom> mTextAreaAtom; nsCOMPtr<nsIAtom> mSelectAreaAtom; nsCOMPtr<nsIAtom> mMapAtom;
--- a/editor/libeditor/html/nsHTMLDataTransfer.cpp +++ b/editor/libeditor/html/nsHTMLDataTransfer.cpp @@ -1963,104 +1963,73 @@ NS_IMETHODIMP nsHTMLEditor::InsertAsQuot NS_IMETHODIMP nsHTMLEditor::InsertAsPlaintextQuotation(const nsAString & aQuotedText, bool aAddCites, nsIDOMNode **aNodeInserted) { if (mWrapToWindow) return nsPlaintextEditor::InsertAsQuotation(aQuotedText, aNodeInserted); - nsresult rv; - - // The quotesPreformatted pref is a temporary measure. See bug 69638. - // Eventually we'll pick one way or the other. - bool quotesInPre = false; - nsCOMPtr<nsIPrefBranch> prefBranch = - do_GetService(NS_PREFSERVICE_CONTRACTID, &rv); - if (NS_SUCCEEDED(rv) && prefBranch) - prefBranch->GetBoolPref("editor.quotesPreformatted", "esInPre); - nsCOMPtr<nsIDOMNode> preNode; // get selection nsCOMPtr<nsISelection> selection; - rv = GetSelection(getter_AddRefs(selection)); + nsresult rv = GetSelection(getter_AddRefs(selection)); NS_ENSURE_SUCCESS(rv, rv); - if (!selection) - { - NS_ENSURE_TRUE(selection, NS_ERROR_NULL_POINTER); - } - else - { - nsAutoEditBatch beginBatching(this); - nsAutoRules beginRulesSniffing(this, kOpInsertQuotation, nsIEditor::eNext); + NS_ENSURE_TRUE(selection, NS_ERROR_NULL_POINTER); + + nsAutoEditBatch beginBatching(this); + nsAutoRules beginRulesSniffing(this, kOpInsertQuotation, nsIEditor::eNext); - // give rules a chance to handle or cancel - nsTextRulesInfo ruleInfo(nsTextEditRules::kInsertElement); - bool cancel, handled; - rv = mRules->WillDoAction(selection, &ruleInfo, &cancel, &handled); - NS_ENSURE_SUCCESS(rv, rv); - if (cancel) return NS_OK; // rules canceled the operation - if (!handled) + // give rules a chance to handle or cancel + nsTextRulesInfo ruleInfo(nsTextEditRules::kInsertElement); + bool cancel, handled; + rv = mRules->WillDoAction(selection, &ruleInfo, &cancel, &handled); + NS_ENSURE_SUCCESS(rv, rv); + if (cancel) return NS_OK; // rules canceled the operation + if (!handled) + { + // Wrap the inserted quote in a <span> so it won't be wrapped: + rv = DeleteSelectionAndCreateNode(NS_LITERAL_STRING("span"), getter_AddRefs(preNode)); + + // If this succeeded, then set selection inside the pre + // so the inserted text will end up there. + // If it failed, we don't care what the return value was, + // but we'll fall through and try to insert the text anyway. + if (NS_SUCCEEDED(rv) && preNode) { - // Wrap the inserted quote in a <pre> so it won't be wrapped: - nsAutoString tag; - if (quotesInPre) - tag.AssignLiteral("pre"); - else - tag.AssignLiteral("span"); - - rv = DeleteSelectionAndCreateNode(tag, getter_AddRefs(preNode)); - - // If this succeeded, then set selection inside the pre - // so the inserted text will end up there. - // If it failed, we don't care what the return value was, - // but we'll fall through and try to insert the text anyway. - if (NS_SUCCEEDED(rv) && preNode) + // Add an attribute on the pre node so we'll know it's a quotation. + // Do this after the insertion, so that + nsCOMPtr<nsIDOMElement> preElement(do_QueryInterface(preNode)); + if (preElement) { - // Add an attribute on the pre node so we'll know it's a quotation. - // Do this after the insertion, so that - nsCOMPtr<nsIDOMElement> preElement (do_QueryInterface(preNode)); - if (preElement) - { - preElement->SetAttribute(NS_LITERAL_STRING("_moz_quote"), - NS_LITERAL_STRING("true")); - if (quotesInPre) - { - // set style to not have unwanted vertical margins - preElement->SetAttribute(NS_LITERAL_STRING("style"), - NS_LITERAL_STRING("margin: 0 0 0 0px;")); - } - else - { - // turn off wrapping on spans - preElement->SetAttribute(NS_LITERAL_STRING("style"), - NS_LITERAL_STRING("white-space: pre;")); - } - } + preElement->SetAttribute(NS_LITERAL_STRING("_moz_quote"), + NS_LITERAL_STRING("true")); + // turn off wrapping on spans + preElement->SetAttribute(NS_LITERAL_STRING("style"), + NS_LITERAL_STRING("white-space: pre;")); + } + // and set the selection inside it: + selection->Collapse(preNode, 0); + } - // and set the selection inside it: - selection->Collapse(preNode, 0); - } + if (aAddCites) + rv = nsPlaintextEditor::InsertAsQuotation(aQuotedText, aNodeInserted); + else + rv = nsPlaintextEditor::InsertText(aQuotedText); + // Note that if !aAddCites, aNodeInserted isn't set. + // That's okay because the routines that use aAddCites + // don't need to know the inserted node. - if (aAddCites) - rv = nsPlaintextEditor::InsertAsQuotation(aQuotedText, aNodeInserted); - else - rv = nsPlaintextEditor::InsertText(aQuotedText); - // Note that if !aAddCites, aNodeInserted isn't set. - // That's okay because the routines that use aAddCites - // don't need to know the inserted node. - - if (aNodeInserted && NS_SUCCEEDED(rv)) - { - *aNodeInserted = preNode; - NS_IF_ADDREF(*aNodeInserted); - } + if (aNodeInserted && NS_SUCCEEDED(rv)) + { + *aNodeInserted = preNode; + NS_IF_ADDREF(*aNodeInserted); } } - + // Set the selection to just after the inserted node: if (NS_SUCCEEDED(rv) && preNode) { nsCOMPtr<nsIDOMNode> parent; PRInt32 offset; if (NS_SUCCEEDED(GetNodeLocation(preNode, address_of(parent), &offset)) && parent) selection->Collapse(parent, offset+1); }
--- a/js/src/tests/e4x/Regress/regress-308111.js +++ b/js/src/tests/e4x/Regress/regress-308111.js @@ -752,17 +752,16 @@ var xml = <prefs> <pref><name>browser.search.selectedEngine</name></pref> <pref><name>capability.policy.mailnews.SOAPEncoding.getDecoder</name></pref> <pref><name>general.autoScroll</name></pref> <pref><name>font.default.x-western</name></pref> <pref><name>browser.display.use_system_colors</name></pref> <pref><name>extensions.ignoreMTimeChanges</name></pref> <pref><name>network.hosts.pop_server</name></pref> <pref><name>privacy.item.history</name></pref> -<pref><name>editor.quotesPreformatted</name></pref> <pref><name>security.password_lifetime</name></pref> <pref><name>security.ssl3.dhe_dss_aes_128_sha</name></pref> <pref><name>font.name.monospace.x-tamil</name></pref> <pref><name>xpinstall.dialog.progress.type.chrome</name></pref> <pref><name>capability.policy.mailnews.SchemaLoader.processSchemaElement</name></pref> <pref><name>capability.policy.mailnews.DOMParser,parseFromString</name></pref> <pref><name>network.http.proxy.pipelining</name></pref> <pref><name>security.ssl3.rsa_1024_rc4_56_sha</name></pref>
--- a/modules/libpref/src/init/all.js +++ b/modules/libpref/src/init/all.js @@ -402,17 +402,16 @@ pref("print.print_edge_bottom", 0); // in a document. pref("extensions.spellcheck.inline.max-misspellings", 500); // Prefs used by libeditor. Prefs specific to seamonkey composer // belong in comm-central/editor/ui/composer.js pref("editor.use_custom_colors", false); pref("editor.singleLine.pasteNewlines", 2); -pref("editor.quotesPreformatted", false); pref("editor.use_css", true); pref("editor.css.default_length_unit", "px"); pref("editor.resizing.preserve_ratio", true); pref("editor.positioning.offset", 0); // Default Capability Preferences: Security-Critical! // Editing these may create a security risk - be sure you know what you're doing