bool TestKeywords() { nsCSSKeywords::AddRefTable(); bool success = true; nsCSSKeyword id; nsCSSKeyword index; extern const char* const 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*const* et = &kCSSRawKeywords[0]; const char*const* 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(int32_t(index) + 1); id = nsCSSKeywords::LookupKeyword(nsCString(tagName)); if (id <= eCSSKeyword_UNKNOWN) { printf("bug: can't find '%s'\n", tagName); success = false; } if (id != index) { printf("bug: name='%s' id=%d index=%d\n", tagName, id, index); success = false; } // 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(nsCString(tagName)); if (id <= eCSSKeyword_UNKNOWN) { printf("bug: can't find '%s'\n", tagName); success = false; } if (id != index) { printf("bug: name='%s' id=%d index=%d\n", tagName, id, index); success = false; } et++; } // Now make sure we don't find some garbage for (int i = 0; i < (int) (sizeof(kJunkNames) / sizeof(const char*)); i++) { const char* const tag = kJunkNames[i]; id = nsCSSKeywords::LookupKeyword(nsAutoCString(tag)); if (eCSSKeyword_UNKNOWN < id) { printf("bug: found '%s'\n", tag ? tag : "(null)"); success = false; } } nsCSSKeywords::ReleaseTable(); return success; }
nsresult nsEudoraFilters::AddAction(nsMsgRuleActionType actionType, int32_t junkScore /*= 0*/, nsMsgLabelValue label/*= 0*/, nsMsgPriorityValue priority/*= 0*/, const char* strValue/*= nullptr*/, const char* targetFolderUri/*= nullptr*/) { nsresult rv; uint32_t numFilters; rv = m_pFilterArray->GetLength(&numFilters); NS_ENSURE_SUCCESS(rv, rv); for (uint32_t filterIndex = 0; filterIndex < numFilters; filterIndex++) { nsCOMPtr<nsIMsgFilter> filter = do_QueryElementAt(m_pFilterArray, filterIndex, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIMsgRuleAction> action; rv = filter->CreateAction(getter_AddRefs(action)); NS_ENSURE_SUCCESS(rv, rv); rv = action->SetType(actionType); NS_ENSURE_SUCCESS(rv, rv); switch (actionType) { case nsMsgFilterAction::MoveToFolder: case nsMsgFilterAction::CopyToFolder: rv = action->SetTargetFolderUri(nsAutoCString(targetFolderUri)); break; case nsMsgFilterAction::ChangePriority: rv = action->SetPriority(priority); break; case nsMsgFilterAction::JunkScore: rv = action->SetJunkScore(junkScore); break; case nsMsgFilterAction::AddTag: case nsMsgFilterAction::Reply: case nsMsgFilterAction::Forward: rv = action->SetStrValue(nsAutoCString(strValue)); break; case nsMsgFilterAction::MarkRead: case nsMsgFilterAction::StopExecution: case nsMsgFilterAction::DeleteFromPop3Server: case nsMsgFilterAction::LeaveOnPop3Server: case nsMsgFilterAction::FetchBodyFromPop3Server: // No parameters for these break; case nsMsgFilterAction::Delete: case nsMsgFilterAction::KillThread: case nsMsgFilterAction::WatchThread: case nsMsgFilterAction::MarkFlagged: case nsMsgFilterAction::Label: default: // Something we don't handle return NS_ERROR_FAILURE; } NS_ENSURE_SUCCESS(rv, rv); rv = filter->AppendAction(action); NS_ENSURE_SUCCESS(rv, rv); } m_addedAction = true; return rv; }
static bool TestProps() { bool success = true; nsCSSProperty id; nsCSSProperty index; // Everything appears to assert if we don't do this first... nsCSSProps::AddRefTable(); // 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 extern const char* const kCSSRawProperties[]; const char*const* et = &kCSSRawProperties[0]; const char*const* end = &kCSSRawProperties[eCSSProperty_COUNT]; index = eCSSProperty_UNKNOWN; while (et < end) { char tagName[100]; PL_strcpy(tagName, *et); index = nsCSSProperty(int32_t(index) + 1); id = nsCSSProps::LookupProperty(nsCString(tagName), nsCSSProps::eIgnoreEnabledState); if (id == eCSSProperty_UNKNOWN) { printf("bug: can't find '%s'\n", tagName); success = false; } if (id != index) { printf("bug: name='%s' id=%d index=%d\n", tagName, id, index); success = false; } // 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 = nsCSSProps::LookupProperty(NS_ConvertASCIItoUTF16(tagName), nsCSSProps::eIgnoreEnabledState); if (id < 0) { printf("bug: can't find '%s'\n", tagName); success = false; } if (index != id) { printf("bug: name='%s' id=%d index=%d\n", tagName, id, index); success = false; } et++; } // Now make sure we don't find some garbage for (int i = 0; i < (int) (sizeof(kJunkNames) / sizeof(const char*)); i++) { const char* const tag = kJunkNames[i]; id = nsCSSProps::LookupProperty(nsAutoCString(tag), nsCSSProps::eIgnoreEnabledState); if (id >= 0) { printf("bug: found '%s'\n", tag ? tag : "(null)"); success = false; } } nsCSSProps::ReleaseTable(); return success; }