// This function finds the destination when following a given nsIRDFResource
// If the resource has a URL attribute, we use that. If not, just use
// the uri.
//
// Do NOT try to get the destination of a uri in any other way
void nsHTTPIndex::GetDestination(nsIRDFResource* r, nsXPIDLCString& dest) {
  // First try the URL attribute
  nsCOMPtr<nsIRDFNode> node;
  
  GetTarget(r, kNC_URL, true, getter_AddRefs(node));
  nsCOMPtr<nsIRDFLiteral> url;
  
  if (node)
    url = do_QueryInterface(node);

  if (!url) {
     const char* temp;
     r->GetValueConst(&temp);
     dest.Adopt(temp ? strdup(temp) : 0);
  } else {
    const char16_t* uri;
    url->GetValueConst(&uri);
    dest.Adopt(ToNewUTF8String(nsDependentString(uri)));
  }
}
示例#2
0
/* Get prefs for printer
 * Search order:
 * - Get prefs per printer name and module name
 * - Get prefs per printer name
 * - Get prefs per module name
 * - Get prefs
 */
static
nsresult CopyPrinterCharPref(nsIPrefBranch *pref, const char *modulename, const char *printername,
                             const char *prefname, nsXPIDLCString &return_buf)
{
  DO_PR_DEBUG_LOG(("CopyPrinterCharPref('%s', '%s', '%s')\n", modulename, printername, prefname));

  nsresult rv = NS_ERROR_FAILURE;
 
  if (printername && modulename) {
    /* Get prefs per printer name and module name */
    nsPrintfCString name(512, "print.%s.printer_%s.%s", modulename, printername, prefname);
    DO_PR_DEBUG_LOG(("trying to get '%s'\n", name.get()));
    rv = pref->GetCharPref(name.get(), getter_Copies(return_buf));
  }
  
  if (NS_FAILED(rv)) { 
    if (printername) {
      /* Get prefs per printer name */
      nsPrintfCString name(512, "print.printer_%s.%s", printername, prefname);
      DO_PR_DEBUG_LOG(("trying to get '%s'\n", name.get()));
      rv = pref->GetCharPref(name.get(), getter_Copies(return_buf));
    }

    if (NS_FAILED(rv)) {
      if (modulename) {
        /* Get prefs per module name */
        nsPrintfCString name(512, "print.%s.%s", modulename, prefname);
        DO_PR_DEBUG_LOG(("trying to get '%s'\n", name.get()));
        rv = pref->GetCharPref(name.get(), getter_Copies(return_buf));
      }
      
      if (NS_FAILED(rv)) {
        /* Get prefs */
        nsPrintfCString name(512, "print.%s", prefname);
        DO_PR_DEBUG_LOG(("trying to get '%s'\n", name.get()));
        rv = pref->GetCharPref(name.get(), getter_Copies(return_buf));
      }
    }
  }

#ifdef PR_LOG  
  if (NS_SUCCEEDED(rv)) {
    DO_PR_DEBUG_LOG(("CopyPrinterCharPref returning '%s'.\n", return_buf.get()));
  }
  else
  {
    DO_PR_DEBUG_LOG(("CopyPrinterCharPref failure.\n"));
  }
#endif /* PR_LOG */

  return rv;
}
/* Formats an error message for non-certificate-related SSL errors
 * and non-overridable certificate errors (both are of type
 * PlainErrormMessage). Use formatOverridableCertErrorMessage
 * for overridable cert errors.
 */
static nsresult
formatPlainErrorMessage(const nsXPIDLCString &host, int32_t port,
                        PRErrorCode err,
                        bool suppressPort443,
                        nsString &returnedMessage)
{
    static NS_DEFINE_CID(kNSSComponentCID, NS_NSSCOMPONENT_CID);

    const char16_t *params[1];
    nsresult rv;

    nsCOMPtr<nsINSSComponent> component = do_GetService(kNSSComponentCID, &rv);
    NS_ENSURE_SUCCESS(rv, rv);

    if (host.Length())
    {
        nsString hostWithPort;

        // For now, hide port when it's 443 and we're reporting the error.
        // In the future a better mechanism should be used
        // to make a decision about showing the port number, possibly by requiring
        // the context object to implement a specific interface.
        // The motivation is that Mozilla browser would like to hide the port number
        // in error pages in the common case.

        hostWithPort.AssignASCII(host);
        if (!suppressPort443 || port != 443) {
            hostWithPort.Append(':');
            hostWithPort.AppendInt(port);
        }
        params[0] = hostWithPort.get();

        nsString formattedString;
        rv = component->PIPBundleFormatStringFromName("SSLConnectionErrorPrefix",
                params, 1,
                formattedString);
        if (NS_SUCCEEDED(rv))
        {
            returnedMessage.Append(formattedString);
            returnedMessage.AppendLiteral("\n\n");
        }
    }

    nsString explanation;
    rv = nsNSSErrors::getErrorMessageFromCode(err, component, explanation);
    if (NS_SUCCEEDED(rv))
        returnedMessage.Append(explanation);

    return NS_OK;
}
void nsPrinterFeatures::SetCharValue(  const char *tagname, const char *value )
{
  nsPrintfCString prefName(PRINTERFEATURES_PREF ".%s.%s",
                           mPrinterName.get(), tagname);
  Preferences::SetCString(prefName.get(), value);
}
示例#5
0
void nsPrinterFeatures::SetIntValue(  const char *tagname, PRInt32 value )
{
  nsPrintfCString prefName(256, PRINTERFEATURES_PREF ".%s.%s",
                           mPrinterName.get(), tagname);
  Preferences::SetInt(prefName.get(), value);
}
示例#6
0
void nsPrinterFeatures::SetCharValue(  const char *tagname, const char *value )
{
  mPrefs->SetCharPref(nsPrintfCString(256, PRINTERFEATURES_PREF ".%s.%s", mPrinterName.get(), tagname).get(), value);
}