nsresult Convert(const nsAString& aIn, BluetoothPinCode& aOut) { if (NS_WARN_IF(aIn.Length() > MOZ_ARRAY_LENGTH(aOut.mPinCode))) { return NS_ERROR_ILLEGAL_VALUE; } NS_ConvertUTF16toUTF8 pinCodeUTF8(aIn); const char* str = pinCodeUTF8.get(); nsAString::size_type i; // Fill pin into aOut for (i = 0; i < aIn.Length(); ++i, ++str) { aOut.mPinCode[i] = static_cast<uint8_t>(*str); } // Clear remaining bytes in aOut size_t ntrailing = (MOZ_ARRAY_LENGTH(aOut.mPinCode) - aIn.Length()) * sizeof(aOut.mPinCode[0]); memset(aOut.mPinCode + aIn.Length(), 0, ntrailing); aOut.mLength = aIn.Length(); return NS_OK; }
namespace mozilla { struct ProfileConfig { const char* name; int quality; }; #define DEF_GONK_RECORDER_PROFILE(e, n) { n, e }, static const ProfileConfig ProfileList[] = { #include "GonkRecorderProfiles.def" }; static const size_t ProfileListSize = MOZ_ARRAY_LENGTH(ProfileList); struct ProfileConfigDetect { const char* name; uint32_t width; uint32_t height; }; #define DEF_GONK_RECORDER_PROFILE_DETECT(n, w, h) { n, w, h }, static const ProfileConfigDetect ProfileListDetect[] = { #include "GonkRecorderProfiles.def" }; static const size_t ProfileListDetectSize = MOZ_ARRAY_LENGTH(ProfileListDetect); };
/* static */ bool MP4Decoder::CanCreateAACDecoder() { #ifdef XP_WIN static bool haveCachedResult = false; static bool result = false; if (haveCachedResult) { return result; } AudioInfo config; config.mMimeType = "audio/mp4a-latm"; config.mRate = 22050; config.mChannels = 2; config.mBitDepth = 16; config.mProfile = 2; config.mExtendedProfile = 2; config.mCodecSpecificConfig->AppendElements(sTestAACConfig, MOZ_ARRAY_LENGTH(sTestAACConfig)); config.mExtraData->AppendElements(sTestAACExtraData, MOZ_ARRAY_LENGTH(sTestAACExtraData)); nsRefPtr<MediaDataDecoder> decoder(CreateTestAACDecoder(config)); if (decoder) { result = true; } haveCachedResult = true; return result; #else return IsEnabled(); #endif }
int main() { print_array("gLonghandProperties", gLonghandProperties, MOZ_ARRAY_LENGTH(gLonghandProperties), gLonghandPropertiesWithDOMProp, MOZ_ARRAY_LENGTH(gLonghandPropertiesWithDOMProp)); print_array("gShorthandProperties", gShorthandProperties, MOZ_ARRAY_LENGTH(gShorthandProperties), gShorthandPropertiesWithDOMProp, MOZ_ARRAY_LENGTH(gShorthandPropertiesWithDOMProp)); return 0; }
nsresult Convert(BluetoothPropertyType aIn, uint8_t& aOut) { static const uint8_t sPropertyType[] = { CONVERT(PROPERTY_UNKNOWN, 0x00), CONVERT(PROPERTY_BDNAME, 0x01), CONVERT(PROPERTY_BDADDR, 0x02), CONVERT(PROPERTY_UUIDS, 0x03), CONVERT(PROPERTY_CLASS_OF_DEVICE, 0x04), CONVERT(PROPERTY_TYPE_OF_DEVICE, 0x05), CONVERT(PROPERTY_SERVICE_RECORD, 0x06), CONVERT(PROPERTY_ADAPTER_SCAN_MODE, 0x07), CONVERT(PROPERTY_ADAPTER_BONDED_DEVICES, 0x08), CONVERT(PROPERTY_ADAPTER_DISCOVERY_TIMEOUT, 0x09), CONVERT(PROPERTY_REMOTE_FRIENDLY_NAME, 0x0a), CONVERT(PROPERTY_REMOTE_RSSI, 0x0b), CONVERT(PROPERTY_REMOTE_VERSION_INFO, 0x0c), CONVERT(PROPERTY_REMOTE_DEVICE_TIMESTAMP, 0xff) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sPropertyType))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sPropertyType[aIn]; return NS_OK; }
nsresult UploadStumbleRunnable::Upload() { nsresult rv; RefPtr<nsVariant> variant = new nsVariant(); rv = variant->SetAsISupports(mUploadInputStream); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIXMLHttpRequest> xhr = do_CreateInstance(NS_XMLHTTPREQUEST_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIScriptSecurityManager> secman = do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIPrincipal> systemPrincipal; rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal)); NS_ENSURE_SUCCESS(rv, rv); rv = xhr->Init(systemPrincipal, nullptr, nullptr, nullptr); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIURLFormatter> formatter = do_CreateInstance("@mozilla.org/toolkit/URLFormatterService;1", &rv); NS_ENSURE_SUCCESS(rv, rv); nsString url; rv = formatter->FormatURLPref(NS_LITERAL_STRING("geo.stumbler.url"), url); NS_ENSURE_SUCCESS(rv, rv); rv = xhr->Open(NS_LITERAL_CSTRING("POST"), NS_ConvertUTF16toUTF8(url), false, EmptyString(), EmptyString()); NS_ENSURE_SUCCESS(rv, rv); xhr->SetRequestHeader(NS_LITERAL_CSTRING("Content-Type"), NS_LITERAL_CSTRING("gzip")); xhr->SetMozBackgroundRequest(true); // 60s timeout xhr->SetTimeout(60 * 1000); nsCOMPtr<EventTarget> target(do_QueryInterface(xhr)); RefPtr<nsIDOMEventListener> listener = new UploadEventListener(xhr); const char* const sEventStrings[] = { // nsIXMLHttpRequestEventTarget event types "abort", "error", "load", "timeout" }; for (uint32_t index = 0; index < MOZ_ARRAY_LENGTH(sEventStrings); index++) { nsAutoString eventType = NS_ConvertASCIItoUTF16(sEventStrings[index]); rv = target->AddEventListener(eventType, listener, false); NS_ENSURE_SUCCESS(rv, rv); } rv = xhr->Send(variant); NS_ENSURE_SUCCESS(rv, rv); return NS_OK; }
nsresult Convert(uint8_t aIn, BluetoothPropertyType& aOut) { static const BluetoothPropertyType sPropertyType[] = { CONVERT(0x00, static_cast<BluetoothPropertyType>(0)), // invalid, required by gcc CONVERT(0x01, PROPERTY_BDNAME), CONVERT(0x02, PROPERTY_BDADDR), CONVERT(0x03, PROPERTY_UUIDS), CONVERT(0x04, PROPERTY_CLASS_OF_DEVICE), CONVERT(0x05, PROPERTY_TYPE_OF_DEVICE), CONVERT(0x06, PROPERTY_SERVICE_RECORD), CONVERT(0x07, PROPERTY_ADAPTER_SCAN_MODE), CONVERT(0x08, PROPERTY_ADAPTER_BONDED_DEVICES), CONVERT(0x09, PROPERTY_ADAPTER_DISCOVERY_TIMEOUT), CONVERT(0x0a, PROPERTY_REMOTE_FRIENDLY_NAME), CONVERT(0x0b, PROPERTY_REMOTE_RSSI), CONVERT(0x0c, PROPERTY_REMOTE_VERSION_INFO) }; if (aIn == 0xff) { /* This case is handled separately to not populate * |sPropertyType| with empty entries. */ aOut = PROPERTY_REMOTE_DEVICE_TIMESTAMP; return NS_OK; } if (NS_WARN_IF(!aIn) || NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sPropertyType))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sPropertyType[aIn]; return NS_OK; }
void BluetoothDaemonA2dpModule::HandleRsp( const BluetoothDaemonPDUHeader& aHeader, BluetoothDaemonPDU& aPDU, void* aUserData) { static void (BluetoothDaemonA2dpModule::* const HandleRsp[])( const BluetoothDaemonPDUHeader&, BluetoothDaemonPDU&, BluetoothA2dpResultHandler*) = { INIT_ARRAY_AT(OPCODE_ERROR, &BluetoothDaemonA2dpModule::ErrorRsp), INIT_ARRAY_AT(OPCODE_CONNECT, &BluetoothDaemonA2dpModule::ConnectRsp), INIT_ARRAY_AT(OPCODE_DISCONNECT, &BluetoothDaemonA2dpModule::DisconnectRsp), }; MOZ_ASSERT(!NS_IsMainThread()); // I/O thread if (NS_WARN_IF(!(aHeader.mOpcode < MOZ_ARRAY_LENGTH(HandleRsp))) || NS_WARN_IF(!HandleRsp[aHeader.mOpcode])) { return; } nsRefPtr<BluetoothA2dpResultHandler> res = already_AddRefed<BluetoothA2dpResultHandler>( static_cast<BluetoothA2dpResultHandler*>(aUserData)); if (!res) { return; // Return early if no result handler has been set for response } (this->*(HandleRsp[aHeader.mOpcode]))(aHeader, aPDU, res); }
void BluetoothDaemonA2dpModule::HandleNtf( const BluetoothDaemonPDUHeader& aHeader, BluetoothDaemonPDU& aPDU, void* aUserData) { static void (BluetoothDaemonA2dpModule::* const HandleNtf[])( const BluetoothDaemonPDUHeader&, BluetoothDaemonPDU&) = { INIT_ARRAY_AT(0, &BluetoothDaemonA2dpModule::ConnectionStateNtf), INIT_ARRAY_AT(1, &BluetoothDaemonA2dpModule::AudioStateNtf), #if ANDROID_VERSION >= 21 INIT_ARRAY_AT(2, &BluetoothDaemonA2dpModule::AudioConfigNtf), #endif }; MOZ_ASSERT(!NS_IsMainThread()); uint8_t index = aHeader.mOpcode - 0x81; if (NS_WARN_IF(!(index < MOZ_ARRAY_LENGTH(HandleNtf))) || NS_WARN_IF(!HandleNtf[index])) { return; } (this->*(HandleNtf[index]))(aHeader, aPDU); }
static already_AddRefed<MediaDataDecoder> CreateTestH264Decoder(layers::LayersBackend aBackend, VideoInfo& aConfig) { aConfig.mMimeType = "video/avc"; aConfig.mId = 1; aConfig.mDuration = 40000; aConfig.mMediaTime = 0; aConfig.mDisplay = nsIntSize(64, 64); aConfig.mImage = nsIntRect(0, 0, 64, 64); aConfig.mExtraData = new MediaByteBuffer(); aConfig.mExtraData->AppendElements(sTestH264ExtraData, MOZ_ARRAY_LENGTH(sTestH264ExtraData)); PlatformDecoderModule::Init(); nsRefPtr<PlatformDecoderModule> platform = PlatformDecoderModule::Create(); if (!platform) { return nullptr; } nsRefPtr<MediaDataDecoder> decoder( platform->CreateDecoder(aConfig, nullptr, nullptr, aBackend, nullptr)); if (!decoder) { return nullptr; } return decoder.forget(); }
inline int is_inaccessible(const char* aPropName) { for (unsigned j = 0; j < MOZ_ARRAY_LENGTH(gInaccessibleProperties); ++j) { if (strcmp(aPropName, gInaccessibleProperties[j]) == 0) return 1; } return 0; }
static inline const FeatureInfo& GetFeatureInfo(GLFeature feature) { static_assert(MOZ_ARRAY_LENGTH(sFeatureInfoArr) == size_t(GLFeature::EnumMax), "Mismatched lengths for sFeatureInfoInfos and GLFeature enums"); MOZ_ASSERT(feature < GLFeature::EnumMax, "GLContext::GetFeatureInfoInfo : unknown <feature>"); return sFeatureInfoArr[size_t(feature)]; }
static inline const ExtensionGroupInfo& GetExtensionGroupInfo(GLContext::GLExtensionGroup extensionGroup) { static_assert(MOZ_ARRAY_LENGTH(sExtensionGroupInfoArr) == size_t(GLContext::ExtensionGroup_Max), "Mismatched lengths for sExtensionGroupInfos and ExtensionGroup enums"); MOZ_ASSERT(extensionGroup < GLContext::ExtensionGroup_Max, "GLContext::GetExtensionGroupInfo : unknown <extensionGroup>"); return sExtensionGroupInfoArr[extensionGroup]; }
nsresult Convert(const nsAString& aIn, bt_bdaddr_t& aOut) { NS_ConvertUTF16toUTF8 bdAddressUTF8(aIn); const char* str = bdAddressUTF8.get(); for (size_t i = 0; i < MOZ_ARRAY_LENGTH(aOut.address); ++i, ++str) { aOut.address[i] = static_cast<uint8_t>(strtoul(str, const_cast<char**>(&str), 16)); } return NS_OK; }
nsresult Convert(uint8_t aIn, BluetoothHandsfreeVoiceRecognitionState& aOut) { static const BluetoothHandsfreeVoiceRecognitionState sState[] = { CONVERT(0x00, HFP_VOICE_RECOGNITION_STOPPED), CONVERT(0x01, HFP_VOICE_RECOGNITION_STOPPED) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sState))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sState[aIn]; return NS_OK; }
nsresult Convert(uint8_t aIn, BluetoothHandsfreeNRECState& aOut) { static const BluetoothHandsfreeNRECState sNRECState[] = { CONVERT(0x00, HFP_NREC_STOPPED), CONVERT(0x01, HFP_NREC_STARTED) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sNRECState))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sNRECState[aIn]; return NS_OK; }
nsresult Convert(BluetoothAclState aIn, bool& aOut) { static const bool sBool[] = { CONVERT(ACL_STATE_CONNECTED, true), CONVERT(ACL_STATE_DISCONNECTED, false) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sBool))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sBool[aIn]; return NS_OK; }
nsresult Convert(uint8_t aIn, BluetoothHandsfreeVolumeType& aOut) { static const BluetoothHandsfreeVolumeType sVolumeType[] = { CONVERT(0x00, HFP_VOLUME_TYPE_SPEAKER), CONVERT(0x01, HFP_VOLUME_TYPE_MICROPHONE) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sVolumeType))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sVolumeType[aIn]; return NS_OK; }
nsresult Convert(BluetoothAvrcpNotification aIn, uint8_t& aOut) { static const bool sValue[] = { CONVERT(AVRCP_NTF_INTERIM, 0x00), CONVERT(AVRCP_NTF_CHANGED, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sValue))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sValue[aIn]; return NS_OK; }
nsresult Convert(uint8_t aIn, BluetoothAclState& aOut) { static const BluetoothAclState sAclState[] = { CONVERT(0x00, ACL_STATE_CONNECTED), CONVERT(0x01, ACL_STATE_DISCONNECTED), }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sAclState))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sAclState[aIn]; return NS_OK; }
nsresult Convert(uint8_t aIn, bool& aOut) { static const bool sBool[] = { CONVERT(0x00, false), CONVERT(0x01, true) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sBool))) { return NS_ERROR_ILLEGAL_VALUE; } aOut = sBool[aIn]; return NS_OK; }
NS_IMETHODIMP UploadEventListener::HandleEvent(nsIDOMEvent* aEvent) { nsString type; if (NS_FAILED(aEvent->GetType(type))) { STUMBLER_ERR("Failed to get event type"); WriteStumbleOnThread::UploadEnded(false); return NS_ERROR_FAILURE; } if (type.EqualsLiteral("load")) { STUMBLER_DBG("Got load Event\n"); } else if (type.EqualsLiteral("error") && mXHR) { STUMBLER_ERR("Upload Error"); } else { STUMBLER_DBG("Receive %s Event", NS_ConvertUTF16toUTF8(type).get()); } uint32_t statusCode = 0; bool doDelete = false; if (!mXHR) { return NS_OK; } nsresult rv = mXHR->GetStatus(&statusCode); if (NS_SUCCEEDED(rv)) { STUMBLER_DBG("statuscode %d \n", statusCode); } if (200 == statusCode || 400 == statusCode) { doDelete = true; } WriteStumbleOnThread::UploadEnded(doDelete); nsCOMPtr<EventTarget> target(do_QueryInterface(mXHR)); const char* const sEventStrings[] = { // nsIXMLHttpRequestEventTarget event types "abort", "error", "load", "timeout" }; for (uint32_t index = 0; index < MOZ_ARRAY_LENGTH(sEventStrings); index++) { nsAutoString eventType = NS_ConvertASCIItoUTF16(sEventStrings[index]); rv = target->RemoveEventListener(eventType, this, false); } mXHR = nullptr; return NS_OK; }
void BluetoothDaemonAvrcpModule::HandleRsp( const BluetoothDaemonPDUHeader& aHeader, BluetoothDaemonPDU& aPDU, void* aUserData) { static void (BluetoothDaemonAvrcpModule::* const HandleRsp[])( const BluetoothDaemonPDUHeader&, BluetoothDaemonPDU&, BluetoothAvrcpResultHandler*) = { INIT_ARRAY_AT(OPCODE_ERROR, &BluetoothDaemonAvrcpModule::ErrorRsp), INIT_ARRAY_AT(OPCODE_GET_PLAY_STATUS_RSP, &BluetoothDaemonAvrcpModule::GetPlayStatusRspRsp), INIT_ARRAY_AT(OPCODE_LIST_PLAYER_APP_ATTR_RSP, &BluetoothDaemonAvrcpModule::ListPlayerAppAttrRspRsp), INIT_ARRAY_AT(OPCODE_LIST_PLAYER_APP_VALUE_RSP, &BluetoothDaemonAvrcpModule::ListPlayerAppValueRspRsp), INIT_ARRAY_AT(OPCODE_GET_PLAYER_APP_VALUE_RSP, &BluetoothDaemonAvrcpModule::GetPlayerAppValueRspRsp), INIT_ARRAY_AT(OPCODE_GET_PLAYER_APP_ATTR_TEXT_RSP, &BluetoothDaemonAvrcpModule::GetPlayerAppAttrTextRspRsp), INIT_ARRAY_AT(OPCODE_GET_PLAYER_APP_VALUE_TEXT_RSP, &BluetoothDaemonAvrcpModule::GetPlayerAppValueTextRspRsp), INIT_ARRAY_AT(OPCODE_GET_ELEMENT_ATTR_RSP, &BluetoothDaemonAvrcpModule::GetElementAttrRspRsp), INIT_ARRAY_AT(OPCODE_SET_PLAYER_APP_VALUE_RSP, &BluetoothDaemonAvrcpModule::SetPlayerAppValueRspRsp), INIT_ARRAY_AT(OPCODE_REGISTER_NOTIFICATION_RSP, &BluetoothDaemonAvrcpModule::RegisterNotificationRspRsp), INIT_ARRAY_AT(OPCODE_SET_VOLUME, &BluetoothDaemonAvrcpModule::SetVolumeRsp) }; MOZ_ASSERT(!NS_IsMainThread()); // I/O thread if (NS_WARN_IF(!(aHeader.mOpcode < MOZ_ARRAY_LENGTH(HandleRsp))) || NS_WARN_IF(!HandleRsp[aHeader.mOpcode])) { return; } nsRefPtr<BluetoothAvrcpResultHandler> res = already_AddRefed<BluetoothAvrcpResultHandler>( static_cast<BluetoothAvrcpResultHandler*>(aUserData)); if (!res) { return; // Return early if no result handler has been set for response } (this->*(HandleRsp[aHeader.mOpcode]))(aHeader, aPDU, res); }
nsresult Convert(BluetoothHandsfreeCallDirection aIn, uint8_t& aOut) { static const uint8_t sCallDirection[] = { CONVERT(HFP_CALL_DIRECTION_OUTGOING, 0x00), CONVERT(HFP_CALL_DIRECTION_INCOMING, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sCallDirection))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sCallDirection[aIn]; return NS_OK; }
nsresult Convert(BluetoothHandsfreeVolumeType aIn, uint8_t& aOut) { static const uint8_t sVolumeType[] = { CONVERT(HFP_VOLUME_TYPE_SPEAKER, 0x00), CONVERT(HFP_VOLUME_TYPE_MICROPHONE, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sVolumeType))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sVolumeType[aIn]; return NS_OK; }
nsresult Convert(BluetoothHandsfreeServiceType aIn, uint8_t& aOut) { static const uint8_t sServiceType[] = { CONVERT(HFP_SERVICE_TYPE_HOME, 0x00), CONVERT(HFP_SERVICE_TYPE_ROAMING, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sServiceType))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sServiceType[aIn]; return NS_OK; }
nsresult Convert(BluetoothHandsfreeAtResponse aIn, uint8_t& aOut) { static const uint8_t sAtResponse[] = { CONVERT(HFP_AT_RESPONSE_ERROR, 0x00), CONVERT(HFP_AT_RESPONSE_OK, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sAtResponse))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sAtResponse[aIn]; return NS_OK; }
nsresult Convert(BluetoothHandsfreeCallMptyType aIn, uint8_t& aOut) { static const uint8_t sCallMptyType[] = { CONVERT(HFP_CALL_MPTY_TYPE_SINGLE, 0x00), CONVERT(HFP_CALL_MPTY_TYPE_MULTI, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sCallMptyType))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sCallMptyType[aIn]; return NS_OK; }
nsresult Convert(BluetoothHandsfreeNetworkState aIn, uint8_t& aOut) { static const uint8_t sNetworkState[] = { CONVERT(HFP_NETWORK_STATE_NOT_AVAILABLE, 0x00), CONVERT(HFP_NETWORK_STATE_AVAILABLE, 0x01) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sNetworkState))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sNetworkState[aIn]; return NS_OK; }
nsresult Convert(BluetoothHandsfreeCallAddressType aIn, uint8_t& aOut) { static const uint8_t sCallAddressType[] = { CONVERT(HFP_CALL_ADDRESS_TYPE_UNKNOWN, 0x81), CONVERT(HFP_CALL_ADDRESS_TYPE_INTERNATIONAL, 0x91) }; if (NS_WARN_IF(aIn >= MOZ_ARRAY_LENGTH(sCallAddressType))) { aOut = 0x00; // silences compiler warning return NS_ERROR_ILLEGAL_VALUE; } aOut = sCallAddressType[aIn]; return NS_OK; }