Roll out http://trac.webkit.org/r193984, because the new test is timing out.
[WebKit-https.git] / Source / WebCore / ChangeLog
1 2015-12-11  Alexey Proskuryakov  <ap@apple.com>
2
3         Roll out http://trac.webkit.org/r193984, because the new test is timing out.
4
5         Was: Strip out Referer header when requesting subresources or following links for documents with "Content-Disposition: attachment"
6         https://bugs.webkit.org/show_bug.cgi?id=152102
7         <rdar://problem/22124230>
8
9         * dom/Document.cpp:
10         (WebCore::Document::processReferrerPolicy):
11         (WebCore::Document::applyContentDispositionAttachmentSandbox):
12
13 2015-12-11  Brady Eidson  <beidson@apple.com>
14
15         Modern IDB: storage/indexeddb/optional-arguments.html fails.
16         https://bugs.webkit.org/show_bug.cgi?id=152194
17
18         Reviewed by Alex Christensen.
19
20         No new tests (At least one failing test now passes).
21
22         * Modules/indexeddb/client/IDBCursorImpl.cpp:
23         (WebCore::IDBClient::IDBCursor::continueFunction): Allow 'undefined' for the key.
24         
25         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
26         (WebCore::IDBClient::IDBObjectStore::add): Ditto.
27         (WebCore::IDBClient::IDBObjectStore::put): Ditto.
28
29 2015-12-11  Brady Eidson  <beidson@apple.com>
30
31         Followup to:
32         Modern IDB: storage/indexeddb/index-count.html fails.
33         https://bugs.webkit.org/show_bug.cgi?id=152175
34
35         Noticed by Darin Adler.
36
37         * Modules/indexeddb/client/IDBIndexImpl.cpp:
38         (WebCore::IDBClient::IDBIndex::count): Replace a curly brace to its proper place.
39
40 2015-12-11  Brady Eidson  <beidson@apple.com>
41
42         Modern IDB: storage/indexeddb/cursor-continue.html fails.
43         https://bugs.webkit.org/show_bug.cgi?id=152192
44
45         Reviewed by Alex Christensen.
46
47         No new tests (At least one failing test now passes).
48
49         * Modules/indexeddb/client/IDBCursorImpl.cpp:
50         (WebCore::IDBClient::IDBCursor::continueFunction): Check against the current key, not the current primary key.
51         (WebCore::IDBClient::IDBCursor::setGetResult): Also save off the current IDBKeyData.
52         * Modules/indexeddb/client/IDBCursorImpl.h:
53
54 2015-12-11  Brady Eidson  <beidson@apple.com>
55
56         Modern IDB: storage/indexeddb/index-basics.html fails.
57         https://bugs.webkit.org/show_bug.cgi?id=152190
58
59         Reviewed by Alex Christensen.
60
61         No new tests (At least one failing test now passes).
62
63         * bindings/js/JSIDBObjectStoreCustom.cpp:
64         (WebCore::JSIDBObjectStore::createIndex): Custom error message for the TypeError
65
66 2015-12-11  Jiewen Tan  <jiewen_tan@apple.com>
67
68         Strip out Referer header when requesting subresources or following links for documents with "Content-Disposition: attachment"
69         https://bugs.webkit.org/show_bug.cgi?id=152102
70         <rdar://problem/22124230>
71
72         Reviewed by Andy Estes.
73
74         Keep the ReferrerPolicy for a document as ReferrerPolicyNever if the document is loaded with
75         "Content-Disposition: attachment".
76
77         Test: http/tests/contentdispositionattachmentsandbox/subresource-request-not-include-referer-header.html
78
79         * dom/Document.cpp:
80         (WebCore::Document::processReferrerPolicy):
81         (WebCore::Document::applyContentDispositionAttachmentSandbox):
82
83 2015-12-11  Brady Eidson  <beidson@apple.com>
84
85         Modern IDB: storage/indexeddb/key-type-array.html fails.
86         https://bugs.webkit.org/show_bug.cgi?id=152187
87
88         Reviewed by Alex Christensen.
89
90         No new tests (At least one failing test now passes).
91
92         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
93         (WebCore::IDBClient::IDBObjectStore::putOrAdd): Perform the correct validity check on array keys.
94
95 2015-12-11  Joseph Pecoraro  <pecoraro@apple.com>
96
97         check-for-inappropriate-objc-class-names should check all class names, not just externally visible ones
98         https://bugs.webkit.org/show_bug.cgi?id=152156
99
100         Reviewed by Dan Bernstein.
101
102         * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
103         * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
104         (WebCore::CDMSessionAVContentKeySession::CDMSessionAVContentKeySession):
105         * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
106         * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
107         (WebCore::CDMSessionAVStreamSession::CDMSessionAVStreamSession):
108         Rename classes with a "Web" prefix.
109
110 2015-12-11  Brady Eidson  <beidson@apple.com>
111
112         Modern IDB: storage/indexeddb/intversion-abort-in-initial-upgradeneeded.html fails.
113         https://bugs.webkit.org/show_bug.cgi?id=152177
114
115         Reviewed by Alex Christensen.
116
117         No new tests (At least one failing test now passes).
118
119         * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
120         (WebCore::IDBClient::IDBOpenDBRequest::versionChangeTransactionDidFinish): Renamed from below.
121         (WebCore::IDBClient::IDBOpenDBRequest::versionChangeTransactionWillFinish): Deleted.
122         * Modules/indexeddb/client/IDBOpenDBRequestImpl.h:
123         
124         * Modules/indexeddb/client/IDBRequestImpl.cpp:
125         (WebCore::IDBClient::IDBRequest::setVersionChangeTransaction): OpenDBRequests usually don't have transactions, 
126           unless they end up being upgrade requests.
127         * Modules/indexeddb/client/IDBRequestImpl.h:
128         
129         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
130         (WebCore::IDBClient::IDBTransaction::IDBTransaction): Call setVersionChangeTransaction on the request if appropriate.
131         (WebCore::IDBClient::IDBTransaction::dispatchEvent): Call versionChangeTransactionDidFinish after the 
132           abort/complete events fire.
133         (WebCore::IDBClient::IDBTransaction::abort): Deleted.
134         (WebCore::IDBClient::IDBTransaction::commit): Deleted.
135
136 2015-12-11  Brady Eidson  <beidson@apple.com>
137
138         Modern IDB: storage/indexeddb/index-count.html fails.
139         https://bugs.webkit.org/show_bug.cgi?id=152175
140
141         Reviewed by Alex Christensen.
142
143         No new tests (At least one failing test now passes).
144
145         * Modules/indexeddb/client/IDBIndexImpl.cpp:
146         (WebCore::IDBClient::IDBIndex::count): If the passed in IDBKeyRange* is nullptr, use IDBKeyRangeData::allKeys.
147         (WebCore::IDBClient::IDBIndex::doCount): Change an isNull check to a more correct !isValid() check.
148
149 2015-12-11  Per Arne Vollan  <peavo@outlook.com>
150
151         [WinCairo][MediaFoundation] Setting playback rate does not work.
152         https://bugs.webkit.org/show_bug.cgi?id=152172
153
154         Reviewed by Brent Fulgham.
155
156         Implement method to set playback rate.
157
158         * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
159         (WebCore::MediaPlayerPrivateMediaFoundation::seekDouble):
160         (WebCore::MediaPlayerPrivateMediaFoundation::setRateDouble):
161         (WebCore::MediaPlayerPrivateMediaFoundation::durationDouble):
162         * platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
163
164 2015-12-11  Darin Adler  <darin@apple.com>
165
166         Reduce the number of events that can be created by Document.createEvent
167         https://bugs.webkit.org/show_bug.cgi?id=151931
168
169         Reviewed by Alex Christensen.
170
171         Document.createEvent is intended for use only with a certain set of legacy events.
172         Ideally it should only be the ones mentioned in the DOM specification.
173
174         For now, at least remove all the events that can't usefully be created and initialized
175         this way. Later, we should cut it down even smaller. And stop automatically generating
176         this, which was causing everyone who made an event IDL file to get supported here!
177
178         The modern alternative is to use event class constructors instead.
179
180         * CMakeLists.txt: Don't compile EventFactory.cpp. For now, we still generate
181         EventFactory.cpp but we do not use it.
182         * DerivedSources.make: Ditto.
183         * WebCore.vcxproj/WebCore.vcxproj: Ditto.
184         * WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
185         * WebCore.xcodeproj/project.pbxproj: Ditto. Also don't include EventFactory.h in the
186         project file.
187
188         * dom/DOMImplementation.cpp:
189         (WebCore::DOMImplementation::hasFeature): Added a comment about the SVGZoomEvents feature.
190
191         * dom/Document.cpp: Re-sorted includes and added the new ones needed for createEvent.
192         (WebCore::Document::createEvent): Moved all the logic here from EventFactory, and
193         took a crack at comments that explain what this should and should not be used for.
194
195         * dom/EventFactory.h: Removed.
196
197 2015-12-10  Brady Eidson  <beidson@apple.com>
198
199         Modern IDB: storage/indexeddb/objectstore-count.html fails.
200         https://bugs.webkit.org/show_bug.cgi?id=152167
201
202         Reviewed by Alex Christensen.
203
204         No new tests (At least one failing test now passes).
205
206         * Modules/indexeddb/IDBKeyRangeData.h:
207         (WebCore::IDBKeyRangeData::allKeys):
208         
209         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
210         (WebCore::IDBClient::IDBObjectStore::count): If the passed in IDBKeyRange* is nullptr, use IDBKeyRangeData::allKeys.
211         (WebCore::IDBClient::IDBObjectStore::doCount): Change an isNull check to a more correct !isValid() check.
212
213 2015-12-10  Youenn Fablet  <youenn.fablet@crf.canon.fr>
214
215         Binding and builtin generators should lowercase RTCXX as rtcXX and not rTCXX
216         https://bugs.webkit.org/show_bug.cgi?id=152121
217
218         Reviewed by Darin Adler.
219
220         No change in behavior.
221
222         * bindings/js/JSDOMWindowBase.cpp:
223         (WebCore::JSDOMWindowBase::finishCreation): Using rtcXX in lieu of rTCXX.
224         * bindings/js/WebCoreJSBuiltinInternals.h:
225         (WebCore::JSBuiltinInternalFunctions::JSBuiltinInternalFunctions): Ditto.
226         (WebCore::JSBuiltinInternalFunctions::rtcPeerConnectionInternals): Added.
227         (WebCore::JSBuiltinInternalFunctions::visit): Ditto.
228         (WebCore::JSBuiltinInternalFunctions::init): Ditto.
229         (WebCore::JSBuiltinInternalFunctions::rTCPeerConnectionInternals): Deleted.
230         * bindings/js/WebCoreJSBuiltins.h:
231         (WebCore::JSBuiltinFunctions::JSBuiltinFunctions): Using rtcXX in lieu of rTCXX.
232         (WebCore::JSBuiltinFunctions::rtcPeerConnectionBuiltins): Added.
233         (WebCore::JSBuiltinFunctions::rtcPeerConnectionInternalsBuiltins): Added.
234         (WebCore::JSBuiltinFunctions::rTCPeerConnectionBuiltins): Deleted.
235         (WebCore::JSBuiltinFunctions::rTCPeerConnectionInternalsBuiltins): Deleted.
236         * bindings/scripts/CodeGenerator.pm:
237         (WK_lcfirst): Added RTC special rule.
238
239 2015-12-10  Zalan Bujtas  <zalan@apple.com>
240
241         ASSERTION FAILED: !simpleLineLayout() in WebCore::RenderText::collectSelectionRectsForLineBoxes
242         https://bugs.webkit.org/show_bug.cgi?id=152115
243
244         Reviewed by Simon Fraser.
245
246         document.execCommand("indent") generates a blockquote wrapper and moves the indented content inside.
247         If the indented content is already inside a selection, we need to make sure that newly created flow uses
248         normal line layout.
249         This patch fixes the generic case as re-parenting an already selected renderer is not specific to document.execCommand("indent").
250
251         Test: fast/block/selection-inside-simple-line-layout.html
252
253         * rendering/SimpleLineLayout.cpp:
254         (WebCore::SimpleLineLayout::canUseForWithReason):
255         (WebCore::SimpleLineLayout::printReason):
256
257 2015-12-10  Eric Carlson  <eric.carlson@apple.com>
258
259         [MediaStream] Expose media capture devices persistent permissions to WebCore
260         https://bugs.webkit.org/show_bug.cgi?id=152087
261
262         Reviewed by Chris Dumez.
263
264         No new tests, an existing test was updated to test the change.
265
266         * CMakeLists.txt: Add UserMediaPermissionCheck.cpp.
267
268         * Modules/mediastream/MediaDevicesRequest.cpp:
269         (WebCore::MediaDevicesRequest::~MediaDevicesRequest): Clear the permission checker client.
270         (WebCore::MediaDevicesRequest::contextDestroyed): Ditto.
271         (WebCore::MediaDevicesRequest::start): Create a permission checker and start it running.
272         (WebCore::MediaDevicesRequest::didCompleteCheck): Start the media source checker.
273         (WebCore::MediaDevicesRequest::didCompleteRequest): Only include a track's label if the
274           page has permission to use a capture device.
275         * Modules/mediastream/MediaDevicesRequest.h:
276
277         * Modules/mediastream/UserMediaClient.h: Include prototypes for permission checker.
278         (WebCore::UserMediaClient::~UserMediaClient):
279         
280         * Modules/mediastream/MediaStreamTrackSourcesRequest.cpp: Removed, not longer used.
281         * Modules/mediastream/MediaStreamTrackSourcesRequest.h:
282
283         * Modules/mediastream/UserMediaController.h:
284         (WebCore::UserMediaController::checkUserMediaPermission): New.
285         (WebCore::UserMediaController::cancelUserMediaPermissionCheck): Ditto.
286
287         * Modules/mediastream/UserMediaPermissionCheck.cpp: Added.
288         (WebCore::UserMediaPermissionCheck::create):
289         (WebCore::UserMediaPermissionCheck::UserMediaPermissionCheck):
290         (WebCore::UserMediaPermissionCheck::~UserMediaPermissionCheck):
291         (WebCore::UserMediaPermissionCheck::securityOrigin):
292         (WebCore::UserMediaPermissionCheck::contextDestroyed):
293         (WebCore::UserMediaPermissionCheck::start):
294         (WebCore::UserMediaPermissionCheck::setDeviceAccessMode):
295         * Modules/mediastream/UserMediaPermissionCheck.h: Added.
296         (WebCore::UserMediaPermissionCheckClient::~UserMediaPermissionCheckClient):
297         (WebCore::UserMediaPermissionCheck::setClient):
298
299         * WebCore.xcodeproj/project.pbxproj: Add UserMediaPermissionCheck.cpp|.h
300
301         * platform/mock/UserMediaClientMock.h: Removed, it is no longer used.
302
303         * testing/Internals.cpp: Remove UserMediaClientMock.h include, it is gone.
304
305 2015-12-10  Myles C. Maxfield  <mmaxfield@apple.com>
306
307         Build fix
308
309         Unreviewed.
310
311         * platform/graphics/cocoa/FontCocoa.mm:
312         (WebCore::smallCapsTrueTypeDictionary):
313
314 2015-12-10  Simon Fraser  <simon.fraser@apple.com>
315
316         Mordernize viewport dumping
317         https://bugs.webkit.org/show_bug.cgi?id=152159
318
319         Reviewed by Zalan Bujtas.
320
321         Use groupings to simplify the viewport configuration dumping code.
322
323         * page/ViewportConfiguration.cpp:
324         (WebCore::operator<<):
325         (WebCore::ViewportConfiguration::description):
326
327 2015-12-10  Joseph Pecoraro  <pecoraro@apple.com>
328
329         Remote Inspector: Verify the identity of the other side of XPC connections
330         https://bugs.webkit.org/show_bug.cgi?id=152153
331
332         Reviewed by Brian Burg.
333
334         * WebCore.xcodeproj/project.pbxproj:
335         * platform/network/mac/CertificateInfoMac.mm:
336         Use the new header.
337
338 2015-12-10  Brady Eidson  <beidson@apple.com>
339
340         Modern IDB: storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html fails
341         https://bugs.webkit.org/show_bug.cgi?id=152144
342
343         Reviewed by Alex Christensen.
344
345         No new tests (At least two failing tests now pass, and other incorrect tests updated to be more correct).
346
347         - An IDBOpenDBRequest resulting in a versionchange transaction should not have the onsuccess event fire if 
348           the database connection was closed during the versionchange transaction. onerror should fire instead.
349         - When firing an event at an IDBRequest, it should not have the transaction as an additional target if the
350           transaction has finished.
351         - When firing an event at an IDBRequest, it should not have the database as an additional target if the
352           database is closed or is closing.
353
354         * Modules/indexeddb/client/IDBDatabaseImpl.h:
355         (WebCore::IDBClient::IDBDatabase::isClosingOrClosed):
356         
357         * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
358         (WebCore::IDBClient::IDBOpenDBRequest::fireErrorAfterVersionChangeCompletion):
359         (WebCore::IDBClient::IDBOpenDBRequest::fireErrorAfterVersionChangeAbort): Deleted.
360         * Modules/indexeddb/client/IDBOpenDBRequestImpl.h:
361         
362         * Modules/indexeddb/client/IDBRequestImpl.cpp:
363         (WebCore::IDBClient::IDBRequest::dispatchEvent): Don't add finished transactions or closed databases as event targets.
364         
365         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
366         (WebCore::IDBClient::IDBTransaction::notifyDidAbort):
367         (WebCore::IDBClient::IDBTransaction::dispatchEvent): If this was a versionchange transaction completing, possibly fire
368           the error event on the OpenDBRequest instead of the success event.
369         * Modules/indexeddb/client/IDBTransactionImpl.h:
370         (WebCore::IDBClient::IDBTransaction::isFinished):
371
372 2015-12-10  Zalan Bujtas  <zalan@apple.com>
373
374         Simple line layout: Use TextPainter to draw simple line text.
375         https://bugs.webkit.org/show_bug.cgi?id=152150
376
377         Reviewed by Simon Fraser.
378
379         No change in functionality.
380
381         * rendering/SimpleLineLayoutFunctions.cpp:
382         (WebCore::SimpleLineLayout::paintFlow):
383         * rendering/TextPainter.h:
384
385 2015-12-10  Myles C. Maxfield  <mmaxfield@apple.com>
386
387         [Font Features] r193894 introduces leaks
388         https://bugs.webkit.org/show_bug.cgi?id=152154
389
390         Reviewed by Joe Pecoraro.
391
392         * platform/graphics/cocoa/FontCocoa.mm:
393         (WebCore::smallCapsTrueTypeDictionary):
394         (WebCore::createCTFontWithoutSynthesizableFeatures):
395
396 2015-12-10  Myles C. Maxfield  <mmaxfield@apple.com>
397
398         Build fix
399
400         Unreviewed.
401
402         * platform/graphics/cocoa/FontCocoa.mm:
403         (WebCore::Font::variantCapsSupportsCharacterForSynthesis):
404
405 2015-12-10  Zalan Bujtas  <zalan@apple.com>
406
407         TextPainter: Add support for painting multiple text runs.
408         https://bugs.webkit.org/show_bug.cgi?id=152148
409
410         Reviewed by Simon Fraser.
411
412         This is in preparation for adding simple line layout as a client.
413
414         No change in functionality.
415
416         * rendering/InlineTextBox.cpp:
417         (WebCore::drawSkipInkUnderline): Decouple underline skipping intersection calculation and text painter.
418         (WebCore::InlineTextBox::paint):
419         (WebCore::InlineTextBox::paintDecoration):
420         * rendering/InlineTextBox.h:
421         * rendering/TextPainter.cpp:
422         (WebCore::TextPainter::TextPainter):
423         (WebCore::TextPainter::paintTextWithShadows):
424         (WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded):
425         (WebCore::TextPainter::paintText):
426         (WebCore::TextPainter::dashesForIntersectionsWithRect): Deleted.
427         * rendering/TextPainter.h:
428         (WebCore::TextPainter::setTextPaintStyle):
429         (WebCore::TextPainter::setSelectionPaintStyle):
430         (WebCore::TextPainter::setIsHorizontal):
431         (WebCore::TextPainter::setFont):
432         (WebCore::TextPainter::addEmphasis):
433         (WebCore::TextPainter::addTextShadow):
434
435 2015-12-10  Enrica Casucci  <enrica@apple.com>
436
437         Change skin tone support for two emoji.
438         https://bugs.webkit.org/show_bug.cgi?id=152147
439         rdar://problem/23716993
440         rdar://problem/23716344
441
442         Reviewed by Darin Adler.
443
444         Horse race emoji (1F3C7) should no longer have skin tone variation.
445         Sleuth/Spy emoji (!F575) should instead have skin tone variation.
446
447         * platform/text/TextBreakIterator.cpp:
448         (WebCore::cursorMovementIterator):
449
450 2015-12-10  Commit Queue  <commit-queue@webkit.org>
451
452         Unreviewed, rolling out r193500.
453         https://bugs.webkit.org/show_bug.cgi?id=152143
454
455         do not want to have to disable canvas-to-large-to-draw test
456         (Requested by bfulgham on #webkit).
457
458         Reverted changeset:
459
460         "Place an upper bound on canvas pixel count"
461         https://bugs.webkit.org/show_bug.cgi?id=151825
462         http://trac.webkit.org/changeset/193500
463
464 2015-12-10  Brady Eidson  <beidson@apple.com>
465
466         Followup for:
467         Modern IDB: storage/indexeddb/intversion-close-between-events.html fails.
468         https://bugs.webkit.org/show_bug.cgi?id=152096
469
470         Implementing Darin Adler's review feedback that came after the patch landed.
471
472         * bindings/js/JSIDBDatabaseCustom.cpp:
473         (WebCore::JSIDBDatabase::transaction): No need to explicitly cast to Vector<String>.
474
475 2015-12-10  Youenn Fablet  <youenn.fablet@crf.canon.fr>
476
477         JSC Builtins should use safe array methods
478         https://bugs.webkit.org/show_bug.cgi?id=151501
479
480         Reviewed by Darin Adler.
481
482         Using @push and @shift in internal arrays in lieu of push and shift.
483         This cannot be disrupted by user scripts except if arrays are also made accessible to user scripts.
484
485         Covered by added tests for ReadableStream constructs.
486
487         * Modules/mediastream/RTCPeerConnectionInternals.js:
488         (runNext):
489         (enqueueOperation):
490         * Modules/streams/ReadableStreamInternals.js:
491         (enqueueInReadableStream):
492         (readFromReadableStreamReader):
493         * Modules/streams/StreamInternals.js:
494         (dequeueValue):
495         (enqueueValueWithSize):
496
497 2015-12-10  Zan Dobersek  <zdobersek@igalia.com>
498
499         [TexMap] pixel coverage multiplication in TiledBackingStore can overflow
500         https://bugs.webkit.org/show_bug.cgi?id=152055
501
502         Reviewed by Carlos Garcia Campos.
503
504         The computation of the pixel coverage in TiledBackingStore can easily overflow
505         when the candidate size is relatively large (for instance when the backed
506         layer is transformed in a way that increases its perceived size). This can result
507         in missing tiles for this specific backing store, at least until the layer in
508         question is transformed again into a shape that produces a smaller candidate size.
509
510         To avoid the integer overflow, the multiplication is done in a safe manner,
511         defaulting to the max positive value an integer can hold in case the overflow
512         is detected.
513
514         * platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
515         (WebCore::TiledBackingStore::adjustForContentsRect):
516
517 2015-12-10  Zan Dobersek  <zdobersek@igalia.com>
518
519         [TexMap] Clean up BitmapTexturePool
520         https://bugs.webkit.org/show_bug.cgi?id=152073
521
522         Reviewed by Daniel Bates.
523
524         Move BitmapTexturePoolEntry class under the BitmapTexturePool class, renaming
525         it to simply Entry and keeping it private. Have the constructor take in an
526         rvalue reference to the RefPtr<BitmapTexture> object. Remove the static
527         compareTimeLastUsed() function and use a lambda directly in its place.
528
529         Remove the default BitmapTexturePool constructor, which isn't used anywhere.
530         Have the constructor and some methods accept or return RefPtr objects, possibly
531         via rvalue references. Clean up the header file by removing a few unnecessary
532         header includes and using forward declarations where possible.
533
534         In the BitmapTexturePool implementation file, mark the two const variables as
535         static. The ::acquireTexture() method now uses the std::find_if() algorithm
536         to find a fitting Entry object in the Vector. The same method is also moved
537         upwards so we follow the order of declaration in the header. ::createTexture()
538         inlines the return of the new expression into the adoptRef() call in the return
539         statement.
540
541         TextureMapperGL constructor is updated to pass a copied RefPtr object into the
542         BitmapTexturePool constructor.
543
544         * platform/graphics/texmap/BitmapTexturePool.cpp:
545         (WebCore::BitmapTexturePool::BitmapTexturePool):
546         (WebCore::BitmapTexturePool::acquireTexture):
547         (WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired):
548         (WebCore::BitmapTexturePool::createTexture):
549         * platform/graphics/texmap/BitmapTexturePool.h:
550         (WebCore::BitmapTexturePool::Entry::Entry):
551         (WebCore::BitmapTexturePool::Entry::markUsed):
552         (WebCore::BitmapTexturePoolEntry::BitmapTexturePoolEntry): Deleted.
553         (WebCore::BitmapTexturePoolEntry::markUsed): Deleted.
554         (WebCore::BitmapTexturePoolEntry::compareTimeLastUsed): Deleted.
555         * platform/graphics/texmap/TextureMapperGL.cpp:
556         (WebCore::TextureMapperGL::TextureMapperGL):
557
558 2015-12-10  Michael Catanzaro  <mcatanzaro@igalia.com>
559
560         [GTK] RenderThemeGtk::platformActiveSelectionBackgroundColor, et. al. should not clobber state of cached GtkStyleContexts
561         https://bugs.webkit.org/show_bug.cgi?id=151533
562
563         Reviewed by Carlos Garcia Campos.
564
565         Remove the style context cache to simplify the code, drastically reduce the number of
566         expensive save/restore operations performed on style contexts, and avoid unwanted
567         side-effects in RenderThemeGtk::styleColor. This is also a speculative fix for improper
568         button rendering with certain custom themes, and a simplification that will make it easier
569         to fix bug #150550.
570
571         This change does have performance implications, which I intend to check on the perf bot
572         after landing to ensure that removing the cache does not have a significant negative impact
573         on performance; I have no clue whether this will be a net performance win or loss. However,
574         this is a bit tricky, because the bot is running GTK+ 3.16, whereas I expect save/restore
575         might be much more expensive in GTK+ 3.20, and I do not want to make performance decisions
576         except based on the latest GTK+ due to large changes in the implementation of
577         GtkStyleContext.
578
579         * rendering/RenderThemeGtk.cpp:
580         (WebCore::createStyleContext):
581         (WebCore::getStockIconForWidgetType):
582         (WebCore::getStockSymbolicIconForWidgetType):
583         (WebCore::RenderThemeGtk::initMediaColors):
584         (WebCore::RenderThemeGtk::adjustRepaintRect):
585         (WebCore::setToggleSize):
586         (WebCore::paintToggle):
587         (WebCore::RenderThemeGtk::setCheckboxSize):
588         (WebCore::RenderThemeGtk::setRadioSize):
589         (WebCore::RenderThemeGtk::paintButton):
590         (WebCore::getComboBoxMetrics):
591         (WebCore::RenderThemeGtk::paintMenuList):
592         (WebCore::RenderThemeGtk::paintTextField):
593         (WebCore::RenderThemeGtk::paintSliderTrack):
594         (WebCore::RenderThemeGtk::paintSliderThumb):
595         (WebCore::RenderThemeGtk::adjustSliderThumbSize):
596         (WebCore::RenderThemeGtk::paintProgressBar):
597         (WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle):
598         (WebCore::RenderThemeGtk::paintInnerSpinButton):
599         (WebCore::styleColor):
600         (WebCore::gtkStyleChangedCallback): Deleted.
601         (WebCore::styleContextMap): Deleted.
602         (WebCore::getStyleContext): Deleted.
603
604 2015-12-10  Myles C. Maxfield  <mmaxfield@apple.com>
605
606         font-variant-caps does not work if the font does not support font features
607         https://bugs.webkit.org/show_bug.cgi?id=149774
608
609         Reviewed by Antti Koivisto.
610
611         This test implements synthesis for small-caps and all-small-caps. It does so by
612         moving font variant selection into a higher level (ComplexTextController).
613         In general, the approach is to use the pure font feature until we encounter
614         a character which needs to be uppercased, and which the font feature does not
615         support uppercasing. In this situation, we try again with synthesis. In this
616         case, synthesis means artificially uppercasing letters and rendering them with
617         a smaller font.
618
619         We require system support to know which glyphs a particular font feature supports.
620         Therefore, on operating systems which do not include this support, we will simply
621         say that the font feature does not support any glyphs.
622
623         Test: css3/font-variant-small-caps-synthesis.html
624               css3/font-variant-petite-caps-synthesis.html
625
626         * platform/graphics/Font.cpp:
627         (WebCore::Font::noSmallCapsFont): Return the same font, but without smcp or c2sc.
628         This function utilizes a cache.
629         * platform/graphics/Font.h:
630         (WebCore::Font::variantFont): Small caps should never go through this function
631         anymore.
632         * platform/graphics/FontCascade.h: Because we're moving variant selection into
633         a higher level, we remove the FontVariant argument from the lower-level call.
634         * platform/graphics/FontCascadeFonts.cpp:
635         (WebCore::FontCascadeFonts::glyphDataForVariant): Use early-return style.
636         (WebCore::FontCascadeFonts::glyphDataForNormalVariant): Ditto.
637         * platform/graphics/cocoa/FontCascadeCocoa.mm:
638         (WebCore::FontCascade::fontForCombiningCharacterSequence): Because we're moving
639         variant selection into a higher level, we remove the FontVariant argument from
640         the lower-level call.
641         * platform/graphics/cocoa/FontCocoa.mm:
642         (WebCore::Font::smallCapsSupportsCharacter):
643         (WebCore::Font::allSmallCapsSupportsCharacter):
644         (WebCore::smallCapsOpenTypeDictionary): Helper function for
645         smallCapsSupportsCharacter().
646         (WebCore::smallCapsTrueTypeDictionary): Ditto.
647         (WebCore::unionBitVectors):
648         (WebCore::Font::glyphsSupportedBySmallCaps): Compute a bit vector of supported
649         glyphs.
650         (WebCore::Font::glyphsSupportedByAllSmallCaps): Ditto.
651         (WebCore::createDerivativeFont): Moving common code into its own helper function.
652         (WebCore::Font::createFontWithoutSmallCaps):
653         (WebCore::Font::platformCreateScaledFont): Use the common code.
654         * platform/graphics/mac/ComplexTextController.cpp:
655         (WebCore::capitalized): What is the capitalized form of a character?
656         (WebCore::ComplexTextController::collectComplexTextRuns): Implement the core
657         logic of this patch. This includes the retry when we encounter a character which
658         is not supported by the font feature.
659         * platform/spi/cocoa/CoreTextSPI.h:
660
661 2015-12-10  Zan Dobersek  <zdobersek@igalia.com>
662
663         [TexMap] Remove the TEXMAP_OPENGL_ES_2 define
664         https://bugs.webkit.org/show_bug.cgi?id=152069
665
666         Reviewed by Alex Christensen.
667
668         Remove the TEXMAP_OPENGL_ES_2 macro define and clean up the code
669         that it was (not) guarding.
670
671         * platform/graphics/texmap/BitmapTexture.h:
672         * platform/graphics/texmap/BitmapTextureGL.cpp: Remove the TEXMAP_OPENGL_ES_2
673         guard. Keep the GL_UNSIGNED_INT_8_8_8_8_REV define for OS(DARWIN), but use
674         the GraphicsContext3D constants for other values.
675         (WebCore::BitmapTextureGL::updateContentsNoSwizzle):
676         (WebCore::BitmapTextureGL::initializeStencil): Remove the TEXMAP_OPENGL_ES_2
677         guard and default to calling the renderbufferStorage() function with the
678         GraphicsContext3D::STENCIL_INDEX8 argument.
679         * platform/graphics/texmap/BitmapTexturePool.h:
680         * platform/graphics/texmap/TextureMapper.h:
681         * platform/graphics/texmap/TextureMapperGL.cpp: Remove both the TEXMAP_OPENGL_ES_2
682         guard and the code it guarded. Because we were defining TEXMAP_OPENGL_ES_2 and not
683         USE_TEXMAP_OPENGL_ES_2, the guarded defines were always enforced, but they're never
684         actually used in this file anyway.
685
686 2015-12-09  Brady Eidson  <beidson@apple.com>
687
688         Modern IDB: storage/indexeddb/objectstore-basics.html fails.
689         https://bugs.webkit.org/show_bug.cgi?id=152101
690
691         Reviewed by Alex Christensen.
692
693         No new tests (Multiple tests updated to the new error messaging cover it).
694
695         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
696         (WebCore::IDBClient::IDBObjectStore::putOrAdd): Add plenty of detailed error messaging.
697
698 2015-12-09  Zalan Bujtas  <zalan@apple.com>
699
700         TextPainter: Make before and after selection painting more explicit.
701         https://bugs.webkit.org/show_bug.cgi?id=152104
702
703         Reviewed by Myles C. Maxfield.
704
705         Instead of swapping start end end positions and expecting TextPainter::drawTextOrEmphasisMarks()
706         to recognize it, we call painting with 0 - startPosition and endPosition - length.
707
708         No change in functionality.
709
710         * rendering/TextPainter.cpp:
711         (WebCore::TextPainter::drawTextOrEmphasisMarks):
712         (WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded):
713         (WebCore::TextPainter::paintText):
714         (WebCore::TextPainter::paintEmphasisMarksIfNeeded): Deleted.
715         (WebCore::TextPainter::paintTextWithStyle): Deleted.
716         * rendering/TextPainter.h:
717
718 2015-12-09  Daniel Bates  <dabates@apple.com>
719
720         [iOS] Suspend and resume device motion and device orientation updates when page is hidden and visible, respectively
721         https://bugs.webkit.org/show_bug.cgi?id=151840
722         <rdar://problem/23753931>
723
724         Reviewed by Simon Fraser.
725
726         * dom/Document.cpp:
727         (WebCore::Document::suspendDeviceMotionAndOrientationUpdates): Added.
728         (WebCore::Document::resumeDeviceMotionAndOrientationUpdates): Added.
729         (WebCore::Document::platformSuspendOrStopActiveDOMObjects): Moved logic to suspend device motion and
730         orientation updates from here to Document::suspendDeviceMotionAndOrientationUpdates().
731         (WebCore::Document::suspendActiveDOMObjects): Modified to call Document::suspendDeviceMotionAndOrientationUpdates().
732         (WebCore::Document::resumeActiveDOMObjects): Modified to call Document::resumeDeviceMotionAndOrientationUpdates().
733         * dom/Document.h:
734         * page/Page.cpp:
735         (WebCore::Page::setIsVisibleInternal): Suspend device motion and orientation updates when the page is hidden and
736         resume updates when the page is visible.
737         (WebCore::Page::suspendDeviceMotionAndOrientationUpdates): Added.
738         (WebCore::Page::resumeDeviceMotionAndOrientationUpdates): Added.
739         * page/Page.h:
740
741 2015-12-09  Daniel Bates  <dabates@apple.com>
742
743         Unify iOS Frame::setTimersPaused() logic and Frame::{suspend, resume}ActiveDOMObjectsAndAnimations()
744         https://bugs.webkit.org/show_bug.cgi?id=152006
745
746         Reviewed by Simon Fraser.
747
748         Currently we have almost identical logic to suspend and resume a web page for iOS and non-iOS ports.
749         We should unify this logic instead of duplicating it.
750
751         * dom/ActiveDOMObject.h: Remove iOS-specific enumeration DocumentWillBePaused and standardize on
752         enumerator PageWillBeSuspended.
753         * dom/Document.cpp:
754         (WebCore::Document::didBecomeCurrentDocumentInFrame): Unify iOS and non-iOS-specific code.
755         (WebCore::Document::suspendScheduledTasks): Ignore subsequent calls to this function so long as the reason for
756         the first invocation was ActiveDOMObject::PageWillBeSuspended. Such a subsequent call may occur as part of
757         handling a scroll or zoom gesture.
758         * dom/ScriptExecutionContext.cpp:
759         (WebCore::ScriptExecutionContext::suspendActiveDOMObjects): Ignore subsequent calls to this function
760         so long as the reason for the first invocation was ActiveDOMObject::PageWillBeSuspended. Such a subsequent
761         call may occur as part of the process of a page being added to the page cache.
762         * html/HTMLMediaElement.cpp:
763         (WebCore::HTMLMediaElement::suspend): Remove case for ActiveDOMObject::DocumentWillBePaused as this
764         enumerator is being removed.
765         * page/DOMTimer.cpp:
766         (WebCore::DOMTimer::install): Write logic that used Frame::timersPaused() terms of
767         ScriptExecutionContext::activeDOMObjectsAreSuspended() as we are removing Frame::timersPaused().
768         (WebCore::DOMTimer::fired): Remove iOS-specific assertion with respect to Frame::timersPaused().
769         This function already asserts the equivalent condition that ScriptExecutionContext::activeDOMObjectsAreSuspended()
770         evaluates to false. Clean up iOS-specific code that depends on the ScriptExecutionContext being a
771         Document object by taking advantage of the fact that this assumption is true when shouldBeginObservingChanges
772         evaluates to true.
773         * page/Frame.cpp:
774         (WebCore::Frame::Frame): Remove instance variable m_timersPausedCount and unify the iOS and non-iOS logic.
775         (WebCore::Frame::suspendActiveDOMObjectsAndAnimations): Standardize on the iOS logic for suspending
776         DOM objects and animations because it is more comprehensive on what it suspends and works with the deferred
777         loading machinery (Page::setDefersLoading() - see remarks in Frame::resumeActiveDOMObjectsAndAnimations() for
778         more details). Specifically, make use of Frame::clearTimers() to suspend non-scripted animations (i.e. non-requestAnimationFrame()
779         animations), auto-scroll timer, and pending relayouts. And use Document::suspendScheduledTasks() to suspend
780         all other tasks, including WebSQL database callbacks, active DOM objects, scripted animations and execution of
781         <script async>/<script defer> JavaScript scripts.
782         (WebCore::Frame::resumeActiveDOMObjectsAndAnimations): Standardize on the iOS logic for resuming
783         DOM objects and animations for symmetry and because it works with the deferred loading machinery. We call
784         Document::resumeScheduledTasks() (which calls Document::resumeActiveDOMObjects()) instead of calling
785         Document::resumeActiveDOMObjects() directly because the former will ultimately process the queue of pending
786         tasks (Document::m_pendingTasks).
787         * page/Frame.h: Remove instance variable m_timersPausedCount.
788         (WebCore::Frame::timersPaused): Deleted.
789         * page/ios/FrameIOS.mm:
790         (WebCore::Frame::setTimersPaused): Write this function in terms of Page::{suspend, resume}ActiveDOMObjectsAndAnimations().
791         We need to keep this function for Legacy WebKit on iOS.
792         (WebCore::Frame::setTimersPausedInternal): Deleted.
793         * rendering/RenderElement.cpp:
794         (WebCore::shouldRepaintForImageAnimation): Remove iOS-specific code to early return when Frame::timersPaused()
795         evaluates to true. This function already has the equivalent code to early return when Document::activeDOMObjectsAreSuspended()
796         evaluates to true.
797
798 2015-12-09  Brady Eidson  <beidson@apple.com>
799
800         Modern IDB: storage/indexeddb/metadata.html fails
801         https://bugs.webkit.org/show_bug.cgi?id=152099
802
803         Reviewed by Alex Christensen.
804
805         Test: storage/indexeddb/modern/abort-objectstore-info.html
806               And at least one existing failure now passes.
807
808         We did not properly reset object store info when version change transactions aborted.
809
810         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
811         (WebCore::IDBClient::IDBObjectStore::IDBObjectStore):
812         (WebCore::IDBClient::IDBObjectStore::rollbackInfoForVersionChangeAbort):
813         * Modules/indexeddb/client/IDBObjectStoreImpl.h:
814         
815         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
816         (WebCore::IDBClient::IDBTransaction::abort):
817
818 2015-12-09  Simon Fraser  <simon.fraser@apple.com>
819
820         Adjust layer backing store format
821         https://bugs.webkit.org/show_bug.cgi?id=152097
822         rdar://problem/23305376
823
824         Reviewed by Tim Horton.
825         
826         Call setBackingStoreFormat() on UIWebView tile grid layers, and on compositing
827         layers which can allocate backing store.
828
829         * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
830         (WebCore::setBackingStoreFormat):
831         (PlatformCALayerCocoa::commonInit):
832         * platform/ios/LegacyTileGridTile.mm:
833         (WebCore::setBackingStoreFormat):
834         (WebCore::LegacyTileGridTile::LegacyTileGridTile):
835
836 2015-12-09  Brady Eidson  <beidson@apple.com>
837
838         Modern IDB: storage/indexeddb/intversion-close-between-events.html fails.
839         https://bugs.webkit.org/show_bug.cgi?id=152096
840
841         Reviewed by Alex Christensen.
842
843         No new tests (At least one failing test now passes).
844
845         * bindings/js/JSIDBDatabaseCustom.cpp:
846         (WebCore::JSIDBDatabase::transaction): In addition to JSArrays, treat DOMStringLists as a valid string sequence.
847     
848 2015-12-09  Andreas Kling  <akling@apple.com>
849
850         [iOS] ResourceUsageOverlay should work on iOS.
851         <https://webkit.org/b/152021>
852
853         Reviewed by Antti Koivisto.
854
855         Make ResourceUsageOverlay work on iOS and on Mac desktops with UI-side compositing.
856
857         * page/ResourceUsageOverlay.cpp:
858         (WebCore::ResourceUsageOverlay::initialize): Move the overlay to the top of the view on iOS for now.
859         * page/ResourceUsageOverlay.h:
860         * page/cocoa/ResourceUsageOverlayCocoa.mm:
861         (WebCore::createColor): Make a custom CGColor factory since we can't use CGColorCreateGenericRGB on iOS.
862         (WebCore::MemoryCategoryInfo::MemoryCategoryInfo):
863         (WebCore::ResourceUsageOverlay::platformInitialize): Put the overlay CALayer into a container layer and
864         hook it up with GraphicsLayer::setContentsToPlatformLayer so it works with all compositing modes.
865         (WebCore::showText): Move CGContextSaveGState call to the top of the function to preserve everything.
866         (WebCore::drawGraphLabel):
867         (WebCore::drawCpuHistory):
868         (WebCore::drawGCHistory):
869         (WebCore::ResourceUsageOverlay::platformDraw): Flip the CGContext if needed.
870         (WebCore::runSamplerThread): Update the layer rects on each thread iteration. This shouldn't be
871         necessary but it papers over an issue where the containing layer would shrink down to 0x0 and
872         disappear. Added a FIXME for this.
873         * platform/spi/cocoa/MachVMSPI.h: Add purgeable VM SPI.
874
875 2015-12-09  Brady Eidson  <beidson@apple.com>
876
877         Modern IDB: storage/indexeddb/database-closepending-flag.html fails.
878         https://bugs.webkit.org/show_bug.cgi?id=152095
879
880         Reviewed by Alex Christensen.
881
882         No new tests (At least one failing test now passes).
883         
884         The server-side checks the closepending flag before dispatching the event to the client, 
885         but due to the inherent asynchronous race between server and client, the client needs to 
886         check its closePending flag as well.
887
888         * Modules/indexeddb/client/IDBDatabaseImpl.cpp:
889         (WebCore::IDBClient::IDBDatabase::fireVersionChangeEvent): Don't fire if m_closePending is set.
890
891 2015-12-09  David Hyatt  <hyatt@apple.com>
892
893         Picture element needs to respond to dynamic viewport changes.
894         https://bugs.webkit.org/show_bug.cgi?id=152013
895         <rdar://problem/23766375>
896
897         Reviewed by Dean Jackson.
898
899         Added new tests in fast/picture.
900
901         * css/MediaQueryEvaluator.cpp:
902         (WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
903         Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
904         will refactor the style resolver code to use this function instead of the special style resolver one, in order to
905         get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.
906
907         * css/MediaQueryEvaluator.h:
908         (WebCore::MediaQueryResult::MediaQueryResult):
909         * css/StyleResolver.h:
910         (WebCore::MediaQueryResult::MediaQueryResult): Deleted.
911         Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
912         resolver.
913
914         * dom/Document.cpp:
915         (WebCore::Document::evaluateMediaQueryList):
916         (WebCore::Document::checkViewportDependentPictures):
917         (WebCore::Document::optimizedStyleSheetUpdateTimerFired):
918         (WebCore::Document::applyContentDispositionAttachmentSandbox):
919         (WebCore::Document::addViewportDependentPicture):
920         (WebCore::Document::removeViewportDependentPicture):
921         * dom/Document.h:
922         The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
923         viewport changes. If their media queries stay the same, then nothing happens. If they change, then
924         the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.
925
926         * html/HTMLImageElement.cpp:
927         (WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
928         Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
929         When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
930         set of tracked pictures.
931
932         * html/HTMLPictureElement.cpp:
933         (WebCore::HTMLPictureElement::HTMLPictureElement):
934         (WebCore::HTMLPictureElement::~HTMLPictureElement):
935         (WebCore::HTMLPictureElement::didMoveToNewDocument):
936         (WebCore::HTMLPictureElement::create):
937         (WebCore::HTMLPictureElement::sourcesChanged):
938         (WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
939         * html/HTMLPictureElement.h:
940         New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
941         a different document.
942
943         * html/HTMLSourceElement.cpp:
944         (WebCore::HTMLSourceElement::parseAttribute):
945         * html/HTMLSourceElement.h:
946         Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
947         code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.
948
949 2015-12-09  Zalan Bujtas  <zalan@apple.com>
950
951         TextPainter: Rename start and end position to selectionStart and selectionEnd.
952         https://bugs.webkit.org/show_bug.cgi?id=152088
953
954         Reviewed by Myles C. Maxfield.
955
956         They actually mean selection start/end.
957
958         No change in functionality.
959
960         * rendering/InlineTextBox.cpp:
961         (WebCore::InlineTextBox::paint):
962         * rendering/TextPainter.cpp:
963         (WebCore::TextPainter::TextPainter):
964         (WebCore::TextPainter::paintText):
965         * rendering/TextPainter.h:
966
967 2015-12-09  Joanmarie Diggs  <jdiggs@igalia.com>
968
969         AX: [GTK] Anonymous render block flow elements should be exposed as ATK_ROLE_SECTION; not ATK_ROLE_PANEL
970         https://bugs.webkit.org/show_bug.cgi?id=152070
971
972         Reviewed by Mario Sanchez Prada.
973
974         Map the element to WebCore AccessibilityRole DivRole for GTK. This is being
975         done in the shared layer rather than in the platform layer because we want all
976         subsequent logic to treat anonymous render block flow elements as divs.
977
978         No new tests. We already have sufficient test coverage. The expectations
979         been updated accordingly.
980
981         * accessibility/AccessibilityRenderObject.cpp:
982         (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
983
984 2015-12-09  Keith Rollin  <krollin@apple.com>
985
986         form.elements should reflect the element ordering after the HTML tree builder algorithm
987         https://bugs.webkit.org/show_bug.cgi?id=148870
988         rdar://problem/22589879
989
990         Reviewed by Ryosuke Niwa.
991
992         form.elements should return form-associated elements in tree order.
993         However, when presented with an HTML fragment like the following,
994         forms.elements is not built in tree order. Instead, the elements
995         appear in forms.element in the same order they appear in the HTML --
996         that is in the same order as they are parsed.
997
998         <form id=form>
999             <table>
1000                 <tr>
1001                     <td><input type="radio" name="radio1" id="r1" value=1></td>
1002                     <td><input type="radio" name="radio2" id="r2" value=2></td>
1003                     <input type="radio" name="radio0" id="r0" value=0>
1004                 </tr>
1005             </table>
1006         </form>
1007
1008         The reason why elements appear in forms.elements in parse order is
1009         because they register themselves with the designated form when they
1010         are created. At this time, they are not in the DOM tree, so the form
1011         can only assume that the element will be appended to the DOM tree,
1012         with the result that it records the elements in the HTML fragment
1013         above as [r1, r2, r0].
1014
1015         However, it's not always the case that the newly-created element will
1016         be appended to the current tree. In the HTML fragment above, the r0
1017         input element is hoised out of the table element. It ends up being the
1018         preceding sibling of the table element, with the result that the
1019         actual tree-order of the input elements is [r0, r1, r2].
1020
1021         Because the problem is due to registering form-associated elements
1022         with the form *before* the elements are added to the DOM tree, the
1023         solution is to defer that registration until afterwards. With the new
1024         element in the tree, the form can now use its current location in the
1025         tree to correctly place the element in form.elements.
1026
1027         Existing tests now pass:
1028         - imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-elements-nameditem-02-html
1029
1030         * html/FormAssociatedElement.cpp:
1031         (WebCore::FormAssociatedElement::FormAssociatedElement):
1032         (WebCore::FormAssociatedElement::insertedInto):
1033         (WebCore::FormAssociatedElement::removedFrom):
1034         (WebCore::FormAssociatedElement::formRemovedFromTree):
1035         (WebCore::FormAssociatedElement::formWillBeDestroyed):
1036         * html/FormAssociatedElement.h:
1037         * html/HTMLFormControlElement.cpp:
1038         (WebCore::HTMLFormControlElement::HTMLFormControlElement):
1039         * html/HTMLImageElement.cpp:
1040         (WebCore::HTMLImageElement::HTMLImageElement):
1041         (WebCore::HTMLImageElement::insertedInto):
1042         (WebCore::HTMLImageElement::removedFrom):
1043         * html/HTMLImageElement.h:
1044         * html/HTMLObjectElement.cpp:
1045         (WebCore::HTMLObjectElement::HTMLObjectElement):
1046
1047 2015-12-09  Gwang Yoon Hwang  <yoon@igalia.com>
1048
1049         [ThreadedCompositor] Support HTML5 Video
1050         https://bugs.webkit.org/show_bug.cgi?id=143301
1051
1052         Reviewed by Žan Doberšek.
1053
1054         This patch implements HTML5 Video supports in Threaded Compositor.
1055
1056         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
1057         (WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
1058         Added to support GStreamer GL by ensuring unmapping of the swapped
1059         GstVideoFrame performed at GStreamer GL's gl thread.
1060         (WebCore::MediaPlayerPrivateGStreamerBase::updateTexture):
1061         Modified to upload decoded frame to the given texture instead of
1062         creating a texture itself because we should use a texture from the
1063         proxy when we are using the threaded compositor.
1064         (WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
1065         Implements two ways to send a texture from GStreamer to the compositor.
1066         1. If we are not using GStreamer GL, we are going to acquire a free texture
1067         from a TextureMapperPlatformLayerProxy and upload the decoded frame to the
1068         texture. This should be done at the compositing thread because we
1069         don't have a Gst's GL thread.
1070         2. If we are using GStreamer GL, we map a texture for the given frame
1071         and passes it to the compositing thread. The mapped frame will be
1072         freed if it is swapped out or the layer is removed.
1073
1074         (WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper):
1075         Modified to aquire a new texture itself.
1076
1077         * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
1078         Adds a way to pass a function to the compositing thread to allocate /
1079         upload textures at the compositing thread.
1080
1081
1082 2015-12-09  Xabier Rodriguez Calvar  <calvaris@igalia.com>
1083
1084         [Streams API] pipeThrough test failing
1085         https://bugs.webkit.org/show_bug.cgi?id=152061
1086
1087         Reviewed by Youenn Fablet.
1088
1089         Test: imported/w3c/web-platform-tests/streams-api/readable-streams/pipe-through.html
1090
1091         * Modules/streams/ReadableStream.js:
1092         (pipeThrough): Mimic destructuring for the streams parameter.
1093
1094 2015-12-09  Frederic Wang  <fred.wang@free.fr>
1095
1096         Bad position of large operators inside an munderover element
1097         https://bugs.webkit.org/show_bug.cgi?id=151916
1098
1099         Reviewed by Alejandro G. Castro.
1100
1101         Test: mathml/opentype/large-operators-munderover.html
1102
1103         * rendering/mathml/RenderMathMLOperator.h:
1104         (WebCore::RenderMathMLOperator::isVertical): Expose the direction of the operator.
1105         * rendering/mathml/RenderMathMLUnderOver.cpp:
1106         (WebCore::RenderMathMLUnderOver::layout): Remove call to horizontal stretching for vertical operators.
1107
1108 2015-12-09  Zan Dobersek  <zdobersek@igalia.com>
1109
1110         [TexMap] TextureMapperTiledBackingStore should notify the ImageObserver of the data access
1111         https://bugs.webkit.org/show_bug.cgi?id=152053
1112
1113         Reviewed by Martin Robinson.
1114
1115         TextureMapperTiledBackingStore should call ImageObserver::didDraw() on the Image's
1116         observer after updating the tile with the Image's data. This way the CachedImage
1117         (i.e. the observer) can mark the data access with the current timestamp, avoiding
1118         removing the decoded data in the very near future during a cache purge.
1119
1120         * platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:
1121         (WebCore::TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded):
1122
1123 2015-12-09  Zan Dobersek  <zdobersek@igalia.com>
1124
1125         Make MainThreadSharedTimerGtk implementation GLib-specific
1126         https://bugs.webkit.org/show_bug.cgi?id=152044
1127
1128         Reviewed by Carlos Garcia Campos.
1129
1130         MainThreadSharedTimerGtk has implementation that only directly depends
1131         on GLib, and not GTK+. Because of that it can be moved under
1132         Source/WebCore/platform/glib and slightly renamed.
1133
1134         * PlatformGTK.cmake:
1135         * platform/glib/MainThreadSharedTimerGLib.cpp: Renamed from Source/WebCore/platform/gtk/MainThreadSharedTimerGtk.cpp.
1136         (WebCore::MainThreadSharedTimer::MainThreadSharedTimer):
1137         (WebCore::MainThreadSharedTimer::setFireInterval):
1138         (WebCore::MainThreadSharedTimer::stop):
1139         (WebCore::MainThreadSharedTimer::invalidate):
1140         * platform/gtk/MainThreadSharedTimerGtk.cpp:
1141         (WebCore::MainThreadSharedTimer::MainThreadSharedTimer): Deleted.
1142         (WebCore::MainThreadSharedTimer::setFireInterval): Deleted.
1143         (WebCore::MainThreadSharedTimer::stop): Deleted.
1144         (WebCore::MainThreadSharedTimer::invalidate): Deleted.
1145
1146 2015-12-09  Zan Dobersek  <zdobersek@igalia.com>
1147
1148         [TextureMapper] TextureMapperShaderProgram::setMatrix() should use TransformationMatrix::FloatMatrix4
1149         https://bugs.webkit.org/show_bug.cgi?id=152042
1150
1151         Reviewed by Martin Robinson.
1152
1153         * platform/graphics/texmap/TextureMapperShaderProgram.cpp:
1154         (WebCore::TextureMapperShaderProgram::setMatrix): Instead of manually writing out
1155         the complete matrix in a C array, simply use TransformationMatrix::FloatMatrix4
1156         and fill that via the TransformationMatrix::toColumnMajorFloatArray() method
1157         called on the passed-in TransformationMatrix.
1158
1159 2015-12-09  Zan Dobersek  <zdobersek@igalia.com>
1160
1161         [Soup] Attach the SocketStreamHandleSoup write-ready source to the thread-default context
1162         https://bugs.webkit.org/show_bug.cgi?id=152041
1163
1164         Reviewed by Carlos Garcia Campos.
1165
1166         * platform/network/soup/SocketStreamHandleSoup.cpp:
1167         (WebCore::SocketStreamHandle::beginWaitingForSocketWritability): Attach the
1168         write-ready source to the thread-default context, instead of implicitly
1169         relying on the default context for dispatching.
1170
1171 2015-12-09  Zan Dobersek  <zdobersek@igalia.com>
1172
1173         [Soup] SocketStreamHandle should call g_source_destroy() on the write-ready source
1174         https://bugs.webkit.org/show_bug.cgi?id=152040
1175
1176         Reviewed by Carlos Garcia Campos.
1177
1178         * platform/network/soup/SocketStreamHandleSoup.cpp:
1179         (WebCore::SocketStreamHandle::stopWaitingForSocketWritability): Instead of
1180         calling the g_source_get_id()-g_source_remove() pair, destroy the source via
1181         the g_source_destroy() call. Also use nullptr to clear out the pointer
1182         variable.
1183
1184 2015-12-09  Zan Dobersek  <zdobersek@igalia.com>
1185
1186         Make AudioBusGtk implementation GLib-specific
1187         https://bugs.webkit.org/show_bug.cgi?id=152049
1188
1189         Reviewed by Philippe Normand.
1190
1191         AudioBusGtk only depends on GLib, so it should be moved to
1192         Source/WebCore/platform/audio/glib and the implementation file
1193         renamed to AudioBusGLib.cpp.
1194
1195         The hard-coded webkitgtk path component can be addressed later.
1196
1197         * PlatformGTK.cmake: Update the build target.
1198         * platform/audio/glib/AudioBusGLib.cpp: Renamed from Source/WebCore/platform/audio/gtk/AudioBusGtk.cpp.
1199         (WebCore::AudioBus::loadPlatformResource):
1200         * platform/audio/gtk/AudioBusGtk.cpp:
1201         (WebCore::AudioBus::loadPlatformResource): Deleted.
1202
1203 2015-12-09  Joanmarie Diggs  <jdiggs@igalia.com>
1204
1205         AX: [EFL] Consider deferring to WebCore Accessibility for table exposure
1206         https://bugs.webkit.org/show_bug.cgi?id=144898
1207
1208         Reviewed by Darin Adler.
1209
1210         Stop unconditionally exposing all HTMLTableElement nodes as AccessibilityTables
1211         for WebKitEfl.
1212
1213         No new tests. Several existing tests already cover table exposure. They have
1214         been updated accordingly.
1215
1216         * accessibility/AccessibilityTable.cpp:
1217         (WebCore::AccessibilityTable::computeIsTableExposableThroughAccessibility):
1218
1219 2015-12-08  Simon Fraser  <simon.fraser@apple.com>
1220
1221         Convert resetAnimValToBaseVal take a reference to a SVGAnimatedType
1222         https://bugs.webkit.org/show_bug.cgi?id=152036
1223
1224         Reviewed by Zalan Bujtas.
1225         
1226         Change resetAnimValToBaseVal() to take a reference at the last argument.
1227
1228         * svg/SVGAnimateElementBase.cpp:
1229         (WebCore::SVGAnimateElementBase::resetAnimatedType):
1230         * svg/SVGAnimatedAngle.cpp:
1231         (WebCore::SVGAnimatedAngleAnimator::resetAnimValToBaseVal):
1232         * svg/SVGAnimatedAngle.h:
1233         * svg/SVGAnimatedBoolean.cpp:
1234         (WebCore::SVGAnimatedBooleanAnimator::resetAnimValToBaseVal):
1235         * svg/SVGAnimatedBoolean.h:
1236         * svg/SVGAnimatedColor.h:
1237         * svg/SVGAnimatedEnumeration.cpp:
1238         (WebCore::SVGAnimatedEnumerationAnimator::resetAnimValToBaseVal):
1239         * svg/SVGAnimatedEnumeration.h:
1240         * svg/SVGAnimatedInteger.cpp:
1241         (WebCore::SVGAnimatedIntegerAnimator::resetAnimValToBaseVal):
1242         * svg/SVGAnimatedInteger.h:
1243         * svg/SVGAnimatedIntegerOptionalInteger.cpp:
1244         (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::resetAnimValToBaseVal):
1245         * svg/SVGAnimatedIntegerOptionalInteger.h:
1246         * svg/SVGAnimatedLength.cpp:
1247         (WebCore::SVGAnimatedLengthAnimator::resetAnimValToBaseVal):
1248         * svg/SVGAnimatedLength.h:
1249         * svg/SVGAnimatedLengthList.cpp:
1250         (WebCore::SVGAnimatedLengthListAnimator::resetAnimValToBaseVal):
1251         * svg/SVGAnimatedLengthList.h:
1252         * svg/SVGAnimatedNumber.cpp:
1253         (WebCore::SVGAnimatedNumberAnimator::resetAnimValToBaseVal):
1254         * svg/SVGAnimatedNumber.h:
1255         * svg/SVGAnimatedNumberList.cpp:
1256         (WebCore::SVGAnimatedNumberListAnimator::resetAnimValToBaseVal):
1257         * svg/SVGAnimatedNumberList.h:
1258         * svg/SVGAnimatedNumberOptionalNumber.cpp:
1259         (WebCore::SVGAnimatedNumberOptionalNumberAnimator::resetAnimValToBaseVal):
1260         * svg/SVGAnimatedNumberOptionalNumber.h:
1261         * svg/SVGAnimatedPath.cpp:
1262         (WebCore::SVGAnimatedPathAnimator::resetAnimValToBaseVal):
1263         * svg/SVGAnimatedPath.h:
1264         * svg/SVGAnimatedPointList.cpp:
1265         (WebCore::SVGAnimatedPointListAnimator::resetAnimValToBaseVal):
1266         * svg/SVGAnimatedPointList.h:
1267         * svg/SVGAnimatedPreserveAspectRatio.cpp:
1268         (WebCore::SVGAnimatedPreserveAspectRatioAnimator::resetAnimValToBaseVal):
1269         * svg/SVGAnimatedPreserveAspectRatio.h:
1270         * svg/SVGAnimatedRect.cpp:
1271         (WebCore::SVGAnimatedRectAnimator::resetAnimValToBaseVal):
1272         * svg/SVGAnimatedRect.h:
1273         * svg/SVGAnimatedString.cpp:
1274         (WebCore::SVGAnimatedStringAnimator::resetAnimValToBaseVal):
1275         * svg/SVGAnimatedString.h:
1276         * svg/SVGAnimatedTransformList.cpp:
1277         (WebCore::SVGAnimatedTransformListAnimator::resetAnimValToBaseVal):
1278         * svg/SVGAnimatedTransformList.h:
1279         * svg/SVGAnimatedTypeAnimator.h:
1280         (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue):
1281         (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValues):
1282
1283 2015-12-08  Myles C. Maxfield  <mmaxfield@apple.com>
1284
1285         Remove Mavericks-specific code from FontCacheMac
1286         https://bugs.webkit.org/show_bug.cgi?id=152030
1287
1288         Reviewed by Simon Fraser.
1289
1290         Mavericks is no longer a supported platform.
1291
1292         No new tests because there is no behavior change.
1293
1294         * platform/graphics/mac/FontCacheMac.mm:
1295         (WebCore::platformLookupFallbackFont):
1296         (WebCore::platformFontWithFamilySpecialCase): Deleted.
1297
1298 2015-12-08  Brady Eidson  <beidson@apple.com>
1299
1300         Modern IDB: storage/indexeddb/objectstore-cursor.html fails.
1301         https://bugs.webkit.org/show_bug.cgi?id=152023
1302
1303         Reviewed by Alex Christensen.
1304
1305         No new tests (At least one failing test now passes).
1306
1307         * Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
1308         (WebCore::IDBServer::MemoryObjectStoreCursor::MemoryObjectStoreCursor):
1309         (WebCore::IDBServer::MemoryObjectStoreCursor::setReverseIteratorFromRemainingRange): Make sure the
1310           found iterator is actually in the target range.
1311
1312 2015-12-08  Jer Noble  <jer.noble@apple.com>
1313
1314         Changing <video> src during 'ended' event can leave screen sleep disabled
1315         https://bugs.webkit.org/show_bug.cgi?id=152018
1316
1317         Reviewed by Eric Carlson.
1318
1319         Resetting a HTMLMediaElement's src during 'ended' introduces a race condition: whether
1320         the 'mediaPlayerRateChanged()' notification will fire before createMediaPlayer() destroys
1321         the old MediaPlayer firing said notification.
1322
1323         To break the race condition, always update the sleep disabling assertion after destroying
1324         the media player (by creating a new one).
1325
1326         * html/HTMLMediaElement.cpp:
1327         (WebCore::HTMLMediaElement::createMediaPlayer):
1328
1329 2015-12-08  Brady Eidson  <beidson@apple.com>
1330
1331         Modern IDB: Fire blocked events for delete requests that are blocked.
1332         https://bugs.webkit.org/show_bug.cgi?id=152015
1333
1334         Reviewed by Alex Christensen.
1335
1336         No new tests (Previous failing tests now pass, and previously timing-out tests now complete).
1337
1338         * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
1339         (WebCore::IDBServer::UniqueIDBDatabase::maybeDeleteDatabase):
1340         (WebCore::IDBServer::UniqueIDBDatabase::handleDelete):
1341         (WebCore::IDBServer::UniqueIDBDatabase::deleteOrRunTransactionsTimerFired):
1342         * Modules/indexeddb/server/UniqueIDBDatabase.h:
1343
1344 2015-12-08  Brady Eidson  <beidson@apple.com>
1345
1346         Modern IDB: Fire blocked events for upgrade requests that are blocked.
1347         https://bugs.webkit.org/show_bug.cgi?id=152007
1348
1349         Reviewed by Alex Christensen.
1350
1351         Test: storage/indexeddb/modern/blocked-open-db-requests.html
1352               And some that used to fail now pass.
1353               And some that used to timeout now complete.
1354
1355         * Modules/indexeddb/client/IDBConnectionToServer.cpp:
1356         (WebCore::IDBClient::IDBConnectionToServer::notifyOpenDBRequestBlocked):
1357         * Modules/indexeddb/client/IDBConnectionToServer.h:
1358
1359         * Modules/indexeddb/client/IDBDatabaseImpl.cpp:
1360         (WebCore::IDBClient::IDBDatabase::IDBDatabase):
1361
1362         * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
1363         (WebCore::IDBClient::IDBOpenDBRequest::requestBlocked):
1364         * Modules/indexeddb/client/IDBOpenDBRequestImpl.h:
1365
1366         * Modules/indexeddb/client/IDBRequestImpl.cpp:
1367         (WebCore::IDBClient::IDBRequest::dispatchEvent):
1368
1369         * Modules/indexeddb/server/IDBConnectionToClient.cpp:
1370         (WebCore::IDBServer::IDBConnectionToClient::notifyOpenDBRequestBlocked):
1371         * Modules/indexeddb/server/IDBConnectionToClient.h:
1372         * Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
1373
1374         * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
1375         (WebCore::IDBServer::UniqueIDBDatabase::handleOpenDatabaseOperations): When a request that would
1376           result in a version change transaction is blocked by open connections, notify it.
1377
1378         * Modules/indexeddb/shared/InProcessIDBServer.cpp:
1379         (WebCore::InProcessIDBServer::notifyOpenDBRequestBlocked):
1380         * Modules/indexeddb/shared/InProcessIDBServer.h:
1381
1382 2015-12-08  Per Arne Vollan  <peavo@outlook.com>
1383
1384         [WinCairo] Compile error.
1385         https://bugs.webkit.org/show_bug.cgi?id=152008
1386
1387         Reviewed by Brent Fulgham.
1388
1389         GLuint is undefined.
1390
1391         * platform/graphics/GraphicsContext3D.h:
1392
1393 2015-12-08  Zalan Bujtas  <zalan@apple.com>
1394
1395         Light cleanup in TextPainter.
1396         https://bugs.webkit.org/show_bug.cgi?id=151994
1397
1398         Reviewed by Darin Adler.
1399
1400         No change in functionality.
1401
1402         * rendering/TextPainter.cpp:
1403         (WebCore::TextPainter::TextPainter):
1404         * rendering/TextPainter.h: Address post review comment.
1405         (WebCore::ShadowApplier::isLastShadowIteration):
1406         (WebCore::ShadowApplier::shadowIsCompletelyCoveredByText):
1407
1408 2015-12-08  Zalan Bujtas  <zalan@apple.com>
1409
1410         Do not insert positioned renderers to multiple gPositionedDescendantsMap.
1411         https://bugs.webkit.org/show_bug.cgi?id=151878
1412         rdar://problem/22229889
1413
1414         Reviewed by Simon Fraser.
1415
1416         We insert positioned renderers into a static map (RenderBlock::gPositionedDescendantsMap) to keep track of them.
1417         This static map is at block level. A particular absolute positioned object is added to its closest ancestor that
1418         returns true for RenderElement::canContainAbsolutelyPositionedObjects().
1419         canContainAbsolutelyPositionedObjects() returns true if the ancestor is either positioned or has transform.
1420         If this container's style changes so that it's no longer positioned and it has no transform anymore,
1421         we need to clear its static map of positioned objects (they'll get re-inserted to another ancestor at next layout).
1422
1423         This patch addresses the case when the renderer does not have transforms anymore.
1424
1425         Test: fast/block/positioning/crash-when-transform-is-removed.html
1426
1427         * rendering/RenderBlock.cpp:
1428         (WebCore::RenderBlock::styleWillChange):
1429
1430 2015-12-08  Eric Carlson  <eric.carlson@apple.com>
1431
1432         [MediaStream] Rename UserMediaClient and UserMediaController methods
1433         https://bugs.webkit.org/show_bug.cgi?id=152001
1434
1435         Reviewed by Brady Eidson.
1436
1437         No new tests, no behavior change.
1438
1439         * Modules/mediastream/UserMediaClient.h:
1440         (WebCore::UserMediaClient::~UserMediaClient):
1441         * Modules/mediastream/UserMediaController.h:
1442         (WebCore::UserMediaController::client):
1443         (WebCore::UserMediaController::from):
1444         (WebCore::UserMediaController::requestUserMediaAccess):
1445         (WebCore::UserMediaController::cancelUserMediaAccessRequest):
1446         (WebCore::UserMediaController::requestPermission): Deleted.
1447         (WebCore::UserMediaController::cancelRequest): Deleted.
1448         * Modules/mediastream/UserMediaRequest.cpp:
1449         (WebCore::UserMediaRequest::constraintsValidated):
1450         (WebCore::UserMediaRequest::contextDestroyed):
1451         * platform/mock/UserMediaClientMock.h:
1452
1453 2015-12-08  Jer Noble  <jer.noble@apple.com>
1454
1455         [iOS] Do not exit fullscreen mode during auto-PiP.
1456         https://bugs.webkit.org/show_bug.cgi?id=151889
1457
1458         Reviewed by Darin Adler.
1459
1460         When auto-PiPing, do not exit fullscreen mode, as that causes a two-step animation upon returing from auto-PiP.
1461
1462         * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
1463         (WebVideoFullscreenInterfaceAVKit::applicationDidBecomeActive): Handle the case where we open Safari after an
1464             auto-PiP by clicking on a link; if so, hide the fullscreen window.
1465         (WebVideoFullscreenInterfaceAVKit::didStartPictureInPicture): Do not exit fullscreen during auto-PiP.
1466         (WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): Ditto.
1467
1468 2015-12-08  Per Arne Vollan  <peavo@outlook.com>
1469
1470         [WinCairo] Remove unneeded function.
1471         https://bugs.webkit.org/show_bug.cgi?id=151989
1472
1473         Reviewed by Brent Fulgham.
1474
1475         * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
1476         (WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::createOptimalVideoType):
1477         (MFCreateMediaType): Deleted.
1478
1479 2015-12-08  Jer Noble  <jer.noble@apple.com>
1480
1481         [iOS] Adopt WebFullScreenVideoRootViewController.
1482         https://bugs.webkit.org/show_bug.cgi?id=151996
1483
1484         Reviewed by Dan Bernstein.
1485
1486         Adopt WebFullScreenVideoRootViewController from WebKitAdditions. If it is not available, create and use
1487         a generic UIViewController subclass.
1488
1489         * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
1490         (createFullScreenVideoRootViewControllerClass):
1491         (allocWebFullScreenVideoRootViewControllerInstance):
1492         (WebVideoFullscreenInterfaceAVKit::setupFullscreen):
1493
1494 2015-12-08  Andy Estes  <aestes@apple.com>
1495
1496         ImmutableNFANodeBuilder's move constructor moves an uninitialized member variable into itself
1497         https://bugs.webkit.org/show_bug.cgi?id=151982
1498
1499         Reviewed by Darin Adler.
1500
1501         * contentextensions/ImmutableNFANodeBuilder.h:
1502         (WebCore::ContentExtensions::ImmutableNFANodeBuilder::ImmutableNFANodeBuilder):
1503
1504 2015-12-08  Andreas Kling  <akling@apple.com>
1505
1506         [Cocoa] ResourceUsageOverlay should query kernel for VM page size.
1507         <https://webkit.org/b/151920>
1508
1509         Reviewed by Andy Estes.
1510
1511         Read the vm.pagesize sysctl to find the correct page size for memory usage calculations.
1512         This fixes broken math on systems that have different hw.pagesize and vm.pagesize.
1513
1514         * page/cocoa/ResourceUsageOverlayCocoa.mm:
1515         (WebCore::vmPageSize):
1516         (WebCore::pagesPerVMTag):
1517         (WebCore::runSamplerThread):
1518
1519 2015-12-08  Chris Dumez  <cdumez@apple.com>
1520
1521         Add diagnostic logging to measure speculative revalidation accuracy
1522         https://bugs.webkit.org/show_bug.cgi?id=151953
1523         <rdar://problem/23092196>
1524
1525         Reviewed by Darin Adler.
1526
1527         Add diagnostic logging to measure speculative revalidation accuracy.
1528
1529         * page/DiagnosticLoggingKeys.cpp:
1530         (WebCore::DiagnosticLoggingKeys::entryRightlyNotWarmedUpKey):
1531         (WebCore::DiagnosticLoggingKeys::entryWronglyNotWarmedUpKey):
1532         (WebCore::DiagnosticLoggingKeys::successfulSpeculativeWarmupWithRevalidationKey):
1533         (WebCore::DiagnosticLoggingKeys::successfulSpeculativeWarmupWithoutRevalidationKey):
1534         (WebCore::DiagnosticLoggingKeys::unknownEntryRequestKey):
1535         (WebCore::DiagnosticLoggingKeys::wastedSpeculativeWarmupWithRevalidationKey):
1536         (WebCore::DiagnosticLoggingKeys::wastedSpeculativeWarmupWithoutRevalidationKey):
1537         * page/DiagnosticLoggingKeys.h:
1538
1539 2015-12-08  Brady Eidson  <beidson@apple.com>
1540
1541         Modern IDB: storage/indexeddb/index-cursor.html fails.
1542         https://bugs.webkit.org/show_bug.cgi?id=151973
1543
1544         Reviewed by Darin Adler.
1545
1546         No new tests (At least one failing test now passes).
1547
1548         * Modules/indexeddb/server/MemoryIndexCursor.cpp:
1549         (WebCore::IDBServer::MemoryIndexCursor::MemoryIndexCursor): When the initial cursor creation
1550           generates an iterator outside of the cursor's IDBKeyRange, invalidate the iterator.
1551           
1552 2015-12-08  Joanmarie Diggs  <jdiggs@igalia.com>
1553
1554         [EFL] some ax tests have been failed since r186692
1555         https://bugs.webkit.org/show_bug.cgi?id=146887
1556
1557         Reviewed by Mario Sanchez Prada.
1558
1559         The tests were failing because there are now two WebCore accessibility
1560         roles which need to implement the AtkTable interface: TableRole and
1561         GridRole. Because the latter was not added in r186692, any tests with
1562         ARIA role grid that accessed cells via coordinates stopped working.
1563
1564         No new tests; instead unskipped all the broken table tests which now pass.
1565
1566         * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
1567         (getInterfaceMaskFromObject):
1568
1569 2015-12-08  Gwang Yoon Hwang  <yoon@igalia.com>
1570
1571         [ThreadedCompositor] Add support for Cairo GL-backed ImageBuffer.
1572         https://bugs.webkit.org/show_bug.cgi?id=151986
1573
1574         Reviewed by Žan Doberšek.
1575
1576         This patch adds a support for accelerated 2d canvas which uses cairo-gl as its
1577         backend to the threaded compositor. Basically, it applies same way to support
1578         WebGL for the threaded compositor.
1579
1580         Unfortunately, we cannot swap the buffer for the accelerated 2d canvas because
1581         it should preserve the buffer of the previous frame when drawing new contents.
1582         Because of that, the surface of the accelerated 2d canvas will be copied for
1583         each frame.
1584
1585         * platform/graphics/cairo/ImageBufferCairo.cpp:
1586         (WebCore::ImageBufferData::ImageBufferData):
1587         (WebCore::ImageBufferData::createCompositorBuffer): Prepare a texture
1588         surface to push the rendered result to the compositing thread.
1589         (WebCore::ImageBufferData::swapBuffersIfNeeded): Copies the contents
1590         of the canvas's surface to the compositing texture.
1591         (WebCore::ImageBufferData::createCairoGLSurface): Moved to the inside
1592         of ImageBufferData.
1593
1594 2015-12-08  Joanmarie Diggs  <jdiggs@igalia.com>
1595
1596         [GTK] 15 accessibility tests fail since r186692.
1597         https://bugs.webkit.org/show_bug.cgi?id=148938
1598
1599         Reviewed by Mario Sanchez Prada.
1600
1601         Failing tests rebaselined.
1602
1603         * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
1604         (atkRole): Treat GridCellRole and CellRole the same.
1605         (roleIsTextType): Treat GridCellRole and CellRole the same.
1606
1607 2015-12-08  Frederic Wang  <fred.wang@free.fr>
1608
1609         [cairo] Solid stroke of lines with thickness less than 1 pixel broken after r191658
1610         https://bugs.webkit.org/show_bug.cgi?id=151947
1611
1612         Reviewed by Martin Robinson.
1613
1614         Test: mathml/presentation/radical-bar-visibility.html
1615
1616         * platform/graphics/cairo/GraphicsContextCairo.cpp:
1617         (WebCore::GraphicsContext::drawLine): Force a minimal thickness of 1px
1618
1619 2015-12-08  Gwang Yoon Hwang  <yoon@igalia.com>
1620
1621         [ThreadedCompositor] Support WebGL for OpenGL.
1622         https://bugs.webkit.org/show_bug.cgi?id=143300
1623
1624         Reviewed by Žan Doberšek.
1625
1626         To remove pixel transfer operation, this patch adds m_compositorFBO which uses same depth and stencil
1627         buffer with m_fbo but uses m_compositorTexture as a color attachment in GraphicsContext3D.
1628         Because switching target framebuffer is cheaper than pixel transfer operation and switching color
1629         attachment of m_fbo. In Threaded Compositor, when WebGL renders a scene, prepareTexture swaps
1630         m_fbo with m_compositorFBO and send the color attachment to the compositor thread.
1631         This patch only supports WebGL for OpenGL. OpenGLES will be covered in following-up patches.
1632
1633         No new tests needed.
1634
1635         * platform/graphics/GraphicsContext3D.h:
1636         * platform/graphics/GraphicsContext3DPrivate.cpp:
1637         (WebCore::GraphicsContext3DPrivate::GraphicsContext3DPrivate):
1638         (WebCore::GraphicsContext3DPrivate::proxy):
1639         (WebCore::GraphicsContext3DPrivate::swapBuffersIfNeeded):
1640         Implement interfaces to pass a rendered texture to the compositing
1641         thread.
1642         * platform/graphics/GraphicsContext3DPrivate.h:
1643         * platform/graphics/cairo/GraphicsContext3DCairo.cpp:
1644         (WebCore::GraphicsContext3D::GraphicsContext3D):
1645         (WebCore::GraphicsContext3D::~GraphicsContext3D):
1646         Create additional compositing texture and FBO to swaping buffers for
1647         threaded compositor.
1648         * platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
1649         (WebCore::GraphicsContext3D::reshapeFBOs):
1650         (WebCore::GraphicsContext3D::attachDepthAndStencilBufferIfNeeded):
1651         Split attaching depth and stencil buffer codes from reshapeFBOs
1652         to make complete framebuffer with not only m_fbo but m_compositorFBO also.
1653         * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
1654         (WebCore::GraphicsContext3D::prepareTexture):
1655         If we are in the threaded compositor, we will swap m_fbo with
1656         m_compositorFBO instead of copying it.
1657
1658 2015-12-07  Zalan Bujtas  <zalan@apple.com>
1659
1660         Make paintTextWithShadows a member function (TextPainter).
1661         https://bugs.webkit.org/show_bug.cgi?id=151979
1662
1663         Reviewed by Simon Fraser.
1664
1665         This patch also simplifies paintTextWithShadows and
1666         rearranges some of the functions' arguments. 
1667
1668         No change in functionality.
1669
1670         * rendering/TextPainter.cpp:
1671         (WebCore::TextPainter::drawTextOrEmphasisMarks):
1672         (WebCore::TextPainter::paintTextWithShadows):
1673         (WebCore::TextPainter::paintEmphasisMarksIfNeeded):
1674         (WebCore::TextPainter::paintTextWithStyle):
1675         (WebCore::TextPainter::paintText):
1676         (WebCore::drawTextOrEmphasisMarks): Deleted.
1677         (WebCore::paintTextWithShadows): Deleted.
1678         * rendering/TextPainter.h:
1679
1680 2015-12-07  Brady Eidson  <beidson@apple.com>
1681
1682         Modern IDB: storage/indexeddb/factory-deletedatabase.html fails.
1683         https://bugs.webkit.org/show_bug.cgi?id=151966
1684
1685         Reviewed by Sam Weinig.
1686
1687         No new tests (At least one failing test now passes).
1688
1689         * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
1690         (WebCore::IDBClient::IDBOpenDBRequest::onDeleteDatabaseSuccess): The spec says that the result of
1691           deleteDatabase should be undefined. Without explicitly making it undefined, it's incorrectly null.
1692
1693 2015-12-07  Brady Eidson  <beidson@apple.com>
1694
1695         Modern IDB: storage/indexeddb/cursor-continue-validity.html fails.
1696         https://bugs.webkit.org/show_bug.cgi?id=151961
1697
1698         Reviewed by Alex Christensen.
1699
1700         No new tests (At least one failing test now passes).
1701
1702         When an index cursor's iterator was invalidated, there were some cases where it did 
1703         not correctly find the next iterator to pick up where it left off.
1704
1705         * Modules/indexeddb/client/IDBCursorImpl.cpp:
1706         (WebCore::IDBClient::IDBCursor::update):
1707         (WebCore::IDBClient::IDBCursor::deleteFunction):
1708         
1709         * Modules/indexeddb/server/IndexValueStore.cpp:
1710         (WebCore::IDBServer::IndexValueStore::find):
1711         (WebCore::IDBServer::IndexValueStore::loggingString):
1712         * Modules/indexeddb/server/IndexValueStore.h:
1713
1714 2015-12-07  Zalan Bujtas  <zalan@apple.com>
1715
1716         Refactor TextPainter::paintText() into sub methods.
1717         https://bugs.webkit.org/show_bug.cgi?id=151962
1718
1719         Reviewed by Myles C. Maxfield.
1720
1721         No change in functionality.
1722
1723         * rendering/TextPainter.cpp:
1724         (WebCore::TextPainter::paintTextWithEmphasisIfNeeded):
1725         (WebCore::TextPainter::paintTextWithStyle):
1726         (WebCore::TextPainter::paintText):
1727         * rendering/TextPainter.h:
1728
1729 2015-12-07  Gwang Yoon Hwang  <yoon@igalia.com>
1730
1731         [GTK] Clean up virtual functions in MediaPlayerPrivateGStreamerBase
1732         https://bugs.webkit.org/show_bug.cgi?id=151940
1733
1734         Reviewed by Carlos Garcia Campos.
1735
1736         - Using 'override' when appropriate
1737         - Explicitly marking methods as virtual when they are inherently virtual
1738
1739         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
1740
1741 2015-12-07  Saam barati  <sbarati@apple.com>
1742
1743         Add op_watchdog opcode that is generated when VM has a watchdog
1744         https://bugs.webkit.org/show_bug.cgi?id=151954
1745
1746         Reviewed by Mark Lam.
1747
1748         No new tests because JSC already has tests for this.
1749
1750         * bindings/js/WorkerScriptController.cpp:
1751         (WebCore::WorkerScriptController::scheduleExecutionTermination):
1752         (WebCore::WorkerScriptController::isTerminatingExecution):
1753
1754 2015-12-07  Brian Burg  <bburg@apple.com>
1755
1756         Web Inspector: Uncaught Exception page should have better styles and handle more error cases
1757         https://bugs.webkit.org/show_bug.cgi?id=151923
1758
1759         Reviewed by Timothy Hatcher.
1760
1761         Add a check for InspectorFrontendAPI before calling it. This can fail
1762         easily if an uncaught exception stalls initial loading, or whenever
1763         the Inspector frontend is reloaded.
1764
1765         * inspector/InspectorFrontendClientLocal.cpp:
1766         (WebCore::InspectorFrontendClientLocal::evaluateOnLoad):
1767
1768 2015-12-07  Beth Dakin  <bdakin@apple.com>
1769
1770         Hook up request and show for typing candidates in WK1
1771         https://bugs.webkit.org/show_bug.cgi?id=151831
1772         -and corresponding-
1773         <rdar://problem/23751214>
1774
1775         Reviewed by Enrica Casucci.
1776
1777         New SPI that is needed.
1778         * WebCore.xcodeproj/project.pbxproj:
1779         * platform/spi/mac/NSSpellCheckerSPI.h: Added.
1780
1781         Request candidates for editable content whenever selection changes.
1782         * editing/Editor.cpp:
1783         (WebCore::Editor::respondToChangedSelection):
1784
1785         Implement requestCandidatesForSelection on the EditorClient.
1786         * loader/EmptyClients.h:
1787         * page/EditorClient.h:
1788         (WebCore::EditorClient::requestCandidatesForSelection):
1789
1790 2015-12-07  Brady Eidson  <beidson@apple.com>
1791
1792         Modern IDB: Fix "old versions" when upgrading databases.
1793         https://bugs.webkit.org/show_bug.cgi?id=151948
1794
1795         Reviewed by Alex Christensen.
1796
1797         No new tests (5 failing tests now pass, and updated results for a 6th test).
1798
1799         This includes the old version on the IDBVersionChangeEvent, as well as the version the 
1800         IDBDatabase is left with if the version change transaction is aborted.
1801
1802         Primary mechanism of the fix is to include the original IDBDatabaseInfo along with 
1803         IDBTransactionInfos that represent version change transactions.
1804
1805         * Modules/indexeddb/client/IDBDatabaseImpl.cpp:
1806         (WebCore::IDBClient::IDBDatabase::willAbortTransaction):
1807         (WebCore::IDBClient::IDBDatabase::didAbortTransaction):
1808
1809         * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
1810         (WebCore::IDBClient::IDBOpenDBRequest::onUpgradeNeeded):
1811
1812         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
1813         (WebCore::IDBClient::IDBTransaction::IDBTransaction): Deleted.
1814         (WebCore::IDBClient::IDBTransaction::finishAbortOrCommit): Deleted.
1815         * Modules/indexeddb/client/IDBTransactionImpl.h:
1816         (WebCore::IDBClient::IDBTransaction::info):
1817         (WebCore::IDBClient::IDBTransaction::originalDatabaseInfo):
1818
1819         * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
1820         (WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction):
1821         (WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
1822         * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
1823         (WebCore::IDBServer::UniqueIDBDatabaseConnection::createVersionChangeTransaction):
1824
1825         * Modules/indexeddb/shared/IDBTransactionInfo.cpp:
1826         (WebCore::IDBTransactionInfo::versionChange):
1827         (WebCore::IDBTransactionInfo::IDBTransactionInfo):
1828         (WebCore::IDBTransactionInfo::isolatedCopy):
1829         * Modules/indexeddb/shared/IDBTransactionInfo.h:
1830         (WebCore::IDBTransactionInfo::originalDatabaseInfo):
1831
1832 2015-12-07  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>
1833
1834         Update Objective-C code generator to pass a reference to calling object for partial interfaces
1835         https://bugs.webkit.org/show_bug.cgi?id=151739
1836
1837         Reviewed by Darin Adler.
1838
1839         The fix updates the Objective-C code generator to pass a reference to calling object for partial interfaces.
1840         The change from pass by pointer to pass by reference was introduced in r192849.
1841
1842         * bindings/scripts/CodeGeneratorObjC.pm:
1843         (GenerateImplementation):
1844         * bindings/scripts/test/ObjC/DOMTestInterface.mm:
1845         (-[DOMTestInterface supplementalStr1]):
1846         (-[DOMTestInterface supplementalStr2]):
1847         (-[DOMTestInterface setSupplementalStr2:]):
1848         (-[DOMTestInterface supplementalStr3]):
1849         (-[DOMTestInterface setSupplementalStr3:]):
1850         (-[DOMTestInterface supplementalNode]):
1851         (-[DOMTestInterface setSupplementalNode:]):
1852         (-[DOMTestInterface builtinAttribute]):
1853         (-[DOMTestInterface setBuiltinAttribute:]):
1854         (-[DOMTestInterface supplementalMethod1]):
1855         (-[DOMTestInterface supplementalMethod2:objArg:]):
1856         (-[DOMTestInterface supplementalMethod3]):
1857         (-[DOMTestInterface supplementalMethod4]):
1858         (-[DOMTestInterface builtinFunction]):
1859
1860 2015-12-07  Chris Dumez  <cdumez@apple.com>
1861
1862         Crash in MemoryCache::pruneDeadResourcesToSize()
1863         https://bugs.webkit.org/show_bug.cgi?id=151833
1864         <rdar://problem/22392235>
1865
1866         Reviewed by David Kilzer.
1867
1868         MemoryCache::pruneDeadResourcesToSize() is iterating over m_allResources
1869         (which is a vector of LRUList). It first destroys decoded data for each
1870         resource in the LRUList. Then, if it does not suffice to reach the
1871         target size, and starts actually removing resources from the cache.
1872
1873         The issue is that this code alters m_allResources (and its LRULists) as
1874         it is iterating over it. We tried to deal with this in various ways:
1875         1. Increment the iterator before removing the resource pointed by the
1876           iterator.
1877         2. Protect the next resource in the LRUList and abort early if it is no
1878           longer in the cache.
1879
1880         This adds code complexity and apparently does not correctly handle all
1881         the edge cases as we still see crashes in this code. In particular, I
1882         suspect that 2. may not be sufficient if it is possible for the next
1883         resource to be moved to another LRUList (in which case, next->inCache()
1884         would still return true but the iterator would however become invalid).
1885
1886         To make the code simpler and more robust, this patch copies the LRUList
1887         (and refs the CachedResources) before iterating over it. This is a lot
1888         safer and should hopefully fix the crashes we see in this function.
1889
1890         No new tests, no reproduction case.
1891
1892         * loader/cache/MemoryCache.cpp:
1893         (WebCore::MemoryCache::pruneDeadResourcesToSize):
1894
1895 2015-12-07  Brady Eidson  <beidson@apple.com>
1896
1897         Modern IDB: Add some more custom exception messages, passing some more tests..
1898         https://bugs.webkit.org/show_bug.cgi?id=151912
1899
1900         Reviewed by Andy Estes.
1901
1902         No new tests (Covered by existing tests).
1903
1904         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
1905         (WebCore::IDBClient::IDBObjectStore::index):
1906         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
1907         (WebCore::IDBClient::IDBTransaction::objectStore):
1908
1909 2015-12-07  Gwang Yoon Hwang  <yoon@igalia.com>
1910
1911         [ThreadedCompositor] Add support for PlatformLayer.
1912         https://bugs.webkit.org/show_bug.cgi?id=143299
1913
1914         Reviewed by Žan Doberšek.
1915
1916         This patch implements TextureMapperPlatformLayerProxy and TextureMapperPlatformLayerBuffer to
1917         send a texture (actual texture or BitmapTexture) to the compositing thread directly.
1918         Platform layer renderers should implement TextureMapperPlatformLayerProxyProvider to establish
1919         a connection to the compositing thread. After the connection has been established, the renderer
1920         can render its contents to the TextureMapperPlatformLayerBuffer and pass it to the compositing thread
1921         via TextureMapperPlatformLayer proxy.
1922         The buffer can be an unmanaged texture (a.k.a. platform texture) or BitmapTexture.
1923         For the unmanaged texture, the renderer should manage its life cycle itself. For the BitmapTexture,
1924         it will be managed by TextureMapperPlatformLayerProxy. In that case, used (swapped) buffer will be
1925         recycled because the renderer will use same size and format until it changes its size.
1926
1927         No new tests needed.
1928
1929         * PlatformGTK.cmake:
1930         Adds TextureMapperPlatformLayerBuffer and TextureMapperPlaytformLayerProxy.
1931
1932         * platform/graphics/GraphicsContext3DPrivate.cpp:
1933         * platform/graphics/GraphicsContext3DPrivate.h:
1934         * platform/graphics/cairo/ImageBufferCairo.cpp:
1935         * platform/graphics/cairo/ImageBufferDataCairo.h:
1936         Adds mock implementation.
1937
1938         * platform/graphics/PlatformLayer.h:
1939         Adds TextureMapperPlatformLayerProxyProvider as a PlatformLayer for the Threaded Compositor
1940
1941         * platform/graphics/texmap/BitmapTextureGL.h:
1942         (WebCore::BitmapTextureGL::internalFormat): Adds a getter to check the
1943         internal format of texture to check reusability.
1944
1945         * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
1946         * platform/graphics/texmap/GraphicsLayerTextureMapper.h:
1947         * platform/graphics/texmap/TextureMapperLayer.cpp:
1948         * platform/graphics/texmap/TextureMapperLayer.h:
1949         Exclude GraphicsLayerTextureMapper from build when we are using Coordinated Graphics.
1950
1951         * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: Added.
1952         * platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: Added.
1953         * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp: Added.
1954         * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h: Added.
1955
1956         * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
1957         (WebCore::GraphicsLayer::create):
1958         Because we removed GraphicsLayerTextureMapper from build, we need to add own factory function.
1959
1960         (WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
1961         (WebCore::CoordinatedGraphicsLayer::syncPlatformLayer):
1962         (WebCore::CoordinatedGraphicsLayer::platformLayerWillBeDestroyed):
1963         (WebCore::CoordinatedGraphicsLayer::setPlatformLayerNeedsDisplay):
1964         Implements sync operations for TextureMapperPlatformLayerProxy
1965
1966 2015-12-07  Gwang Yoon Hwang  <yoon@igalia.com>
1967
1968         Fix GTK+ build with GStreamer GL
1969         https://bugs.webkit.org/show_bug.cgi?id=151939
1970
1971         Reviewed by Žan Doberšek.
1972
1973         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
1974         (WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
1975         (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
1976         (WebCore::MediaPlayerPrivateGStreamerBase::drawCallback):
1977         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
1978
1979 2015-12-06  Simon Fraser  <simon.fraser@apple.com>
1980
1981         Show more information about SVG renderers in showLayerTree() output
1982         https://bugs.webkit.org/show_bug.cgi?id=151930
1983
1984         Reviewed by Zalan Bujtas.
1985         
1986         In showLayerTree() output, for SVG renderers show:
1987         - visual and layout overflow, for boxes
1988         - frame rect, for boxes
1989         - layout state
1990         - class and id
1991
1992         * rendering/RenderLayer.cpp:
1993         (WebCore::showLayerTree):
1994         * rendering/RenderTreeAsText.cpp:
1995         (WebCore::RenderTreeAsText::writeRenderObject):
1996         (WebCore::writeDebugInfo): New function to share dumping with svg output.
1997         (WebCore::write):
1998         * rendering/RenderTreeAsText.h:
1999         * rendering/svg/SVGRenderTreeAsText.cpp:
2000         (WebCore::writePositionAndStyle): Show the frameRect for boxes (e.g. RenderSVGRoot).
2001         Much more useful that showing the clippedOverflowRect.
2002         (WebCore::writeStandardPrefix):
2003         (WebCore::writeChildren):
2004         (WebCore::writeSVGResourceContainer):
2005         (WebCore::writeSVGContainer):
2006         (WebCore::write):
2007         (WebCore::writeSVGText):
2008         (WebCore::writeSVGInlineText):
2009         (WebCore::writeSVGImage):
2010         (WebCore::writeSVGGradientStop):
2011         (WebCore::writeResources):
2012         (WebCore::operator<<): Deleted.
2013         * rendering/svg/SVGRenderTreeAsText.h:
2014
2015 2015-12-06  Simon Fraser  <simon.fraser@apple.com>
2016
2017         Clipping along compositing borders in svg-edit
2018         https://bugs.webkit.org/show_bug.cgi?id=151791
2019
2020         Reviewed by Zalan Bujtas.
2021         
2022         RenderSVGRoot::layout() failed to clear overflow before recomputing
2023         visual overflow, which could cause it to get stuck with stale overflow.
2024         This would cause underpainting if its size went from small to large.
2025
2026         Test: svg/overflow/visual-overflow-change.html
2027
2028         * rendering/svg/RenderSVGRoot.cpp:
2029         (WebCore::RenderSVGRoot::layout):
2030
2031 2015-12-06  Simon Fraser  <simon.fraser@apple.com>
2032
2033         REGRESSION (r187121): Can't get to the main content of the page at https://theintercept.com/drone-papers/
2034         https://bugs.webkit.org/show_bug.cgi?id=151849
2035         rdar://problem/23132828
2036
2037         Reviewed by Zalan Bujtas.
2038         
2039         This page uses a fill-forwards animation where the last keyframe has height: auto.
2040         After r187121, we tried to blend the height Length value from the last keyframe to the
2041         first keyframe with progress=0 (which should pick up the 'auto' from the last keyframe).
2042         
2043         However, Length::blend() just considered both 0 and 'auto' to be zero, and returned
2044         the 0 length.
2045         
2046         So fix Length::blend() to return the "from" length if progress is zero.
2047
2048         Test: animations/fill-forwards-auto-height.html
2049
2050         * page/animation/CSSPropertyAnimation.cpp:
2051         (WebCore::blendFunc): Length::blend takes a double, so don't narrow to float.
2052         * page/animation/KeyframeAnimation.cpp:
2053         (WebCore::KeyframeAnimation::fetchIntervalEndpointsForProperty): Declare two variables
2054         at first use.
2055         * platform/Length.h:
2056         (WebCore::Length::blend):
2057
2058 2015-12-06  Simon Fraser  <simon.fraser@apple.com>
2059
2060         Give SVGTransformList some inline vector capacity
2061         https://bugs.webkit.org/show_bug.cgi?id=151644
2062
2063         Reviewed by Andreas Kling.
2064
2065         Giving SVGTransformList inline capacity of one drops time under SVGTransformList::parse() by
2066         about 1% on http://animateplus.com/demos/stress-test/
2067
2068         * svg/SVGTransformList.h:
2069
2070 2015-12-06  Zalan Bujtas  <zalan@apple.com>
2071
2072         Addressing post-review comments on r193374.
2073
2074         Reviewed by Antti Koivisto.
2075
2076         * rendering/SimpleLineLayout.cpp:
2077         (WebCore::SimpleLineLayout::canUseForText):
2078         (WebCore::SimpleLineLayout::canUseForFontAndText):
2079         (WebCore::SimpleLineLayout::canUseForStyle):
2080         (WebCore::SimpleLineLayout::canUseForWithReason):
2081         (WebCore::SimpleLineLayout::canUseFor):
2082         (WebCore::SimpleLineLayout::printSimpleLineLayoutBlockList):
2083         (WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage):
2084
2085 2015-12-04  Myles C. Maxfield  <mmaxfield@apple.com>
2086
2087         Remove CORETEXT_WEB_FONTS
2088         https://bugs.webkit.org/show_bug.cgi?id=151891
2089
2090         Reviewed by Simon Fraser.
2091
2092         The only platform where this was turned off (Mavericks) is no longer supported.
2093
2094         No new tests because there is no behavior difference.
2095
2096         * platform/graphics/cocoa/FontCocoa.mm:
2097         (WebCore::Font::platformCreateScaledFont): Deleted.
2098         * platform/graphics/cocoa/FontPlatformDataCocoa.mm:
2099         (WebCore::FontPlatformData::registeredFont):
2100         (WebCore::FontPlatformData::ctFont):
2101         * platform/graphics/mac/FontCustomPlatformData.cpp:
2102         (WebCore::FontCustomPlatformData::fontPlatformData): Deleted.
2103         (WebCore::createFontCustomPlatformData): Deleted.
2104         * platform/graphics/mac/FontCustomPlatformData.h:
2105         (WebCore::FontCustomPlatformData::FontCustomPlatformData): Deleted.
2106         * platform/text/TextFlags.h:
2107
2108 2015-12-04  Zalan Bujtas  <zalan@apple.com>
2109
2110         Garbage in page tiles when document is too long.
2111         https://bugs.webkit.org/show_bug.cgi?id=151906
2112         rdar://problem/23695858
2113
2114         Reviewed by Simon Fraser.
2115
2116         This patch partially fixes the broken concept(webkit.org/b/151908) of having a nearlyMax/2 sized rectangle to define infiniteness.
2117         (see LayoutRect::infiniteRect() and ClipRect::isInfinite())
2118
2119         Covered by existing test.
2120
2121         * rendering/ClipRect.h: Branch for infinite clipping.
2122         (WebCore::ClipRect::intersect):
2123         (WebCore::ClipRect::intersects):
2124         * rendering/RenderLayer.cpp:
2125         (WebCore::RenderLayer::clipToRect): Do not clip when clipping is infinite.
2126         (WebCore::RenderLayer::restoreClip):
2127         (WebCore::RenderLayer::calculateClipRects):
2128
2129 2015-12-04  Brady Eidson  <beidson@apple.com>
2130
2131         Modern IDB: Add some more custom exception messages, passing some more tests.
2132         https://bugs.webkit.org/show_bug.cgi?id=151898
2133
2134         Reviewed by Alex Christensen.
2135
2136         No new tests (Some failing tests now pass).
2137
2138         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
2139         (WebCore::IDBClient::IDBTransaction::objectStore):
2140
2141 2015-12-04  Brent Fulgham  <bfulgham@apple.com>
2142
2143         Place an upper bound on canvas pixel count
2144         https://bugs.webkit.org/show_bug.cgi?id=151825
2145         <rdar://problem/23324916>
2146
2147         Reviewed by Simon Fraser.
2148
2149         Malformed JavaScript can attempt to create lots of canvas contexts. Limit the amount of memory
2150         we will use for this purpose to some percentage of system RAM.
2151
2152         * html/HTMLCanvasElement.cpp:
2153         (WebCore::removeFromActivePixelMemory): Added helper function
2154         (WebCore::HTMLCanvasElement::~HTMLCanvasElement): Call new 'releaseImageBufferAndContext' method
2155         to ensure ImageBuffer and graphics context state are properly cleaned up.
2156         (WebCore::maxActivePixels): Use one quarter of the system RAM, or 1 GB (whichever is more) as
2157         an upper bound on active pixel memory.
2158         (WebCore::HTMLCanvasElement::getContext): If we are attempting to create a context that will cause
2159         us to exceed the allowed active pixel count, fail.
2160         (WebCore::HTMLCanvasElement::releaseImageBufferAndContext): Added helper function
2161         (WebCore::HTMLCanvasElement::setSurfaceSize): Use the new 'releaseImageBufferAndContext' method
2162         to handle active pixel memory counts.
2163         (WebCore::HTMLCanvasElement::createImageBuffer): Refuse to create a backing buffer if it will
2164         exceed our available pixel memory.
2165
2166 2015-12-04  Brady Eidson  <beidson@apple.com>
2167
2168         Modern IDB: Add some more custom exception messages, passing some more tests.
2169         https://bugs.webkit.org/show_bug.cgi?id=151895
2170
2171         Reviewed by Alex Christensen.
2172
2173         No new tests (Some failing tests now pass).
2174
2175         * Modules/indexeddb/client/IDBDatabaseImpl.cpp:
2176         (WebCore::IDBClient::IDBDatabase::transaction):
2177
2178         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
2179         (WebCore::IDBClient::IDBObjectStore::deleteIndex):
2180
2181 2015-12-04  Jonathan Davis  <jond@apple.com>
2182
2183         Update feature status for up-to-date status information.
2184         https://bugs.webkit.org/show_bug.cgi?id=151821
2185
2186         Reviewed by Timothy Hatcher.
2187
2188         * features.json:
2189
2190 2015-12-04  Brady Eidson  <beidson@apple.com>
2191
2192         Modern IDB: Flip test expectations around so we only list failures.
2193         https://bugs.webkit.org/show_bug.cgi?id=151880
2194
2195         Reviewed by Alex Christensen.
2196
2197         No new tests (Covered by all existing tests).
2198
2199         * Modules/indexeddb/client/IDBRequestImpl.cpp:
2200         (WebCore::IDBClient::IDBRequest::stop):
2201         (WebCore::IDBClient::IDBRequest::enqueueEvent):
2202         (WebCore::IDBClient::IDBRequest::dispatchEvent):
2203         * Modules/indexeddb/client/IDBRequestImpl.h:
2204         
2205         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
2206         (WebCore::IDBClient::IDBTransaction::abortDueToFailedRequest):
2207         (WebCore::IDBClient::IDBTransaction::hasPendingActivity):
2208         (WebCore::IDBClient::IDBTransaction::stop):
2209         (WebCore::IDBClient::IDBTransaction::enqueueEvent):
2210         (WebCore::IDBClient::IDBTransaction::dispatchEvent):
2211         * Modules/indexeddb/client/IDBTransactionImpl.h:
2212         
2213         * bindings/js/IDBBindingUtilities.cpp:
2214         (WebCore::idbKeyToScriptValue): Protection against a ScriptExecutionContext that no longer has an ExecState.
2215           A full reworking on the binding utilities to prevent this through is covered by b/151890
2216
2217 2015-12-04  Myles C. Maxfield  <mmaxfield@apple.com>
2218
2219         [Cocoa] Some fonts cause CTFontCopyAvailableTables() to return nullptr
2220         https://bugs.webkit.org/show_bug.cgi?id=151884
2221         <rdar://problem/23752253>
2222
2223         Reviewed by Brian Burg.
2224
2225         No new tests.
2226
2227         * platform/graphics/opentype/OpenTypeCG.cpp:
2228         (WebCore::OpenType::fontHasMathTable):
2229
2230 2015-12-04  Jer Noble  <jer.noble@apple.com>
2231
2232         Unreviewed build-fix; Add new parameter to overloaded createSession() method in MediaPlayerPrivateAVFoundationCF.
2233
2234         * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:
2235         (WebCore::CDMSessionAVFoundationCF::CDMSessionAVFoundationCF):
2236         * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h:
2237         * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
2238         (WebCore::MediaPlayerPrivateAVFoundationCF::createSession):
2239         * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
2240
2241 2015-12-01  Jer Noble  <jer.noble@apple.com>
2242
2243         Adopt AVContentKeySession
2244         https://bugs.webkit.org/show_bug.cgi?id=151221
2245
2246         Reviewed by Eric Carlson.
2247
2248         Adopt a new API for managing key state, AVContentKeySession. Because this necessitates a change
2249         in both the initialization data returned by the needkey event, and passed into the createSession()
2250         method, bump the protocol version number (to 3), and keep supporting the old key management API
2251         for legacy content.
2252
2253         To do so, move most of the implementation of CDMPrivateMediaSourceAVFObjC into a new subclass,
2254         CDMSessionAVStreamSession, and add a new subclass, CDMSessionAVContentKeySession, to support the
2255         new API.
2256
2257         * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h:
2258         (WebCore::CDMPrivateMediaSourceAVFObjC::CDMPrivateMediaSourceAVFObjC): Moved to implementation file.
2259         * platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
2260         (WebCore::validKeySystemRE): Support "com.apple.fps.3_x".
2261         (WebCore::CDMPrivateMediaSourceAVFObjC::~CDMPrivateMediaSourceAVFObjC): Invalidate all outstanding sessions.
2262         (WebCore::CDMPrivateMediaSourceAVFObjC::supportsKeySystem): Only support "com.apple.fps.3_x" if the AVContentKeySession class is available.
2263         (WebCore::CDMPrivateMediaSourceAVFObjC::createSession): Create an instance of CDMSessionAVContentKeySession if "com.apple.fps.3_x" is specified and AVContentKeySession is available.
2264         (WebCore::CDMPrivateMediaSourceAVFObjC::invalidateSession): Remove session from the list of outstanding sessions.
2265         (WebCore::CDMPrivateMediaSourceAVFObjC::supportsMIMEType): Deleted.
2266         * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h: Copied from Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h.
2267         (WebCore::CDMSessionAVContentKeySession::hasContentKeySession): Simple accessor.
2268         (WebCore::toCDMSessionAVContentKeySession): Safe casting.
2269         * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: Added.
2270         (-[CDMSessionAVContentKeySessionDelegate initWithParent:]): Simple constructor.
2271         (-[CDMSessionAVContentKeySessionDelegate invalidate]): Remove reference to parent.
2272         (-[CDMSessionAVContentKeySessionDelegate contentKeySession:willProvideKeyRequestInitializationDataForTrackID:]): Pass to parent.
2273         (-[CDMSessionAVContentKeySessionDelegate contentKeySession:didProvideKeyRequestInitializationData:requestHandling:]): Ditto.
2274         (-[CDMSessionAVContentKeySessionDelegate contentKeySessionContentProtectionSessionIdentifierDidChange:]): Ditto.
2275         (WebCore::CDMSessionAVContentKeySession::CDMSessionAVContentKeySession): Create the delegate.
2276         (WebCore::CDMSessionAVContentKeySession::~CDMSessionAVContentKeySession): Invalidate the delegate and remove all parsers.
2277         (WebCore::CDMSessionAVContentKeySession::isAvailable): Return true if AVContentKeySession class is available.
2278         (WebCore::CDMSessionAVContentKeySession::generateKeyRequest): Support "keyrelease" message, setting of the certificate, and creating key request object. 
2279         (WebCore::CDMSessionAVContentKeySession::releaseKeys): Retrieve keys from storage location.
2280         (WebCore::isEqual): Compares a Uint8Array to a char*.
2281         (WebCore::CDMSessionAVContentKeySession::update): Support "acknowledged" message, "renew" message, and key addition.
2282         (WebCore::CDMSessionAVContentKeySession::addParser): Add the parser to the AVContentKeySession.
2283         (WebCore::CDMSessionAVContentKeySession::removeParser): Remove parser from same.
2284         (WebCore::CDMSessionAVContentKeySession::generateKeyReleaseMessage): Retrieve key release message from AVContentKeySession.
2285         (WebCore::CDMSessionAVContentKeySession::didProvideContentKeyRequest): Simple setter.
2286         (WebCore::CDMSessionAVContentKeySession::contentKeySession): Lazily create the AVContentKeySession.
2287         * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
2288         * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
2289         (WebCore::CDMSessionAVFoundationObjC::CDMSessionAVFoundationObjC):
2290         * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h: Copied from Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h.
2291         (WebCore::toCDMSessionAVStreamSession):
2292         * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm: Copied from Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm.
2293         (-[CDMSessionAVStreamSessionObserver initWithParent:]): Moved from CDMSessionMediaSourceAVFObjcObserver.
2294         (-[CDMSessionAVStreamSessionObserver contentProtectionSessionIdentifierChanged:]): Ditto.
2295         (WebCore::CDMSessionAVStreamSession::CDMSessionAVStreamSession): Ditto.
2296         (WebCore::CDMSessionAVStreamSession::~CDMSessionAVStreamSession): Ditto.
2297         (WebCore::CDMSessionAVStreamSession::generateKeyRequest): Ditto.
2298         (WebCore::CDMSessionAVStreamSession::releaseKeys): Ditto.
2299         (WebCore::isEqual): Ditto.
2300         (WebCore::CDMSessionAVStreamSession::update): Ditto.
2301         (WebCore::CDMSessionAVStreamSession::setStreamSession): Ditto.
2302         (WebCore::CDMSessionAVStreamSession::addParser): Ditto.
2303         (WebCore::CDMSessionAVStreamSession::removeParser): Ditto.
2304         (WebCore::CDMSessionAVStreamSession::generateKeyReleaseMessage): Ditto.
2305         * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
2306         (WebCore::CDMSessionMediaSourceAVFObjC::invalidateCDM): Clear the m_cdm.
2307         (WebCore::toCDMSessionMediaSourceAVFObjC):
2308         * platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:
2309         (WebCore::CDMSessionMediaSourceAVFObjC::CDMSessionMediaSourceAVFObjC):
2310         (WebCore::CDMSessionMediaSourceAVFObjC::~CDMSessionMediaSourceAVFObjC): Instruct our CDM to invalidate their references to us.
2311         (WebCore::CDMSessionMediaSourceAVFObjC::addSourceBuffer): Call addParser().
2312         (WebCore::CDMSessionMediaSourceAVFObjC::removeSourceBuffer): Call removeParser().
2313         (WebCore::CDMSessionMediaSourceAVFObjC::layerDidReceiveError): Deleted.
2314         (WebCore::CDMSessionMediaSourceAVFObjC::rendererDidReceiveError): Deleted.
2315         
2316         To give us a chance to create a CDMPrivate before we continue decoding media data, "block" further decoding
2317         on the background thread by creating a semaphore and passing it to the main thread, to be triggered when
2318         a CDM is created and attached to this source buffer.
2319
2320         * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
2321         * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
2322         (-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
2323         (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
2324         (WebCore::SourceBufferPrivateAVFObjC::willProvideContentKeyRequestInitializationDataForTrackID):
2325         (WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):
2326         (WebCore::SourceBufferPrivateAVFObjC::setCDMSession):
2327         (-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]): Deleted.
2328         * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
2329
2330         Drive-by fix: Only throw an error from keyRequestTimerFired() if the underlying call to
2331         generateKeyRequest() returned an error, rather than just failed to create a message.
2332
2333         * Modules/encryptedmedia/MediaKeySession.cpp:
2334         (WebCore::MediaKeySession::keyRequestTimerFired):
2335
2336         Drive-by fix: Pass the CDMSessionClient into CDM::createSession() so that it is immediately available
2337         in the CDMSessionPrivate constructor, rather than setting the client immediately after construction.
2338
2339         * Modules/encryptedmedia/CDM.cpp:
2340         (WebCore::CDM::createSession):
2341         * Modules/encryptedmedia/CDM.h:
2342         * Modules/encryptedmedia/CDMPrivate.h:
2343         * Modules/encryptedmedia/CDMPrivateClearKey.cpp:
2344         (WebCore::CDMPrivateClearKey::createSession):
2345         * Modules/encryptedmedia/CDMPrivateClearKey.h:
2346         * Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp:
2347         (WebCore::CDMPrivateMediaPlayer::createSession):
2348         * Modules/encryptedmedia/CDMPrivateMediaPlayer.h:
2349         * Modules/encryptedmedia/CDMSessionClearKey.cpp:
2350         (WebCore::CDMSessionClearKey::CDMSessionClearKey):
2351         * Modules/encryptedmedia/CDMSessionClearKey.h:
2352         * Modules/encryptedmedia/MediaKeySession.cpp:
2353         (WebCore::MediaKeySession::MediaKeySession):
2354         * platform/graphics/CDMSession.h:
2355         * platform/graphics/MediaPlayer.cpp:
2356         (WebCore::MediaPlayer::createSession):
2357         * platform/graphics/MediaPlayer.h:
2358         * platform/graphics/MediaPlayerPrivate.h:
2359         (WebCore::MediaPlayerPrivateInterface::createSession):
2360         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
2361         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
2362         (WebCore::MediaPlayerPrivateAVFoundationObjC::createSession):
2363         * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
2364         (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmSession):
2365         * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
2366         (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):
2367         (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::keyNeeded): Deleted.
2368         * testing/MockCDM.cpp:
2369         (WebCore::MockCDM::createSession):
2370         (WebCore::MockCDMSession::MockCDMSession):
2371         * testing/MockCDM.h:
2372
2373         Add new files to the project:
2374
2375         * WebCore.xcodeproj/project.pbxproj:
2376
2377
2378 2015-12-04  Brady Eidson  <beidson@apple.com>
2379
2380         Modern IDB: storage/indexeddb/cursor-update.html fails.
2381         https://bugs.webkit.org/show_bug.cgi?id=151879
2382
2383         Reviewed by Oliver Hunt.
2384
2385         No new tests (At least one failing test now passes).
2386
2387         * Modules/indexeddb/client/IDBRequestImpl.cpp:
2388         (WebCore::IDBClient::IDBRequest::IDBRequest):
2389
2390 2015-12-04  Brady Eidson  <beidson@apple.com>
2391
2392         Modern IDB: storage/indexeddb/version-change-exclusive.html fails
2393         https://bugs.webkit.org/show_bug.cgi?id=151870
2394
2395         Reviewed by Alex Christensen.
2396
2397         Test: storage/indexeddb/modern/double-open.html
2398               storage/indexeddb/version-change-exclusive.html
2399
2400         * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
2401         (WebCore::IDBServer::UniqueIDBDatabase::openDatabaseConnection): Delay handling open operations
2402           while the first is still in progress.
2403         (WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
2404         * Modules/indexeddb/server/UniqueIDBDatabase.h:
2405
2406 2015-12-04  Brady Eidson  <beidson@apple.com>
2407
2408         Modern IDB: storage/indexeddb/exceptions.html fails.
2409         https://bugs.webkit.org/show_bug.cgi?id=151732
2410
2411         Reviewed by Alex Christensen.
2412
2413         No new tests (At least one failing test now passes).
2414
2415         - Lots of customized exception messages for IDB code to match the text expectations.
2416         - Updates to the test expectations where we can't/won't match them exactly.
2417         - And a couple of little required behavior changes exposed by the test
2418
2419         * Modules/indexeddb/IDBCursor.h:
2420         * Modules/indexeddb/IDBCursor.idl:
2421         * Modules/indexeddb/IDBDatabase.h:
2422         * Modules/indexeddb/IDBDatabase.idl:
2423         * Modules/indexeddb/IDBDatabaseException.cpp:
2424         (WebCore::IDBDatabaseException::initializeDescription):
2425         * Modules/indexeddb/IDBFactory.h:
2426         * Modules/indexeddb/IDBFactory.idl:
2427         * Modules/indexeddb/IDBIndex.h:
2428         * Modules/indexeddb/IDBIndex.idl:
2429         * Modules/indexeddb/IDBObjectStore.h:
2430         * Modules/indexeddb/IDBObjectStore.idl:
2431         * Modules/indexeddb/IDBRequest.h:
2432         * Modules/indexeddb/IDBRequest.idl:
2433         * Modules/indexeddb/IDBTransaction.h:
2434         * Modules/indexeddb/IDBTransaction.idl:
2435         
2436         * Modules/indexeddb/client/IDBCursorImpl.cpp:
2437         (WebCore::IDBClient::IDBCursor::update):
2438         (WebCore::IDBClient::IDBCursor::advance):
2439         (WebCore::IDBClient::IDBCursor::continueFunction):
2440         (WebCore::IDBClient::IDBCursor::deleteFunction):
2441         * Modules/indexeddb/client/IDBCursorImpl.h:
2442         
2443         * Modules/indexeddb/client/IDBDatabaseImpl.cpp:
2444         (WebCore::IDBClient::IDBDatabase::createObjectStore):
2445         (WebCore::IDBClient::IDBDatabase::transaction):
2446         (WebCore::IDBClient::IDBDatabase::deleteObjectStore):
2447         * Modules/indexeddb/client/IDBDatabaseImpl.h:
2448         
2449         * Modules/indexeddb/client/IDBFactoryImpl.cpp:
2450         (WebCore::IDBClient::IDBFactory::cmp):
2451         * Modules/indexeddb/client/IDBFactoryImpl.h:
2452         
2453         * Modules/indexeddb/client/IDBIndexImpl.cpp:
2454         (WebCore::IDBClient::IDBIndex::openCursor):
2455         (WebCore::IDBClient::IDBIndex::count):
2456         (WebCore::IDBClient::IDBIndex::doCount):
2457         (WebCore::IDBClient::IDBIndex::openKeyCursor):
2458         (WebCore::IDBClient::IDBIndex::get):
2459         (WebCore::IDBClient::IDBIndex::doGet):
2460         (WebCore::IDBClient::IDBIndex::getKey):
2461         (WebCore::IDBClient::IDBIndex::doGetKey):
2462         * Modules/indexeddb/client/IDBIndexImpl.h:
2463         
2464         * Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
2465         (WebCore::IDBClient::IDBObjectStore::openCursor):
2466         (WebCore::IDBClient::IDBObjectStore::get):
2467         (WebCore::IDBClient::IDBObjectStore::add):
2468         (WebCore::IDBClient::IDBObjectStore::put):
2469         (WebCore::IDBClient::IDBObjectStore::putForCursorUpdate):
2470         (WebCore::IDBClient::IDBObjectStore::putOrAdd):
2471         (WebCore::IDBClient::IDBObjectStore::deleteFunction):
2472         (WebCore::IDBClient::IDBObjectStore::clear):
2473         (WebCore::IDBClient::IDBObjectStore::createIndex):
2474         (WebCore::IDBClient::IDBObjectStore::index):
2475         (WebCore::IDBClient::IDBObjectStore::deleteIndex):
2476         (WebCore::IDBClient::IDBObjectStore::count):
2477         (WebCore::IDBClient::IDBObjectStore::doCount):
2478         * Modules/indexeddb/client/IDBObjectStoreImpl.h:
2479
2480         * Modules/indexeddb/client/IDBRequestImpl.cpp:
2481         (WebCore::IDBClient::IDBRequest::result):
2482         (WebCore::IDBClient::IDBRequest::error):
2483         * Modules/indexeddb/client/IDBRequestImpl.h:
2484
2485         * Modules/indexeddb/client/IDBTransactionImpl.cpp:
2486         (WebCore::IDBClient::IDBTransaction::objectStore):
2487         (WebCore::IDBClient::IDBTransaction::abortDueToFailedRequest):
2488         (WebCore::IDBClient::IDBTransaction::abort):
2489         * Modules/indexeddb/client/IDBTransactionImpl.h:
2490
2491         * Modules/indexeddb/legacy/LegacyCursor.cpp:
2492         (WebCore::LegacyCursor::update):
2493         (WebCore::LegacyCursor::continueFunction):
2494         (WebCore::LegacyCursor::deleteFunction):
2495         * Modules/indexeddb/legacy/LegacyCursor.h:
2496
2497         * Modules/indexeddb/legacy/LegacyDatabase.cpp:
2498         (WebCore::LegacyDatabase::createObjectStore):
2499         (WebCore::LegacyDatabase::deleteObjectStore):
2500         (WebCore::LegacyDatabase::transaction):
2501         (WebCore::LegacyDatabase::forceClose):
2502         * Modules/indexeddb/legacy/LegacyDatabase.h:
2503
2504         * Modules/indexeddb/legacy/LegacyFactory.cpp:
2505         (WebCore::LegacyFactory::cmp):
2506         * Modules/indexeddb/legacy/LegacyFactory.h:
2507
2508         * Modules/indexeddb/legacy/LegacyIndex.cpp:
2509         (WebCore::LegacyIndex::openCursor):
2510         (WebCore::LegacyIndex::count):
2511         (WebCore::LegacyIndex::openKeyCursor):
2512         (WebCore::LegacyIndex::get):
2513         (WebCore::LegacyIndex::getKey):
2514         * Modules/indexeddb/legacy/LegacyIndex.h:
2515
2516         * Modules/indexeddb/legacy/LegacyObjectStore.cpp:
2517         (WebCore::LegacyObjectStore::get):
2518         (WebCore::LegacyObjectStore::add):
2519         (WebCore::LegacyObjectStore::put):
2520         (WebCore::LegacyObjectStore::deleteFunction):
2521         (WebCore::LegacyObjectStore::clear):
2522         (WebCore::LegacyObjectStore::createIndex):
2523         (WebCore::LegacyObjectStore::index):
2524         (WebCore::LegacyObjectStore::deleteIndex):
2525         (WebCore::LegacyObjectStore::openCursor):
2526         (WebCore::LegacyObjectStore::count):
2527         * Modules/indexeddb/legacy/LegacyObjectStore.h:
2528         (WebCore::LegacyObjectStore::createIndex):
2529         (WebCore::LegacyObjectStore::count):
2530
2531         * Modules/indexeddb/legacy/LegacyRequest.cpp:
2532         (WebCore::LegacyRequest::result):
2533         (WebCore::LegacyRequest::error):
2534         (WebCore::LegacyRequest::dispatchEvent):
2535         (WebCore::LegacyRequest::uncaughtExceptionInEventHandler):
2536         * Modules/indexeddb/legacy/LegacyRequest.h:
2537
2538         * Modules/indexeddb/legacy/LegacyTransaction.cpp:
2539         (WebCore::LegacyTransaction::objectStore):
2540         (WebCore::LegacyTransaction::abort):
2541         (WebCore::LegacyTransaction::stop):
2542         * Modules/indexeddb/legacy/LegacyTransaction.h:
2543
2544         * bindings/js/JSDOMBinding.cpp:
2545         (WebCore::createDOMException): For IDBDatabase exceptions, use createWithDescriptionAsMessage
2546
2547         * bindings/js/JSIDBDatabaseCustom.cpp:
2548         (WebCore::JSIDBDatabase::createObjectStore):
2549         (WebCore::JSIDBDatabase::transaction):
2550
2551         * bindings/js/JSIDBObjectStoreCustom.cpp:
2552         (WebCore::putOrAdd):
2553         (WebCore::JSIDBObjectStore::createIndex):
2554
2555         * dom/DOMCoreException.h:
2556         (WebCore::DOMCoreException::createWithDescriptionAsMessage): Create an exception whose message
2557           is the description.
2558         (WebCore::DOMCoreException::DOMCoreException):
2559
2560         * dom/ExceptionBase.cpp:
2561         (WebCore::ExceptionBase::ExceptionBase): Add a flag to determine where the message comes from
2562         * dom/ExceptionBase.h:
2563
2564         * dom/make_dom_exceptions.pl:
2565         (generateHeader): Add an IDBDatabaseException type
2566
2567         * inspector/InspectorIndexedDBAgent.cpp:
2568
2569 2015-12-04  Joseph Pecoraro  <pecoraro@apple.com>
2570
2571         Web Inspector: Remove untested and unused Worker inspection
2572         https://bugs.webkit.org/show_bug.cgi?id=151848
2573
2574         Reviewed by Brian Burg.
2575
2576         * CMakeLists.txt:
2577         * WebCore.vcxproj/WebCore.vcxproj:
2578         * WebCore.vcxproj/WebCore.vcxproj.filters:
2579         * WebCore.xcodeproj/project.pbxproj:
2580         * bindings/js/JSBindingsAllInOne.cpp:
2581         * bindings/js/WorkerScriptController.cpp:
2582         * bindings/js/WorkerScriptDebugServer.cpp: Removed.
2583         * bindings/js/WorkerScriptDebugServer.h: Removed.
2584         * inspector/InspectorAllInOne.cpp:
2585         * inspector/InspectorConsoleInstrumentation.h:
2586         (WebCore::InspectorInstrumentation::addMessageToConsole):
2587         * inspector/InspectorController.cpp:
2588         (WebCore::InspectorController::InspectorController): Deleted.
2589         * inspector/InspectorInstrumentation.cpp:
2590         (WebCore::InspectorInstrumentation::shouldPauseDedicatedWorkerOnStartImpl): Deleted.
2591         (WebCore::InspectorInstrumentation::didStartWorkerGlobalScopeImpl): Deleted.
2592         (WebCore::InspectorInstrumentation::willEvaluateWorkerScript): Deleted.
2593         (WebCore::InspectorInstrumentation::workerGlobalScopeTerminatedImpl): Deleted.
2594         (WebCore::InspectorInstrumentation::instrumentingAgentsForWorkerGlobalScope): Deleted.
2595         (WebCore::InspectorInstrumentation::instrumentingAgentsForNonDocumentContext): Deleted.
2596         * inspector/InspectorInstrumentation.h:
2597         (WebCore::InspectorInstrumentation::instrumentingAgentsForContext):
2598         (WebCore::InspectorInstrumentation::shouldPauseDedicatedWorkerOnStart): Deleted.
2599         (WebCore::InspectorInstrumentation::didStartWorkerGlobalScope): Deleted.
2600         (WebCore::InspectorInstrumentation::workerGlobalScopeTerminated): Deleted.
2601         * inspector/InspectorTimelineAgent.h:
2602         * inspector/InspectorWebAgentBase.h:
2603         (WebCore::WorkerAgentContext::WorkerAgentContext): Deleted.
2604         * inspector/InspectorWorkerAgent.cpp: Removed.
2605         * inspector/InspectorWorkerAgent.h: Removed.
2606         * inspector/InspectorWorkerResource.h: Removed.
2607         * inspector/InstrumentingAgents.cpp:
2608         (WebCore::InstrumentingAgents::reset): Deleted.
2609         * inspector/InstrumentingAgents.h:
2610         (WebCore::InstrumentingAgents::workerRuntimeAgent): Deleted.
2611         (WebCore::InstrumentingAgents::setWorkerRuntimeAgent): Deleted.
2612         (WebCore::InstrumentingAgents::inspectorWorkerAgent): Deleted.
2613         (WebCore::InstrumentingAgents::setInspectorWorkerAgent): Deleted.
2614         * inspector/PageConsoleAgent.h:
2615         * inspector/PageScriptDebugServer.cpp:
2616         (WebCore::PageScriptDebugServer::PageScriptDebugServer):
2617         * inspector/WorkerConsoleAgent.cpp: Removed.
2618         * inspector/WorkerConsoleAgent.h: Removed.
2619         * inspector/WorkerDebuggerAgent.cpp: Removed.
2620         * inspector/WorkerDebuggerAgent.h: Removed.
2621         * inspector/WorkerInspectorController.cpp: Removed.
2622         * inspector/WorkerInspectorController.h: Removed.
2623         * inspector/WorkerRuntimeAgent.cpp: Removed.
2624         * inspector/WorkerRuntimeAgent.h: Removed.
2625         * workers/Worker.cpp:
2626         (WebCore::Worker::notifyFinished): Deleted.
2627         * workers/WorkerGlobalScope.cpp:
2628         (WebCore::WorkerGlobalScope::WorkerGlobalScope): Deleted.
2629         (WebCore::WorkerGlobalScope::~WorkerGlobalScope): Deleted.
2630         * workers/WorkerGlobalScope.h:
2631         (WebCore::WorkerGlobalScope::workerInspectorController): Deleted.
2632         * workers/WorkerGlobalScopeProxy.h:
2633         (WebCore::WorkerGlobalScopeProxy::PageInspector::~PageInspector): Deleted.
2634         (WebCore::WorkerGlobalScopeProxy::connectToInspector): Deleted.
2635         (WebCore::WorkerGlobalScopeProxy::disconnectFromInspector): Deleted.
2636         (WebCore::WorkerGlobalScopeProxy::sendMessageToInspector): Deleted.
2637         * workers/WorkerMessagingProxy.cpp:
2638         (WebCore::WorkerMessagingProxy::WorkerMessagingProxy): Deleted.
2639         (WebCore::WorkerMessagingProxy::startWorkerGlobalScope): Deleted.
2640         (WebCore::WorkerMessagingProxy::connectToInspector): Deleted.
2641         (WebCore::WorkerMessagingProxy::disconnectFromInspector): Deleted.
2642         (WebCore::WorkerMessagingProxy::sendMessageToInspector): Deleted.
2643         (WebCore::WorkerMessagingProxy::workerGlobalScopeDestroyedInternal): Deleted.
2644         (WebCore::WorkerMessagingProxy::terminateWorkerGlobalScope): Deleted.
2645         (WebCore::WorkerMessagingProxy::postMessageToPageInspector): Deleted.
2646         * workers/WorkerMessagingProxy.h:
2647         * workers/WorkerReportingProxy.h:
2648         * workers/WorkerThread.cpp:
2649         (WebCore::WorkerThread::workerThread): Deleted.
2650
2651 2015-12-03  Sergio Villar Senin  <svillar@igalia.com>
2652
2653         [css-grid] Fix height computation of grid items with borders inside fr tracks
2654         https://bugs.webkit.org/show_bug.cgi?id=151798
2655
2656         Reviewed by Zalan Bujtas.
2657
2658         Since r192154 we run a second pass of the track sizing
2659         algorithm whenever the height of the grid is indefinite in
2660         order to properly compute row sizes. The available space
2661         passed to the track sizing algorithm must not contain neither
2662         borders nor paddings, otherwise it will think that it has more
2663         space available than the existing one. We should use the
2664         height of the content box instead.
2665
2666         Test: fast/css-grid-layout/grid-item-with-border-in-fr.html
2667
2668         * rendering/RenderGrid.cpp:
2669         (WebCore::RenderGrid::layoutBlock):
2670
2671 2015-12-03  Brady Eidson  <beidson@apple.com>
2672
2673         Modern IDB: storage/indexeddb/cursor-index-delete.html fails.
2674         https://bugs.webkit.org/show_bug.cgi?id=151847
2675
2676         Reviewed by Andy Estes.
2677
2678         No new tests (At least one failing test now passes).
2679
2680         * Modules/indexeddb/server/MemoryIndexCursor.cpp:
2681         (WebCore::IDBServer::MemoryIndexCursor::MemoryIndexCursor):
2682         (WebCore::IDBServer::MemoryIndexCursor::currentData):
2683
2684 2015-12-03  Gyuyoung Kim  <gyuyoung.kim@webkit.org>
2685
2686         Reduce uses of PassRefPtr in DOM - 1
2687         https://bugs.webkit.org/show_bug.cgi?id=149788
2688
2689         Reviewed by Darin Adler.
2690
2691         As a step to purge PassRefPtr, this patch reduces the uses in WebCore/dom.
2692
2693         * dom/ChildListMutationScope.cpp:
2694         (WebCore::ChildListMutationAccumulator::getOrCreate):
2695         * dom/ChildListMutationScope.h:
2696         * dom/ClipboardEvent.cpp:
2697         (WebCore::ClipboardEvent::ClipboardEvent):
2698         * dom/ClipboardEvent.h:
2699         * dom/CompositionEvent.cpp:
2700         (WebCore::CompositionEvent::CompositionEvent):
2701         (WebCore::CompositionEvent::initCompositionEvent):
2702         * dom/CompositionEvent.h:
2703         * dom/DOMNamedFlowCollection.cpp:
2704         (WebCore::DOMNamedFlowCollection::item):
2705         * dom/DOMNamedFlowCollection.h:
2706         * dom/DOMStringList.h:
2707         * dom/DeviceMotionController.cpp:
2708         (WebCore::DeviceMotionController::getLastEvent):
2709         * dom/DeviceMotionController.h:
2710         * dom/DeviceOrientationController.cpp:
2711         (WebCore::DeviceOrientationController::getLastEvent):
2712         * dom/DeviceOrientationController.h:
2713         * editing/Editor.cpp:
2714         (WebCore::Editor::dispatchCPPEvent):
2715         * page/DeviceController.h:
2716         (WebCore::DeviceController::getLastEvent):
2717
2718 2015-12-03  Said Abou-Hallawa  <sabouhallawa@apple.com>
2719
2720         Remove the use of GraphicsContextStateSaver from RenderLayer::paintLayerByApplyingTransform
2721         https://bugs.webkit.org/show_bug.cgi?id=151829
2722
2723         Reviewed by Simon Fraser.
2724
2725         Set the CTM of the GraphicsContext to its original value before changing
2726         it. This is a lot cheaper than using GraphicsContextStateSaver to save the
2727         whole state of the GraphicsContext and restore it back;
2728
2729         * rendering/RenderLayer.cpp:
2730         (WebCore::RenderLayer::paintLayerByApplyingTransform):
2731
2732 2015-12-03  Eric Carlson  <eric.carlson@apple.com>
2733
2734         [MediaStream] Update MediaStreamTrack.getCapabilities
2735         https://bugs.webkit.org/show_bug.cgi?id=151728
2736
2737         Reviewed by Jer Noble.
2738
2739         Test: fast/mediastream/MediaStreamTrack-getCapabilities.html
2740
2741         * CMakeLists.txt: Remove files deleted from the repository.
2742
2743         * DerivedSources.make: Ditto.
2744
2745         * Modules/mediastream/AllAudioCapabilities.h: Removed.
2746         * Modules/mediastream/AllAudioCapabilities.idl: Removed.
2747         * Modules/mediastream/AllVideoCapabilities.h: Removed.
2748         * Modules/mediastream/AllVideoCapabilities.idl: Removed.
2749         * Modules/mediastream/CapabilityRange.cpp: Removed.
2750         * Modules/mediastream/CapabilityRange.h: Removed.
2751         * Modules/mediastream/CapabilityRange.idl: Removed.
2752
2753         * Modules/mediastream/MediaSourceSettings.h:
2754         (WebCore::MediaSourceSettings::supportsVolume): Volume is a double.
2755         (WebCore::MediaSourceSettings::volume): Double.
2756
2757         * Modules/mediastream/MediaStreamCapabilities.cpp: Removed.
2758         * Modules/mediastream/MediaStreamCapabilities.h: Removed.
2759         * Modules/mediastream/MediaStreamCapabilities.idl: Removed.
2760
2761         * Modules/mediastream/MediaStreamTrack.cpp:
2762         (WebCore::MediaStreamTrack::getCapabilities): MediaStreamCapabilities is gone, return a RealtimeMediaSourceCapabilities.
2763         * Modules/mediastream/MediaStreamTrack.h:
2764         * Modules/mediastream/MediaStreamTrack.idl:
2765
2766         * WebCore.xcodeproj/project.pbxproj: Remove files deleted from the repository.
2767         * bindings/js/JSMediaStreamTrackCustom.cpp:
2768         (WebCore::capabilityValue):
2769         (WebCore::JSMediaStreamTrack::getCapabilities): Create and return a dictionary of capatilities.
2770
2771         * platform/mediastream/RealtimeMediaSourceCapabilities.h:
2772         (WebCore::CapabilityValueOrRange::type):
2773         (WebCore::CapabilityValueOrRange::CapabilityValueOrRange):
2774         (WebCore::CapabilityValueOrRange::rangeMin):
2775         (WebCore::CapabilityValueOrRange::rangeMax):
2776         (WebCore::CapabilityValueOrRange::value):
2777         (WebCore::RealtimeMediaSourceCapabilities::create):
2778         (WebCore::RealtimeMediaSourceCapabilities::~RealtimeMediaSourceCapabilities):
2779         (WebCore::RealtimeMediaSourceCapabilities::supportsWidth):
2780         (WebCore::RealtimeMediaSourceCapabilities::width):
2781         (WebCore::RealtimeMediaSourceCapabilities::setWidth):
2782         (WebCore::RealtimeMediaSourceCapabilities::supportsHeight):
2783         (WebCore::RealtimeMediaSourceCapabilities::height):
2784         (WebCore::RealtimeMediaSourceCapabilities::setHeight):
2785         (WebCore::RealtimeMediaSourceCapabilities::supportsFrameRate):
2786         (WebCore::RealtimeMediaSourceCapabilities::frameRate):
2787         (WebCore::RealtimeMediaSourceCapabilities::setFrameRate):
2788         (WebCore::RealtimeMediaSourceCapabilities::supportsFacingMode):
2789         (WebCore::RealtimeMediaSourceCapabilities::facingMode):
2790         (WebCore::RealtimeMediaSourceCapabilities::addFacingMode):
2791         (WebCore::RealtimeMediaSourceCapabilities::supportsAspectRatio):
2792         (WebCore::RealtimeMediaSourceCapabilities::aspectRatio):
2793         (WebCore::RealtimeMediaSourceCapabilities::setAspectRatio):
2794         (WebCore::RealtimeMediaSourceCapabilities::supportsVolume):
2795         (WebCore::RealtimeMediaSourceCapabilities::volume):
2796         (WebCore::RealtimeMediaSourceCapabilities::setVolume):
2797         (WebCore::RealtimeMediaSourceCapabilities::supportsSampleRate):
2798         (WebCore::RealtimeMediaSourceCapabilities::sampleRate):
2799         (WebCore::RealtimeMediaSourceCapabilities::setSampleRate):
2800         (WebCore::RealtimeMediaSourceCapabilities::supportsSampleSize):
2801         (WebCore::RealtimeMediaSourceCapabilities::sampleSize):
2802         (WebCore::RealtimeMediaSourceCapabilities::setSampleSize):
2803         (WebCore::RealtimeMediaSourceCapabilities::supportsEchoCancellation):
2804         (WebCore::RealtimeMediaSourceCapabilities::echoCancellation):
2805         (WebCore::RealtimeMediaSourceCapabilities::setEchoCancellation):
2806         (WebCore::RealtimeMediaSourceCapabilities::supportsDeviceId):
2807         (WebCore::RealtimeMediaSourceCapabilities::deviceId):
2808         (WebCore::RealtimeMediaSourceCapabilities::setDeviceId):
2809         (WebCore::RealtimeMediaSourceCapabilities::supportsGroupId):
2810         (WebCore::RealtimeMediaSourceCapabilities::groupId):
2811         (WebCore::RealtimeMediaSourceCapabilities::setGroupId):
2812         (WebCore::RealtimeMediaSourceCapabilities::RealtimeMediaSourceCapabilities):
2813         (WebCore::RealtimeMediaSourceCapabilityRange::RealtimeMediaSourceCapabilityRange): Deleted.
2814         (WebCore::RealtimeMediaSourceCapabilityRange::min): Deleted.
2815         (WebCore::RealtimeMediaSourceCapabilityRange::max): Deleted.
2816         (WebCore::RealtimeMediaSourceCapabilityRange::type): Deleted.
2817         (WebCore::RealtimeMediaSourceCapabilityRange::supported): Deleted.
2818         (WebCore::RealtimeMediaSourceCapabilities::sourceId): Deleted.
2819         (WebCore::RealtimeMediaSourceCapabilities::setSourceId): Deleted.
2820         (WebCore::RealtimeMediaSourceCapabilities::facingModes): Deleted.
2821         (WebCore::RealtimeMediaSourceCapabilities::setWidthRange): Deleted.
2822         (WebCore::RealtimeMediaSourceCapabilities::setHeightRange): Deleted.
2823         (WebCore::RealtimeMediaSourceCapabilities::setFrameRateRange): Deleted.
2824         (WebCore::RealtimeMediaSourceCapabilities::setAspectRatioRange): Deleted.
2825         (WebCore::RealtimeMediaSourceCapabilities::setVolumeRange): Deleted.
2826         (WebCore::RealtimeMediaSourceCapabilities::hasVideoSource): Deleted.
2827         (WebCore::RealtimeMediaSourceCapabilities::setHasVideoSource): Deleted.
2828
2829         * platform/mediastream/RealtimeMediaSourceSettings.h:
2830         (WebCore::RealtimeMediaSourceSettings::volume): Volume is a double.
2831         (WebCore::RealtimeMediaSourceSettings::setVolume): Ditt.
2832
2833         * platform/mediastream/mac/AVAudioCaptureSource.mm:
2834         (WebCore::AVAudioCaptureSource::initializeCapabilities): Initialize volume capability.
2835
2836         * platform/mediastream/mac/AVMediaCaptureSource.mm:
2837         (WebCore::AVMediaCaptureSource::capabilities): RealtimeMediaSourceCapabilities constructor takes
2838           supportedConstraints. sourceId -> deviceId.
2839
2840         * platform/mediastream/mac/AVVideoCaptureSource.mm:
2841         (WebCore::AVVideoCaptureSource::initializeCapabilities): DeviceId is set by the base class.
2842
2843         * platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: Drive-by cleanup, remove unused code.
2844
2845         * platform/mock/MockRealtimeAudioSource.cpp:
2846         (WebCore::MockRealtimeAudioSource::initializeCapabilities): Updated.
2847         (WebCore::MockRealtimeAudioSource::initializeSupportedConstraints): Ditto.
2848
2849         * platform/mock/MockRealtimeMediaSource.cpp:
2850         (WebCore::MockRealtimeMediaSource::capabilities): sourceId -> deviceId.
2851
2852         * platform/mock/MockRealtimeVideoSource.cpp:
2853         (WebCore::MockRealtimeVideoSource::initializeCapabilities): Updated.
2854         (WebCore::MockRealtimeVideoSource::initializeSupportedConstraints): Ditto.
2855
2856 2015-12-03  Simon Fraser  <simon.fraser@apple.com>
2857
2858         Have layer memory use consult the backing store format
2859         https://bugs.webkit.org/show_bug.cgi?id=151827
2860         rdar://problem/23746497
2861
2862         Reviewed by Dean Jackson.
2863         
2864         When computing the backing store memory size, take the pixel format into account,
2865         rather than assuming 4 bytes per pixel.
2866
2867         * platform/graphics/ca/GraphicsLayerCA.cpp:
2868         * platform/graphics/ca/PlatformCALayer.h:
2869
2870 2015-12-03  Anders Carlsson  <andersca@apple.com>
2871
2872         Remove Objective-C GC support
2873         https://bugs.webkit.org/show_bug.cgi?id=151819
2874         rdar://problem/23746991
2875
2876         Reviewed by Dan Bernstein.
2877
2878         * Configurations/Base.xcconfig:
2879         * bindings/objc/WebScriptObject.mm:
2880         (+[WebScriptObject initialize]): Deleted.
2881         (-[WebScriptObject finalize]): Deleted.
2882         * bindings/scripts/CodeGeneratorObjC.pm:
2883         (GenerateImplementation):
2884         * bindings/scripts/test/ObjC/DOMTestActiveDOMObject.mm:
2885         (-[DOMTestActiveDOMObject finalize]): Deleted.
2886         * bindings/scripts/test/ObjC/DOMTestCallback.mm:
2887         (-[DOMTestCallback finalize]): Deleted.
2888         * bindings/scripts/test/ObjC/DOMTestCallbackFunction.mm:
2889         (-[DOMTestCallbackFunction finalize]): Deleted.
2890         * bindings/scripts/test/ObjC/DOMTestCustomConstructorWithNoInterfaceObject.mm:
2891         (-[DOMTestCustomConstructorWithNoInterfaceObject finalize]): Deleted.
2892         * bindings/scripts/test/ObjC/DOMTestCustomNamedGetter.mm:
2893         (-[DOMTestCustomNamedGetter finalize]): Deleted.
2894         * bindings/scripts/test/ObjC/DOMTestEventConstructor.mm:
2895         (-[DOMTestEventConstructor finalize]): Deleted.
2896         * bindings/scripts/test/ObjC/DOMTestEventTarget.mm:
2897         (-[DOMTestEventTarget finalize]): Deleted.
2898         * bindings/scripts/test/ObjC/DOMTestException.mm:
2899         (-[DOMTestException finalize]): Deleted.
2900         * bindings/scripts/test/ObjC/DOMTestGenerateIsReachable.mm:
2901         (-[DOMTestGenerateIsReachable finalize]): Deleted.
2902         * bindings/scripts/test/ObjC/DOMTestInterface.mm:
2903         (-[DOMTestInterface finalize]): Deleted.
2904         * bindings/scripts/test/ObjC/DOMTestJSBuiltinConstructor.mm:
2905         (-[DOMTestJSBuiltinConstructor finalize]): Deleted.
2906         * bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.mm:
2907         (-[DOMTestMediaQueryListListener finalize]): Deleted.
2908         * bindings/scripts/test/ObjC/DOMTestNamedConstructor.mm:
2909         (-[DOMTestNamedConstructor finalize]): Deleted.
2910         * bindings/scripts/test/ObjC/DOMTestNondeterministic.mm:
2911         (-[DOMTestNondeterministic finalize]): Deleted.
2912         * bindings/scripts/test/ObjC/DOMTestObj.mm:
2913         (-[DOMTestObj finalize]): Deleted.
2914         * bindings/scripts/test/ObjC/DOMTestOverloadedConstructors.mm:
2915         (-[DOMTestOverloadedConstructors finalize]): Deleted.
2916         * bindings/scripts/test/ObjC/DOMTestOverrideBuiltins.mm:
2917         (-[DOMTestOverrideBuiltins finalize]): Deleted.
2918         * bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm:
2919         (-[DOMTestSerializedScriptValueInterface finalize]): Deleted.
2920         * bindings/scripts/test/ObjC/DOMTestTypedefs.mm:
2921         (-[DOMTestTypedefs finalize]): Deleted.
2922         * bindings/scripts/test/ObjC/DOMattribute.mm:
2923         (-[DOMattribute finalize]): Deleted.
2924         * bindings/scripts/test/ObjC/DOMreadonly.mm:
2925         (-[DOMreadonly finalize]): Deleted.
2926         * bridge/objc/objc_instance.mm:
2927         (ObjcInstance::virtualBegin):
2928         (allocateAutoReleasePool): Deleted.
2929         * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
2930         * platform/mac/SharedBufferMac.mm:
2931         (+[WebCoreSharedBufferData initialize]): Deleted.
2932         (-[WebCoreSharedBufferData finalize]): Deleted.
2933         * platform/mac/WebCoreObjCExtras.h:
2934         (WebCoreObjCFinalizeOnMainThread): Deleted.
2935
2936 2015-12-03  Zalan Bujtas  <zalan@apple.com>
2937
2938         Simple line layout: Print out simple line layout statistics for the current page from command line.
2939         https://bugs.webkit.org/show_bug.cgi?id=151806
2940
2941         Reviewed Simon Fraser.
2942
2943         com.apple.WebKit.showSimpleLineLayoutCoverage prints out a coverage summary of the current page,
2944         while com.apple.WebKit.showSimpleLineLayoutReasons lists the non-simple line layout blocks including the reasons why
2945         they are not covered.
2946
2947         No change in functionality.
2948
2949         * rendering/SimpleLineLayout.cpp:
2950         (WebCore::SimpleLineLayout::canUseForText):
2951         (WebCore::SimpleLineLayout::canUseForFontAndText):
2952         (WebCore::SimpleLineLayout::canUseForStyle):
2953         (WebCore::SimpleLineLayout::canUseForWithReason):
2954         (WebCore::SimpleLineLayout::canUseFor):
2955         (WebCore::SimpleLineLayout::printReason):
2956         (WebCore::SimpleLineLayout::printReasons):
2957         (WebCore::SimpleLineLayout::printTextForSubtree):
2958         (WebCore::SimpleLineLayout::textLengthForSubtree):
2959         (WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlows):
2960         (WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlowsForCurrentPage):
2961         (WebCore::SimpleLineLayout::printSimpleLineLayoutBlockList):
2962         (WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage):
2963
2964 2015-12-03  Jonathan Davis  <jond@apple.com>
2965
2966         Add WebCrypto to status page
2967         https://bugs.webkit.org/show_bug.cgi?id=151760
2968
2969         Reviewed by Timothy Hatcher.
2970
2971         * features.json:
2972
2973 2015-12-03  Keith Rollin  <krollin@apple.com>
2974
2975         [Win] fast/forms/HTMLOptionElement_label03.html failing on win7
2976         https://bugs.webkit.org/show_bug.cgi?id=150909
2977         rdar://problem/23539673
2978
2979         Reviewed by Darin Adler.
2980
2981         When returning text to be displayed, an <option> element will return
2982         the value of a label attribute if it exists, or the text content as a
2983         fallback. The failing test concerned the display of a <select>
2984         element when it contained a sole <option> element that had a label
2985         attribute set to a single space. When displayed, various
2986         platform-specific bits of code will strip off the leading and trailing
2987         whitespace. However, when WebKit would use this text to measure how
2988         wide the <select> popup menu button should be, it would not strip off
2989         spaces, leading to the calculated width being wider than necessary.
2990         The approach taken to fix this is to strip whitespace in the label
2991         attribute before it is returned from the <option> element.
2992
2993         No new tests. fast/forms/HTMLOptionElement_label03.html had been
2994         marked as being expected to fail in TestExpectations; that test now
2995         succeeds.
2996
2997         * html/HTMLOptionElement.cpp:
2998         (WebCore::HTMLOptionElement::label):
2999
3000 2015-12-03  Sam Weinig  <sam@webkit.org>
3001
3002         Try to fix the Windows build.
3003
3004         * bindings/js/JSWorkerGlobalScopeBase.cpp:
3005         (WebCore::JSWorkerGlobalScopeBase::javaScriptRuntimeFlags):
3006         (WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop):
3007
3008 2015-12-03  Brady Eidson  <beidson@apple.com>
3009
3010         Modern IDB: storage/indexeddb/cursor-advance.html fails.
3011         https://bugs.webkit.org/show_bug.cgi?id=151731
3012
3013         Reviewed by Alex Christensen.
3014
3015         No new tests (At least one failing test now passes).
3016
3017         * Modules/indexeddb/IDBCursor.h:
3018         * Modules/indexeddb/IDBCursor.idl:
3019         
3020         * Modules/indexeddb/client/IDBCursorImpl.cpp:
3021         (WebCore::IDBClient::IDBCursor::advance): Return a custom exception message for TypeError.
3022         * Modules/indexeddb/client/IDBCursorImpl.h:
3023         
3024         * Modules/indexeddb/legacy/LegacyCursor.cpp:
3025         (WebCore::LegacyCursor::advance):
3026         * Modules/indexeddb/legacy/LegacyCursor.h:
3027         
3028         * bindings/js/JSDOMBinding.cpp:
3029         (WebCore::createDOMException):
3030         (WebCore::setDOMException):
3031         * bindings/js/JSDOMBinding.h:
3032         
3033         * bindings/scripts/IDLAttributes.txt:
3034         
3035         * inspector/InspectorIndexedDBAgent.cpp:
3036
3037 2015-12-03  Brent Fulgham  <bfulgham@apple.com>
3038
3039         Allow JavaScript to iterate over plugins for local files
3040         https://bugs.webkit.org/show_bug.cgi?id=151783
3041         <rdar://problem/23692113>
3042
3043         Reviewed by Alexey Proskuryakov.
3044
3045         Test: http/tests/plugins/plugin-javascript-access.html
3046               plugins/plugin-javascript-access.html
3047
3048         * page/Page.cpp:
3049         (WebCore::Page::showAllPlugins): True if we set the debugging flag to show
3050         all plugins, or if the document's origin is from a local file.
3051         * page/Page.h:
3052
3053 2015-12-03  Jer Noble  <jer.noble@apple.com>
3054
3055         Unreviewed build-fix; missing include.
3056
3057         * html/HTMLVideoElement.cpp:
3058
3059 2015-12-03  Brady Eidson  <beidson@apple.com>
3060
3061         Modern IDB: storage/indexeddb/cursor-skip-deleted.html crashes.
3062         https://bugs.webkit.org/show_bug.cgi?id=151794
3063
3064         Reviewed by Alex Christensen.
3065
3066         STL reverse_iterators are a tricky beast.
3067         
3068         They are implemented in terms of a normal forward iterator (called the "base" iterator),
3069         and they decrement a copy of that iterator when dereferenced.
3070             
3071         So when monitoring deletes from  a std::set to check if we should invalidate our current 
3072         reverse_iterator, we were incorrectly comparing the deleted key to the value pointed by the
3073         reverse_iterator instead of its base iterator.
3074         
3075         Since the iterators in question are bidirectional, anyways, we can just use a single iterator
3076         and either increment or decrement it as needed.
3077         
3078         No new tests (At least one failing (crashing) test now passes).
3079
3080         * Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
3081         (WebCore::IDBServer::MemoryObjectStoreCursor::objectStoreCleared):
3082         (WebCore::IDBServer::MemoryObjectStoreCursor::keyDeleted):
3083         (WebCore::IDBServer::MemoryObjectStoreCursor::keyAdded):
3084         (WebCore::IDBServer::MemoryObjectStoreCursor::setFirstInRemainingRange):
3085         (WebCore::IDBServer::MemoryObjectStoreCursor::setForwardIteratorFromRemainingRange):
3086         (WebCore::IDBServer::MemoryObjectStoreCursor::setReverseIteratorFromRemainingRange):
3087         (WebCore::IDBServer::MemoryObjectStoreCursor::currentData):
3088         (WebCore::IDBServer::MemoryObjectStoreCursor::incrementForwardIterator):
3089         (WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator):
3090         (WebCore::IDBServer::MemoryObjectStoreCursor::iterate):
3091         (WebCore::IDBServer::MemoryObjectStoreCursor::firstForwardIteratorInRemainingRange): Deleted.
3092         (WebCore::IDBServer::MemoryObjectStoreCursor::firstReverseIteratorInRemainingRange): Deleted.
3093         (WebCore::IDBServer::MemoryObjectStoreCursor::hasIterators): Deleted.
3094         (WebCore::IDBServer::MemoryObjectStoreCursor::hasValidPosition): Deleted.
3095         (WebCore::IDBServer::MemoryObjectStoreCursor::clearIterators): Deleted.
3096         * Modules/indexeddb/server/MemoryObjectStoreCursor.h:
3097
3098 2015-12-03  Per Arne Vollan  <peavo@outlook.com>
3099
3100         [WinCairo][MediaFoundation] Main thread can block when session is destroyed.
3101         https://bugs.webkit.org/show_bug.cgi?id=151803
3102
3103         Reviewed by Alex Christensen.
3104
3105         Set flag to make sure that the scheduler thread stops when the session ends.
3106
3107         * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
3108         (WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::stopScheduler):
3109         (WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::processSamplesInQueue):
3110         (WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::schedulerThreadProcPrivate):
3111         * platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
3112         (WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::stopThread):
3113
3114 2015-12-03  Jer Noble  <jer.noble@apple.com>
3115
3116         [iOS] Fullscreen -> PiP should resume to Fullscreen, not inline
3117         https://bugs.webkit.org/show_bug.cgi?id=150906
3118
3119         Reviewed by Simon Fraser.
3120
3121         When restoring the user interface when exiting PiP, we should return to Fullscreen if that
3122         is where fullscreen was initiated from. Additionally, when we "auto-PiP" by backgrounding the
3123         app in Fullscreen mode, we should "auto-un-PiP" when restoring the application to foreground.
3124
3125         Rather than have a separate method to request exiting fullscreen, entering standard fullscreen,
3126         and switching to & from PiP, add a new method setFullscreenMode() which does all three.
3127
3128         * html/HTMLVideoElement.cpp:
3129         (WebCore::presentationModeToFullscreenMode):
3130         (WebCore::HTMLVideoElement::webkitSetPresentationMode):
3131         (WebCore::HTMLVideoElement::setFullscreenMode):
3132         * html/HTMLVideoElement.h:
3133
3134         Add methods to for clients to request a specific fullscreen mode, and to query whether
3135         the page is currently visible.
3136
3137         * platform/ios/WebVideoFullscreenControllerAVKit.mm:
3138         (WebVideoFullscreenControllerContext::requestFullscreenMode):
3139         (WebVideoFullscreenControllerContext::isVisible):
3140         (WebVideoFullscreenControllerContext::requestExitFullscreen): Deleted.
3141         * platform/ios/WebVideoFullscreenModel.h:
3142         * platform/ios/WebVideoFullscreenModelVideoElement.h:
3143         * platform/ios/WebVideoFullscreenModelVideoElement.mm:
3144         (WebVideoFullscreenModelVideoElement::requestFullscreenMode):
3145         (WebVideoFullscreenModelVideoElement::isVisible):
3146         (WebVideoFullscreenModelVideoElement::requestExitFullscreen): Deleted.
3147
3148         Track whether returning from PiP should enter fullscreen, or whether foregrounding the app
3149         should cause PiP to return to fullscreen.
3150
3151         * platform/ios/WebVideoFullscreenInterfaceAVKit.h:
3152         * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
3153         (-[WebAVPlayerLayer layoutSublayers]): Renamed from -setBounds:. -layoutSublayers is called
3154             more consistently than -setBounds:, including when a sublayer is added to the layer.
3155         (WebAVPlayerLayerView_stopRoutingVideoToPictureInPicturePlayerLayerView): The PiP WebAVPlayerLayer's
3156             modelVideoLayerFrame property may have been modified, so pass it back up to the fullscreen
3157             layer when exiting PiP.
3158         (WebVideoFullscreenInterfaceAVKit::applicationDidBecomeActive): Request fullscreen if we auto-PiPed.
3159         (WebVideoFullscreenInterfaceAVKit::setupFullscreen): Only recreate owned objects if they did not already exist.
3160         (WebVideoFullscreenInterfaceAVKit::enterFullscreenStandard): If we are in PiP mode, enter fullscreen by stopping PiP.
3161         (WebVideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen): requestExitFullscreen() -> requestFullscreenMode().
3162         (WebVideoFullscreenInterfaceAVKit::willStartPictureInPicture): Animate out the fullscreen window, if exiting Fullscreen -> PiP.
3163         (WebVideoFullscreenInterfaceAVKit::didStartPictureInPicture): Set m_shouldReturnToFullscreenAfterEnteringForeground if we auto-PiPed.
3164         (WebVideoFullscreenInterfaceAVKit::failedToStartPictureInPicture): requestExitFullscreen() -> requestFullscreenMode().
3165         (WebVideoFullscreenInterfaceAVKit::willStopPictureInPicture): If we are returning from PiP -> Fullscreen, do not hide the fullscreen window.
3166         (WebVideoFullscreenInterfaceAVKit::didStopPictureInPicture): If we are returning from PiP -> Fullscreen, show the controls and notify clients.
3167         (WebVideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler): Animate in the fullscreen window, if returning from PiP -> Fullscreen.
3168         (WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): Set m_shouldReturnToFullscreenWhenStoppingPiP if we are entering PiP from Fullscreen.
3169         * platform/spi/cocoa/AVKitSPI.h:
3170
3171 2015-12-02  Sam Weinig  <sam@webkit.org>
3172
3173         Promise callbacks should be called at microtask checkpoints
3174         https://bugs.webkit.org/show_bug.cgi?id=147933
3175
3176         Reviewed by Chris Dumez.
3177
3178         - Re-names MicroTaskQueue and MicroTask to MicrotaskQueue and Microtask to match the spec language.
3179         - Re-implements MicrotaskQueue and Microtask support suspended Microtasks (via the new KeepInQueue
3180           result value a Microtask can have when running) and correct behavior when Microtasks are added to
3181           the queue during a Microtask checkpoint.
3182         - MicrotaskQueue now has a mainThreadQueue() static function, replacing the old singleton() function,
3183           which can be used for the Document (non-Worker) Microtasks. For Workers, the a MicrotaskQueue 
3184           can be separately allocated for each WorkerGlobalScope (though this was not done in this change).
3185         - Adds a helper subclass of Microtask, ActiveDOMCallbackMicrotask, for Microtasks that are
3186           per-ScriptExecutationContext, and need to act as ActiveDOMCallbacks.
3187         - Re-implement Document (non-Worker) Promises on top of ActiveDOMCallbackMicrotask.
3188         - Re-implement MutationObserver delivery on top of Microtask.
3189
3190         Layout Test:
3191             fast/dom/microtask-promise-mutation-observer-order.html
3192
3193         * CMakeLists.txt:
3194         * WebCore.vcxproj/WebCore.vcxproj:
3195         * WebCore.xcodeproj/project.pbxproj:
3196         * dom/DOMAllInOne.cpp:
3197         Add new files.
3198
3199         * bindings/js/JSDOMWindowBase.cpp:
3200         (WebCore::JSDOMWindowBase::queueTaskToEventLoop):
3201         Switch to using ActiveDOMCallbackMicrotask/MicrotaskQueue rather than ScriptExecutionContext's Task mechanism
3202         for JavaScriptCore tasks.
3203
3204         * bindings/js/JSMainThreadExecState.cpp:
3205         (WebCore::JSMainThreadExecState::didLeaveScriptContext):
3206         Perform a microtask checkpoint rather than calling MutationObserver code explicitly now that mutation observers
3207         use microtasks.
3208
3209         * dom/ActiveDOMCallbackMicrotask.cpp: Added.
3210         (WebCore::ActiveDOMCallbackMicrotask::ActiveDOMCallbackMicrotask):
3211         (WebCore::ActiveDOMCallbackMicrotask::~ActiveDOMCallbackMicrotask):
3212         (WebCore::ActiveDOMCallbackMicrotask::run):
3213         (WebCore::ActiveDOMCallbackMicrotask::contextDestroyed):
3214         * dom/ActiveDOMCallbackMicrotask.h: Added.
3215         Add a helper subclass of Microtask which behaves like a ActiveDOMCallback (e.g. supports suspension
3216         and context destruction).
3217
3218         * dom/MicroTask.cpp: Renamed to Microtasks.cpp.
3219         * dom/MicroTask.h: Renamed to Microtasks.h.
3220         * dom/Microtasks.cpp: Renamed from Source/WebCore/dom/MicroTask.cpp.
3221         (WebCore::Microtask::removeSelfFromQueue):
3222         (WebCore::MicrotaskQueue::mainThreadQueue):
3223         (WebCore::MicrotaskQueue::append):
3224         (WebCore::MicrotaskQueue::remove):
3225         (WebCore::MicrotaskQueue::performMicrotaskCheckpoint):
3226         (WebCore::MicroTaskQueue::singleton): Deleted.
3227         (WebCore::MicroTaskQueue::queueMicroTask): Deleted.
3228         (WebCore::MicroTaskQueue::runMicroTasks): Deleted.
3229         * dom/Microtasks.h: Renamed from Source/WebCore/dom/MicroTask.h.
3230         (WebCore::Microtask::~Microtask):
3231         (WebCore::MicrotaskQueue::MicrotaskQueue):
3232         (WebCore::MicrotaskQueue::~MicrotaskQueue):
3233         (WebCore::MicroTask::~MicroTask): Deleted.
3234         (WebCore::MicroTaskQueue::~MicroTaskQueue): Deleted.
3235         (WebCore::MicroTaskQueue::MicroTaskQueue): Deleted.
3236         Re-implement MicrotaskQueue and Microtask to support Microtask suspension (via the KeepInQueue result
3237         value) and correct behavior when Microtasks are queued during checkpoints.
3238
3239         * dom/MutationObserver.cpp:
3240         (WebCore::suspendedMutationObservers):
3241         (WebCore::MutationObserverMicrotask::MutationObserverMicrotask):
3242         (WebCore::MutationObserverMicrotask::~MutationObserverMicrotask):
3243         (WebCore::MutationObserverMicrotask::run):
3244         (WebCore::queueMutationObserverCompoundMicrotask):
3245         (WebCore::MutationObserver::enqueueMutationRecord):
3246         (WebCore::MutationObserver::setHasTransientRegistration):
3247         * dom/MutationObserver.h:
3248         Re-implement MutationObserver delivery on top of Microtasks.
3249
3250         * dom/ScriptRunner.cpp:
3251         (WebCore::ScriptRunner::timerFired):
3252         Remove unnecessary call to runMicroTasks().
3253
3254         * html/parser/HTMLScriptRunner.cpp:
3255         (WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent):
3256         (WebCore::HTMLScriptRunner::runScript):
3257         Remove calls to MutationObserver::deliverAllMutations() now that the MicrotaskQueue will take care of it.
3258
3259         (WebCore::HTMLScriptRunner::executeScriptsWaitingForParsing):
3260         Remove unnecessary call to runMicroTasks().
3261
3262         * testing/Internals.cpp:
3263         (WebCore::Internals::queueMicroTask):
3264         Use ActiveDOMCallbackMicrotask rather than a custom test subclass.
3265
3266         * testing/MicroTaskTest.cpp: Removed.
3267         * testing/MicroTaskTest.h: Removed.
3268         Remove custom test subclass of Microtask, just use ActiveDOMCallbackMicrotask directly.
3269
3270 2015-12-03  Brady Eidson  <beidson@apple.com>
3271
3272         Add GetterRaisesExceptionWithMessage and SetterRaisesExceptionWithMessage to the code generator.
3273         https://bugs.webkit.org/show_bug.cgi?id=151807
3274
3275         Reviewed by Alex Christensen.
3276
3277         No new tests (Covered by changes to existing bindings tests).
3278
3279         While we're at it, rework the existing 'RaisesExceptionWithMessage' concept to use a struct instead of
3280         two separate variables to reduce complexity.
3281         
3282         * bindings/scripts/CodeGeneratorJS.pm:
3283         (GenerateImplementation):
3284         (GenerateImplementationFunctionCall):
3285         (GenerateConstructorDefinition):
3286         (GenerateParametersCheck): Deleted.
3287         (GenerateReturnParameters): Deleted.
3288         
3289         * bindings/scripts/IDLAttributes.txt:
3290         
3291         * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
3292         (webkit_dom_test_obj_set_property):
3293         (webkit_dom_test_obj_get_property):
3294         (webkit_dom_test_obj_class_init):
3295         (webkit_dom_test_obj_get_attr_with_getter_exception_with_message):
3296         (webkit_dom_test_obj_set_attr_with_getter_exception_with_message):
3297         (webkit_dom_test_obj_get_attr_with_setter_exception_with_message):
3298         (webkit_dom_test_obj_set_attr_with_setter_exception_with_message):
3299         * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
3300         
3301         * bindings/scripts/test/JS/JSTestObj.cpp:
3302         (WebCore::jsTestObjAttrWithGetterExceptionWithMessage):
3303         (WebCore::jsTestObjAttrWithSetterExceptionWithMessage):
3304         (WebCore::setJSTestObjAttrWithGetterExceptionWithMessage):
3305         (WebCore::setJSTestObjAttrWithSetterExceptionWithMessage):
3306         (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionWithMessage):
3307         * bindings/scripts/test/ObjC/DOMTestObj.h:
3308         
3309         * bindings/scripts/test/ObjC/DOMTestObj.mm:
3310         (-[DOMTestObj attrWithGetterExceptionWithMessage]):
3311         (-[DOMTestObj setAttrWithGetterExceptionWithMessage:]):
3312         (-[DOMTestObj attrWithSetterExceptionWithMessage]):
3313         (-[DOMTestObj setAttrWithSetterExceptionWithMessage:]):
3314         
3315         * bindings/scripts/test/TestObj.idl:
3316         
3317         * dom/ExceptionCode.h:
3318
3319 2015-12-03  Javier Fernandez  <jfernandez@igalia.com>
3320
3321         [css-grid] margin-left:auto and margin-top:auto discards the margin on opposite side
3322         https://bugs.webkit.org/show_bug.cgi?id=151802
3323
3324         Reviewed by Sergio Villar Senin.
3325
3326         When resolving auto margins so that they use the available space, in the
3327         corresponding axis, we must consider that there might be other specified
3328         margins. Such margins must account to determine the actual available space.
3329
3330         Test: fast/css-grid-layout/grid-item-auto-margins-must-respect-specified-margins.html
3331
3332         * rendering/RenderGrid.cpp:
3333         (WebCore::RenderGrid::updateAutoMarginsInRowAxisIfNeeded):
3334         (WebCore::RenderGrid::updateAutoMarginsInColumnAxisIfNeeded):
3335
3336 2015-12-02  Antti Koivisto  <antti@apple.com>
3337
3338         Move ResourceLoadScheduler to WebKit1
3339         https://bugs.webkit.org/show_bug.cgi?id=151743
3340
3341         Reviewed by Alex Christensen.
3342
3343         It is no longer used by WebKit2. Simplify the WebKit/WebCore interface.
3344
3345         * WebCore.xcodeproj/project.pbxproj:
3346         * dom/ContainerNode.cpp:
3347         * dom/Document.cpp:
3348         (WebCore::Document::styleForElementIgnoringPendingStylesheets):
3349         * dom/Document.h:
3350         * loader/DocumentLoader.h:
3351         * loader/LoaderStrategy.cpp:
3352         (WebCore::LoaderStrategy::~LoaderStrategy):
3353         (WebCore::ResourceLoadSuspender::ResourceLoadSuspender):
3354         (WebCore::ResourceLoadSuspender::~ResourceLoadSuspender):
3355         (WebCore::LoaderStrategy::resourceLoadScheduler): Deleted.
3356         (WebCore::LoaderStrategy::loadResourceSynchronously): Deleted.
3357         (WebCore::LoaderStrategy::createBlobRegistry): Deleted.
3358         (WebCore::LoaderStrategy::createPingHandle): Deleted.
3359         * loader/LoaderStrategy.h:
3360
3361             Loading functions implemented on WebKit side move to pure virtual LoaderStrategy.
3362
3363         * loader/ResourceLoadScheduler.cpp: Removed.
3364         * loader/ResourceLoadScheduler.h: Removed.
3365
3366             ResourceLoadScheduler moves to WebKit1 as WebResourceLoadScheduler.
3367
3368         * loader/ResourceLoader.cpp:
3369         (WebCore::ResourceLoader::finishNetworkLoad):
3370         (WebCore::ResourceLoader::setDefersLoading):
3371         (WebCore::ResourceLoader::frameLoader):
3372         (WebCore::ResourceLoader::willSwitchToSubstituteResource):
3373         (WebCore::ResourceLoader::willSendRequestInternal):
3374         * loader/archive/ArchiveResourceCollection.h:
3375         * loader/cache/CachedResource.cpp:
3376         (WebCore::CachedResource::load):
3377         * loader/cache/CachedResourceLoader.cpp:
3378         (WebCore::CachedResourceLoader::performPostLoadActions):
3379         (WebCore::CachedResourceLoader::incrementRequestCount):
3380         * platform/PlatformStrategies.h:
3381         (WebCore::PlatformStrategies::pluginStrategy):
3382         (WebCore::PlatformStrategies::blobRegistry):
3383
3384             Move BlobRegistry factory function here from LoaderStrategy as this allows network process to have null loaderStrategy.
3385             (it could be renamed BlobStrategy for consistency later).
3386
3387         (WebCore::PlatformStrategies::PlatformStrategies):
3388         * platform/network/BlobRegistry.cpp:
3389         (WebCore::blobRegistry):
3390         (WebCore::BlobRegistry::~BlobRegistry):
3391         * platform/network/ResourceRequestBase.h:
3392         * style/StyleResolveTree.cpp:
3393         (WebCore::Style::PostResolutionCallbackDisabler::PostResolutionCallbackDisabler):
3394         (WebCore::Style::PostResolutionCallbackDisabler::~PostResolutionCallbackDisabler):
3395
3396 2015-12-02  Myles C. Maxfield  <mmaxfield@apple.com>
3397
3398         Unify font-variant-* with font-variant shorthand
3399         https://bugs.webkit.org/show_bug.cgi?id=149773
3400
3401         Reviewed by Darin Adler.
3402
3403         This patch makes font-variant a shorthand for the following properties:
3404         font-variant-ligatures
3405         font-variant-position
3406         font-variant-caps
3407         font-variant-numeric
3408         font-variant-alternates
3409         font-variant-east-asian
3410
3411         This is consistent with the CSS Fonts Level 3 spec.
3412
3413         This patch also migrates the "font" longhand to use the font-variant-caps
3414         property.
3415
3416         Test: fast/text/font-variant-shorthand.html
3417
3418         * css/CSSComputedStyleDeclaration.cpp:
3419  &