Changeset 207407 in webkit
- Timestamp:
- Oct 17, 2016 4:59:58 AM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r207406 r207407 1 2016-10-17 Konstantin Tokarev <annulen@yandex.ru> 2 3 Eleminate code duplication between ResourceRequest encoding/decoding implementations 4 https://bugs.webkit.org/show_bug.cgi?id=163507 5 6 Reviewed by Carlos Garcia Campos. 7 8 ResourceRequestBase::encodeWithoutPlatformData() and Soup implementation of 9 ArgumentCoder<ResourceRequest>::encodePlatformData() share most of the code, 10 ditto for decoding implementations. 11 12 No new tests needed. 13 14 * platform/network/ResourceRequestBase.h: 15 (WebCore::ResourceRequestBase::encodeBase): 16 (WebCore::ResourceRequestBase::decodeBase): 17 (WebCore::ResourceRequestBase::encodeWithoutPlatformData): 18 (WebCore::ResourceRequestBase::decodeWithoutPlatformData): 19 * platform/network/soup/ResourceRequest.h: 20 (WebCore::ResourceRequest::encodeWithPlatformData): 21 (WebCore::ResourceRequest::decodeWithPlatformData): 22 1 23 2016-10-17 Michael Catanzaro <mcatanzaro@igalia.com> 2 24 -
trunk/Source/WebCore/platform/network/ResourceRequestBase.h
r207330 r207407 207 207 void updateResourceRequest(HTTPBodyUpdatePolicy = DoNotUpdateHTTPBody) const; 208 208 209 template<class Encoder> void encodeBase(Encoder&) const; 210 template<class Decoder> bool decodeBase(Decoder&); 211 209 212 // The ResourceRequest subclass may "shadow" this method to compare platform specific fields 210 213 static bool platformCompare(const ResourceRequest&, const ResourceRequest&) { return true; } … … 251 254 252 255 template<class Encoder> 253 void ResourceRequestBase::encodeWithoutPlatformData(Encoder& encoder) const256 ALWAYS_INLINE void ResourceRequestBase::encodeBase(Encoder& encoder) const 254 257 { 255 ASSERT(!m_httpBody);256 ASSERT(!m_platformRequestUpdated);257 258 encoder << m_url; 258 259 encoder << m_timeoutInterval; … … 268 269 269 270 template<class Decoder> 271 ALWAYS_INLINE bool ResourceRequestBase::decodeBase(Decoder& decoder) 272 { 273 if (!decoder.decode(m_url)) 274 return false; 275 276 if (!decoder.decode(m_timeoutInterval)) 277 return false; 278 279 String firstPartyForCookies; 280 if (!decoder.decode(firstPartyForCookies)) 281 return false; 282 m_firstPartyForCookies = URL(ParsedURLString, firstPartyForCookies); 283 284 if (!decoder.decode(m_httpMethod)) 285 return false; 286 287 if (!decoder.decode(m_httpHeaderFields)) 288 return false; 289 290 if (!decoder.decode(m_responseContentDispositionEncodingFallbackArray)) 291 return false; 292 293 ResourceRequestCachePolicy cachePolicy; 294 if (!decoder.decodeEnum(cachePolicy)) 295 return false; 296 m_cachePolicy = cachePolicy; 297 298 bool allowCookies; 299 if (!decoder.decode(allowCookies)) 300 return false; 301 m_allowCookies = allowCookies; 302 303 ResourceLoadPriority priority; 304 if (!decoder.decodeEnum(priority)) 305 return false; 306 m_priority = priority; 307 308 if (!decoder.decodeEnum(m_requester)) 309 return false; 310 311 return true; 312 } 313 314 template<class Encoder> 315 void ResourceRequestBase::encodeWithoutPlatformData(Encoder& encoder) const 316 { 317 ASSERT(!m_httpBody); 318 ASSERT(!m_platformRequestUpdated); 319 encodeBase(encoder); 320 } 321 322 template<class Decoder> 270 323 bool ResourceRequestBase::decodeWithoutPlatformData(Decoder& decoder) 271 324 { 272 if (!decoder.decode(m_url)) 273 return false; 274 275 if (!decoder.decode(m_timeoutInterval)) 276 return false; 277 278 String firstPartyForCookies; 279 if (!decoder.decode(firstPartyForCookies)) 280 return false; 281 m_firstPartyForCookies = URL(ParsedURLString, firstPartyForCookies); 282 283 if (!decoder.decode(m_httpMethod)) 284 return false; 285 286 if (!decoder.decode(m_httpHeaderFields)) 287 return false; 288 289 if (!decoder.decode(m_responseContentDispositionEncodingFallbackArray)) 290 return false; 291 292 ResourceRequestCachePolicy cachePolicy; 293 if (!decoder.decodeEnum(cachePolicy)) 294 return false; 295 m_cachePolicy = cachePolicy; 296 297 bool allowCookies; 298 if (!decoder.decode(allowCookies)) 299 return false; 300 m_allowCookies = allowCookies; 301 302 ResourceLoadPriority priority; 303 if (!decoder.decodeEnum(priority)) 304 return false; 305 m_priority = priority; 306 307 if (!decoder.decodeEnum(m_requester)) 308 return false; 309 310 return true; 325 return decodeBase(decoder); 311 326 } 312 327 -
trunk/Source/WebCore/platform/network/soup/ResourceRequest.h
r206805 r207407 107 107 GUniquePtr<SoupURI> createSoupURI() const; 108 108 109 template<class Encoder> void encodeWithPlatformData(Encoder&) const; 110 template<class Decoder> bool decodeWithPlatformData(Decoder&); 111 109 112 private: 110 113 friend class ResourceRequestBase; … … 123 126 void doPlatformSetAsIsolatedCopy(const ResourceRequest&) { } 124 127 }; 128 129 template<class Encoder> 130 void ResourceRequest::encodeWithPlatformData(Encoder& encoder) const 131 { 132 encodeBase(encoder); 133 134 // FIXME: Do not encode HTTP message body. 135 // 1. It can be large and thus costly to send across. 136 // 2. It is misleading to provide a body with some requests, while others use body streams, which cannot be serialized at all. 137 encoder << static_cast<bool>(m_httpBody); 138 if (m_httpBody) 139 encoder << m_httpBody->flattenToString(); 140 141 encoder << static_cast<uint32_t>(m_soupFlags); 142 encoder << m_initiatingPageID; 143 } 144 145 template<class Decoder> 146 bool ResourceRequest::decodeWithPlatformData(Decoder& decoder) 147 { 148 if (!decodeBase(decoder)) 149 return false; 150 151 bool hasHTTPBody; 152 if (!decoder.decode(hasHTTPBody)) 153 return false; 154 if (hasHTTPBody) { 155 String httpBody; 156 if (!decoder.decode(httpBody)) 157 return false; 158 setHTTPBody(FormData::create(httpBody.utf8())); 159 } 160 161 uint32_t soupMessageFlags; 162 if (!decoder.decode(soupMessageFlags)) 163 return false; 164 m_soupFlags = static_cast<SoupMessageFlags>(soupMessageFlags); 165 166 uint64_t initiatingPageID; 167 if (!decoder.decode(initiatingPageID)) 168 return false; 169 m_initiatingPageID = initiatingPageID; 170 171 return true; 172 } 173 125 174 126 175 #if SOUP_CHECK_VERSION(2, 43, 1) -
trunk/Source/WebKit2/ChangeLog
r207406 r207407 1 2016-10-17 Konstantin Tokarev <annulen@yandex.ru> 2 3 Eleminate code duplication between ResourceRequest encoding/decoding implementations 4 https://bugs.webkit.org/show_bug.cgi?id=163507 5 6 Reviewed by Carlos Garcia Campos. 7 8 ResourceRequestBase::encodeWithoutPlatformData() and Soup implementation of 9 ArgumentCoder<ResourceRequest>::encodePlatformData() share most of the code, 10 ditto for decoding implementations. 11 12 * Shared/soup/WebCoreArgumentCodersSoup.cpp: 13 (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData): 14 (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData): 15 1 16 2016-10-17 Michael Catanzaro <mcatanzaro@igalia.com> 2 17 -
trunk/Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp
r204678 r207407 42 42 void ArgumentCoder<ResourceRequest>::encodePlatformData(Encoder& encoder, const ResourceRequest& resourceRequest) 43 43 { 44 encoder << resourceRequest.url().string(); 45 encoder << resourceRequest.httpMethod(); 46 encoder << resourceRequest.httpHeaderFields(); 47 encoder << resourceRequest.timeoutInterval(); 48 49 // FIXME: Do not encode HTTP message body. 50 // 1. It can be large and thus costly to send across. 51 // 2. It is misleading to provide a body with some requests, while others use body streams, which cannot be serialized at all. 52 FormData* httpBody = resourceRequest.httpBody(); 53 encoder << static_cast<bool>(httpBody); 54 if (httpBody) 55 encoder << httpBody->flattenToString(); 56 57 encoder << resourceRequest.firstPartyForCookies().string(); 58 encoder << resourceRequest.allowCookies(); 59 encoder.encodeEnum(resourceRequest.priority()); 60 encoder.encodeEnum(resourceRequest.cachePolicy()); 61 encoder.encodeEnum(resourceRequest.requester()); 62 63 encoder << static_cast<uint32_t>(resourceRequest.soupMessageFlags()); 64 encoder << resourceRequest.initiatingPageID(); 44 resourceRequest.encodeWithPlatformData(encoder); 65 45 } 66 46 67 47 bool ArgumentCoder<ResourceRequest>::decodePlatformData(Decoder& decoder, ResourceRequest& resourceRequest) 68 48 { 69 String url; 70 if (!decoder.decode(url)) 71 return false; 72 resourceRequest.setURL(URL(URL(), url)); 73 74 String httpMethod; 75 if (!decoder.decode(httpMethod)) 76 return false; 77 resourceRequest.setHTTPMethod(httpMethod); 78 79 HTTPHeaderMap headers; 80 if (!decoder.decode(headers)) 81 return false; 82 resourceRequest.setHTTPHeaderFields(WTFMove(headers)); 83 84 double timeoutInterval; 85 if (!decoder.decode(timeoutInterval)) 86 return false; 87 resourceRequest.setTimeoutInterval(timeoutInterval); 88 89 bool hasHTTPBody; 90 if (!decoder.decode(hasHTTPBody)) 91 return false; 92 if (hasHTTPBody) { 93 String httpBody; 94 if (!decoder.decode(httpBody)) 95 return false; 96 resourceRequest.setHTTPBody(FormData::create(httpBody.utf8())); 97 } 98 99 String firstPartyForCookies; 100 if (!decoder.decode(firstPartyForCookies)) 101 return false; 102 resourceRequest.setFirstPartyForCookies(URL(URL(), firstPartyForCookies)); 103 104 bool allowCookies; 105 if (!decoder.decode(allowCookies)) 106 return false; 107 resourceRequest.setAllowCookies(allowCookies); 108 109 ResourceLoadPriority priority; 110 if (!decoder.decodeEnum(priority)) 111 return false; 112 resourceRequest.setPriority(priority); 113 114 ResourceRequestCachePolicy cachePolicy; 115 if (!decoder.decodeEnum(cachePolicy)) 116 return false; 117 resourceRequest.setCachePolicy(cachePolicy); 118 119 ResourceRequest::Requester requester; 120 if (!decoder.decodeEnum(requester)) 121 return false; 122 resourceRequest.setRequester(requester); 123 124 uint32_t soupMessageFlags; 125 if (!decoder.decode(soupMessageFlags)) 126 return false; 127 resourceRequest.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags)); 128 129 uint64_t initiatingPageID; 130 if (!decoder.decode(initiatingPageID)) 131 return false; 132 resourceRequest.setInitiatingPageID(initiatingPageID); 133 134 return true; 49 return resourceRequest.decodeWithPlatformData(decoder); 135 50 } 136 51
Note: See TracChangeset
for help on using the changeset viewer.