зеркало из https://github.com/mozilla/gecko-dev.git
add functionality to gethtml (cmd_getContents) using queryCommandValue; r=mkaply, sr=smfr, bug=208467
This commit is contained in:
Родитель
917018d64b
Коммит
38615ac8d3
|
@ -4174,6 +4174,7 @@ static const struct MidasCommand gMidasCommandTable[] = {
|
|||
{ "createlink", "cmd_insertLinkNoUI", "", PR_FALSE, PR_FALSE },
|
||||
{ "insertimage", "cmd_insertImageNoUI", "", PR_FALSE, PR_FALSE },
|
||||
{ "inserthtml", "cmd_insertHTML", "", PR_FALSE, PR_FALSE },
|
||||
{ "gethtml", "cmd_getContents", "", PR_FALSE, PR_FALSE },
|
||||
{ "justifyleft", "cmd_align", "left", PR_TRUE, PR_FALSE },
|
||||
{ "justifyright", "cmd_align", "right", PR_TRUE, PR_FALSE },
|
||||
{ "justifycenter", "cmd_align", "center", PR_TRUE, PR_FALSE },
|
||||
|
@ -4366,6 +4367,9 @@ nsHTMLDocument::ExecCommand(const nsAString & commandID,
|
|||
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (commandID.Equals(NS_LITERAL_STRING("gethtml"), nsCaseInsensitiveStringComparator()))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (commandID.Equals(NS_LITERAL_STRING("cut"), nsCaseInsensitiveStringComparator()) ||
|
||||
(commandID.Equals(NS_LITERAL_STRING("copy"), nsCaseInsensitiveStringComparator()))) {
|
||||
rv = DoClipboardSecurityCheck(PR_FALSE);
|
||||
|
@ -4604,6 +4608,20 @@ nsHTMLDocument::QueryCommandValue(const nsAString & commandID,
|
|||
NS_COMMAND_PARAMS_CONTRACTID, &rv);
|
||||
if (!cmdParams)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
// this is a special command since we are calling "DoCommand rather than
|
||||
// GetCommandState like the other commands
|
||||
if (cmdToDispatch.Equals("cmd_getContents"))
|
||||
{
|
||||
rv = cmdParams->SetBooleanValue("selection_only", PR_TRUE);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = cmdParams->SetCStringValue("format", "text/html");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = cmdMgr->DoCommand(cmdToDispatch.get(), cmdParams, window);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
return cmdParams->GetStringValue("result", _retval);
|
||||
}
|
||||
|
||||
rv = cmdParams->SetCStringValue("state_attribute", paramStr.get());
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
@ -4612,18 +4630,16 @@ nsHTMLDocument::QueryCommandValue(const nsAString & commandID,
|
|||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
char *cStringResult = nsnull;
|
||||
rv = cmdParams->GetCStringValue("state_attribute", &cStringResult);
|
||||
if (NS_SUCCEEDED(rv) && cStringResult && cStringResult[0]) {
|
||||
_retval.Assign(NS_ConvertUTF8toUCS2(cStringResult));
|
||||
}
|
||||
else if (NS_FAILED(rv)) {
|
||||
// get string value if it's not a c-string; might be a font name
|
||||
if (cmdToDispatch.Equals("cmd_fontFace"))
|
||||
rv = cmdParams->GetStringValue("state_attribute", _retval);
|
||||
}
|
||||
else {
|
||||
char *cStringResult = nsnull;
|
||||
rv = cmdParams->GetCStringValue("state_attribute", &cStringResult);
|
||||
if (NS_SUCCEEDED(rv) && cStringResult && cStringResult[0])
|
||||
_retval.Assign(NS_ConvertUTF8toUCS2(cStringResult));
|
||||
|
||||
if (cStringResult) {
|
||||
nsMemory::Free(cStringResult);
|
||||
if (cStringResult)
|
||||
nsMemory::Free(cStringResult);
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
|
Загрузка…
Ссылка в новой задаче