id = nsCSSKeywords::LookupKeyword(nsSubsumeCStr(tagName, PR_FALSE));
id = nsCSSKeywords::LookupKeyword(nsCString(tagName));
int TestKeywords() {  nsCSSKeywords::AddRefTable();  int rv = 0;  nsCSSKeyword id;  nsCSSKeyword index;  extern const char* kCSSRawKeywords[];  // First make sure we can find all of the tags that are supposed to  // be in the table. Futz with the case to make sure any case will  // work  const char**  et = &kCSSRawKeywords[0];  const char**  end = &kCSSRawKeywords[eCSSKeyword_COUNT - 1];  index = eCSSKeyword_UNKNOWN;  while (et < end) {    char tagName[512];    char* underscore = &(tagName[0]);    PL_strcpy(tagName, *et);    while (*underscore) {      if (*underscore == '_') {        *underscore = '-';      }      underscore++;    }    index = nsCSSKeyword(PRInt32(index) + 1);    id = nsCSSKeywords::LookupKeyword(nsSubsumeCStr(tagName, PR_FALSE));    if (id <= eCSSKeyword_UNKNOWN) {      printf("bug: can't find '%s'\n", tagName);      rv = -1;    }    if (id != index) {      printf("bug: name='%s' id=%d index=%d\n", tagName, id, index);      rv = -1;    }    // fiddle with the case to make sure we can still find it    if (('a' <= tagName[0]) && (tagName[0] <= 'z')) {      tagName[0] = tagName[0] - 32;    }    id = nsCSSKeywords::LookupKeyword(nsSubsumeCStr(tagName, PR_FALSE));    if (id <= eCSSKeyword_UNKNOWN) {      printf("bug: can't find '%s'\n", tagName);      rv = -1;    }    if (id != index) {      printf("bug: name='%s' id=%d index=%d\n", tagName, id, index);      rv = -1;    }    et++;  }  // Now make sure we don't find some garbage  for (int i = 0; i < (int) (sizeof(kJunkNames) / sizeof(const char*)); i++) {    const char* tag = kJunkNames[i];    id = nsCSSKeywords::LookupKeyword(nsCAutoString(tag));    if (eCSSKeyword_UNKNOWN < id) {      printf("bug: found '%s'\n", tag ? tag : "(null)");      rv = -1;    }  }  nsCSSKeywords::ReleaseTable();  return rv;}