diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp
index 8aae201c20f..2dfada56d18 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp
@@ -4008,7 +4008,35 @@ nsHTMLDocument::QueryCommandIndeterm(const nsAString & commandID,
if (!mEditingIsOn)
return NS_ERROR_FAILURE;
- return NS_ERROR_NOT_IMPLEMENTED;
+ // get command manager and dispatch command to our window if it's acceptable
+ nsCOMPtr cmdMgr;
+ GetMidasCommandManager(getter_AddRefs(cmdMgr));
+ if (!cmdMgr)
+ return NS_ERROR_FAILURE;
+
+ nsCOMPtr window = do_QueryInterface(mScriptGlobalObject);
+ if (!window)
+ return NS_ERROR_FAILURE;
+
+ nsCAutoString cmdToDispatch, paramToCheck;
+ PRBool dummy;
+ if (!ConvertToMidasInternalCommand(commandID, commandID,
+ cmdToDispatch, paramToCheck, dummy, dummy))
+ return NS_ERROR_NOT_IMPLEMENTED;
+
+ nsresult rv;
+ nsCOMPtr cmdParams = do_CreateInstance(
+ NS_COMMAND_PARAMS_CONTRACTID, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = cmdMgr->GetCommandState(cmdToDispatch.get(), window, cmdParams);
+ if (NS_FAILED(rv))
+ return rv;
+
+ // if command does not have a state_mixed value, this call fails, so we fail too,
+ // which is what is expected
+ rv = cmdParams->GetBooleanValue("state_mixed", _retval);
+ return rv;
}
/* boolean queryCommandState(in DOMString commandID); */