| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Apple Inc. All rights reserved. | 2 * Copyright (C) 2013 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 { | 141 { |
| 142 AtomicallyInitializedStaticReference(RecursiveMutex, mutex, new RecursiveMut
ex); | 142 AtomicallyInitializedStaticReference(RecursiveMutex, mutex, new RecursiveMut
ex); |
| 143 return mutex; | 143 return mutex; |
| 144 } | 144 } |
| 145 | 145 |
| 146 typedef HashMap<DatabaseGuid, String> GuidVersionMap; | 146 typedef HashMap<DatabaseGuid, String> GuidVersionMap; |
| 147 static GuidVersionMap& guidToVersionMap() | 147 static GuidVersionMap& guidToVersionMap() |
| 148 { | 148 { |
| 149 // Ensure the the mutex is locked. | 149 // Ensure the the mutex is locked. |
| 150 ASSERT(guidMutex().locked()); | 150 ASSERT(guidMutex().locked()); |
| 151 DEFINE_STATIC_LOCAL(GuidVersionMap, map, ()); | 151 DEFINE_STATIC_LOCAL_NOASSERT(GuidVersionMap, map, ()); |
| 152 return map; | 152 return map; |
| 153 } | 153 } |
| 154 | 154 |
| 155 // NOTE: Caller must lock guidMutex(). | 155 // NOTE: Caller must lock guidMutex(). |
| 156 static inline void updateGuidVersionMap(DatabaseGuid guid, String newVersion) | 156 static inline void updateGuidVersionMap(DatabaseGuid guid, String newVersion) |
| 157 { | 157 { |
| 158 // Ensure the the mutex is locked. | 158 // Ensure the the mutex is locked. |
| 159 ASSERT(guidMutex().locked()); | 159 ASSERT(guidMutex().locked()); |
| 160 | 160 |
| 161 // Note: It is not safe to put an empty string into the guidToVersionMap() | 161 // Note: It is not safe to put an empty string into the guidToVersionMap() |
| 162 // map. That's because the map is cross-thread, but empty strings are | 162 // map. That's because the map is cross-thread, but empty strings are |
| 163 // per-thread. The copy() function makes a version of the string you can | 163 // per-thread. The copy() function makes a version of the string you can |
| 164 // use on the current thread, but we need a string we can keep in a | 164 // use on the current thread, but we need a string we can keep in a |
| 165 // cross-thread data structure. | 165 // cross-thread data structure. |
| 166 // FIXME: This is a quite-awkward restriction to have to program with. | 166 // FIXME: This is a quite-awkward restriction to have to program with. |
| 167 | 167 |
| 168 // Map null string to empty string (see comment above). | 168 // Map null string to empty string (see comment above). |
| 169 guidToVersionMap().set(guid, newVersion.isEmpty() ? String() : newVersion.is
olatedCopy()); | 169 guidToVersionMap().set(guid, newVersion.isEmpty() ? String() : newVersion.is
olatedCopy()); |
| 170 } | 170 } |
| 171 | 171 |
| 172 typedef HashMap<DatabaseGuid, HashSet<Database*>*> GuidDatabaseMap; | 172 typedef HashMap<DatabaseGuid, HashSet<Database*>*> GuidDatabaseMap; |
| 173 static GuidDatabaseMap& guidToDatabaseMap() | 173 static GuidDatabaseMap& guidToDatabaseMap() |
| 174 { | 174 { |
| 175 // Ensure the the mutex is locked. | 175 // Ensure the the mutex is locked. |
| 176 ASSERT(guidMutex().locked()); | 176 ASSERT(guidMutex().locked()); |
| 177 DEFINE_STATIC_LOCAL(GuidDatabaseMap, map, ()); | 177 DEFINE_STATIC_LOCAL_NOASSERT(GuidDatabaseMap, map, ()); |
| 178 return map; | 178 return map; |
| 179 } | 179 } |
| 180 | 180 |
| 181 static DatabaseGuid guidForOriginAndName(const String& origin, const String& nam
e) | 181 static DatabaseGuid guidForOriginAndName(const String& origin, const String& nam
e) |
| 182 { | 182 { |
| 183 // Ensure the the mutex is locked. | 183 // Ensure the the mutex is locked. |
| 184 ASSERT(guidMutex().locked()); | 184 ASSERT(guidMutex().locked()); |
| 185 | 185 |
| 186 String stringID = origin + "/" + name; | 186 String stringID = origin + "/" + name; |
| 187 | 187 |
| 188 typedef HashMap<String, int> IDGuidMap; | 188 typedef HashMap<String, int> IDGuidMap; |
| 189 DEFINE_STATIC_LOCAL(IDGuidMap, stringIdentifierToGUIDMap, ()); | 189 DEFINE_STATIC_LOCAL_NOASSERT(IDGuidMap, stringIdentifierToGUIDMap, ()); |
| 190 DatabaseGuid guid = stringIdentifierToGUIDMap.get(stringID); | 190 DatabaseGuid guid = stringIdentifierToGUIDMap.get(stringID); |
| 191 if (!guid) { | 191 if (!guid) { |
| 192 static int currentNewGUID = 1; | 192 static int currentNewGUID = 1; |
| 193 guid = currentNewGUID++; | 193 guid = currentNewGUID++; |
| 194 stringIdentifierToGUIDMap.set(stringID, guid); | 194 stringIdentifierToGUIDMap.set(stringID, guid); |
| 195 } | 195 } |
| 196 | 196 |
| 197 return guid; | 197 return guid; |
| 198 } | 198 } |
| 199 | 199 |
| (...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 SecurityOrigin* Database::securityOrigin() const | 920 SecurityOrigin* Database::securityOrigin() const |
| 921 { | 921 { |
| 922 if (executionContext()->isContextThread()) | 922 if (executionContext()->isContextThread()) |
| 923 return m_contextThreadSecurityOrigin.get(); | 923 return m_contextThreadSecurityOrigin.get(); |
| 924 if (databaseContext()->databaseThread()->isDatabaseThread()) | 924 if (databaseContext()->databaseThread()->isDatabaseThread()) |
| 925 return m_databaseThreadSecurityOrigin.get(); | 925 return m_databaseThreadSecurityOrigin.get(); |
| 926 return 0; | 926 return 0; |
| 927 } | 927 } |
| 928 | 928 |
| 929 } // namespace blink | 929 } // namespace blink |
| OLD | NEW |