NS_IMETHODIMP nsSetDocumentOptionsCommand::GetCommandStateParams(const char *aCommandName, nsICommandParams *aParams, nsISupports *refCon) { NS_ENSURE_ARG_POINTER(aParams); NS_ENSURE_ARG_POINTER(refCon); // The base editor owns most state info nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon); if (!editor) return NS_ERROR_INVALID_ARG; // Always get the enabled state PRBool outCmdEnabled = PR_FALSE; IsCommandEnabled(aCommandName, refCon, &outCmdEnabled); nsresult rv = aParams->SetBooleanValue(STATE_ENABLED, outCmdEnabled); NS_ENSURE_SUCCESS(rv, rv); // get pres context nsCOMPtr<nsPresContext> presContext; rv = GetPresContextFromEditor(editor, getter_AddRefs(presContext)); if (NS_FAILED(rv)) return rv; if (!presContext) return NS_ERROR_FAILURE; PRInt32 animationMode; rv = aParams->GetLongValue("imageAnimation", &animationMode); if (NS_SUCCEEDED(rv)) { // for possible values of animation mode, see // http://lxr.mozilla.org/seamonkey/source/modules/libpr0n/public/imgIContainer.idl rv = aParams->SetLongValue("imageAnimation", presContext->ImageAnimationMode()); if (NS_FAILED(rv)) return rv; } PRBool allowPlugins; rv = aParams->GetBooleanValue("plugins", &allowPlugins); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsISupports> container = presContext->GetContainer(); if (!container) return NS_ERROR_FAILURE; nsCOMPtr<nsIDocShell> docShell(do_QueryInterface(container, &rv)); if (NS_FAILED(rv)) return rv; if (!docShell) return NS_ERROR_FAILURE; rv = docShell->GetAllowPlugins(&allowPlugins); if (NS_FAILED(rv)) return rv; rv = aParams->SetBooleanValue("plugins", allowPlugins); if (NS_FAILED(rv)) return rv; } return NS_OK; }
NS_IMETHODIMP nsSetDocumentOptionsCommand::GetCommandStateParams(const char *aCommandName, nsICommandParams *aParams, nsISupports *refCon) { NS_ENSURE_ARG_POINTER(aParams); NS_ENSURE_ARG_POINTER(refCon); // The base editor owns most state info nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon); NS_ENSURE_TRUE(editor, NS_ERROR_INVALID_ARG); // Always get the enabled state bool outCmdEnabled = false; IsCommandEnabled(aCommandName, refCon, &outCmdEnabled); nsresult rv = aParams->SetBooleanValue(STATE_ENABLED, outCmdEnabled); NS_ENSURE_SUCCESS(rv, rv); // get pres context nsRefPtr<nsPresContext> presContext; rv = GetPresContextFromEditor(editor, getter_AddRefs(presContext)); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(presContext, NS_ERROR_FAILURE); int32_t animationMode; rv = aParams->GetLongValue("imageAnimation", &animationMode); if (NS_SUCCEEDED(rv)) { // for possible values of animation mode, see // http://lxr.mozilla.org/seamonkey/source/image/public/imgIContainer.idl rv = aParams->SetLongValue("imageAnimation", presContext->ImageAnimationMode()); NS_ENSURE_SUCCESS(rv, rv); } bool allowPlugins = false; rv = aParams->GetBooleanValue("plugins", &allowPlugins); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsIDocShell> docShell(presContext->GetDocShell()); NS_ENSURE_TRUE(docShell, NS_ERROR_FAILURE); allowPlugins = docShell->PluginsAllowedInCurrentDoc(); rv = aParams->SetBooleanValue("plugins", allowPlugins); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }
NS_IMETHODIMP nsSetDocumentOptionsCommand::DoCommandParams(const char *aCommandName, nsICommandParams *aParams, nsISupports *refCon) { NS_ENSURE_ARG_POINTER(aParams); nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon); NS_ENSURE_TRUE(editor, NS_ERROR_INVALID_ARG); nsRefPtr<nsPresContext> presContext; nsresult rv = GetPresContextFromEditor(editor, getter_AddRefs(presContext)); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(presContext, NS_ERROR_FAILURE); PRInt32 animationMode; rv = aParams->GetLongValue("imageAnimation", &animationMode); if (NS_SUCCEEDED(rv)) { // for possible values of animation mode, see: // http://lxr.mozilla.org/seamonkey/source/image/public/imgIContainer.idl presContext->SetImageAnimationMode(animationMode); } bool allowPlugins; rv = aParams->GetBooleanValue("plugins", &allowPlugins); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsISupports> container = presContext->GetContainer(); NS_ENSURE_TRUE(container, NS_ERROR_FAILURE); nsCOMPtr<nsIDocShell> docShell(do_QueryInterface(container, &rv)); NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_TRUE(docShell, NS_ERROR_FAILURE); rv = docShell->SetAllowPlugins(allowPlugins); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }