Changeset 225826 in webkit
- Timestamp:
- Dec 12, 2017, 5:18:20 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r225818 r225826 1 2017-12-12 Alex Christensen <achristensen@webkit.org> 2 3 Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding 4 https://bugs.webkit.org/show_bug.cgi?id=180621 5 6 Reviewed by Youenn Fablet. 7 8 * NetworkProcess/NetworkProcessCreationParameters.cpp: 9 (WebKit::NetworkProcessCreationParameters::decode): 10 * NetworkProcess/NetworkResourceLoadParameters.cpp: 11 (WebKit::NetworkResourceLoadParameters::decode): 12 * Shared/LoadParameters.cpp: 13 (WebKit::LoadParameters::decode): 14 * Shared/SandboxExtension.h: 15 (WebKit::decode): 16 (WebKit::SandboxExtension::Handle::decode): Deleted. 17 * Shared/Storage/StorageProcessCreationParameters.cpp: 18 (WebKit::StorageProcessCreationParameters::decode): 19 * Shared/WebProcessCreationParameters.cpp: 20 (WebKit::WebProcessCreationParameters::decode): 21 * Shared/WebsiteDataStoreParameters.cpp: 22 (WebKit::WebsiteDataStoreParameters::decode): 23 * Shared/WebsiteDataStoreParameters.h: 24 * Shared/mac/SandboxExtensionMac.mm: 25 (WebKit::SandboxExtension::Handle::decode): 26 (WebKit::SandboxExtension::HandleArray::HandleArray): 27 (WebKit::SandboxExtension::HandleArray::encode const): 28 (WebKit::SandboxExtension::HandleArray::decode): 29 (WebKit::SandboxExtension::SandboxExtension): 30 1 31 2017-12-12 John Wilander <wilander@apple.com> 2 32 -
trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp
r225006 r225826 125 125 if (!decoder.decode(result.cacheStoragePerOriginQuota)) 126 126 return false; 127 if (!decoder.decode(result.cacheStorageDirectoryExtensionHandle)) 128 return false; 127 128 std::optional<SandboxExtension::Handle> cacheStorageDirectoryExtensionHandle; 129 decoder >> cacheStorageDirectoryExtensionHandle; 130 if (!cacheStorageDirectoryExtensionHandle) 131 return false; 132 result.cacheStorageDirectoryExtensionHandle = WTFMove(*cacheStorageDirectoryExtensionHandle); 133 129 134 if (!decoder.decode(result.diskCacheDirectory)) 130 135 return false; 131 if (!decoder.decode(result.diskCacheDirectoryExtensionHandle)) 132 return false; 136 137 std::optional<SandboxExtension::Handle> diskCacheDirectoryExtensionHandle; 138 decoder >> diskCacheDirectoryExtensionHandle; 139 if (!diskCacheDirectoryExtensionHandle) 140 return false; 141 result.diskCacheDirectoryExtensionHandle = WTFMove(*diskCacheDirectoryExtensionHandle); 142 133 143 if (!decoder.decode(result.shouldEnableNetworkCache)) 134 144 return false; … … 144 154 #endif 145 155 #if PLATFORM(IOS) 146 if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle)) 147 return false; 148 if (!decoder.decode(result.containerCachesDirectoryExtensionHandle)) 149 return false; 150 if (!decoder.decode(result.parentBundleDirectoryExtensionHandle)) 151 return false; 156 std::optional<SandboxExtension::Handle> cookieStorageDirectoryExtensionHandle; 157 decoder >> cookieStorageDirectoryExtensionHandle; 158 if (!cookieStorageDirectoryExtensionHandle) 159 return false; 160 result.cookieStorageDirectoryExtensionHandle = WTFMove(*cookieStorageDirectoryExtensionHandle); 161 162 std::optional<SandboxExtension::Handle> containerCachesDirectoryExtensionHandle; 163 decoder >> containerCachesDirectoryExtensionHandle; 164 if (!containerCachesDirectoryExtensionHandle) 165 return false; 166 result.containerCachesDirectoryExtensionHandle = WTFMove(*containerCachesDirectoryExtensionHandle); 167 168 std::optional<SandboxExtension::Handle> parentBundleDirectoryExtensionHandle; 169 decoder >> parentBundleDirectoryExtensionHandle; 170 if (!parentBundleDirectoryExtensionHandle) 171 return false; 172 result.parentBundleDirectoryExtensionHandle = WTFMove(*parentBundleDirectoryExtensionHandle); 152 173 #endif 153 174 if (!decoder.decode(result.shouldSuppressMemoryPressureHandler)) -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp
r224299 r225826 135 135 136 136 if (result.request.url().isLocalFile()) { 137 SandboxExtension::Handle resourceSandboxExtensionHandle; 138 if (!decoder.decode(resourceSandboxExtensionHandle)) 137 std::optional<SandboxExtension::Handle> resourceSandboxExtensionHandle; 138 decoder >> resourceSandboxExtensionHandle; 139 if (!resourceSandboxExtensionHandle) 139 140 return false; 140 result.resourceSandboxExtension = SandboxExtension::create( resourceSandboxExtensionHandle);141 result.resourceSandboxExtension = SandboxExtension::create(WTFMove(*resourceSandboxExtensionHandle)); 141 142 } 142 143 -
trunk/Source/WebKit/Shared/LoadParameters.cpp
r210825 r225826 73 73 } 74 74 75 if (!decoder.decode(data.sandboxExtensionHandle)) 75 std::optional<SandboxExtension::Handle> sandboxExtensionHandle; 76 decoder >> sandboxExtensionHandle; 77 if (!sandboxExtensionHandle) 76 78 return false; 79 data.sandboxExtensionHandle = WTFMove(*sandboxExtensionHandle); 77 80 78 81 if (!decoder.decode(data.data)) -
trunk/Source/WebKit/Shared/SandboxExtension.h
r222183 r225826 24 24 */ 25 25 26 #ifndef SandboxExtension_h 27 #define SandboxExtension_h 26 #pragma once 28 27 29 28 #include <wtf/Forward.h> … … 56 55 #if ENABLE(SANDBOX_EXTENSIONS) 57 56 Handle(Handle&&); 57 Handle& operator=(Handle&&); 58 58 #else 59 59 Handle(Handle&&) = default; 60 Handle& operator=(Handle&&) = default; 60 61 #endif 61 62 ~Handle(); 62 63 63 64 void encode(IPC::Encoder&) const; 64 static bool decode(IPC::Decoder&, Handle&);65 static std::optional<Handle> decode(IPC::Decoder&); 65 66 66 67 private: … … 87 88 #if ENABLE(SANDBOX_EXTENSIONS) 88 89 std::unique_ptr<Handle[]> m_data; 89 size_t m_size ;90 size_t m_size { 0 }; 90 91 #else 91 92 Handle m_emptyHandle; … … 112 113 #if ENABLE(SANDBOX_EXTENSIONS) 113 114 mutable std::unique_ptr<SandboxExtensionImpl> m_sandboxExtension; 114 size_t m_useCount ;115 size_t m_useCount { 0 }; 115 116 #endif 116 117 }; … … 120 121 inline SandboxExtension::Handle::~Handle() { } 121 122 inline void SandboxExtension::Handle::encode(IPC::Encoder&) const { } 122 inline bool SandboxExtension::Handle::decode(IPC::Decoder&, Handle&) { return true; }123 inline std::optional<SandboxExtension::Handle> SandboxExtension::Handle::decode(IPC::Decoder&) { return {{ }}; } 123 124 inline SandboxExtension::HandleArray::HandleArray() { } 124 125 inline SandboxExtension::HandleArray::~HandleArray() { } … … 150 151 151 152 } // namespace WebKit 152 153 154 #endif // SandboxExtension_h -
trunk/Source/WebKit/Shared/Storage/StorageProcessCreationParameters.cpp
r225490 r225826 53 53 if (!decoder.decode(result.indexedDatabaseDirectory)) 54 54 return false; 55 if (!decoder.decode(result.indexedDatabaseDirectoryExtensionHandle)) 55 56 std::optional<SandboxExtension::Handle> indexedDatabaseDirectoryExtensionHandle; 57 decoder >> indexedDatabaseDirectoryExtensionHandle; 58 if (!indexedDatabaseDirectoryExtensionHandle) 56 59 return false; 60 result.indexedDatabaseDirectoryExtensionHandle = WTFMove(*indexedDatabaseDirectoryExtensionHandle); 57 61 #endif 58 62 #if ENABLE(SERVICE_WORKER) 59 63 if (!decoder.decode(result.serviceWorkerRegistrationDirectory)) 60 64 return false; 61 if (!decoder.decode(result.serviceWorkerRegistrationDirectoryExtensionHandle)) 65 66 std::optional<SandboxExtension::Handle> serviceWorkerRegistrationDirectoryExtensionHandle; 67 decoder >> serviceWorkerRegistrationDirectoryExtensionHandle; 68 if (!serviceWorkerRegistrationDirectoryExtensionHandle) 62 69 return false; 70 result.serviceWorkerRegistrationDirectoryExtensionHandle = WTFMove(*serviceWorkerRegistrationDirectoryExtensionHandle); 63 71 #endif 64 72 -
trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp
r225655 r225826 152 152 if (!decoder.decode(parameters.injectedBundlePath)) 153 153 return false; 154 if (!decoder.decode(parameters.injectedBundlePathExtensionHandle)) 155 return false; 154 155 std::optional<SandboxExtension::Handle> injectedBundlePathExtensionHandle; 156 decoder >> injectedBundlePathExtensionHandle; 157 if (!injectedBundlePathExtensionHandle) 158 return false; 159 parameters.injectedBundlePathExtensionHandle = WTFMove(*injectedBundlePathExtensionHandle); 160 156 161 if (!decoder.decode(parameters.additionalSandboxExtensionHandles)) 157 162 return false; … … 162 167 if (!decoder.decode(parameters.applicationCacheFlatFileSubdirectoryName)) 163 168 return false; 164 if (!decoder.decode(parameters.applicationCacheDirectoryExtensionHandle)) 165 return false; 169 170 std::optional<SandboxExtension::Handle> applicationCacheDirectoryExtensionHandle; 171 decoder >> applicationCacheDirectoryExtensionHandle; 172 if (!applicationCacheDirectoryExtensionHandle) 173 return false; 174 parameters.applicationCacheDirectoryExtensionHandle = WTFMove(*applicationCacheDirectoryExtensionHandle); 175 166 176 if (!decoder.decode(parameters.webSQLDatabaseDirectory)) 167 177 return false; 168 if (!decoder.decode(parameters.webSQLDatabaseDirectoryExtensionHandle)) 169 return false; 178 179 std::optional<SandboxExtension::Handle> webSQLDatabaseDirectoryExtensionHandle; 180 decoder >> webSQLDatabaseDirectoryExtensionHandle; 181 if (!webSQLDatabaseDirectoryExtensionHandle) 182 return false; 183 parameters.webSQLDatabaseDirectoryExtensionHandle = WTFMove(*webSQLDatabaseDirectoryExtensionHandle); 184 170 185 if (!decoder.decode(parameters.mediaCacheDirectory)) 171 186 return false; 172 if (!decoder.decode(parameters.mediaCacheDirectoryExtensionHandle)) 173 return false; 187 188 std::optional<SandboxExtension::Handle> mediaCacheDirectoryExtensionHandle; 189 decoder >> mediaCacheDirectoryExtensionHandle; 190 if (!mediaCacheDirectoryExtensionHandle) 191 return false; 192 parameters.mediaCacheDirectoryExtensionHandle = WTFMove(*mediaCacheDirectoryExtensionHandle); 193 174 194 if (!decoder.decode(parameters.javaScriptConfigurationDirectory)) 175 195 return false; 176 if (!decoder.decode(parameters.javaScriptConfigurationDirectoryExtensionHandle)) 177 return false; 196 197 std::optional<SandboxExtension::Handle> javaScriptConfigurationDirectoryExtensionHandle; 198 decoder >> javaScriptConfigurationDirectoryExtensionHandle; 199 if (!javaScriptConfigurationDirectoryExtensionHandle) 200 return false; 201 parameters.javaScriptConfigurationDirectoryExtensionHandle = WTFMove(*javaScriptConfigurationDirectoryExtensionHandle); 202 178 203 #if PLATFORM(MAC) 179 204 if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier)) … … 181 206 #endif 182 207 #if PLATFORM(IOS) 183 if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle)) 184 return false; 185 if (!decoder.decode(parameters.containerCachesDirectoryExtensionHandle)) 186 return false; 187 if (!decoder.decode(parameters.containerTemporaryDirectoryExtensionHandle)) 188 return false; 208 209 std::optional<SandboxExtension::Handle> cookieStorageDirectoryExtensionHandle; 210 decoder >> cookieStorageDirectoryExtensionHandle; 211 if (!cookieStorageDirectoryExtensionHandle) 212 return false; 213 parameters.cookieStorageDirectoryExtensionHandle = WTFMove(*cookieStorageDirectoryExtensionHandle); 214 215 std::optional<SandboxExtension::Handle> containerCachesDirectoryExtensionHandle; 216 decoder >> containerCachesDirectoryExtensionHandle; 217 if (!containerCachesDirectoryExtensionHandle) 218 return false; 219 parameters.containerCachesDirectoryExtensionHandle = WTFMove(*containerCachesDirectoryExtensionHandle); 220 221 std::optional<SandboxExtension::Handle> containerTemporaryDirectoryExtensionHandle; 222 decoder >> containerTemporaryDirectoryExtensionHandle; 223 if (!containerTemporaryDirectoryExtensionHandle) 224 return false; 225 parameters.containerTemporaryDirectoryExtensionHandle = WTFMove(*containerTemporaryDirectoryExtensionHandle); 226 189 227 #endif 190 228 if (!decoder.decode(parameters.mediaKeyStorageDirectory)) … … 194 232 if (!decoder.decode(parameters.webKitLoggingChannels)) 195 233 return false; 196 if (!decoder.decode(parameters.mediaKeyStorageDirectoryExtensionHandle)) 197 return false; 234 235 std::optional<SandboxExtension::Handle> mediaKeyStorageDirectoryExtensionHandle; 236 decoder >> mediaKeyStorageDirectoryExtensionHandle; 237 if (!mediaKeyStorageDirectoryExtensionHandle) 238 return false; 239 parameters.mediaKeyStorageDirectoryExtensionHandle = WTFMove(*mediaKeyStorageDirectoryExtensionHandle); 240 198 241 #if ENABLE(MEDIA_STREAM) 199 if (!decoder.decode(parameters.audioCaptureExtensionHandle)) 200 return false; 242 243 std::optional<SandboxExtension::Handle> audioCaptureExtensionHandle; 244 decoder >> audioCaptureExtensionHandle; 245 if (!audioCaptureExtensionHandle) 246 return false; 247 parameters.audioCaptureExtensionHandle = WTFMove(*audioCaptureExtensionHandle); 248 201 249 if (!decoder.decode(parameters.shouldCaptureAudioInUIProcess)) 202 250 return false; … … 261 309 if (!decoder.decode(parameters.uiProcessBundleResourcePath)) 262 310 return false; 263 if (!decoder.decode(parameters.uiProcessBundleResourcePathExtensionHandle)) 264 return false; 311 312 std::optional<SandboxExtension::Handle> uiProcessBundleResourcePathExtensionHandle; 313 decoder >> uiProcessBundleResourcePathExtensionHandle; 314 if (!uiProcessBundleResourcePathExtensionHandle) 315 return false; 316 parameters.uiProcessBundleResourcePathExtensionHandle = WTFMove(*uiProcessBundleResourcePathExtensionHandle); 317 265 318 if (!decoder.decode(parameters.shouldEnableJIT)) 266 319 return false; -
trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp
r224791 r225826 47 47 } 48 48 49 bool WebsiteDataStoreParameters::decode(IPC::Decoder& decoder, WebsiteDataStoreParameters& parameters)49 std::optional<WebsiteDataStoreParameters> WebsiteDataStoreParameters::decode(IPC::Decoder& decoder) 50 50 { 51 51 std::optional<NetworkSessionCreationParameters> networkSessionParameters; 52 52 decoder >> networkSessionParameters; 53 53 if (!networkSessionParameters) 54 return false; 55 parameters.networkSessionParameters = WTFMove(*networkSessionParameters); 54 return std::nullopt; 56 55 57 if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier)) 58 return false; 56 std::optional<Vector<uint8_t>> uiProcessCookieStorageIdentifier; 57 decoder >> uiProcessCookieStorageIdentifier; 58 if (!uiProcessCookieStorageIdentifier) 59 return std::nullopt; 59 60 60 if (!decoder.decode(parameters.cookieStoragePathExtensionHandle)) 61 return false; 61 std::optional<SandboxExtension::Handle> cookieStoragePathExtensionHandle; 62 decoder >> cookieStoragePathExtensionHandle; 63 if (!cookieStoragePathExtensionHandle) 64 return std::nullopt; 62 65 63 66 std::optional<Vector<WebCore::Cookie>> pendingCookies; 64 67 decoder >> pendingCookies; 65 68 if (!pendingCookies) 66 return false; 67 parameters.pendingCookies = WTFMove(*pendingCookies); 69 return std::nullopt; 68 70 69 if (!decoder.decode(parameters.cacheStorageDirectory)) 70 return false; 71 std::optional<String> cacheStorageDirectory; 72 decoder >> cacheStorageDirectory; 73 if (!cacheStorageDirectory) 74 return std::nullopt; 71 75 72 if (!decoder.decode(parameters.cacheStoragePerOriginQuota)) 73 return false; 76 std::optional<uint64_t> cacheStoragePerOriginQuota; 77 decoder >> cacheStoragePerOriginQuota; 78 if (!cacheStoragePerOriginQuota) 79 return std::nullopt; 74 80 75 if (!decoder.decode(parameters.cacheStorageDirectoryExtensionHandle)) 76 return false; 77 78 return true; 81 std::optional<SandboxExtension::Handle> cacheStorageDirectoryExtensionHandle; 82 decoder >> cacheStorageDirectoryExtensionHandle; 83 if (!cacheStorageDirectoryExtensionHandle) 84 return std::nullopt; 85 86 return {{ WTFMove(*uiProcessCookieStorageIdentifier), WTFMove(*cookieStoragePathExtensionHandle), WTFMove(*pendingCookies), WTFMove(*cacheStorageDirectory), WTFMove(*cacheStoragePerOriginQuota), WTFMove(*cacheStorageDirectoryExtensionHandle), WTFMove(*networkSessionParameters)}}; 79 87 } 80 88 -
trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.h
r224791 r225826 43 43 WebsiteDataStoreParameters() = default; 44 44 WebsiteDataStoreParameters(WebsiteDataStoreParameters&&) = default; 45 WebsiteDataStoreParameters& operator=(WebsiteDataStoreParameters&&) = default; 45 46 ~WebsiteDataStoreParameters(); 46 47 static WebsiteDataStoreParameters legacyPrivateSessionParameters(); 47 48 48 49 void encode(IPC::Encoder&) const; 49 static bool decode(IPC::Decoder&, WebsiteDataStoreParameters&);50 static std::optional<WebsiteDataStoreParameters> decode(IPC::Decoder&); 50 51 51 52 Vector<uint8_t> uiProcessCookieStorageIdentifier; -
trunk/Source/WebKit/Shared/mac/SandboxExtensionMac.mm
r225373 r225826 112 112 113 113 SandboxExtension::Handle::Handle(Handle&&) = default; 114 SandboxExtension::Handle& SandboxExtension::Handle::operator=(Handle&&) = default; 114 115 115 116 SandboxExtension::Handle::~Handle() … … 136 137 } 137 138 138 bool SandboxExtension::Handle::decode(IPC::Decoder& decoder, Handle& result) 139 { 140 ASSERT(!result.m_sandboxExtension); 141 139 auto SandboxExtension::Handle::decode(IPC::Decoder& decoder) -> std::optional<Handle> 140 { 142 141 IPC::DataReference dataReference; 143 142 if (!decoder.decode(dataReference)) 144 return false;143 return std::nullopt; 145 144 146 145 if (dataReference.isEmpty()) 147 return true; 148 149 result.m_sandboxExtension = std::make_unique<SandboxExtensionImpl>(reinterpret_cast<const char*>(dataReference.data()), dataReference.size()); 150 return true; 146 return {{ }}; 147 148 Handle handle; 149 handle.m_sandboxExtension = std::make_unique<SandboxExtensionImpl>(reinterpret_cast<const char*>(dataReference.data()), dataReference.size()); 150 return WTFMove(handle); 151 151 } 152 152 153 153 SandboxExtension::HandleArray::HandleArray() 154 : m_size(0)155 154 { 156 155 } … … 193 192 for (size_t i = 0; i < m_size; ++i) 194 193 encoder << m_data[i]; 195 196 194 } 197 195 … … 203 201 handles.allocate(size); 204 202 for (size_t i = 0; i < size; i++) { 205 if (!decoder.decode(handles[i])) 203 std::optional<SandboxExtension::Handle> handle; 204 decoder >> handle; 205 if (!handle) 206 206 return false; 207 handles[i] = WTFMove(*handle); 207 208 } 208 209 return true; … … 363 364 SandboxExtension::SandboxExtension(const Handle& handle) 364 365 : m_sandboxExtension(WTFMove(handle.m_sandboxExtension)) 365 , m_useCount(0)366 366 { 367 367 }
Note:
See TracChangeset
for help on using the changeset viewer.