diff --git a/mozilla/content/base/src/nsCopySupport.cpp b/mozilla/content/base/src/nsCopySupport.cpp index 4f19eb660ba..a2d940dcfb2 100644 --- a/mozilla/content/base/src/nsCopySupport.cpp +++ b/mozilla/content/base/src/nsCopySupport.cpp @@ -114,7 +114,7 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 if (NS_FAILED(rv)) return rv; - nsAutoString buffer, parents, info, shortcut, textBuffer, plaintextBuffer; + nsAutoString buffer, parents, info, textBuffer, plaintextBuffer; rv = docEncoder->EncodeToString(textBuffer); if (NS_FAILED(rv)) @@ -135,7 +135,8 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 nsCOMPtr ConvertedData; PRUint32 ConvertedLen; - htmlConverter->Convert(kHTMLMime, plainHTML, textBuffer.Length() * 2, kUnicodeMime, getter_AddRefs(ConvertedData), &ConvertedLen); + rv = htmlConverter->Convert(kHTMLMime, plainHTML, textBuffer.Length() * 2, kUnicodeMime, getter_AddRefs(ConvertedData), &ConvertedLen); + NS_ENSURE_SUCCESS(rv, rv); ConvertedData->GetData(plaintextBuffer); @@ -144,17 +145,14 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 flags = 0; rv = docEncoder->Init(aDoc, mimeType, flags); - if (NS_FAILED(rv)) - return rv; + NS_ENSURE_SUCCESS(rv, rv); + rv = docEncoder->SetSelection(aSel); - if (NS_FAILED(rv)) - return rv; + NS_ENSURE_SUCCESS(rv, rv); // encode the selection as html with contextual info rv = docEncoder->EncodeToStringWithContext(buffer, parents, info); - if (NS_FAILED(rv)) - return rv; - + NS_ENSURE_SUCCESS(rv, rv); } // Get the Clipboard @@ -173,18 +171,6 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 // set up the data converter trans->SetConverter(htmlConverter); - // Try and get source URI of the items that are being dragged - nsIURI *uri = aDoc->GetDocumentURI(); - - nsCAutoString spec; - uri->GetSpec(spec); - - AppendUTF8toUTF16(spec, shortcut); - shortcut.Append(PRUnichar('\n')); - - // and get document title - shortcut.Append(aDoc->GetDocumentTitle()); - if (!buffer.IsEmpty()) { // Add the html DataFlavor to the transferable @@ -213,14 +199,23 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 rv = AppendString(trans, plaintextBuffer, kUnicodeMime); NS_ENSURE_SUCCESS(rv, rv); } - // url - if (!shortcut.IsEmpty()) - { - // Add the URL DataFlavor to the transferable - rv = AppendString(trans, shortcut, kURLMime); - NS_ENSURE_SUCCESS(rv, rv); - } + // Try and get source URI of the items that are being dragged + nsIURI *uri = aDoc->GetDocumentURI(); + if (uri) { + nsCAutoString spec; + uri->GetSpec(spec); + if (!spec.IsEmpty()) { + nsAutoString shortcut; + AppendUTF8toUTF16(spec, shortcut); + shortcut.Append(PRUnichar('\n')); + shortcut.Append(aDoc->GetDocumentTitle()); + + // Add the URL DataFlavor to the transferable + rv = AppendString(trans, shortcut, kURLMime); + NS_ENSURE_SUCCESS(rv, rv); + } + } } else { diff --git a/mozilla/widget/src/xpwidgets/nsHTMLFormatConverter.cpp b/mozilla/widget/src/xpwidgets/nsHTMLFormatConverter.cpp index 7c36c18a1d7..c26b467c40e 100644 --- a/mozilla/widget/src/xpwidgets/nsHTMLFormatConverter.cpp +++ b/mozilla/widget/src/xpwidgets/nsHTMLFormatConverter.cpp @@ -235,48 +235,46 @@ nsHTMLFormatConverter::Convert(const char *aFromDataFlavor, nsISupports *aFromDa // class of nsISupportsString. Also, since the data is in two byte chunks the // length represents the length in 1-byte chars, so we need to divide by two. nsCOMPtr dataWrapper0 ( do_QueryInterface(aFromData) ); - if ( dataWrapper0 ) { - nsAutoString dataStr; - dataWrapper0->GetData ( dataStr ); //еее COPY #1 - if ( !dataStr.IsEmpty() ) { + if (!dataWrapper0) { + return NS_ERROR_INVALID_ARG; + } - // note: conversion to text/plain is done inside the clipboard. we do not need to worry - // about it here. - if ( toFlavor.Equals(kHTMLMime) || toFlavor.Equals(kUnicodeMime) ) { - nsresult res; - if (toFlavor.Equals(kHTMLMime)) { - PRInt32 dataLen = dataStr.Length() * 2; - nsPrimitiveHelpers::CreatePrimitiveForData ( toFlavor.get(), (void*)dataStr.get(), dataLen, aToData ); - if ( *aToData ) - *aDataToLen = dataLen; - } else { - nsAutoString outStr; - res = ConvertFromHTMLToUnicode(dataStr, outStr); - if (NS_SUCCEEDED(res)) { - PRInt32 dataLen = outStr.Length() * 2; - nsPrimitiveHelpers::CreatePrimitiveForData ( toFlavor.get(), (void*)outStr.get(), dataLen, aToData ); - if ( *aToData ) - *aDataToLen = dataLen; - } - } - } // else if HTML or Unicode - else if ( toFlavor.Equals(kAOLMailMime) ) { - nsAutoString outStr; - if ( NS_SUCCEEDED(ConvertFromHTMLToAOLMail(dataStr, outStr)) ) { - PRInt32 dataLen = outStr.Length() * 2; - nsPrimitiveHelpers::CreatePrimitiveForData ( toFlavor.get(), (void*)outStr.get(), dataLen, aToData ); - if ( *aToData ) - *aDataToLen = dataLen; - } - } // else if AOL mail - else { - *aToData = nsnull; - *aDataToLen = 0; - rv = NS_ERROR_FAILURE; + nsAutoString dataStr; + dataWrapper0->GetData ( dataStr ); //еее COPY #1 + // note: conversion to text/plain is done inside the clipboard. we do not need to worry + // about it here. + if ( toFlavor.Equals(kHTMLMime) || toFlavor.Equals(kUnicodeMime) ) { + nsresult res; + if (toFlavor.Equals(kHTMLMime)) { + PRInt32 dataLen = dataStr.Length() * 2; + nsPrimitiveHelpers::CreatePrimitiveForData ( toFlavor.get(), (void*)dataStr.get(), dataLen, aToData ); + if ( *aToData ) + *aDataToLen = dataLen; + } else { + nsAutoString outStr; + res = ConvertFromHTMLToUnicode(dataStr, outStr); + if (NS_SUCCEEDED(res)) { + PRInt32 dataLen = outStr.Length() * 2; + nsPrimitiveHelpers::CreatePrimitiveForData ( toFlavor.get(), (void*)outStr.get(), dataLen, aToData ); + if ( *aToData ) + *aDataToLen = dataLen; } } + } // else if HTML or Unicode + else if ( toFlavor.Equals(kAOLMailMime) ) { + nsAutoString outStr; + if ( NS_SUCCEEDED(ConvertFromHTMLToAOLMail(dataStr, outStr)) ) { + PRInt32 dataLen = outStr.Length() * 2; + nsPrimitiveHelpers::CreatePrimitiveForData ( toFlavor.get(), (void*)outStr.get(), dataLen, aToData ); + if ( *aToData ) + *aDataToLen = dataLen; + } + } // else if AOL mail + else { + *aToData = nsnull; + *aDataToLen = 0; + rv = NS_ERROR_FAILURE; } - } // if we got html mime else rv = NS_ERROR_FAILURE;