| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2011 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2007-2009 Torch Mobile, Inc. | 3 * Copyright (C) 2007-2009 Torch Mobile, Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 } | 153 } |
| 154 // 8859_1 is known to (at least) ICU, but other browsers don't support this | 154 // 8859_1 is known to (at least) ICU, but other browsers don't support this |
| 155 // name - and having it caused a compatibility | 155 // name - and having it caused a compatibility |
| 156 // problem, see bug 43554. | 156 // problem, see bug 43554. |
| 157 if (0 == strcmp(alias, "8859_1")) | 157 if (0 == strcmp(alias, "8859_1")) |
| 158 return true; | 158 return true; |
| 159 return false; | 159 return false; |
| 160 } | 160 } |
| 161 | 161 |
| 162 static void addToTextEncodingNameMap(const char* alias, const char* name) { | 162 static void addToTextEncodingNameMap(const char* alias, const char* name) { |
| 163 ASSERT(strlen(alias) <= maxEncodingNameLength); | 163 DCHECK_LE(strlen(alias), maxEncodingNameLength); |
| 164 if (isUndesiredAlias(alias)) | 164 if (isUndesiredAlias(alias)) |
| 165 return; | 165 return; |
| 166 const char* atomicName = textEncodingNameMap->get(name); | 166 const char* atomicName = textEncodingNameMap->get(name); |
| 167 ASSERT(strcmp(alias, name) == 0 || atomicName); | 167 DCHECK(strcmp(alias, name) == 0 || atomicName); |
| 168 if (!atomicName) | 168 if (!atomicName) |
| 169 atomicName = name; | 169 atomicName = name; |
| 170 checkExistingName(alias, atomicName); | 170 checkExistingName(alias, atomicName); |
| 171 textEncodingNameMap->add(alias, atomicName); | 171 textEncodingNameMap->add(alias, atomicName); |
| 172 } | 172 } |
| 173 | 173 |
| 174 static void addToTextCodecMap(const char* name, | 174 static void addToTextCodecMap(const char* name, |
| 175 NewTextCodecFunction function, | 175 NewTextCodecFunction function, |
| 176 const void* additionalData) { | 176 const void* additionalData) { |
| 177 const char* atomicName = textEncodingNameMap->get(name); | 177 const char* atomicName = textEncodingNameMap->get(name); |
| 178 ASSERT(atomicName); | 178 DCHECK(atomicName); |
| 179 textCodecMap->add(atomicName, TextCodecFactory(function, additionalData)); | 179 textCodecMap->add(atomicName, TextCodecFactory(function, additionalData)); |
| 180 } | 180 } |
| 181 | 181 |
| 182 static void pruneBlacklistedCodecs() { | 182 static void pruneBlacklistedCodecs() { |
| 183 for (size_t i = 0; i < WTF_ARRAY_LENGTH(textEncodingNameBlacklist); ++i) { | 183 for (size_t i = 0; i < WTF_ARRAY_LENGTH(textEncodingNameBlacklist); ++i) { |
| 184 const char* atomicName = | 184 const char* atomicName = |
| 185 textEncodingNameMap->get(textEncodingNameBlacklist[i]); | 185 textEncodingNameMap->get(textEncodingNameBlacklist[i]); |
| 186 if (!atomicName) | 186 if (!atomicName) |
| 187 continue; | 187 continue; |
| 188 | 188 |
| 189 Vector<const char*> names; | 189 Vector<const char*> names; |
| 190 TextEncodingNameMap::const_iterator it = textEncodingNameMap->begin(); | 190 TextEncodingNameMap::const_iterator it = textEncodingNameMap->begin(); |
| 191 TextEncodingNameMap::const_iterator end = textEncodingNameMap->end(); | 191 TextEncodingNameMap::const_iterator end = textEncodingNameMap->end(); |
| 192 for (; it != end; ++it) { | 192 for (; it != end; ++it) { |
| 193 if (it->value == atomicName) | 193 if (it->value == atomicName) |
| 194 names.append(it->key); | 194 names.append(it->key); |
| 195 } | 195 } |
| 196 | 196 |
| 197 textEncodingNameMap->removeAll(names); | 197 textEncodingNameMap->removeAll(names); |
| 198 | 198 |
| 199 textCodecMap->remove(atomicName); | 199 textCodecMap->remove(atomicName); |
| 200 } | 200 } |
| 201 } | 201 } |
| 202 | 202 |
| 203 static void buildBaseTextCodecMaps() { | 203 static void buildBaseTextCodecMaps() { |
| 204 ASSERT(isMainThread()); | 204 DCHECK(isMainThread()); |
| 205 ASSERT(!textCodecMap); | 205 DCHECK(!textCodecMap); |
| 206 ASSERT(!textEncodingNameMap); | 206 DCHECK(!textEncodingNameMap); |
| 207 | 207 |
| 208 textCodecMap = new TextCodecMap; | 208 textCodecMap = new TextCodecMap; |
| 209 textEncodingNameMap = new TextEncodingNameMap; | 209 textEncodingNameMap = new TextEncodingNameMap; |
| 210 | 210 |
| 211 TextCodecLatin1::registerEncodingNames(addToTextEncodingNameMap); | 211 TextCodecLatin1::registerEncodingNames(addToTextEncodingNameMap); |
| 212 TextCodecLatin1::registerCodecs(addToTextCodecMap); | 212 TextCodecLatin1::registerCodecs(addToTextCodecMap); |
| 213 | 213 |
| 214 TextCodecUTF8::registerEncodingNames(addToTextEncodingNameMap); | 214 TextCodecUTF8::registerEncodingNames(addToTextEncodingNameMap); |
| 215 TextCodecUTF8::registerCodecs(addToTextCodecMap); | 215 TextCodecUTF8::registerCodecs(addToTextCodecMap); |
| 216 | 216 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 235 | 235 |
| 236 TextCodecICU::registerEncodingNames(addToTextEncodingNameMap); | 236 TextCodecICU::registerEncodingNames(addToTextEncodingNameMap); |
| 237 TextCodecICU::registerCodecs(addToTextCodecMap); | 237 TextCodecICU::registerCodecs(addToTextCodecMap); |
| 238 | 238 |
| 239 pruneBlacklistedCodecs(); | 239 pruneBlacklistedCodecs(); |
| 240 } | 240 } |
| 241 | 241 |
| 242 std::unique_ptr<TextCodec> newTextCodec(const TextEncoding& encoding) { | 242 std::unique_ptr<TextCodec> newTextCodec(const TextEncoding& encoding) { |
| 243 MutexLocker lock(encodingRegistryMutex()); | 243 MutexLocker lock(encodingRegistryMutex()); |
| 244 | 244 |
| 245 ASSERT(textCodecMap); | 245 DCHECK(textCodecMap); |
| 246 TextCodecFactory factory = textCodecMap->get(encoding.name()); | 246 TextCodecFactory factory = textCodecMap->get(encoding.name()); |
| 247 ASSERT(factory.function); | 247 DCHECK(factory.function); |
| 248 return factory.function(encoding, factory.additionalData); | 248 return factory.function(encoding, factory.additionalData); |
| 249 } | 249 } |
| 250 | 250 |
| 251 const char* atomicCanonicalTextEncodingName(const char* name) { | 251 const char* atomicCanonicalTextEncodingName(const char* name) { |
| 252 if (!name || !name[0]) | 252 if (!name || !name[0]) |
| 253 return 0; | 253 return 0; |
| 254 if (!textEncodingNameMap) | 254 if (!textEncodingNameMap) |
| 255 buildBaseTextCodecMaps(); | 255 buildBaseTextCodecMaps(); |
| 256 | 256 |
| 257 MutexLocker lock(encodingRegistryMutex()); | 257 MutexLocker lock(encodingRegistryMutex()); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 MutexLocker lock(encodingRegistryMutex()); | 307 MutexLocker lock(encodingRegistryMutex()); |
| 308 | 308 |
| 309 TextEncodingNameMap::const_iterator it = textEncodingNameMap->begin(); | 309 TextEncodingNameMap::const_iterator it = textEncodingNameMap->begin(); |
| 310 TextEncodingNameMap::const_iterator end = textEncodingNameMap->end(); | 310 TextEncodingNameMap::const_iterator end = textEncodingNameMap->end(); |
| 311 for (; it != end; ++it) | 311 for (; it != end; ++it) |
| 312 fprintf(stderr, "'%s' => '%s'\n", it->key, it->value); | 312 fprintf(stderr, "'%s' => '%s'\n", it->key, it->value); |
| 313 } | 313 } |
| 314 #endif | 314 #endif |
| 315 | 315 |
| 316 } // namespace WTF | 316 } // namespace WTF |
| OLD | NEW |