3c7068c27ca81b2f1beb8f83507e99043ada00ce
[WebKit-https.git] / Source / WebKit / ChangeLog
1 2018-01-08  Youenn Fablet  <youenn@apple.com>
2
3         SWClientConnection should not keep references to service worker jobs
4         https://bugs.webkit.org/show_bug.cgi?id=181381
5
6         Reviewed by Chris Dumez.
7
8         Updated IPC handling based on WebCore refactoring.
9
10         * Scripts/webkit/messages.py:
11         (forward_declarations_and_headers):
12         (headers_for_type):
13         * StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
14         (WebKit::WebSWServerConnection::rejectJobInClient):
15         (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
16         (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
17         (WebKit::WebSWServerConnection::startScriptFetchInClient):
18         * StorageProcess/ServiceWorker/WebSWServerConnection.h:
19         * WebProcess/Storage/WebSWClientConnection.messages.in:
20
21 2018-01-08  Joseph Pecoraro  <pecoraro@apple.com>
22
23         [Cocoa] Web Inspector: Provide a way for clients to check if an NSWindow is a Web Inspector window
24         https://bugs.webkit.org/show_bug.cgi?id=181361
25         <rdar://problem/36332865>
26
27         Reviewed by Darin Adler.
28
29         * WebKit.xcodeproj/project.pbxproj:
30         New files.
31
32         * Shared/API/Cocoa/_WKNSWindowExtras.h: Added.
33         * Shared/API/Cocoa/_WKNSWindowExtras.mm: Added.
34         (-[NSWindow _web_isWebInspectorWindow]):
35         Method to determing if a window is being used for Web Inspector content.
36
37         * UIProcess/mac/WKInspectorWindow.h: Added.
38         * UIProcess/mac/WKInspectorWindow.mm: Added.
39         Named subclass so we can use isKindOfClass.
40
41         * UIProcess/mac/WebInspectorProxyMac.mm:
42         (WebKit::WebInspectorProxy::createFrontendWindow):
43         Use the named subclass.
44
45 2018-01-08  Tim Horton  <timothy_horton@apple.com>
46
47         Build fix for WKPDFView
48         https://bugs.webkit.org/show_bug.cgi?id=181399
49         <rdar://problem/36311915>
50
51         Reviewed by Simon Fraser.
52
53         * UIProcess/ios/WKPDFView.mm:
54         Disable deprecation warnings in this whole file.
55
56 2018-01-08  Youenn Fablet  <youenn@apple.com>
57
58         Caches::writeCachesToDisk should assert that it is initialized
59         https://bugs.webkit.org/show_bug.cgi?id=181383
60
61         Reviewed by Alex Christensen.
62
63         Add assertion to ensure caches is initialized
64
65         * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
66         (WebKit::CacheStorage::Caches::writeCachesToDisk):
67
68 2018-01-08  Youenn Fablet  <youenn@apple.com>
69
70         WebProcessPool::terminateServiceWorkerProcess should protect itself in debug builds
71         https://bugs.webkit.org/show_bug.cgi?id=181384
72
73         Reviewed by Chris Dumez.
74
75         * UIProcess/WebProcessPool.cpp:
76         (WebKit::WebProcessPool::terminateServiceWorkerProcess):
77
78 2018-01-08  Frederic Wang  <fwang@igalia.com>
79
80         Unreviewed build fix after r226211.
81
82         * UIProcess/API/Cocoa/WKPreferencesPrivate.h: Use WK_IOS_TBA for iOS.
83
84 2018-01-08  Youenn Fablet  <youenn@apple.com>
85
86         navigator.onLine does not work inside service workers
87         https://bugs.webkit.org/show_bug.cgi?id=181079
88         <rdar://problem/36178606>
89
90         Reviewed by Darin Adler.
91
92         Added support for a callback called for each service worker proxy creation.
93         Callback is used by WTR to inject a self.internals object used for testing.
94
95         * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
96         (WKBundleSetServiceWorkerProxyCreationCallback):
97         * WebProcess/InjectedBundle/API/c/WKBundle.h:
98         * WebProcess/InjectedBundle/InjectedBundle.cpp:
99         (WebKit::InjectedBundle::setServiceWorkerProxyCreationCallback):
100         * WebProcess/InjectedBundle/InjectedBundle.h:
101
102 2018-01-07  David Kilzer  <ddkilzer@apple.com>
103
104         Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
105         <https://webkit.org/b/181256>
106         <rdar://problem/36281730>
107
108         Reviewed by Darin Adler.
109
110         * Configurations/Base.xcconfig:
111         (WARNING_CFLAGS): Add -Wcast-qual.
112         * NetworkProcess/cache/NetworkCacheCodersCocoa.cpp:
113         (WTF::Persistence::encodeCertificateChain): Include
114         TypeCastsCF.h from WTF, and use
115         checked_cf_cast<SecCertificateRef>() to fix warning.
116         * Platform/cocoa/WKCrashReporter.mm:
117         (WebKit::setCrashReportApplicationSpecificInformation):
118         - Move `oldMessage` check above nullptr check to fix a leak when
119           passing in nullptr after previously setting the crash string.
120         - Change C-style cast to const_cast<char*>() to fix warning.
121         * PluginProcess/mac/PluginProcessShim.mm:
122         (WebKit::shim_shmat): Change C-style cast to
123         const_cast<void*>() to fix warning.
124         * Shared/Authentication/mac/AuthenticationManager.mac.mm:
125         (WebKit::leafCertificate): Include TypeCastsCF.h from
126         WTF, and use checked_cf_cast<SecCertificateRef>() to fix
127         warning.
128         * Shared/cf/ArgumentCodersCF.cpp:
129         (IPC::encode): Use static_cast<>(const_cast<void*>() to
130         fix warnings since the CFTypeID has already been
131         checked.
132         * Shared/mac/WebCoreArgumentCodersMac.mm:
133         (IPC::decodeNSError): Use an `auto` variable to hold the
134         CFMutableDictionaryRef, then WTFMove() to assign it back to
135         `userInfo`.
136         * UIProcess/Cocoa/WebViewImpl.mm:
137         (WebKit::takeWindowSnapshot): Include TypeCastsCF.h from
138         WTF, and use checked_cf_cast<CGImageRef>() to fix
139         warning.
140
141 2018-01-07  Konstantin Tokarev  <annulen@yandex.ru>
142
143         [cmake] Unset CMAKE_REQUIRED_LIBRARIES after check_function_exists test
144         https://bugs.webkit.org/show_bug.cgi?id=181371
145
146         Reviewed by Michael Catanzaro.
147
148         This variable is used by check_function_exists internally, its value
149         should be never used for anything else.
150
151         * CMakeLists.txt:
152
153 2018-01-05  Dan Bernstein  <mitz@apple.com>
154
155         REGRESSION (r226218): iOS-only assets are installed on macOS
156         https://bugs.webkit.org/show_bug.cgi?id=181362
157
158         Reviewed by Anders Carlsson.
159
160         * Configurations/WebKit.xcconfig: Exclude everything under Resources/ios when not targeting
161           iOS.
162
163         * Resources/ios: Added.
164         * Resources/ios/iOS.xcassets: Moved from Source/WebKit/WebKit.xcassets.
165         * Resources/ios/iOS.xcassets/LockMini.imageset/NavigationBarLockMini@2x.pdf: Set the
166           svn:mime-type property.
167         * Resources/ios/iOS.xcassets/LockMini.imageset/NavigationBarLockMini@3x.pdf: Ditto.
168
169         * Resources/mac: Added.
170         * Resources/mac/mediaIcon.pdf: Moved here…
171         * Resources/mediaIcon.pdf: …from here.
172
173         * WebKit.xcassets: Moved under Resources/ios.
174
175         * WebKit.xcodeproj/project.pbxproj: Created an ios group under the Resources group, and
176           cleaned up the mac group. Removed the Recovered References group.
177
178 2018-01-05  John Wilander  <wilander@apple.com>
179
180         Storage Access API: Refactor to make naming accurate and explicit, simplify access table, and prepare for access removal for page
181         https://bugs.webkit.org/show_bug.cgi?id=181357
182         <rdar://problem/36331031>
183
184         Reviewed by Alex Christensen.
185
186         This change does the following:
187         - Changes function and message names to reflect how this feature
188           was eventually implemented, i.e. access per frame.
189         - Makes it explicit that the UI process is only involved in
190           granting storage access and not removing storage access.
191           The latter is done directly by the web process.
192         - Simplifies the network process' entry map since only needs to
193           be able to give access to one domain in one frame at a time.
194           Access goes away on frame navigation so there can only be one
195           domain at a time per frame. Also, the map now uses pageIDs as
196           main keys to prepare for efficient access removal for all
197           frames under a page.
198         - Fixes a bug in so that a cross-origin iframe with the same
199           partition as the top frame correctly is handled as already
200           having access.
201
202         * NetworkProcess/NetworkConnectionToWebProcess.cpp:
203         (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
204         (WebKit::NetworkConnectionToWebProcess::removeStorageAccess): Deleted.
205         * NetworkProcess/NetworkConnectionToWebProcess.h:
206         * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
207         * NetworkProcess/NetworkProcess.cpp:
208         (WebKit::NetworkProcess::hasStorageAccessForFrame):
209         (WebKit::NetworkProcess::grantStorageAccessForFrame):
210         (WebKit::NetworkProcess::hasStorageAccessForPrevalentDomains): Deleted.
211         (WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains): Deleted.
212         * NetworkProcess/NetworkProcess.h:
213         * NetworkProcess/NetworkProcess.messages.in:
214         * UIProcess/Network/NetworkProcessProxy.cpp:
215         (WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
216         (WebKit::NetworkProcessProxy::grantStorageAccessForFrame):
217         (WebKit::NetworkProcessProxy::hasStorageAccessForPrevalentDomains): Deleted.
218         (WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains): Deleted.
219         * UIProcess/Network/NetworkProcessProxy.h:
220         * UIProcess/WebResourceLoadStatisticsStore.cpp:
221         (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
222         (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
223         (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
224         * UIProcess/WebResourceLoadStatisticsStore.h:
225         * UIProcess/WebsiteData/WebsiteDataStore.cpp:
226         (WebKit::WebsiteDataStore::hasStorageAccessForFrameHandler):
227         (WebKit::WebsiteDataStore::grantStorageAccessForFrameHandler):
228         (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
229         (WebKit::WebsiteDataStore::hasStorageAccessForPrevalentDomainsHandler): Deleted.
230         (WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler): Deleted.
231         * UIProcess/WebsiteData/WebsiteDataStore.h:
232         * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
233         (WebKit::WebFrameLoaderClient::detachedFromParent2):
234         (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
235
236 2018-01-05  Youenn Fablet  <youenn@apple.com>
237
238         Implement Cache API partitioning based on ClientOrigin
239         https://bugs.webkit.org/show_bug.cgi?id=181240
240
241         Reviewed by Alex Christensen.
242
243         open and retrieveCaches now take a ClientOrigin instead of a String.
244         Updated cache filesystem path computation to take both client origin and top origin.
245
246         When clearing an origin, caches whose client origin or top origin matches the origin are cleared.
247         Caches are added to the web site data of their client origin with their corresponding cache size.
248         Caches are added to the web site data of their top origin with a size equal to 0.
249
250         Updated memory representation dumping used for test to include both top and client origins.
251
252         * NetworkProcess/NetworkProcess.cpp:
253         (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
254         * NetworkProcess/cache/CacheStorageEngine.cpp:
255         (WebKit::CacheStorage::Engine::cachesRootPath):
256         (WebKit::CacheStorage::Engine::open):
257         (WebKit::CacheStorage::Engine::remove):
258         (WebKit::CacheStorage::Engine::retrieveCaches):
259         (WebKit::CacheStorage::Engine::readCachesFromDisk):
260         (WebKit::CacheStorage::Engine::removeCaches):
261         (WebKit::CacheStorage::Engine::fetchEntries):
262         (WebKit::CacheStorage::Engine::clearCachesForOrigin):
263         (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
264         (WebKit::CacheStorage::Engine::representation):
265         * NetworkProcess/cache/CacheStorageEngine.h:
266         * NetworkProcess/cache/CacheStorageEngineCache.cpp:
267         (WebKit::CacheStorage::Cache::Cache):
268         * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
269         (WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
270         (WebKit::CacheStorage::Caches::Caches):
271         (WebKit::CacheStorage::Caches::storeOrigin):
272         (WebKit::CacheStorage::Caches::readOrigin):
273         (WebKit::CacheStorage::Caches::open):
274         * NetworkProcess/cache/CacheStorageEngineCaches.h:
275         (WebKit::CacheStorage::Caches::create):
276         (WebKit::CacheStorage::Caches::origin const):
277         * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
278         (WebKit::CacheStorageEngineConnection::open):
279         (WebKit::CacheStorageEngineConnection::caches):
280         (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
281         * NetworkProcess/cache/CacheStorageEngineConnection.h:
282         * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
283         * WebProcess/Cache/WebCacheStorageConnection.cpp:
284         (WebKit::WebCacheStorageConnection::doOpen):
285         (WebKit::WebCacheStorageConnection::doRetrieveCaches):
286         (WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
287         * WebProcess/Cache/WebCacheStorageConnection.h:
288
289 2018-01-05  Megan Gardner  <megan_gardner@apple.com>
290
291         Show Keyboard when re-launching WKWebView with a previously focused element
292         https://bugs.webkit.org/show_bug.cgi?id=181353
293
294         Reviewed by Tim Horton.
295
296         When relaunching an app with a WKWebView, restore the keyboard if there was a previously
297         focused element that was being assisted. The element was already being tracked, we just
298         needed to not bail on showing the keyboard for instances where it was a state change that
299         caused the element to be refocused.
300
301         * UIProcess/PageClient.h:
302         * UIProcess/WebPageProxy.h:
303         * UIProcess/WebPageProxy.messages.in:
304         * UIProcess/ios/PageClientImplIOS.h:
305         * UIProcess/ios/PageClientImplIOS.mm:
306         (WebKit::PageClientImpl::startAssistingNode):
307         * UIProcess/ios/WKContentView.h:
308         * UIProcess/ios/WKContentViewInteraction.h:
309         * UIProcess/ios/WKContentViewInteraction.mm:
310         (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
311         (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]): Deleted.
312         * UIProcess/ios/WebPageProxyIOS.mm:
313         (WebKit::WebPageProxy::startAutoscrollAtPosition):
314         (WebKit::WebPageProxy::startAssistingNode):
315         * WebProcess/WebPage/WebPage.cpp:
316         (WebKit::WebPage::setActivityState):
317         (WebKit::WebPage::elementDidFocus):
318         * WebProcess/WebPage/WebPage.h:
319
320 2018-01-05  Alex Christensen  <achristensen@webkit.org>
321
322         Restrict navigation-time WKWebsiteDataStore swapping to main frame navigations
323         https://bugs.webkit.org/show_bug.cgi?id=181217
324
325         Reviewed by Tim Horton.
326
327         If we swap during an iframe navigation, then we get a page in a strange state.
328         The intent of the main frame navigation WKWebsiteDataStore swap is that
329         that is a time when we can change storages without a page in an inconsistent state.
330
331         * UIProcess/Cocoa/NavigationState.mm:
332         (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
333
334 2018-01-05  Alex Christensen  <achristensen@webkit.org>
335
336         Add WKBundleFrameCreateFrameHandle
337         https://bugs.webkit.org/show_bug.cgi?id=181232
338         <rdar://problem/35926696>
339
340         Reviewed by Tim Horton.
341
342         InjectedBundle clients wanting to sent a _WKFrameHandle cannot without this function.
343         Before, they would just send the WKBundleFrameRef which would be changed into a WKFrameRef
344         in the UIProcess by WebProcessProxy::transformHandlesToObjects, but there is no ObjC equivalent
345         of WKFrameRef, so we were just getting a WKObject when we wanted a _WKFrameHandle.
346         We can't change WebProcessProxy::transformHandlesToObjects without being incompatible with the 
347         existing C API, so let's add a way for clients to say "I want a _WKFrameHandle".
348
349         * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
350         (WKBundleFrameCreateFrameHandle):
351         * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
352
353 2018-01-05  Wenson Hsieh  <wenson_hsieh@apple.com>
354
355         [Attachment Support] Add a way to write blob data to a file URL from the UI process
356         https://bugs.webkit.org/show_bug.cgi?id=181236
357
358         Reviewed by Brady Eidson.
359
360         Add support for writing a blob to a designated file path. In WebKit, this is mainly plumbing writeBlobToFilePath
361         through WebPageProxy to the network process.
362
363         * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
364         (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
365
366         Call out to the BlobRegistryImpl to write blobs to the file path. Additionally grant sandbox extensions for any
367         file-backed blob parts corresponding to the given blob URL.
368
369         (WebKit::NetworkBlobRegistry::filesInBlob):
370
371         Introduce a version of filesInBlob that doesn't check against the NetworkConnectionToWebProcess. This is used
372         when the UI process is the driver for writing a blob.
373
374         * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
375         * NetworkProcess/NetworkProcess.cpp:
376         (WebKit::NetworkProcess::writeBlobToFilePath):
377
378         Temporarily grant sandbox access to the given file path.
379
380         * NetworkProcess/NetworkProcess.h:
381         * NetworkProcess/NetworkProcess.messages.in:
382         * Shared/WebCoreArgumentCoders.cpp:
383         (IPC::ArgumentCoder<PromisedBlobInfo>::encode):
384         (IPC::ArgumentCoder<PromisedBlobInfo>::decode):
385         (IPC::ArgumentCoder<PromisedBlobData>::encode): Deleted.
386         (IPC::ArgumentCoder<PromisedBlobData>::decode): Deleted.
387
388         Remove PromisedBlobData (see WebCore/ChangeLog for more information).
389
390         * Shared/WebCoreArgumentCoders.h:
391         * UIProcess/Network/NetworkProcessProxy.cpp:
392         (WebKit::NetworkProcessProxy::didClose):
393
394         If the network process is terminated, flush any pending callbacks in m_writeBlobToFilePathCallbackMap, passing
395         in a failure result (success := false) and clearing the callback map.
396
397         (WebKit::NetworkProcessProxy::writeBlobToFilePath):
398         (WebKit::NetworkProcessProxy::didWriteBlobToFilePath):
399         * UIProcess/Network/NetworkProcessProxy.h:
400         * UIProcess/Network/NetworkProcessProxy.messages.in:
401         * UIProcess/WebPageProxy.cpp:
402         (WebKit::WebPageProxy::writeBlobToFilePath):
403         * UIProcess/WebPageProxy.h:
404
405 2018-01-05  Dan Bernstein  <mitz@apple.com>
406
407         Add injected bundle equivalents of DOMHTMLDocument (DOMHTMLDocumentExtensions)
408         https://bugs.webkit.org/show_bug.cgi?id=181345
409
410         Reviewed by Tim Horton.
411
412         * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: Declared new methods.
413         * WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm:
414         (-[WKDOMDocument createDocumentFragmentWithMarkupString:baseURL:]): Added. Calls WebCore’s
415           createFragmentFromMarkup.
416         (-[WKDOMDocument createDocumentFragmentWithText:]): Added. Calls WebCore’s
417           createFragmentFromText.
418
419 2018-01-05  Don Olmstead  <don.olmstead@sony.com>
420
421         [Curl] Add implementation stubs for Network Cache
422         https://bugs.webkit.org/show_bug.cgi?id=181343
423
424         Reviewed by Alex Christensen.
425
426         * NetworkProcess/cache/NetworkCacheCodersCurl.cpp: Added.
427         (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
428         (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):
429         * NetworkProcess/cache/NetworkCacheDataCurl.cpp: Added.
430         (WebKit::NetworkCache::Data::Data):
431         (WebKit::NetworkCache::Data::empty):
432         (WebKit::NetworkCache::Data::data const):
433         (WebKit::NetworkCache::Data::isNull const):
434         (WebKit::NetworkCache::Data::apply const):
435         (WebKit::NetworkCache::Data::subrange const):
436         (WebKit::NetworkCache::concatenate):
437         (WebKit::NetworkCache::Data::adoptMap):
438         * NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp: Added.
439         (WebKit::NetworkCache::IOChannel::IOChannel):
440         (WebKit::NetworkCache::IOChannel::~IOChannel):
441         (WebKit::NetworkCache::IOChannel::open):
442         (WebKit::NetworkCache::IOChannel::read):
443         (WebKit::NetworkCache::IOChannel::write):
444         * PlatformWin.cmake:
445
446 2018-01-05  Don Olmstead  <don.olmstead@sony.com>
447
448         [Curl] Update method declarations in WebKit
449         https://bugs.webkit.org/show_bug.cgi?id=181342
450
451         Reviewed by Alex Christensen.
452
453         * NetworkProcess/Downloads/curl/DownloadCurl.cpp:
454         (WebKit::Download::resume):
455         * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
456         (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession): Deleted.
457         (WebKit::RemoteNetworkingContext::blockedError const): Deleted.
458
459 2018-01-05  Don Olmstead  <don.olmstead@sony.com>
460
461         WebFullScreenManager should compile when ENABLE(VIDEO) is off
462         https://bugs.webkit.org/show_bug.cgi?id=181338
463
464         Reviewed by Alex Christensen.
465
466         * WebProcess/FullScreen/WebFullScreenManager.cpp:
467         (WebKit::WebFullScreenManager::didEnterFullScreen):
468         (WebKit::WebFullScreenManager::willExitFullScreen):
469         * WebProcess/FullScreen/WebFullScreenManager.h:
470
471 2018-01-05  Andy Estes  <aestes@apple.com>
472
473         [Apple Pay] Disable Apple Pay on platforms that don't have PassKit.framework
474         https://bugs.webkit.org/show_bug.cgi?id=181335
475         <rdar://problem/36311296>
476
477         Reviewed by Brady Eidson.
478
479         When Safari is running in the macOS Base System, PassKit.framework is not available.
480         If we fail to dlopen PassKit, we should disable Apple Pay.
481
482         * UIProcess/API/C/WKPreferences.cpp:
483         (WKPreferencesSetApplePayEnabled):
484         * UIProcess/API/Cocoa/WKWebView.mm:
485         (-[WKWebView _initializeWithConfiguration:]):
486         * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
487         * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
488         (WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks):
489         (WebKit::WebPaymentCoordinatorProxy::platformSupportsPayments):
490
491 2018-01-05  Dan Bernstein  <mitz@apple.com>
492
493         Fixed the build following AppKit API deprecations in a recent SDKs
494
495         * UIProcess/mac/WKFullScreenWindowController.mm:
496         (-[WKFullScreenWindowController enterFullScreen:]): Suppressed deprecation warnings.
497         (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Ditto.
498         (-[WKFullScreenWindowController exitFullScreen]): Ditto.
499         (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Ditto.
500         (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): Ditto.
501         (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): Ditto.
502         (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]): Ditto.
503         * UIProcess/mac/WKPrintingView.mm:
504         (-[WKPrintingView _setAutodisplay:]): Ditto.
505
506 2018-01-05  Matt Lewis  <jlewis3@apple.com>
507
508         Unreviewed, rolling out r226401.
509
510         This caused timeouts on multiple platforms.
511
512         Reverted changeset:
513
514         "Implement Cache API partitioning based on ClientOrigin"
515         https://bugs.webkit.org/show_bug.cgi?id=181240
516         https://trac.webkit.org/changeset/226401
517
518 2018-01-05  Joseph Pecoraro  <pecoraro@apple.com>
519
520         ServiceWorkers: Enable UserTiming / ResourceTiming
521         https://bugs.webkit.org/show_bug.cgi?id=181297
522         <rdar://problem/36307306>
523
524         Reviewed by Youenn Fablet.
525
526         * WebProcess/Storage/WebSWContextManagerConnection.cpp:
527         (WebKit::WebSWContextManagerConnection::updatePreferencesStore):
528         Enable Resource Timing / User Timing for the ServiceWorker process.
529
530 2018-01-04  Zan Dobersek  <zdobersek@igalia.com>
531
532         Unreviewed GTK+ build fix.
533
534         * UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp:
535         (webkit_user_media_permission_is_for_audio_device):
536         Call UserMediaPermissionRequestProxy::requiresAudioCapture().
537         (webkit_user_media_permission_is_for_video_device):
538         Call UserMediaPermissionRequestProxy::requiresVideoCapture().
539
540 2018-01-04  Don Olmstead  <don.olmstead@sony.com>
541
542         [Curl] Fix compilation error in WebFrameNetworkingContext
543         https://bugs.webkit.org/show_bug.cgi?id=181312
544
545         Reviewed by Alex Christensen.
546
547         * WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp:
548         (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
549
550 2018-01-04  Tim Horton  <timothy_horton@apple.com>
551
552         WKWebView loses minimum layout size overrides that happen while the process is terminated
553         https://bugs.webkit.org/show_bug.cgi?id=181306
554         <rdar://problem/34398288>
555
556         Reviewed by Dan Bernstein.
557
558         * Shared/WebPageCreationParameters.cpp:
559         (WebKit::WebPageCreationParameters::encode const):
560         (WebKit::WebPageCreationParameters::decode):
561         * Shared/WebPageCreationParameters.h:
562         * UIProcess/API/Cocoa/WKWebView.mm:
563         (-[WKWebView _didRelaunchProcess]): Deleted.
564         * UIProcess/API/Cocoa/WKWebViewPrivate.h:
565         * UIProcess/WebPageProxy.cpp:
566         (WebKit::WebPageProxy::creationParameters):
567         * UIProcess/WebPageProxy.h:
568         * UIProcess/ios/PageClientImplIOS.mm:
569         (WebKit::PageClientImpl::didRelaunchProcess):
570         * UIProcess/ios/WebPageProxyIOS.mm:
571         (WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
572         (WebKit::WebPageProxy::setForceAlwaysUserScalable):
573         (WebKit::WebPageProxy::setMaximumUnobscuredSize):
574         * WebProcess/WebPage/WebPage.cpp:
575         (WebKit::WebPage::WebPage):
576         Pass the current viewport minimum layout size and maximum unobscured size
577         in the WebPageCreationParameters instead of re-sending them in _didRelaunchProcess.
578
579         The previous approach was problematic when _dispatchSetMinimumLayoutSize:
580         was changed to not re-send identical updates, because if the client calls 
581         _overrideLayoutParametersWithMinimumLayoutSize before the Web Content process
582         is re-launched (after terminating), we would cache the size, attempt to send it,
583         fail silently (because the process is not launched), and then in _didRelaunchProcess
584         we would choose not to re-send (after the process is successfully relaunched)
585         because we think we already sent the new value.
586
587         Add isValid() checks to our message sends. Ideally send() would assert
588         if the process is not alive to avoid problems like this, but it doesn't (yet).
589
590         Get rid of WKWebView's _didRelaunchProcess, because it does nothing now.
591
592 2018-01-04  Stephan Szabo  <stephan.szabo@sony.com>
593
594         NetworkProcess cache files use functions from unistd.h without explicitly including it
595         https://bugs.webkit.org/show_bug.cgi?id=181261
596
597         Reviewed by Alex Christensen.
598
599         * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
600         * NetworkProcess/cache/NetworkCacheData.cpp:
601
602 2018-01-04  Keith Rollin  <krollin@apple.com>
603
604         Add commas
605         https://bugs.webkit.org/show_bug.cgi?id=181295
606         <rdar://problem/35802295>
607
608         Reviewed by Brent Fulgham.
609
610         Fix a problem introduced in r226226 where the emitted JSON didn't
611         include some required commas.
612
613         * NetworkProcess/NetworkResourceLoader.cpp:
614         (WebKit::NetworkResourceLoader::logCookieInformation const):
615
616 2018-01-04  Eric Carlson  <eric.carlson@apple.com>
617
618         [MediaStream] Add Mock screen capture source
619         https://bugs.webkit.org/show_bug.cgi?id=181291
620         <rdar://problem/36298164>
621
622         Reviewed by Dean Jackson.
623
624         * Shared/WebCoreArgumentCoders.cpp:
625         (IPC::ArgumentCoder<MediaConstraints>::decode):
626         (IPC::ArgumentCoder<CaptureDevice>::encode): Deleted, moved to CaptureDevice.h
627         (IPC::ArgumentCoder<CaptureDevice>::decode): Ditto.
628         * Shared/WebCoreArgumentCoders.h:
629
630         * UIProcess/API/Cocoa/WKWebViewPrivate.h: Add _WKCaptureDeviceDisplay.
631         * UIProcess/Cocoa/UIDelegate.mm:
632         (WebKit::requestUserMediaAuthorizationForDevices): Deal with display capture.
633         (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Ditto.
634
635         * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
636         (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): requiresAudio -> requiresAudioCapture.
637         (WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const): Never reuse
638         a previously granted display capture request.
639
640         * UIProcess/UserMediaPermissionRequestProxy.cpp:
641         (WebKit::UserMediaPermissionRequestProxy::allow): Search the eligible devices instead of asking
642         the source center to find devices.
643         * UIProcess/UserMediaPermissionRequestProxy.h:
644         (WebKit::UserMediaPermissionRequestProxy::requiresAudioCapture const): Renamed.
645         (WebKit::UserMediaPermissionRequestProxy::requiresVideoCapture const): Ditto.
646         (WebKit::UserMediaPermissionRequestProxy::requiresDisplayCapture const): New.
647         (WebKit::UserMediaPermissionRequestProxy::requiresAudio const): Deleted.
648         (WebKit::UserMediaPermissionRequestProxy::requiresVideo const): Deleted.
649
650 2018-01-04  Youenn Fablet  <youenn@apple.com>
651
652         FetchResponse should set its internal response text encoding name
653         https://bugs.webkit.org/show_bug.cgi?id=181284
654
655         Reviewed by Alex Christensen.
656
657         * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
658         (WebKit::ServiceWorkerClientFetch::didReceiveResponse): Set default encoding to UTF-8.
659
660 2018-01-04  Youenn Fablet  <youenn@apple.com>
661
662         Implement Cache API partitioning based on ClientOrigin
663         https://bugs.webkit.org/show_bug.cgi?id=181240
664
665         Reviewed by Alex Christensen.
666
667         open and retrieveCaches now take a ClientOrigin instead of a String.
668         Updated cache filesystem path computation to take both client origin and top origin.
669
670         When clearing an origin, caches whose client origin or top origin matches the origin are cleared.
671         Caches are added to the web site data of their client origin with their corresponding cache size.
672         Caches are added to the web site data of their top origin with a size equal to 0.
673
674         Updated memory representation dumping used for test to include both top and client origins.
675
676         * NetworkProcess/NetworkProcess.cpp:
677         (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
678         * NetworkProcess/cache/CacheStorageEngine.cpp:
679         (WebKit::CacheStorage::Engine::cachesRootPath):
680         (WebKit::CacheStorage::Engine::open):
681         (WebKit::CacheStorage::Engine::remove):
682         (WebKit::CacheStorage::Engine::retrieveCaches):
683         (WebKit::CacheStorage::Engine::readCachesFromDisk):
684         (WebKit::CacheStorage::Engine::removeCaches):
685         (WebKit::CacheStorage::Engine::fetchEntries):
686         (WebKit::CacheStorage::Engine::clearCachesForOrigin):
687         (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
688         (WebKit::CacheStorage::Engine::representation):
689         * NetworkProcess/cache/CacheStorageEngine.h:
690         * NetworkProcess/cache/CacheStorageEngineCache.cpp:
691         (WebKit::CacheStorage::Cache::Cache):
692         * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
693         (WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
694         (WebKit::CacheStorage::Caches::Caches):
695         (WebKit::CacheStorage::Caches::storeOrigin):
696         (WebKit::CacheStorage::Caches::readOrigin):
697         (WebKit::CacheStorage::Caches::open):
698         * NetworkProcess/cache/CacheStorageEngineCaches.h:
699         (WebKit::CacheStorage::Caches::create):
700         (WebKit::CacheStorage::Caches::origin const):
701         * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
702         (WebKit::CacheStorageEngineConnection::open):
703         (WebKit::CacheStorageEngineConnection::caches):
704         (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
705         * NetworkProcess/cache/CacheStorageEngineConnection.h:
706         * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
707         * WebProcess/Cache/WebCacheStorageConnection.cpp:
708         (WebKit::WebCacheStorageConnection::doOpen):
709         (WebKit::WebCacheStorageConnection::doRetrieveCaches):
710         (WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
711         * WebProcess/Cache/WebCacheStorageConnection.h:
712
713 2018-01-04  Youenn Fablet  <youenn@apple.com>
714
715         Service Worker should expose redirect mode for navigation loads as manual
716         https://bugs.webkit.org/show_bug.cgi?id=181067
717
718         Reviewed by Alex Christensen.
719
720         * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
721         (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
722
723 2018-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>
724
725         [Attachment Support] Create attachment elements when dropping files on iOS
726         https://bugs.webkit.org/show_bug.cgi?id=181192
727         <rdar://problem/36280945>
728
729         Reviewed by Tim Horton.
730
731         Make some minor adjustments for changes to the pasteboard in WebCore. See WebCore/ChangeLog for more detail.
732         Teaches WebPasteboardProxy et. al. to plumb PasteboardItemInfo from the UI process to the web process via the
733         new `InformationForItemAtIndex` codepath.
734
735         * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
736         (WebKit::WebPasteboardProxy::informationForItemAtIndex):
737         (WebKit::WebPasteboardProxy::getFilenamesForDataInteraction): Deleted.
738         * UIProcess/WebPasteboardProxy.h:
739         * UIProcess/WebPasteboardProxy.messages.in:
740         * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
741         (WebKit::WebPlatformStrategies::informationForItemAtIndex):
742         (WebKit::WebPlatformStrategies::getFilenamesForDataInteraction): Deleted.
743         * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
744
745 2018-01-03  Ting-Wei Lan  <lantw44@gmail.com>
746
747         Replace hard-coded paths in shebangs with #!/usr/bin/env
748         https://bugs.webkit.org/show_bug.cgi?id=181040
749
750         Reviewed by Alex Christensen.
751
752         * Scripts/generate-forwarding-headers.pl:
753
754 2018-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>
755
756         [Attachment Support] Add plumbing for starting a drag with promised blob data
757         https://bugs.webkit.org/show_bug.cgi?id=181201
758
759         Reviewed by Tim Horton.
760
761         Add boilerplate plumbing for PrepareToDragPromisedBlob, which delivers blob promises to the UI process when
762         dragging, respectively.
763
764         * Scripts/webkit/messages.py:
765         (headers_for_type):
766         * Shared/WebCoreArgumentCoders.cpp:
767         (IPC::encodeTypesAndData):
768         (IPC::decodeTypesAndData):
769         (IPC::ArgumentCoder<PasteboardWebContent>::encode):
770         (IPC::ArgumentCoder<PasteboardWebContent>::decode):
771         (IPC::ArgumentCoder<PasteboardImage>::encode):
772         (IPC::ArgumentCoder<PasteboardImage>::decode):
773         (IPC::ArgumentCoder<PromisedBlobInfo>::encode):
774         (IPC::ArgumentCoder<PromisedBlobInfo>::decode):
775
776         Add IPC support PromisedBlobInfo's additionalTypes and additionalData.
777
778         (IPC::encodeClientTypesAndData): Deleted.
779         (IPC::decodeClientTypesAndData): Deleted.
780
781         Rename these helper functions and move them to the top of the file.
782
783         * UIProcess/Cocoa/WebViewImpl.h:
784         * UIProcess/Cocoa/WebViewImpl.mm:
785         (WebKit::WebViewImpl::prepareToDragPromisedBlob):
786         * UIProcess/PageClient.h:
787         (WebKit::PageClient::prepareToDragPromisedBlob):
788         * UIProcess/WebPageProxy.cpp:
789         (WebKit::WebPageProxy::prepareToDragPromisedBlob):
790         * UIProcess/WebPageProxy.h:
791         * UIProcess/WebPageProxy.messages.in:
792         * UIProcess/ios/PageClientImplIOS.h:
793         * UIProcess/ios/PageClientImplIOS.mm:
794         (WebKit::PageClientImpl::prepareToDragPromisedBlob):
795         * UIProcess/ios/WKContentViewInteraction.h:
796         * UIProcess/ios/WKContentViewInteraction.mm:
797         (-[WKContentView _prepareToDragPromisedBlob:]):
798         * UIProcess/mac/PageClientImplMac.h:
799         * UIProcess/mac/PageClientImplMac.mm:
800         (WebKit::PageClientImpl::prepareToDragPromisedBlob):
801         * WebProcess/WebCoreSupport/WebDragClient.cpp:
802         (WebKit::WebDragClient::prepareToDragPromisedBlob):
803         * WebProcess/WebCoreSupport/WebDragClient.h:
804         * WebProcess/WebPage/WebPage.cpp:
805         (WebKit::WebPage::prepareToDragPromisedBlob):
806         * WebProcess/WebPage/WebPage.h:
807
808 2018-01-03  David Kilzer  <ddkilzer@apple.com>
809
810         REGRESSION (r212929): WKSnapshotConfiguration may leak an NSNumber when deallocated
811         <https://webkit.org/b/181274>
812
813         Reviewed by Joseph Pecoraro.
814
815         * UIProcess/API/Cocoa/WKSnapshotConfiguration.mm:
816         (-[WKSnapshotConfiguration dealloc]): Implement method and
817         release _snapshotWidth.
818
819 2018-01-03  John Wilander  <wilander@apple.com>
820
821         Storage Access API: Refactor XPC for access removal to go straight from the web process to the network process
822         https://bugs.webkit.org/show_bug.cgi?id=181270
823         <rdar://problem/36289544>
824
825         Reviewed by Alex Christensen.
826
827         This change refactors how the web process tells the network process
828         to remove storage access. Previously, this was done over the UI process
829         just like requests for storage access. But since no further reasoning
830         is needed, the message should go straight from the web process to the
831         network process for performance reasons and to minimize the risk of a
832         race.
833
834         As a consequence, the XPC code for storage access removal in the UI
835         process is deleted.
836
837         * NetworkProcess/NetworkConnectionToWebProcess.cpp:
838         (WebKit::NetworkConnectionToWebProcess::removeStorageAccess):
839         * NetworkProcess/NetworkConnectionToWebProcess.h:
840         * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
841         * NetworkProcess/NetworkProcess.cpp:
842         (WebKit::NetworkProcess::removeStorageAccess): Deleted.
843         * NetworkProcess/NetworkProcess.h:
844         * NetworkProcess/NetworkProcess.messages.in:
845         * UIProcess/Network/NetworkProcessProxy.cpp:
846         (WebKit::NetworkProcessProxy::removeStorageAccess): Deleted.
847         * UIProcess/Network/NetworkProcessProxy.h:
848         * UIProcess/WebPageProxy.cpp:
849         (WebKit::WebPageProxy::requestStorageAccess):
850         (WebKit::WebPageProxy::removeStorageAccess): Deleted.
851         * UIProcess/WebPageProxy.h:
852         * UIProcess/WebPageProxy.messages.in:
853         * UIProcess/WebsiteData/WebsiteDataStore.cpp:
854         (WebKit::WebsiteDataStore::requestStorageAccess):
855         (WebKit::WebsiteDataStore::removeStorageAccess): Deleted.
856         * UIProcess/WebsiteData/WebsiteDataStore.h:
857         * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
858         (WebKit::WebFrameLoaderClient::detachedFromParent2):
859         (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
860
861 2018-01-03  David Kilzer  <ddkilzer@apple.com>
862
863         com.apple.WebKit.Networking crash in com.apple.Foundation: -[__NSOperationInternal _start:]
864         <https://webkit.org/b/181272>
865         <rdar://problem/35657310>
866
867         Reviewed by Alex Christensen.
868
869         * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
870         (downgradeRequest): Remove unnecessary -autorelease.
871
872 2018-01-03  Brent Fulgham  <bfulgham@apple.com>
873
874         [macOS] Constant frame dropping during Flash video playback
875         https://bugs.webkit.org/show_bug.cgi?id=181249
876         <rdar://problem/34843448>
877
878         Reviewed by Eric Carlson.
879
880         Review of logs during jerky flash video playback shows a few IOKit properties are being blocked by the sandbox,
881         which prevents some high-efficiency codecs from being used. Add 'AppleGVAKeyDoesNotExist', 'IODVDBundleName', and
882         'IOGVA*Encode' to the whitelist.
883
884         * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
885
886 2018-01-03  Michael Catanzaro  <mcatanzaro@igalia.com>
887
888         [GTK] Add web process API to detect when form is submitted via JavaScript
889         https://bugs.webkit.org/show_bug.cgi?id=173915
890
891         Reviewed by Carlos Garcia Campos.
892
893         Epiphany relies on the DOM submit event to detect when a form has been submitted. However,
894         for historical reasons, the submit event is not emitted when a form is submitted by
895         JavaScript. It is therefore not currently possible for a web browser to reliably detect form
896         submission and not possible to implement a robust password storage feature. In order to
897         avoid this problem, this patch adds a new WebKitWebPage signal, will-submit-form, that
898         browsers can use in preference to a DOM event listener.
899
900         Unfortunately, this signal is not available for WPE because it depends on the DOM API.
901
902         There are two submission events, WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT and
903         WEBKIT_FORM_SUBMISSION_WILL_COMPLETE. WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT
904         occurs earlier than WEBKIT_FORM_SUBMISSION_WILL_COMPLETE and can be used to retrieve form
905         values before websites receive the DOM submit event. This is useful as some websites like
906         to delete form values right before a submit would normally happen in order to attempt to
907         defeat browser password managers. There are two tricks to note: JavaScript can cancel form
908         submission immediately after this event occurs (by returning false in an onsubmit handler),
909         and, for historical reasons, this event will not occur at all when form submission is
910         triggered by JavaScript. WEBKIT_FORM_SUBMISSION_WILL_COMPLETE occurs next, and is more
911         straightforward: it is always emitted when a form is about to be submitted, when it is too
912         late to cancel.
913
914         The recommended way to reliably retrieve password form values would be to watch for both
915         events, use the form value detected in WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT
916         if that event is emitted, and use the value detected later in
917         WEBKIT_FORM_SUBMISSION_WILL_COMPLETE otherwise.
918
919         Since one of the signal arguments is an enum, we now have to run glib-mkenums for the web
920         process API. And that has resulted in this patch also adding GType goo for
921         WebKitConsoleMessageLevel and WebKitConsoleMessageSource that was previously missing. Any
922         applications that for some unlikely reason want to use these enums in properties or signals
923         will be happy.
924
925         * PlatformGTK.cmake:
926         * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
927         * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
928         (webkit_web_page_class_init):
929         * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h:
930         * WebProcess/InjectedBundle/API/gtk/WebKitWebProcessEnumTypes.cpp.template: Added.
931         * WebProcess/InjectedBundle/API/gtk/WebKitWebProcessEnumTypes.h.template: Added.
932
933 2018-01-03  Carlos Garcia Campos  <cgarcia@igalia.com>
934
935         Unreviewed. Really fix plugin process after r226327.
936
937         * PluginProcess/unix/PluginProcessMainUnix.cpp:
938
939 2018-01-02  Brent Fulgham  <bfulgham@apple.com>
940
941         [macOS, iOS] Adopt new secure coding APIs in WebKit
942         https://bugs.webkit.org/show_bug.cgi?id=181085
943         <rdar://problem/34837397>
944
945         Reviewed by Tim Horton.
946
947         Update WebKit code to use NSSecureCoding when the underlying operating system supports it. Use new
948         wrapper functions so the same code can be built on all supported OS releases, while enabling
949         seure coding when possible.
950
951         Note that NSView-based classes cannot be migrated at present due to AppKit not supporting NSSecureCoding
952         in its class hierarchy.
953
954         Tested by exising TestWebKitAPI tests for Coding and data transfer.
955
956         * Platform/ios/AccessibilityIOS.mm:
957         (WebKit::newAccessibilityRemoteToken): Encode using NSSecureCoding.
958         * UIProcess/API/Cocoa/WKPreferences.h:
959         * UIProcess/API/Cocoa/WKPreferences.mm:
960         (+[WKPreferences supportsSecureCoding]): Added to enable NSSecureCoding.
961         * UIProcess/API/Cocoa/WKProcessPool.h:
962         * UIProcess/API/Cocoa/WKProcessPool.mm:
963         (+[WKProcessPool supportsSecureCoding]): Ditto.
964         * UIProcess/API/Cocoa/WKUserContentController.h:
965         * UIProcess/API/Cocoa/WKUserContentController.mm:
966         (+[WKUserContentController supportsSecureCoding]): Ditto.
967         * UIProcess/API/Cocoa/WKWebView.mm:
968         (-[WKWebView initWithCoder:]): Use coding initialization that supports secure coding if
969         it is available in the supplied class.
970         * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
971         * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
972         (+[WKWebViewConfiguration supportsSecureCoding]): Added to enable NSSecureCoding.
973         (-[WKWebViewConfiguration initWithCoder:]): Use secure coding when possible.
974         * UIProcess/API/Cocoa/WKWebsiteDataStore.h:
975         * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
976         (+[WKWebsiteDataStore supportsSecureCoding]): Added to enable NSSecureCoding.
977         * UIProcess/API/Cocoa/_WKApplicationManifest.h:
978         * UIProcess/API/Cocoa/_WKApplicationManifest.mm:
979         (+[_WKApplicationManifest supportsSecureCoding]): Added to enable NSSecureCoding.
980         (-[_WKApplicationManifest initWithCoder:]): Use secure coding when possible.
981
982 2017-12-28  Yusuke Suzuki  <utatane.tea@gmail.com>
983
984         Remove std::chrono completely
985         https://bugs.webkit.org/show_bug.cgi?id=181186
986
987         Reviewed by Alex Christensen.
988
989         Use MonotonicTime, WallTime, and Seconds instead.
990         Changes are mechanical ones.
991
992         * NetworkProcess/NetworkProcess.cpp:
993         (WebKit::NetworkProcess::deleteWebsiteData):
994         * NetworkProcess/NetworkProcess.h:
995         * NetworkProcess/NetworkProcess.messages.in:
996         * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
997         (WebKit::CacheStorage::Caches::clear):
998         * NetworkProcess/cache/NetworkCache.cpp:
999         (WebKit::NetworkCache::responseHasExpired):
1000         (WebKit::NetworkCache::responseNeedsRevalidation):
1001         (WebKit::NetworkCache::makeStoreDecision):
1002         (WebKit::NetworkCache::Cache::clear):
1003         (WebKit::NetworkCache::Cache::storeData):
1004         * NetworkProcess/cache/NetworkCache.h:
1005         * NetworkProcess/cache/NetworkCacheEntry.cpp:
1006         (WebKit::NetworkCache::Entry::Entry):
1007         (WebKit::NetworkCache::Entry::asJSON const):
1008         * NetworkProcess/cache/NetworkCacheEntry.h:
1009         (WebKit::NetworkCache::Entry::timeStamp const):
1010         * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
1011         (WebKit::NetworkCache::fileTimes):
1012         (WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
1013         * NetworkProcess/cache/NetworkCacheFileSystem.h:
1014         * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
1015         (WebKit::NetworkCache::IOChannel::IOChannel):
1016         * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
1017         (WebKit::NetworkCache::responseNeedsRevalidation):
1018         (WebKit::NetworkCache::canRevalidate):
1019         * NetworkProcess/cache/NetworkCacheStorage.cpp:
1020         (WebKit::NetworkCache::Storage::readRecord):
1021         (WebKit::NetworkCache::Storage::clear):
1022         (WebKit::NetworkCache::computeRecordWorth):
1023         * NetworkProcess/cache/NetworkCacheStorage.h:
1024         Bump the cache version. We now change the data in persistent cache.
1025         * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
1026         (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
1027         (WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
1028         * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
1029         (WebKit::NetworkCache::SubresourceInfo::lastSeen const):
1030         (WebKit::NetworkCache::SubresourceInfo::firstSeen const):
1031         (WebKit::NetworkCache::SubresourcesEntry::timeStamp const):
1032         * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
1033         (WebKit::NetworkProcess::clearHSTSCache):
1034         (WebKit::clearNSURLCache):
1035         (WebKit::NetworkProcess::clearDiskCache):
1036         * NetworkProcess/curl/NetworkProcessCurl.cpp:
1037         (WebKit::NetworkProcess::clearDiskCache):
1038         * NetworkProcess/mac/NetworkProcessMac.mm:
1039         (WebKit::NetworkProcess::clearCacheForAllOrigins):
1040         * NetworkProcess/soup/NetworkProcessSoup.cpp:
1041         (WebKit::NetworkProcess::clearCacheForAllOrigins):
1042         (WebKit::NetworkProcess::clearDiskCache):
1043         * Platform/IPC/ArgumentCoders.cpp:
1044         (IPC::ArgumentCoder<WallTime>::encode):
1045         (IPC::ArgumentCoder<WallTime>::decode):
1046         (IPC::ArgumentCoder<std::chrono::system_clock::time_point>::encode): Deleted.
1047         (IPC::ArgumentCoder<std::chrono::system_clock::time_point>::decode): Deleted.
1048         * Platform/IPC/ArgumentCoders.h:
1049         * PluginProcess/PluginProcess.cpp:
1050         (WebKit::PluginProcess::deleteWebsiteData):
1051         * PluginProcess/PluginProcess.h:
1052         * PluginProcess/PluginProcess.messages.in:
1053         * Scripts/webkit/messages.py:
1054         (headers_for_type):
1055         * Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
1056         (WebKit::RemoteLayerBackingStore::lastDisplayTime const):
1057         * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
1058         (WebKit::RemoteLayerBackingStore::RemoteLayerBackingStore):
1059         (WebKit::RemoteLayerBackingStore::display):
1060         * Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
1061         * Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
1062         (WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile):
1063         (WebKit::RemoteLayerBackingStoreCollection::volatilityTimerFired):
1064         * Shared/WebCoreArgumentCoders.cpp:
1065         (IPC::ArgumentCoder<RecentSearch>::decode):
1066         (IPC::ArgumentCoder<WallTime>::encode): Deleted.
1067         (IPC::ArgumentCoder<WallTime>::decode): Deleted.
1068         * Shared/WebCoreArgumentCoders.h:
1069         * StorageProcess/StorageProcess.cpp:
1070         (WebKit::StorageProcess::deleteWebsiteData):
1071         * StorageProcess/StorageProcess.h:
1072         * StorageProcess/StorageProcess.messages.in:
1073         * UIProcess/API/C/WKApplicationCacheManager.cpp:
1074         (WKApplicationCacheManagerDeleteAllEntries):
1075         * UIProcess/API/C/WKCookieManager.cpp:
1076         (WKCookieManagerDeleteAllCookiesModifiedAfterDate):
1077         * UIProcess/API/C/WKKeyValueStorageManager.cpp:
1078         (WKKeyValueStorageManagerDeleteAllEntries):
1079         * UIProcess/API/C/WKResourceCacheManager.cpp:
1080         (WKResourceCacheManagerClearCacheForAllOrigins):
1081         * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
1082         (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
1083         (WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
1084         (WKWebsiteDataStoreRemoveAllFetchCaches):
1085         (WKWebsiteDataStoreRemoveAllIndexedDatabases):
1086         (WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):
1087         * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
1088         (toSystemClockTime):
1089         (-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
1090         * UIProcess/API/glib/WebKitWebContext.cpp:
1091         (webkit_web_context_clear_cache):
1092         * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
1093         (webkit_website_data_manager_clear):
1094         * UIProcess/DrawingAreaProxy.h:
1095         * UIProcess/Network/NetworkProcessProxy.cpp:
1096         (WebKit::NetworkProcessProxy::deleteWebsiteData):
1097         * UIProcess/Network/NetworkProcessProxy.h:
1098         * UIProcess/Plugins/PluginProcessManager.cpp:
1099         (WebKit::PluginProcessManager::deleteWebsiteData):
1100         * UIProcess/Plugins/PluginProcessManager.h:
1101         * UIProcess/Plugins/PluginProcessProxy.cpp:
1102         (WebKit::PluginProcessProxy::deleteWebsiteData):
1103         * UIProcess/Plugins/PluginProcessProxy.h:
1104         * UIProcess/Storage/StorageProcessProxy.cpp:
1105         (WebKit::StorageProcessProxy::deleteWebsiteData):
1106         * UIProcess/Storage/StorageProcessProxy.h:
1107         * UIProcess/WebCookieManagerProxy.cpp:
1108         (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
1109         * UIProcess/WebCookieManagerProxy.h:
1110         * UIProcess/WebProcessProxy.cpp:
1111         (WebKit::WebProcessProxy::deleteWebsiteData):
1112         * UIProcess/WebProcessProxy.h:
1113         * UIProcess/WebResourceLoadStatisticsStore.cpp:
1114         (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
1115         * UIProcess/WebResourceLoadStatisticsStore.h:
1116         * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
1117         (WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
1118         * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
1119         * UIProcess/WebStorage/StorageManager.cpp:
1120         (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
1121         * UIProcess/WebStorage/StorageManager.h:
1122         * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
1123         (WebKit::WebsiteDataStore::platformRemoveRecentSearches):
1124         * UIProcess/WebsiteData/WebsiteDataStore.cpp:
1125         (WebKit::WebsiteDataStore::removeData):
1126         (WebKit::WebsiteDataStore::removeMediaKeys):
1127         * UIProcess/WebsiteData/WebsiteDataStore.h:
1128         * UIProcess/gtk/WebPageProxyGtk.cpp:
1129         (WebKit::WebsiteDataStore::platformRemoveRecentSearches):
1130         * UIProcess/wpe/WebPageProxyWPE.cpp:
1131         (WebKit::WebsiteDataStore::platformRemoveRecentSearches):
1132         * WebProcess/Cookies/WebCookieManager.cpp:
1133         (WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
1134         * WebProcess/Cookies/WebCookieManager.h:
1135         * WebProcess/Cookies/WebCookieManager.messages.in:
1136         * WebProcess/Plugins/PluginView.cpp:
1137         (WebKit::lastModifiedDateMS):
1138         * WebProcess/WebProcess.cpp:
1139         (WebKit::WebProcess::deleteWebsiteData):
1140         * WebProcess/WebProcess.h:
1141         * WebProcess/WebProcess.messages.in:
1142
1143 2018-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>
1144
1145         [Attachment Support] Introduce data structures and IPC support for writing promised blobs
1146         https://bugs.webkit.org/show_bug.cgi?id=181189
1147
1148         Reviewed by Tim Horton.
1149
1150         Add IPC support for PromisedBlobInfo and PromisedBlobData. See WebCore/ChangeLog for more detail.
1151
1152         * Shared/WebCoreArgumentCoders.cpp:
1153         (IPC::ArgumentCoder<PromisedBlobData>::encode):
1154         (IPC::ArgumentCoder<PromisedBlobData>::decode):
1155         (IPC::ArgumentCoder<PromisedBlobInfo>::encode):
1156         (IPC::ArgumentCoder<PromisedBlobInfo>::decode):
1157         * Shared/WebCoreArgumentCoders.h:
1158
1159 2018-01-02  Michael Catanzaro  <mcatanzaro@igalia.com>
1160
1161         REGRESSION(r223253): Broke ResourceLoadStatistics layout tests for non-Cocoa ports
1162         https://bugs.webkit.org/show_bug.cgi?id=181231
1163
1164         Reviewed by Alex Christensen.
1165
1166         Add new C API for use by WebKitTestRunner.
1167
1168         * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
1169         (WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
1170         (WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
1171         * UIProcess/API/C/WKWebsiteDataStoreRef.h:
1172
1173 2018-01-02  Jiewen Tan  <jiewen_tan@apple.com>
1174
1175         Add a WebAuthentication runtime feature flag
1176         https://bugs.webkit.org/show_bug.cgi?id=181220
1177         <rdar://problem/36055305>
1178
1179         Reviewed by Brent Fulgham.
1180
1181         Renames the CredentialManagement runtime feature flag into WebAuthentication.
1182
1183         * Shared/WebPreferences.yaml:
1184         * UIProcess/API/C/WKPreferences.cpp:
1185         (WKPreferencesSetWebAuthenticationEnabled):
1186         (WKPreferencesGetWebAuthenticationEnabled):
1187         (WKPreferencesSetCredentialManagementEnabled): Deleted.
1188         (WKPreferencesGetCredentialManagementEnabled): Deleted.
1189         * UIProcess/API/C/WKPreferencesRefPrivate.h:
1190         * WebProcess/WebPage/WebPage.cpp:
1191         (WebKit::WebPage::updatePreferences):
1192
1193 2018-01-02  Michael Catanzaro  <mcatanzaro@igalia.com>
1194
1195         REGRESSION(r226327): [GTK] Plugin process is broken
1196         https://bugs.webkit.org/show_bug.cgi?id=181187
1197
1198         Unreviewed, fix PluginProcessMainUnix after r226327.
1199
1200         * PluginProcess/unix/PluginProcessMainUnix.cpp:
1201
1202 2018-01-02  Tim Horton  <timothy_horton@apple.com>
1203
1204         Fix the build on platforms where UICurrentUserInterfaceIdiomIsPad is defined to false
1205         https://bugs.webkit.org/show_bug.cgi?id=181218
1206
1207         Reviewed by Alex Christensen.
1208
1209         * Platform/spi/ios/UIKitSPI.h:
1210         (currentUserInterfaceIdiomIsPad):
1211         * UIProcess/ios/SmartMagnificationController.mm:
1212         (WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):
1213         * UIProcess/ios/WKContentViewInteraction.mm:
1214         (-[WKFormInputSession setAccessoryViewCustomButtonTitle:]):
1215         (-[WKContentView _requiresKeyboardWhenFirstResponder]):
1216         (-[WKContentView _displayFormNodeInputView]):
1217         (-[WKContentView requiresAccessoryView]):
1218         (-[WKContentView _updateAccessory]):
1219         * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
1220         (-[WKAirPlayRoutePicker show:fromRect:]):
1221         * UIProcess/ios/forms/WKFileUploadPanel.mm:
1222         (-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
1223         (-[WKFileUploadPanel _presentMenuOptionForCurrentInterfaceIdiom:]):
1224         * UIProcess/ios/forms/WKFormInputControl.mm:
1225         (-[WKDateTimePicker initWithView:datePickerMode:]):
1226         (-[WKFormInputControl initWithView:]):
1227         * UIProcess/ios/forms/WKFormSelectControl.mm:
1228         (-[WKFormSelectControl initWithView:]):
1229         On platforms where UICurrentUserInterfaceIdiomIsPad is defined to false,
1230         blocks that conditionally execute based on its value are unreachable.
1231         This causes the compiler to complain. Hide it away inside an inline function
1232         and make use of that everywhere we used to use the macro.
1233
1234 2018-01-02  Alex Christensen  <achristensen@webkit.org>
1235
1236         Remove SVN file accidentally added in r226160
1237         https://bugs.webkit.org/show_bug.cgi?id=180934
1238
1239         * UIProcess/WebPageProxy.cpp.orig: Removed.
1240
1241 2018-01-02  Alex Christensen  <achristensen@webkit.org>
1242
1243         Use BlockPtrs and lambdas instead of new/delete to pass parameters to blocks in WebViewImpl::performDragOperation
1244         https://bugs.webkit.org/show_bug.cgi?id=180795
1245
1246         Reviewed by Brent Fulgham.
1247
1248         * UIProcess/Cocoa/WebViewImpl.mm:
1249         (WebKit::WebViewImpl::performDragOperation):
1250
1251 2018-01-02  Michael Catanzaro  <mcatanzaro@igalia.com>
1252
1253         [WPE][GTK] Implement the assignment of ProcessIdentifiers to child processes
1254         https://bugs.webkit.org/show_bug.cgi?id=181187
1255
1256         Reviewed by Brady Eidson.
1257
1258         * Shared/ChildProcess.cpp: Make the ProcessIdentifier mandatory.
1259         (WebKit::ChildProcess::initialize):
1260         * Shared/unix/ChildProcessMain.cpp: Initialize ChildProcessInitializationParameters with the
1261         ProcessIdentifier.
1262         (WebKit::ChildProcessMainBase::parseCommandLine):
1263         * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: Copy the ProcessIdentifier from
1264         LaunchOptions into argv.
1265         (WebKit::ProcessLauncher::launchProcess):
1266         * WebProcess/wpe/WebProcessMainWPE.cpp: Expect the WPE socket ID later in the command line.
1267
1268 2018-01-02  Alex Christensen  <achristensen@webkit.org>
1269
1270         Use new WebsiteDataStore passed in through decidePolicyForNavigation SPI
1271         https://bugs.webkit.org/show_bug.cgi?id=180897
1272         <rdar://problem/35535328>
1273
1274         Reviewed by Brent Fulgham.
1275
1276         * Shared/WebsitePoliciesData.cpp:
1277         (WebKit::WebsitePoliciesData::applyToDocumentLoader):
1278         * UIProcess/Cocoa/NavigationState.mm:
1279         (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
1280         * UIProcess/WebPageProxy.cpp:
1281         (WebKit::WebPageProxy::changeWebsiteDataStore):
1282         * UIProcess/WebPageProxy.h:
1283         * UIProcess/WebProcessPool.cpp:
1284         (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
1285         (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
1286         (WebKit::WebProcessPool::pageAddedToProcess): Deleted.
1287         (WebKit::WebProcessPool::pageRemovedFromProcess): Deleted.
1288         * UIProcess/WebProcessPool.h:
1289         * UIProcess/WebProcessProxy.cpp:
1290         (WebKit::WebProcessProxy::addExistingWebPage):
1291         (WebKit::WebProcessProxy::removeWebPage):
1292         * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
1293         (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
1294
1295 2018-01-02  Alex Christensen  <achristensen@webkit.org>
1296
1297         Only use CookieStorageShim when we aren't using NetworkSession
1298         https://bugs.webkit.org/show_bug.cgi?id=180766
1299
1300         Reviewed by Brent Fulgham.
1301
1302         * Shared/mac/CookieStorageShim.h:
1303         * Shared/mac/CookieStorageShim.mm:
1304         * WebProcess/WebProcess.cpp:
1305         (WebKit::WebProcess::initializeWebProcess):
1306
1307 2018-01-02  Alex Christensen  <achristensen@webkit.org>
1308
1309         Clean up context menu code
1310         https://bugs.webkit.org/show_bug.cgi?id=181074
1311
1312         Reviewed by Brent Fulgham.
1313
1314         Use Ref instead of RefPtr where possible.
1315         Use move semantics instead of copying from const references when possible.
1316         Remove dead iOS code.  Reduce allocations.  Add stub for WPE.
1317
1318         * UIProcess/API/APIContextMenuClient.h:
1319         (API::ContextMenuClient::getContextMenuFromProposedMenu):
1320         (API::ContextMenuClient::getContextMenuFromProposedMenuAsync):
1321         (API::ContextMenuClient::showContextMenu):
1322         * UIProcess/API/C/WKPage.cpp:
1323         (WKPageSetPageContextMenuClient):
1324         * UIProcess/API/gtk/PageClientImpl.cpp:
1325         (WebKit::PageClientImpl::createContextMenuProxy):
1326         * UIProcess/API/gtk/PageClientImpl.h:
1327         * UIProcess/PageClient.h:
1328         * UIProcess/WebContextMenuListenerProxy.cpp:
1329         (WebKit::WebContextMenuListenerProxy::useContextMenuItems):
1330         * UIProcess/WebContextMenuProxy.cpp:
1331         (WebKit::WebContextMenuProxy::WebContextMenuProxy):
1332         * UIProcess/WebContextMenuProxy.h:
1333         * UIProcess/WebPageProxy.cpp:
1334         (WebKit::WebPageProxy::showContextMenu):
1335         (WebKit::WebPageProxy::internalShowContextMenu): Deleted.
1336         * UIProcess/WebPageProxy.h:
1337         * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
1338         (WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
1339         (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk):
1340         * UIProcess/gtk/WebContextMenuProxyGtk.h:
1341         (WebKit::WebContextMenuProxyGtk::create):
1342         * UIProcess/ios/PageClientImplIOS.h:
1343         * UIProcess/ios/PageClientImplIOS.mm:
1344         (WebKit::PageClientImpl::createContextMenuProxy): Deleted.
1345         * UIProcess/mac/PageClientImplMac.h:
1346         * UIProcess/mac/PageClientImplMac.mm:
1347         (WebKit::PageClientImpl::createContextMenuProxy):
1348         * UIProcess/mac/WebContextMenuProxyMac.h:
1349         (WebKit::WebContextMenuProxyMac::create):
1350         * UIProcess/mac/WebContextMenuProxyMac.mm:
1351         (WebKit::WebContextMenuProxyMac::WebContextMenuProxyMac):
1352         (WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
1353         (WebKit::WebContextMenuProxyMac::showContextMenu):
1354
1355 == Rolled over to ChangeLog-2018-01-01 ==