Changeset 242729 in webkit
- Timestamp:
- Mar 11, 2019, 1:00:07 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
Modules/indexeddb/IDBDatabaseIdentifier.cpp (modified) (4 diffs)
-
Modules/indexeddb/IDBDatabaseIdentifier.h (modified) (7 diffs)
-
page/ClientOrigin.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r242725 r242729 1 2019-03-11 Youenn Fablet <youenn@apple.com> 2 3 Make IDBDatabaseIdentifier take a ClientOrigin as member 4 https://bugs.webkit.org/show_bug.cgi?id=195544 5 6 Reviewed by Geoffrey Garen. 7 8 Instead of taking a top and a frame origin, make 9 make IDBDatabaseIdentifier take a ClientOrigin. 10 11 This allows reusing some ClientOrigin code 12 and will ease implementation of storage quota checking in 13 NetworkProcess, as quota managers are keyed by client origins. 14 15 No change of behavior. 16 17 * Modules/indexeddb/IDBDatabaseIdentifier.cpp: 18 (WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier): 19 (WebCore::IDBDatabaseIdentifier::isolatedCopy const): 20 (WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const): 21 (WebCore::IDBDatabaseIdentifier::debugString const): 22 * Modules/indexeddb/IDBDatabaseIdentifier.h: 23 (WebCore::IDBDatabaseIdentifier::hash const): 24 (WebCore::IDBDatabaseIdentifier::operator== const): 25 (WebCore::IDBDatabaseIdentifier::origin const): 26 (WebCore::IDBDatabaseIdentifier::isRelatedToOrigin const): 27 (WebCore::IDBDatabaseIdentifier::encode const): 28 (WebCore::IDBDatabaseIdentifier::decode): 29 * page/ClientOrigin.h: 30 (WebCore::ClientOrigin::isRelated const): 31 1 32 2019-03-11 Zan Dobersek <zdobersek@igalia.com> 2 33 -
trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp
r240437 r242729 39 39 : m_databaseName(databaseName) 40 40 , m_sessionID(sessionID) 41 , m_openingOrigin(WTFMove(openingOrigin)) 42 , m_mainFrameOrigin(WTFMove(mainFrameOrigin)) 43 41 , m_origin { WTFMove(openingOrigin), WTFMove(mainFrameOrigin) } 44 42 { 45 43 // The empty string is a valid database name, but a null string is not. … … 53 51 identifier.m_databaseName = m_databaseName.isolatedCopy(); 54 52 identifier.m_sessionID = m_sessionID.isolatedCopy(); 55 identifier.m_openingOrigin = m_openingOrigin.isolatedCopy(); 56 identifier.m_mainFrameOrigin = m_mainFrameOrigin.isolatedCopy(); 53 identifier.m_origin = m_origin.isolatedCopy(); 57 54 58 55 return identifier; … … 61 58 String IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot(const String& rootDirectory) const 62 59 { 63 return databaseDirectoryRelativeToRoot(m_ mainFrameOrigin, m_openingOrigin, rootDirectory);60 return databaseDirectoryRelativeToRoot(m_origin.topOrigin, m_origin.clientOrigin, rootDirectory); 64 61 } 65 62 … … 78 75 String IDBDatabaseIdentifier::debugString() const 79 76 { 80 return makeString(m_databaseName, "@", m_o peningOrigin.debugString(), ":", m_mainFrameOrigin.debugString());77 return makeString(m_databaseName, "@", m_origin.topOrigin.debugString(), ":", m_origin.clientOrigin.debugString()); 81 78 } 82 79 #endif -
trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.h
r239461 r242729 28 28 #if ENABLE(INDEXED_DATABASE) 29 29 30 #include "ClientOrigin.h" 30 31 #include "SecurityOriginData.h" 31 32 #include <pal/SessionID.h> … … 58 59 unsigned nameHash = StringHash::hash(m_databaseName); 59 60 unsigned sessionIDHash = WTF::SessionIDHash::hash(m_sessionID); 60 unsigned openingProtocolHash = StringHash::hash(m_openingOrigin.protocol); 61 unsigned openingHostHash = StringHash::hash(m_openingOrigin.host); 62 unsigned mainFrameProtocolHash = StringHash::hash(m_mainFrameOrigin.protocol); 63 unsigned mainFrameHostHash = StringHash::hash(m_mainFrameOrigin.host); 64 65 unsigned hashCodes[8] = { nameHash, sessionIDHash, openingProtocolHash, openingHostHash, m_openingOrigin.port.valueOr(0), mainFrameProtocolHash, mainFrameHostHash, m_mainFrameOrigin.port.valueOr(0) }; 61 unsigned originHash = m_origin.hash(); 62 63 unsigned hashCodes[3] = { nameHash, sessionIDHash, originHash }; 66 64 return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes); 67 65 } … … 80 78 bool operator==(const IDBDatabaseIdentifier& other) const 81 79 { 82 return other.m_databaseName == m_databaseName 83 && other.m_openingOrigin == m_openingOrigin 84 && other.m_mainFrameOrigin == m_mainFrameOrigin; 80 return other.m_databaseName == m_databaseName && other.m_origin == m_origin; 85 81 } 86 82 87 83 const String& databaseName() const { return m_databaseName; } 88 84 const PAL::SessionID& sessionID() const { return m_sessionID; } 85 const ClientOrigin& origin() const { return m_origin; } 89 86 90 87 String databaseDirectoryRelativeToRoot(const String& rootDirectory) const; … … 98 95 #endif 99 96 100 bool isRelatedToOrigin(const SecurityOriginData& other) const 101 { 102 return m_openingOrigin == other || m_mainFrameOrigin == other; 103 } 97 bool isRelatedToOrigin(const SecurityOriginData& other) const { return m_origin.isRelated(other); } 104 98 105 99 private: 106 100 String m_databaseName; 107 101 PAL::SessionID m_sessionID; 108 SecurityOriginData m_openingOrigin;102 ClientOrigin m_origin; 109 103 SecurityOriginData m_mainFrameOrigin; 110 104 }; … … 125 119 void IDBDatabaseIdentifier::encode(Encoder& encoder) const 126 120 { 127 encoder << m_databaseName << m_sessionID << m_o peningOrigin << m_mainFrameOrigin;121 encoder << m_databaseName << m_sessionID << m_origin; 128 122 } 129 123 … … 141 135 return WTF::nullopt; 142 136 143 Optional<SecurityOriginData> openingOrigin; 144 decoder >> openingOrigin; 145 if (!openingOrigin) 146 return WTF::nullopt; 147 148 Optional<SecurityOriginData> mainFrameOrigin; 149 decoder >> mainFrameOrigin; 150 if (!mainFrameOrigin) 137 Optional<ClientOrigin> origin; 138 decoder >> origin; 139 if (!origin) 151 140 return WTF::nullopt; 152 141 … … 154 143 identifier.m_databaseName = WTFMove(*databaseName); // FIXME: When decoding from IPC, databaseName can be null, and the non-empty constructor asserts that this is not the case. 155 144 identifier.m_sessionID = WTFMove(*sessionID); 156 identifier.m_openingOrigin = WTFMove(*openingOrigin); 157 identifier.m_mainFrameOrigin = WTFMove(*mainFrameOrigin); 145 identifier.m_origin = WTFMove(*origin); 158 146 return WTFMove(identifier); 159 147 } -
trunk/Source/WebCore/page/ClientOrigin.h
r242599 r242729 42 42 43 43 ClientOrigin isolatedCopy() const; 44 bool isRelated(const SecurityOriginData& other) const { return topOrigin == other || clientOrigin == other; } 44 45 45 46 SecurityOriginData topOrigin;
Note:
See TracChangeset
for help on using the changeset viewer.