WebKit-https.git
5 years agoDo not fire load events from frames with scripting disabled
jiewen_tan@apple.com [Fri, 11 Dec 2015 19:49:56 +0000 (19:49 +0000)]
Do not fire load events from frames with scripting disabled
https://bugs.webkit.org/show_bug.cgi?id=118042
<rdar://problem/14272857>

Reviewed by Brent Fulgham.

Since the crash is not reproducible, only test case from Blink r153029 is merged:
https://codereview.chromium.org/17682003

* fast/images/image-load-event-crash-expected.txt: Added.
* fast/images/image-load-event-crash.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193969 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/index-count.html fails.
beidson@apple.com [Fri, 11 Dec 2015 19:13:38 +0000 (19:13 +0000)]
Modern IDB: storage/indexeddb/index-count.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152175

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes).

* Modules/indexeddb/client/IDBIndexImpl.cpp:
(WebCore::IDBClient::IDBIndex::count): If the passed in IDBKeyRange* is nullptr, use IDBKeyRangeData::allKeys.
(WebCore::IDBClient::IDBIndex::doCount): Change an isNull check to a more correct !isValid() check.

LayoutTests:

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/index-count-expected.txt:
* storage/indexeddb/modern/index-get-count-failures-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193968 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[WinCairo][MediaFoundation] Setting playback rate does not work.
peavo@outlook.com [Fri, 11 Dec 2015 17:45:16 +0000 (17:45 +0000)]
[WinCairo][MediaFoundation] Setting playback rate does not work.
https://bugs.webkit.org/show_bug.cgi?id=152172

Reviewed by Brent Fulgham.

Implement method to set playback rate.

* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::seekDouble):
(WebCore::MediaPlayerPrivateMediaFoundation::setRateDouble):
(WebCore::MediaPlayerPrivateMediaFoundation::durationDouble):
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193959 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[iOS][WK2] Update expected results for tests imported/w3c/web-platform-tests
dbates@webkit.org [Fri, 11 Dec 2015 17:44:55 +0000 (17:44 +0000)]
[iOS][WK2] Update expected results for tests imported/w3c/web-platform-tests

* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valueMissing-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt: Renamed from LayoutTests/platform/ios-simulator/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193958 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoReduce the number of events that can be created by Document.createEvent
darin@apple.com [Fri, 11 Dec 2015 17:35:52 +0000 (17:35 +0000)]
Reduce the number of events that can be created by Document.createEvent
https://bugs.webkit.org/show_bug.cgi?id=151931

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/dom/events/ProgressEvent-expected.txt: Updated for progression.
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/createEvent-expected.txt:
Ditto.

Source/WebCore:

Document.createEvent is intended for use only with a certain set of legacy events.
Ideally it should only be the ones mentioned in the DOM specification.

For now, at least remove all the events that can't usefully be created and initialized
this way. Later, we should cut it down even smaller. And stop automatically generating
this, which was causing everyone who made an event IDL file to get supported here!

The modern alternative is to use event class constructors instead.

* CMakeLists.txt: Don't compile EventFactory.cpp. For now, we still generate
EventFactory.cpp but we do not use it.
* DerivedSources.make: Ditto.
* WebCore.vcxproj/WebCore.vcxproj: Ditto.
* WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
* WebCore.xcodeproj/project.pbxproj: Ditto. Also don't include EventFactory.h in the
project file.

* dom/DOMImplementation.cpp:
(WebCore::DOMImplementation::hasFeature): Added a comment about the SVGZoomEvents feature.

* dom/Document.cpp: Re-sorted includes and added the new ones needed for createEvent.
(WebCore::Document::createEvent): Moved all the logic here from EventFactory, and
took a crack at comments that explain what this should and should not be used for.

* dom/EventFactory.h: Removed.

LayoutTests:

* TestExpectations: Added expected failures for the two tests that depend
on createEvent("IDBVersionChangeEvent").

* animations/animation-events-create.html: Updated to use
"new WebKitAnimationEvent" instead of document.createEvent.

* fast/events/event-creation-expected.txt: Removed expected results for
various events that can no longer be created with createEvent.
* fast/events/event-creation.html: Removed tests for various events
that can no longer be created with createEvent.

* imported/blink/plugins/plugin-synthetic-event-crash.html: Updated to use
"new PopStateEvent" instead of document.createEvent.

* indieui/create-uirequestevent-expected.txt: Removed.
* indieui/create-uirequestevent.html: Removed.

* platform/mac-wk2/TestExpecations: Removed expectations for some deleted tests.

* platform/wk2/storage/indexeddb/removed-expected.txt: Removed, since this is
no different from the platform-independent expected result.

* transitions/transition-end-event-create.html: Updated to use
"new WebKitTransitionEvent" instead of document.createEvent.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193957 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: When logging strings, detect stack traces and show them as StackTraceView
nvasilyev@apple.com [Fri, 11 Dec 2015 17:34:32 +0000 (17:34 +0000)]
Web Inspector: When logging strings, detect stack traces and show them as StackTraceView
https://bugs.webkit.org/show_bug.cgi?id=149790

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

* UserInterface/Models/StackTrace.js:
(WebInspector.StackTrace.isLikelyStackTrace): Added.

* UserInterface/Views/ConsoleMessageView.css:
(.console-message-extra-parameter .stack-trace):
Display stack trace view on the same line as a list bullet point from
console message extra parameter.

* UserInterface/Views/ConsoleMessageView.js:
(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
Don't format with string substitutions for stack traces. E.g. there is
no need to replace %s with the next argument.

(WebInspector.ConsoleMessageView.prototype._isStackTrace): Added.
(WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
Detect stack traces and format them appropriately.

LayoutTests:

* inspector/console/js-isLikelyStackTrace.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193956 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[JSC] Little cleanup of FTLOutput type casts and conversions
benjamin@webkit.org [Fri, 11 Dec 2015 17:15:58 +0000 (17:15 +0000)]
[JSC] Little cleanup of FTLOutput type casts and conversions
https://bugs.webkit.org/show_bug.cgi?id=152166

Reviewed by Geoffrey Garen.

Clean up:
-Change fpCast() to explicit conversion doubleToFloat() and floatToDouble()
 to match B3's opcodes.
-Remove unused conversion functions.
-Use the most specific cast function when possible.
-Functions that are only used inside FTLOutput are made private.
 In FTLB3Output, those functions were removed.

* ftl/FTLB3Output.h:
(JSC::FTL::Output::doubleToFloat):
(JSC::FTL::Output::floatToDouble):
(JSC::FTL::Output::fround):
(JSC::FTL::Output::fpToInt): Deleted.
(JSC::FTL::Output::fpToUInt): Deleted.
(JSC::FTL::Output::intToFP): Deleted.
(JSC::FTL::Output::unsignedToFP): Deleted.
(JSC::FTL::Output::intCast): Deleted.
(JSC::FTL::Output::fpCast): Deleted.
(JSC::FTL::Output::intToPtr): Deleted.
(JSC::FTL::Output::ptrToInt): Deleted.
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutByVal):
* ftl/FTLOutput.h:
(JSC::FTL::Output::doubleToFloat):
(JSC::FTL::Output::floatToDouble):
(JSC::FTL::Output::intCast):
(JSC::FTL::Output::fpToInt):
(JSC::FTL::Output::fpToUInt):
(JSC::FTL::Output::fpCast):
(JSC::FTL::Output::intToFP):
(JSC::FTL::Output::unsignedToFP):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193955 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/objectstore-count.html fails.
beidson@apple.com [Fri, 11 Dec 2015 07:59:41 +0000 (07:59 +0000)]
Modern IDB: storage/indexeddb/objectstore-count.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152167

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes).

* Modules/indexeddb/IDBKeyRangeData.h:
(WebCore::IDBKeyRangeData::allKeys):

* Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
(WebCore::IDBClient::IDBObjectStore::count): If the passed in IDBKeyRange* is nullptr, use IDBKeyRangeData::allKeys.
(WebCore::IDBClient::IDBObjectStore::doCount): Change an isNull check to a more correct !isValid() check.

LayoutTests:

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/objectstore-count-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193949 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoBinding and builtin generators should lowercase RTCXX as rtcXX and not rTCXX
youenn.fablet@crf.canon.fr [Fri, 11 Dec 2015 07:45:09 +0000 (07:45 +0000)]
Binding and builtin generators should lowercase RTCXX as rtcXX and not rTCXX
https://bugs.webkit.org/show_bug.cgi?id=152121

Reviewed by Darin Adler.

Source/JavaScriptCore:

* Scripts/builtins/builtins_generator.py:
(WK_lcfirst): Added RTC special rule.

Source/WebCore:

No change in behavior.

* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::finishCreation): Using rtcXX in lieu of rTCXX.
* bindings/js/WebCoreJSBuiltinInternals.h:
(WebCore::JSBuiltinInternalFunctions::JSBuiltinInternalFunctions): Ditto.
(WebCore::JSBuiltinInternalFunctions::rtcPeerConnectionInternals): Added.
(WebCore::JSBuiltinInternalFunctions::visit): Ditto.
(WebCore::JSBuiltinInternalFunctions::init): Ditto.
(WebCore::JSBuiltinInternalFunctions::rTCPeerConnectionInternals): Deleted.
* bindings/js/WebCoreJSBuiltins.h:
(WebCore::JSBuiltinFunctions::JSBuiltinFunctions): Using rtcXX in lieu of rTCXX.
(WebCore::JSBuiltinFunctions::rtcPeerConnectionBuiltins): Added.
(WebCore::JSBuiltinFunctions::rtcPeerConnectionInternalsBuiltins): Added.
(WebCore::JSBuiltinFunctions::rTCPeerConnectionBuiltins): Deleted.
(WebCore::JSBuiltinFunctions::rTCPeerConnectionInternalsBuiltins): Deleted.
* bindings/scripts/CodeGenerator.pm:
(WK_lcfirst): Added RTC special rule.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193948 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoASSERTION FAILED: !simpleLineLayout() in WebCore::RenderText::collectSelectionRectsFo...
zalan@apple.com [Fri, 11 Dec 2015 07:31:28 +0000 (07:31 +0000)]
ASSERTION FAILED: !simpleLineLayout() in WebCore::RenderText::collectSelectionRectsForLineBoxes
https://bugs.webkit.org/show_bug.cgi?id=152115

Reviewed by Simon Fraser.

document.execCommand("indent") generates a blockquote wrapper and moves the indented content inside.
If the indented content is already inside a selection, we need to make sure that newly created flow uses
normal line layout.
This patch fixes the generic case as re-parenting an already selected renderer is not specific to document.execCommand("indent").

Source/WebCore:

Test: fast/block/selection-inside-simple-line-layout.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForWithReason):
(WebCore::SimpleLineLayout::printReason):

LayoutTests:

* fast/block/selection-inside-simple-line-layout-expected.txt: Added.
* fast/block/selection-inside-simple-line-layout.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193947 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: debugger dashboard's switching arrows are positioned too close to...
nvasilyev@apple.com [Fri, 11 Dec 2015 05:26:15 +0000 (05:26 +0000)]
Web Inspector: debugger dashboard's switching arrows are positioned too close to the dashboard border
https://bugs.webkit.org/show_bug.cgi?id=151867

Reviewed by Timothy Hatcher.

* UserInterface/Views/DashboardContainerView.css:
(.dashboard-container .advance-arrow):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193946 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUnreviewed TestExpectations gardening.
beidson@apple.com [Fri, 11 Dec 2015 04:26:03 +0000 (04:26 +0000)]
Unreviewed TestExpectations gardening.

* platform/mac-wk1/TestExpectations: Move 3 failing IDB tests to the "Skipped because of Workers" section.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193945 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[MediaStream] Expose media capture devices persistent permissions to WebCore
eric.carlson@apple.com [Fri, 11 Dec 2015 04:06:05 +0000 (04:06 +0000)]
[MediaStream] Expose media capture devices persistent permissions to WebCore
https://bugs.webkit.org/show_bug.cgi?id=152087

Source/WebCore:

Reviewed by Chris Dumez.

No new tests, an existing test was updated to test the change.

* CMakeLists.txt: Add UserMediaPermissionCheck.cpp.

* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::~MediaDevicesRequest): Clear the permission checker client.
(WebCore::MediaDevicesRequest::contextDestroyed): Ditto.
(WebCore::MediaDevicesRequest::start): Create a permission checker and start it running.
(WebCore::MediaDevicesRequest::didCompleteCheck): Start the media source checker.
(WebCore::MediaDevicesRequest::didCompleteRequest): Only include a track's label if the
  page has permission to use a capture device.
* Modules/mediastream/MediaDevicesRequest.h:

* Modules/mediastream/UserMediaClient.h: Include prototypes for permission checker.
(WebCore::UserMediaClient::~UserMediaClient):

* Modules/mediastream/MediaStreamTrackSourcesRequest.cpp: Removed, not longer used.
* Modules/mediastream/MediaStreamTrackSourcesRequest.h:

* Modules/mediastream/UserMediaController.h:
(WebCore::UserMediaController::checkUserMediaPermission): New.
(WebCore::UserMediaController::cancelUserMediaPermissionCheck): Ditto.

* Modules/mediastream/UserMediaPermissionCheck.cpp: Added.
(WebCore::UserMediaPermissionCheck::create):
(WebCore::UserMediaPermissionCheck::UserMediaPermissionCheck):
(WebCore::UserMediaPermissionCheck::~UserMediaPermissionCheck):
(WebCore::UserMediaPermissionCheck::securityOrigin):
(WebCore::UserMediaPermissionCheck::contextDestroyed):
(WebCore::UserMediaPermissionCheck::start):
(WebCore::UserMediaPermissionCheck::setDeviceAccessMode):
* Modules/mediastream/UserMediaPermissionCheck.h: Added.
(WebCore::UserMediaPermissionCheckClient::~UserMediaPermissionCheckClient):
(WebCore::UserMediaPermissionCheck::setClient):

* WebCore.xcodeproj/project.pbxproj: Add UserMediaPermissionCheck.cpp|.h

* platform/mock/UserMediaClientMock.h: Removed, it is no longer used.

* testing/Internals.cpp: Remove UserMediaClientMock.h include, it is gone.

Source/WebKit/mac:

Reviewed by Chris Dumez.

Add methods and helpers for WK1 permission checker interface.
* WebCoreSupport/WebUserMediaClient.h:
* WebCoreSupport/WebUserMediaClient.mm:
(userMediaRequestsMap):
(AddRequestToRequestMap):
(RemoveRequestFromRequestMap):
(userMediaCheckMap):
(AddPermissionCheckToMap):
(RemovePermissionCheckFromMap):
(WebUserMediaClient::WebUserMediaClient):
(WebUserMediaClient::requestUserMediaAccess):
(WebUserMediaClient::cancelUserMediaAccessRequest):
(WebUserMediaClient::checkUserMediaPermission):
(WebUserMediaClient::cancelUserMediaPermissionCheck):
(-[WebUserMediaPolicyListener allow]):
(-[WebUserMediaPolicyListener deny]):
(-[WebUserMediaPolicyCheckerListener initWithUserMediaPermissionCheck:]):
(-[WebUserMediaPolicyCheckerListener cancelUserMediaPermissionCheck]):
(-[WebUserMediaPolicyCheckerListener allow]):
(-[WebUserMediaPolicyCheckerListener deny]):
(-[WebUserMediaPolicyCheckerListener denyOnlyThisRequest]):
(-[WebUserMediaPolicyCheckerListener shouldClearCache]):
(AddRequestToMap): Deleted.
(RemoveRequestFromMap): Deleted.
* WebView/WebUIDelegatePrivate.h:

Source/WebKit2:

Reviewed by Chris Dumez.

* CMakeLists.txt: Add UserMediaPermissionCheckProxy.cpp and WKUserMediaPermissionCheck.cpp.

* Shared/API/APIObject.h: Define UserMediaPermissionCheck.

* Shared/API/c/WKBase.h: Add WKUserMediaPermissionCheckRef typedef.

* UIProcess/API/APIUIClient.h:
(API::UIClient::checkUserMediaPermissionForOrigin): New.

* UIProcess/API/C/WKAPICast.h: Add WKUserMediaPermissionCheckRef/UserMediaPermissionCheckProxy mapping.

* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient): Implement checkUserMediaPermissionForOrigin.

* UIProcess/API/C/WKPageUIClient.h: Add WKCheckUserMediaPermissionCallback typedef and add
  checkUserMediaPermissionForOrigin to WKPageUIClientV6.

* UIProcess/API/C/WKUserMediaPermissionCheck.cpp: Added.
(WKUserMediaPermissionCheckGetTypeID):
(WKUserMediaPermissionCheckSetHasPermission):

* UIProcess/API/C/WKUserMediaPermissionCheck.h: Added.

* UIProcess/UserMediaPermissionCheckProxy.cpp: Added.
(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy):
(WebKit::UserMediaPermissionCheckProxy::setHasPermission):
(WebKit::UserMediaPermissionCheckProxy::invalidate):
* UIProcess/UserMediaPermissionCheckProxy.h: Added.
(WebKit::UserMediaPermissionCheckProxy::create):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests):
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision):
(WebKit::UserMediaPermissionRequestManagerProxy::createUserMediaPermissionCheck):
(WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
(WebKit::WebPageProxy::checkUserMediaPermissionForFrame):
(WebKit::WebPageProxy::requestNotificationPermission):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:

* WebKit2.xcodeproj/project.pbxproj: Add UserMediaPermissionCheckProxy.*, and WKUserMediaPermissionCheck.*.

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::startUserMediaRequest): Renamed from startRequest.
(WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Renamed from cancelRequest.
(WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision): m_requestToIDMap ->
  m_userMediaRequestToIDMap.remove.
(WebKit::UserMediaPermissionRequestManager::startUserMediaPermissionCheck): New, start the request.
(WebKit::UserMediaPermissionRequestManager::cancelUserMediaPermissionCheck): New, cancel
  the request.
(WebKit::UserMediaPermissionRequestManager::didCompleteUserMediaPermissionCheck): New,
  all the request completion method.
(WebKit::UserMediaPermissionRequestManager::startRequest): Deleted.
(WebKit::UserMediaPermissionRequestManager::cancelRequest): Deleted.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

* WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
(WebKit::WebUserMediaClient::requestUserMediaAccess): startRequest -> startUserMediaRequest.
(WebKit::WebUserMediaClient::cancelUserMediaAccessRequest): cancelRequest -> cancelUserMediaRequest.
(WebKit::WebUserMediaClient::checkUserMediaPermission): New.
(WebKit::WebUserMediaClient::cancelUserMediaPermissionCheck): New.
* WebProcess/WebCoreSupport/WebUserMediaClient.h:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCompleteUserMediaPermissionCheck): New.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in: Add DidCompleteUserMediaPermissionCheck.

Tools:

Add support for the new user media permission checker page UI client method.

Reviewed by Chris Dumez.

* WebKitTestRunner/TestController.cpp:
(WTR::decidePolicyForUserMediaPermissionRequest):
(WTR::checkUserMediaPermissionForOrigin):
(WTR::TestController::createOtherPage): Add checkUserMediaPermissionForOrigin.
(WTR::TestController::createWebViewWithOptions): Ditto.
(WTR::TestController::resetStateToConsistentValues): Clear m_userMediaOriginPermissions.
(WTR::originUserVisibleName): New, create a string for the origin.
(WTR::TestController::handleCheckOfUserMediaPermissionForOrigin): Set the WKUserMediaPermissionCheckRef
  according to the state of the origin permission map.
(WTR::TestController::handleUserMediaPermissionRequest): Remember both the origin and the
  request so we can update the origin permission map in decidePolicyForUserMediaPermissionRequestIfPossible.
(WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible): Update the
  origin permission map.
* WebKitTestRunner/TestController.h:

LayoutTests:

Reviewed by Chris Dumez.

* fast/mediastream/MediaDevices-enumerateDevices-expected.txt:
* fast/mediastream/MediaDevices-enumerateDevices.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193944 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoFTL B3 should be able to run quicksort asm.js test
fpizlo@apple.com [Fri, 11 Dec 2015 04:03:28 +0000 (04:03 +0000)]
FTL B3 should be able to run quicksort asm.js test
https://bugs.webkit.org/show_bug.cgi?id=152105

Reviewed by Geoffrey Garen.

This covers making all of the changes needed to run quicksort.js from AsmBench.

- Reintroduced float types to FTLLower since we now have B3::Float.

- Gave FTL::Output the ability to speak of load types and store types separately from LValue
  types. This dodges the problem that B3 doesn't have types for Int8 and Int16 but supports loads
  and stores of that type.

- Implemented Mod in B3 and wrote tests.

I also fixed a pre-existing bug in a test that appeared to only manifest in release builds.

Currently, B3's performance on asm.js tests is not good. It should be easy to fix:

- B3 should strength-reduce the shifting madness that happens in asm.js memory accesses
  https://bugs.webkit.org/show_bug.cgi?id=152106

- B3 constant hoisting should have a story for the asm.js heap constant
  https://bugs.webkit.org/show_bug.cgi?id=152107

* b3/B3CCallValue.h:
* b3/B3Const32Value.cpp:
(JSC::B3::Const32Value::divConstant):
(JSC::B3::Const32Value::modConstant):
(JSC::B3::Const32Value::bitAndConstant):
* b3/B3Const32Value.h:
* b3/B3Const64Value.cpp:
(JSC::B3::Const64Value::divConstant):
(JSC::B3::Const64Value::modConstant):
(JSC::B3::Const64Value::bitAndConstant):
* b3/B3Const64Value.h:
* b3/B3ReduceStrength.cpp:
* b3/B3Validate.cpp:
* b3/B3Value.cpp:
(JSC::B3::Value::divConstant):
(JSC::B3::Value::modConstant):
(JSC::B3::Value::bitAndConstant):
* b3/B3Value.h:
* b3/testb3.cpp:
(JSC::B3::testChillDiv64):
(JSC::B3::testMod):
(JSC::B3::testSwitch):
(JSC::B3::run):
* ftl/FTLB3Output.cpp:
(JSC::FTL::Output::load16ZeroExt32):
(JSC::FTL::Output::store):
(JSC::FTL::Output::store32As8):
(JSC::FTL::Output::store32As16):
(JSC::FTL::Output::loadFloatToDouble): Deleted.
* ftl/FTLB3Output.h:
(JSC::FTL::Output::mul):
(JSC::FTL::Output::div):
(JSC::FTL::Output::chillDiv):
(JSC::FTL::Output::rem):
(JSC::FTL::Output::neg):
(JSC::FTL::Output::load32):
(JSC::FTL::Output::load64):
(JSC::FTL::Output::loadPtr):
(JSC::FTL::Output::loadFloat):
(JSC::FTL::Output::loadDouble):
(JSC::FTL::Output::store32):
(JSC::FTL::Output::store64):
(JSC::FTL::Output::storePtr):
(JSC::FTL::Output::storeFloat):
(JSC::FTL::Output::storeDouble):
(JSC::FTL::Output::addPtr):
(JSC::FTL::Output::extractValue):
(JSC::FTL::Output::call):
(JSC::FTL::Output::operation):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArrayPush):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArrayPop):
* ftl/FTLOutput.cpp:
(JSC::FTL::Output::Output):
(JSC::FTL::Output::store):
(JSC::FTL::Output::check):
(JSC::FTL::Output::load):
* ftl/FTLOutput.h:
(JSC::FTL::Output::load32):
(JSC::FTL::Output::load64):
(JSC::FTL::Output::loadPtr):
(JSC::FTL::Output::loadFloat):
(JSC::FTL::Output::loadDouble):
(JSC::FTL::Output::store32As8):
(JSC::FTL::Output::store32As16):
(JSC::FTL::Output::store32):
(JSC::FTL::Output::store64):
(JSC::FTL::Output::storePtr):
(JSC::FTL::Output::storeFloat):
(JSC::FTL::Output::storeDouble):
(JSC::FTL::Output::addPtr):
(JSC::FTL::Output::loadFloatToDouble): Deleted.
(JSC::FTL::Output::store16): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193943 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoBuild fix
mmaxfield@apple.com [Fri, 11 Dec 2015 03:51:29 +0000 (03:51 +0000)]
Build fix

Unreviewed.

* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::smallCapsTrueTypeDictionary):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193942 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoConsider still matching an address expression even if B3 has already assigned a Tmp...
fpizlo@apple.com [Fri, 11 Dec 2015 03:41:18 +0000 (03:41 +0000)]
Consider still matching an address expression even if B3 has already assigned a Tmp to it
https://bugs.webkit.org/show_bug.cgi?id=150777

Reviewed by Geoffrey Garen.

We need some heuristic for when an address should be computed as a separate instruction. It's
usually profitable to sink the address into the memory access. The previous heuristic meant that
the address would get separate instructions if it was in a separate block from the memory access.
This was messing up codegen of things like PutByVal out-of-bounds, where the address is computed
in one block and then used in another. I don't think that which block owns the address
computation should factor into any heuristic here, since it's so fragile: the compiler may lower
something by splitting blocks and we don't want this to ruin performance.

So, this replaces that heuristic with a more sensible one: the address computation gets its own
instruction if it has a lot of uses. In practice this means that we always sink the address
computation into the memory access.

* b3/B3LowerToAir.cpp:
(JSC::B3::Air::LowerToAir::effectiveAddr):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193941 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoMordernize viewport dumping
simon.fraser@apple.com [Fri, 11 Dec 2015 02:24:09 +0000 (02:24 +0000)]
Mordernize viewport dumping
https://bugs.webkit.org/show_bug.cgi?id=152159

Reviewed by Zalan Bujtas.

Use groupings to simplify the viewport configuration dumping code.

* page/ViewportConfiguration.cpp:
(WebCore::operator<<):
(WebCore::ViewportConfiguration::description):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193940 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[CSP] eval() is not blocked for stringified literals
dbates@webkit.org [Fri, 11 Dec 2015 02:08:31 +0000 (02:08 +0000)]
[CSP] eval() is not blocked for stringified literals
https://bugs.webkit.org/show_bug.cgi?id=152158
<rdar://problem/15775625>

Reviewed by Saam Barati.

Source/JavaScriptCore:

Fixes an issue where stringified literals can be eval()ed despite being disallowed by
Content Security Policy of the page.

* interpreter/Interpreter.cpp:
(JSC::eval): Throw a JavaScript EvalError exception if eval() is disallowed for the page
and return undefined.
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncEval): Ditto.

LayoutTests:

Update test LayoutTests/http/tests/security/contentSecurityPolicy/eval-blocked.html to be
more comprehensive.

Add tests to ensure that we block eval() from within an external JavaScript script when the
policy of the page disallows eval() and that we block eval() inside a subframe that disallows
eval() when the page in the main frame allows eval().

* http/tests/security/contentSecurityPolicy/eval-blocked-expected.txt:
* http/tests/security/contentSecurityPolicy/eval-blocked-in-external-script-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/eval-blocked-in-external-script.html: Added.
* http/tests/security/contentSecurityPolicy/eval-blocked-in-subframe-expected.txt: Copied from LayoutTests/http/tests/security/contentSecurityPolicy/eval-blocked-expected.txt.
* http/tests/security/contentSecurityPolicy/eval-blocked-in-subframe.html: Added.
* http/tests/security/contentSecurityPolicy/eval-blocked.html:
* http/tests/security/contentSecurityPolicy/resources/eval-blocked-in-external-script.js: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193939 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoFix jsc symlink creation on iOS
commit-queue@webkit.org [Fri, 11 Dec 2015 02:06:59 +0000 (02:06 +0000)]
Fix jsc symlink creation on iOS
https://bugs.webkit.org/show_bug.cgi?id=152155

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2015-12-10
Reviewed by Dan Bernstein.

* JavaScriptCore.xcodeproj/project.pbxproj:
Switch from INSTALL_PATH_ACTUAL to just INSTALL_PATH.
Remove now unnecessary INSTALL_PATH_PREFIX use as well.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193938 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoRemote Inspector: Verify the identity of the other side of XPC connections
joepeck@webkit.org [Fri, 11 Dec 2015 01:37:05 +0000 (01:37 +0000)]
Remote Inspector: Verify the identity of the other side of XPC connections
https://bugs.webkit.org/show_bug.cgi?id=152153

Reviewed by Brian Burg.

Source/JavaScriptCore:

* JavaScriptCore.xcodeproj/project.pbxproj:
Link with the Security framework.

* inspector/remote/RemoteInspectorXPCConnection.h:
* inspector/remote/RemoteInspectorXPCConnection.mm:
(auditTokenHasEntitlement):
(Inspector::RemoteInspectorXPCConnection::handleEvent):
(Inspector::RemoteInspectorXPCConnection::RemoteInspectorXPCConnection): Deleted.
When receiving the first message, verify the XPC connection
is connected to who we thought we were connected to and
Bail if it isn't.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:
* platform/network/mac/CertificateInfoMac.mm:
Use the new header.

Source/WebKit2:

* Shared/mac/SandboxUtilities.mm:
* UIProcess/ApplicationStateTracker.mm:
Use new header.

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/spi/cocoa/SecuritySPI.h: Renamed from Source/WebCore/platform/spi/cocoa/SecuritySPI.h.
Push this down into WTF from WebCore and add a new method.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193937 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html...
beidson@apple.com [Fri, 11 Dec 2015 01:35:17 +0000 (01:35 +0000)]
Modern IDB: storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange.html fails
https://bugs.webkit.org/show_bug.cgi?id=152144

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least two failing tests now pass, and other incorrect tests updated to be more correct).

- An IDBOpenDBRequest resulting in a versionchange transaction should not have the onsuccess event fire if
  the database connection was closed during the versionchange transaction. onerror should fire instead.
- When firing an event at an IDBRequest, it should not have the transaction as an additional target if the
  transaction has finished.
- When firing an event at an IDBRequest, it should not have the database as an additional target if the
  database is closed or is closing.

* Modules/indexeddb/client/IDBDatabaseImpl.h:
(WebCore::IDBClient::IDBDatabase::isClosingOrClosed):

* Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:
(WebCore::IDBClient::IDBOpenDBRequest::fireErrorAfterVersionChangeCompletion):
(WebCore::IDBClient::IDBOpenDBRequest::fireErrorAfterVersionChangeAbort): Deleted.
* Modules/indexeddb/client/IDBOpenDBRequestImpl.h:

* Modules/indexeddb/client/IDBRequestImpl.cpp:
(WebCore::IDBClient::IDBRequest::dispatchEvent): Don't add finished transactions or closed databases as event targets.

* Modules/indexeddb/client/IDBTransactionImpl.cpp:
(WebCore::IDBClient::IDBTransaction::notifyDidAbort):
(WebCore::IDBClient::IDBTransaction::dispatchEvent): If this was a versionchange transaction completing, possibly fire
  the error event on the OpenDBRequest instead of the success event.
* Modules/indexeddb/client/IDBTransactionImpl.h:
(WebCore::IDBClient::IDBTransaction::isFinished):

LayoutTests:

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/modern/abort-requests-cancelled-expected.txt:
* storage/indexeddb/modern/aborted-put-expected.txt:
* storage/indexeddb/modern/createobjectstore-basic-expected.txt:
* storage/indexeddb/modern/deletedatabase-2-expected.txt:
* storage/indexeddb/modern/deletedatabase-2.html:
* storage/indexeddb/modern/deleteindex-2-expected.txt:
* storage/indexeddb/modern/deleteobjectstore-1-expected.txt:
* storage/indexeddb/modern/opendatabase-versions-expected.txt:
* storage/indexeddb/modern/opendatabase-versions.html:
* storage/indexeddb/modern/versionchange-abort-then-reopen-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193936 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[Win] Support building under Cygwin or native Perl
bfulgham@apple.com [Fri, 11 Dec 2015 01:21:29 +0000 (01:21 +0000)]
[Win] Support building under Cygwin or native Perl
https://bugs.webkit.org/show_bug.cgi?id=152145
<rdar://problem/23839868>

Reviewed by David Kilzer.

* Source/cmake/tools/scripts/auto-version.pl: Correct handling of mixed DOS filenames when used in a
Cygwin context.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193935 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoSimple line layout: Use TextPainter to draw simple line text.
zalan@apple.com [Fri, 11 Dec 2015 01:19:03 +0000 (01:19 +0000)]
Simple line layout: Use TextPainter to draw simple line text.
https://bugs.webkit.org/show_bug.cgi?id=152150

Reviewed by Simon Fraser.

No change in functionality.

* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::paintFlow):
* rendering/TextPainter.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193934 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[JSC] Add a Modulo operator to B3, and a chill variant
commit-queue@webkit.org [Fri, 11 Dec 2015 00:31:51 +0000 (00:31 +0000)]
[JSC] Add a Modulo operator to B3, and a chill variant
https://bugs.webkit.org/show_bug.cgi?id=152110

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-12-10
Reviewed by Geoffrey Garen.

It is basically refactoring the Div and ChillDiv
code to be used by both opcodes.

* b3/B3Common.h:
(JSC::B3::chillDiv):
(JSC::B3::chillMod):
* b3/B3Const32Value.cpp:
(JSC::B3::Const32Value::modConstant):
* b3/B3Const32Value.h:
* b3/B3Const64Value.cpp:
(JSC::B3::Const64Value::modConstant):
* b3/B3Const64Value.h:
* b3/B3ConstDoubleValue.cpp:
(JSC::B3::ConstDoubleValue::modConstant):
* b3/B3ConstDoubleValue.h:
* b3/B3LowerMacros.cpp:
* b3/B3LowerToAir.cpp:
(JSC::B3::Air::LowerToAir::lower):
(JSC::B3::Air::LowerToAir::lowerX86Div):
* b3/B3Opcode.cpp:
(WTF::printInternal):
* b3/B3Opcode.h:
* b3/B3ReduceStrength.cpp:
* b3/B3Validate.cpp:
* b3/B3Value.cpp:
(JSC::B3::Value::modConstant):
(JSC::B3::Value::effects):
(JSC::B3::Value::key):
(JSC::B3::Value::typeFor):
* b3/B3Value.h:
* b3/testb3.cpp:
(JSC::B3::testModArgDouble):
(JSC::B3::testModArgsDouble):
(JSC::B3::testModArgImmDouble):
(JSC::B3::testModImmArgDouble):
(JSC::B3::testModImmsDouble):
(JSC::B3::testModArgFloat):
(JSC::B3::testModArgsFloat):
(JSC::B3::testModArgImmFloat):
(JSC::B3::testModImmArgFloat):
(JSC::B3::testModImmsFloat):
(JSC::B3::testModArg):
(JSC::B3::testModArgs):
(JSC::B3::testModImms):
(JSC::B3::testModArg32):
(JSC::B3::testModArgs32):
(JSC::B3::testModImms32):
(JSC::B3::testChillModArg):
(JSC::B3::testChillModArgs):
(JSC::B3::testChillModImms):
(JSC::B3::testChillModArg32):
(JSC::B3::testChillModArgs32):
(JSC::B3::testChillModImms32):
(JSC::B3::run):
* ftl/FTLB3Output.h:
(JSC::FTL::Output::mod):
(JSC::FTL::Output::chillMod):
(JSC::FTL::Output::doubleMod):
(JSC::FTL::Output::rem): Deleted.
(JSC::FTL::Output::doubleRem): Deleted.
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithMod):
* ftl/FTLOutput.cpp:
(JSC::FTL::Output::chillMod):
* ftl/FTLOutput.h:
(JSC::FTL::Output::mod):
(JSC::FTL::Output::doubleMod):
(JSC::FTL::Output::rem): Deleted.
(JSC::FTL::Output::doubleRem): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193933 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[Font Features] r193894 introduces leaks
mmaxfield@apple.com [Fri, 11 Dec 2015 00:05:00 +0000 (00:05 +0000)]
[Font Features] r193894 introduces leaks
https://bugs.webkit.org/show_bug.cgi?id=152154

Reviewed by Joe Pecoraro.

* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::smallCapsTrueTypeDictionary):
(WebCore::createCTFontWithoutSynthesizableFeatures):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193932 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoRebaselining fast/text/emoji.html for Yosemite.
ryanhaddad@apple.com [Fri, 11 Dec 2015 00:00:01 +0000 (00:00 +0000)]
Rebaselining fast/text/emoji.html for Yosemite.
https://bugs.webkit.org/show_bug.cgi?id=152147

Unreviewed test gardening.

* platform/mac-yosemite/fast/text/emoji-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193931 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoBuild fix
mmaxfield@apple.com [Thu, 10 Dec 2015 23:39:52 +0000 (23:39 +0000)]
Build fix

Unreviewed.

Source/WebCore:

* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::Font::variantCapsSupportsCharacterForSynthesis):

LayoutTests:

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193930 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoTextPainter: Add support for painting multiple text runs.
zalan@apple.com [Thu, 10 Dec 2015 23:30:41 +0000 (23:30 +0000)]
TextPainter: Add support for painting multiple text runs.
https://bugs.webkit.org/show_bug.cgi?id=152148

Reviewed by Simon Fraser.

This is in preparation for adding simple line layout as a client.

No change in functionality.

* rendering/InlineTextBox.cpp:
(WebCore::drawSkipInkUnderline): Decouple underline skipping intersection calculation and text painter.
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::paintDecoration):
* rendering/InlineTextBox.h:
* rendering/TextPainter.cpp:
(WebCore::TextPainter::TextPainter):
(WebCore::TextPainter::paintTextWithShadows):
(WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded):
(WebCore::TextPainter::paintText):
(WebCore::TextPainter::dashesForIntersectionsWithRect): Deleted.
* rendering/TextPainter.h:
(WebCore::TextPainter::setTextPaintStyle):
(WebCore::TextPainter::setSelectionPaintStyle):
(WebCore::TextPainter::setIsHorizontal):
(WebCore::TextPainter::setFont):
(WebCore::TextPainter::addEmphasis):
(WebCore::TextPainter::addTextShadow):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193929 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: debugger popover should have source location link when showing functio...
mattbaker@apple.com [Thu, 10 Dec 2015 22:38:13 +0000 (22:38 +0000)]
Web Inspector: debugger popover should have source location link when showing function source
https://bugs.webkit.org/show_bug.cgi?id=151866

Reviewed by Brian Burg.

Added source code location link to function popover header.

* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
Create source code location link from response payload.
(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193926 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoAdding iOS-simulator expectations for compositing/layers-inside-overflow-scroll.html
ryanhaddad@apple.com [Thu, 10 Dec 2015 21:42:44 +0000 (21:42 +0000)]
Adding iOS-simulator expectations for compositing/layers-inside-overflow-scroll.html
https://bugs.webkit.org/show_bug.cgi?id=152132

Unreviewed test gardening.

* platform/ios-simulator/compositing/layers-inside-overflow-scroll-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193925 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoREGRESSION (r192796) WKBundlePageResourceLoadClient should be able to setHTTPBody...
achristensen@apple.com [Thu, 10 Dec 2015 21:26:28 +0000 (21:26 +0000)]
REGRESSION (r192796) WKBundlePageResourceLoadClient should be able to setHTTPBody in willSendRequestForFrame
https://bugs.webkit.org/show_bug.cgi?id=152022
rdar://problem/23763584

Reviewed by Darin Adler.

Source/WebKit2:

* Shared/API/c/WKURLRequest.cpp:
(WKURLRequestCopyHTTPMethod):
(WKURLRequestCopyWithHTTPBody):
(WKURLRequestSetDefaultTimeoutInterval):
* Shared/API/c/WKURLRequest.h:
Make WKURLRequestCopyWithHTTPBody SPI for testing.
* Shared/API/c/mac/WKURLRequestNS.mm:
(WKURLRequestCreateWithNSURLRequest):
Crash if someone tries to use an NSURLRequest with HTTPBodyStream, which will not work with the network process.
* WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
(WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame):
Use an HTTP body if the client's willSendRequestForFrame returned one.
This is the functional change of this patch.

Tools:

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::willSendRequestForFrame):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::setWillSendRequestReturnsNull):
(WTR::TestRunner::willSendRequestReturnsNullOnRedirect):
(WTR::TestRunner::setWillSendRequestReturnsNullOnRedirect):
(WTR::TestRunner::setWillSendRequestAddsHTTPBody):
(WTR::TestRunner::willSendRequestHTTPBody):
Added setWillSendRequestAddsHTTPBody that uses new SPI for testing.

LayoutTests:

* TestExpectations:
* http/tests/misc/resources/post-echo.cgi: Copied from LayoutTests/http/tests/xmlhttprequest/resources/post-echo.cgi.
* http/tests/misc/will-send-request-with-client-provided-http-body-expected.txt: Added.
* http/tests/misc/will-send-request-with-client-provided-http-body.html: Added.
* platform/wk2/TestExpectations:
New test for WK2 only.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193924 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoRemove additional simulator checks before running layout-tests
commit-queue@webkit.org [Thu, 10 Dec 2015 20:44:55 +0000 (20:44 +0000)]
Remove additional simulator checks before running layout-tests
https://bugs.webkit.org/show_bug.cgi?id=152146

Patch by Aakash Jain <aakash_jain@apple.com> on 2015-12-10
Reviewed by Darin Adler.

* Scripts/webkitpy/port/ios.py:
(IOSSimulatorPort.check_sys_deps): Removed additional simulators verifications.
* Scripts/webkitpy/xcode/simulator.py:
(Simulator._boot_and_shutdown_simulator_device): Deleted.
(Simulator.check_simulator_device_and_erase_if_needed): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193923 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoChange skin tone support for two emoji.
enrica@apple.com [Thu, 10 Dec 2015 20:22:18 +0000 (20:22 +0000)]
Change skin tone support for two emoji.
https://bugs.webkit.org/show_bug.cgi?id=152147
rdar://problem/23716993
rdar://problem/23716344

Reviewed by Darin Adler.

Source/WebCore:

Horse race emoji (1F3C7) should no longer have skin tone variation.
Sleuth/Spy emoji (!F575) should instead have skin tone variation.

* platform/text/TextBreakIterator.cpp:
(WebCore::cursorMovementIterator):

LayoutTests:

* fast/text/emoji.html:
* platform/mac/fast/text/emoji-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193922 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoSkip unsupported css3/font-variant-* tests on Win
ryanhaddad@apple.com [Thu, 10 Dec 2015 18:54:58 +0000 (18:54 +0000)]
Skip unsupported css3/font-variant-* tests on Win
https://bugs.webkit.org/show_bug.cgi?id=149774

Unreviewed test gardening.

* platform/win/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193914 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: [Meta] Unify z-index values in Inspector's CSS
nvasilyev@apple.com [Thu, 10 Dec 2015 18:14:16 +0000 (18:14 +0000)]
Web Inspector: [Meta] Unify z-index values in Inspector's CSS
https://bugs.webkit.org/show_bug.cgi?id=151978

Introduce CSS variables for z-index due to recurring issues with incorrectly overlapping elements.

From now on, all z-index values >= 64 must be defined as variables.
Values below 64 must not.

Reviewed by Timothy Hatcher.

* UserInterface/Views/Variables.css:
(:root):
Introduce z-index variables.

* UserInterface/Debug/UncaughtExceptionReporter.css:
(.sheet-container):
* UserInterface/Views/BoxModelDetailsSectionRow.css:
(.details-section .row.box-model .editing):
* UserInterface/Views/CompletionSuggestionsView.css:
(.completion-suggestions):
* UserInterface/Views/DashboardContainerView.css:
(.dashboard-container .advance-arrow):
* UserInterface/Views/DataGrid.css:
(.data-grid .resizer):
* UserInterface/Views/DetailsSection.css:
(.details-section > .header):
(.details-section .details-section > .header):
* UserInterface/Views/FindBanner.css:
(.find-banner):
(.find-banner > button.segmented:active):
* UserInterface/Views/Main.css:
(#docked-resizer):
(.message-text-view):
(.bouncy-highlight):
* UserInterface/Views/Popover.css:
(.popover):
* UserInterface/Views/Resizer.css:
(.resizer):
(.glass-pane-for-drag):
* UserInterface/Views/TimelineOverview.css:
(.timeline-overview > .scroll-container):
* UserInterface/Views/VisualStyleSelectorSection.css:
(.details-section.visual-style-selector-section > .content > .selectors > .selector-list > .section-divider):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193913 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUnreviewed, rolling out r193500.
commit-queue@webkit.org [Thu, 10 Dec 2015 18:03:52 +0000 (18:03 +0000)]
Unreviewed, rolling out r193500.
https://bugs.webkit.org/show_bug.cgi?id=152143

do not want to have to disable canvas-to-large-to-draw test
(Requested by bfulgham on #webkit).

Reverted changeset:

"Place an upper bound on canvas pixel count"
https://bugs.webkit.org/show_bug.cgi?id=151825
http://trac.webkit.org/changeset/193500

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193912 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[iOS][WK2] Update expected results for editing tests
dbates@webkit.org [Thu, 10 Dec 2015 17:41:45 +0000 (17:41 +0000)]
[iOS][WK2] Update expected results for editing tests

* platform/ios-simulator-wk2/editing/deleting/delete-3608462-fix-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/4278698-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/before-after-input-element-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/editable-html-element-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/editing-empty-divs-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-3778059-fix-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-3851164-fix-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-at-end-01-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-009-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-at-tabspan-001-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-at-tabspan-002-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-at-tabspan-003-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-quoted-001-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-quoted-002-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-quoted-003-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-quoted-004-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-quoted-005-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-br-quoted-006-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-009-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-010-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-011-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-012-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-013-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-014-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-015-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-016-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-017-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-018-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-019-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-020-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-022-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-023-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-024-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-025-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-026-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-div-027-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-paragraph-01-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-paragraph-02-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-paragraph-03-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-paragraph-04-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-paragraph-05-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-tab-003-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-text-at-tabspan-001-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-text-at-tabspan-002-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-text-at-tabspan-003-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/insert-text-with-newlines-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/line-break-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/multiple-lines-selected-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/paragraph-separator-01-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/paragraph-separator-02-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/paragraph-separator-03-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/paragraph-separator-in-table-1-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/paragraph-separator-in-table-2-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/redo-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/return-key-with-selection-001-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/return-key-with-selection-002-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/return-key-with-selection-003-expected.txt:
* platform/ios-simulator-wk2/editing/inserting/typing-002-expected.txt:
* platform/ios-simulator-wk2/editing/style/apple-style-editable-mix-expected.txt:
* platform/ios-simulator-wk2/editing/style/block-style-001-expected.txt:
* platform/ios-simulator-wk2/editing/style/block-style-002-expected.txt:
* platform/ios-simulator-wk2/editing/style/block-style-003-expected.txt:
* platform/ios-simulator-wk2/editing/style/block-styles-007-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-001-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-002-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-003-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-004-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-005-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-006-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-007-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-008-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-009-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-010-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-011-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-012-expected.txt:
* platform/ios-simulator-wk2/editing/style/create-block-for-style-013-expected.txt:
* platform/ios-simulator-wk2/editing/style/designmode-expected.txt:
* platform/ios-simulator-wk2/editing/style/relative-font-size-change-001-expected.txt:
* platform/ios-simulator-wk2/editing/style/relative-font-size-change-002-expected.txt:
* platform/ios-simulator-wk2/editing/style/relative-font-size-change-003-expected.txt:
* platform/ios-simulator-wk2/editing/style/relative-font-size-change-004-expected.txt:
* platform/ios-simulator-wk2/editing/style/style-3681552-fix-002-expected.txt:
* platform/ios-simulator-wk2/editing/style/style-3998892-fix-expected.txt:
* platform/ios-simulator-wk2/editing/style/style-boundary-001-expected.txt:
* platform/ios-simulator-wk2/editing/style/style-boundary-004-expected.txt:
* platform/ios-simulator-wk2/editing/style/table-selection-expected.txt:
* platform/ios-simulator-wk2/editing/style/unbold-in-bold-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193911 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[B3] Add new files to the cmake build system
ossy@webkit.org [Thu, 10 Dec 2015 17:33:56 +0000 (17:33 +0000)]
[B3] Add new files to the cmake build system
https://bugs.webkit.org/show_bug.cgi?id=152120

Reviewed by Filip Pizlo.

* CMakeLists.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193910 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoFollowup for:
beidson@apple.com [Thu, 10 Dec 2015 17:03:56 +0000 (17:03 +0000)]
Followup for:
Modern IDB: storage/indexeddb/intversion-close-between-events.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152096

Implementing Darin Adler's review feedback that came after the patch landed.

* bindings/js/JSIDBDatabaseCustom.cpp:
(WebCore::JSIDBDatabase::transaction): No need to explicitly cast to Vector<String>.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193909 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[B3] Use mark pragmas only if it is supported
ossy@webkit.org [Thu, 10 Dec 2015 16:50:30 +0000 (16:50 +0000)]
[B3] Use mark pragmas only if it is supported
https://bugs.webkit.org/show_bug.cgi?id=152123

Reviewed by Mark Lam.

* ftl/FTLB3Output.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193908 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[ES6] Add several generator related JSRegress tests to measure performance change...
utatane.tea@gmail.com [Thu, 10 Dec 2015 16:38:04 +0000 (16:38 +0000)]
[ES6] Add several generator related JSRegress tests to measure performance change after optimization
https://bugs.webkit.org/show_bug.cgi?id=151785

Reviewed by Saam Barati.

Before starting optimization for ES6 Generators, add several JSRegress tests to measure that.

* js/regress/generator-create-expected.txt: Added.
* js/regress/generator-create.html: Added.
* js/regress/generator-fib-expected.txt: Added.
* js/regress/generator-fib.html: Added.
* js/regress/generator-function-create-expected.txt: Added.
* js/regress/generator-function-create.html: Added.
* js/regress/generator-sunspider-access-nsieve-expected.txt: Added.
* js/regress/generator-sunspider-access-nsieve.html: Added.
* js/regress/generator-with-several-types-expected.txt: Added.
* js/regress/generator-with-several-types.html: Added.
* js/regress/script-tests/generator-create.js: Added.
(gen):
* js/regress/script-tests/generator-fib.js: Added.
(result):
* js/regress/script-tests/generator-function-create.js: Added.
(createGeneratorFunction.gen):
(createGeneratorFunction):
* js/regress/script-tests/generator-sunspider-access-nsieve.js: Added.
(prime):
(sieve):
* js/regress/script-tests/generator-with-several-types.js: Added.
(g1):
(g2):
(g3):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193907 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[B3] Typo fix in testb3.cpp
ossy@webkit.org [Thu, 10 Dec 2015 16:11:20 +0000 (16:11 +0000)]
[B3] Typo fix in testb3.cpp
https://bugs.webkit.org/show_bug.cgi?id=152126

Reviewed by Mark Lam.

* b3/testb3.cpp:
(JSC::B3::populateWithInterestingValues):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193906 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[B3] Fix unused-but-set-variable warning
ossy@webkit.org [Thu, 10 Dec 2015 16:07:57 +0000 (16:07 +0000)]
[B3] Fix unused-but-set-variable warning
https://bugs.webkit.org/show_bug.cgi?id=152122

Reviewed by Mark Lam.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::lower):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193905 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[B3] Make GCC ignore warnings in FTLB3Output.h
ossy@webkit.org [Thu, 10 Dec 2015 16:04:27 +0000 (16:04 +0000)]
[B3] Make GCC ignore warnings in FTLB3Output.h
https://bugs.webkit.org/show_bug.cgi?id=152124

Reviewed by Mark Lam.

* ftl/FTLB3Output.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193904 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUnreviewed. Fix ambiguous expectations added in r193895.
carlosgc@webkit.org [Thu, 10 Dec 2015 16:03:33 +0000 (16:03 +0000)]
Unreviewed. Fix ambiguous expectations added in r193895.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193903 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[EFL] Remove the unused IncrementalSweeper::m_isTimerFrozen member after r193749
ossy@webkit.org [Thu, 10 Dec 2015 16:02:35 +0000 (16:02 +0000)]
[EFL] Remove the unused IncrementalSweeper::m_isTimerFrozen member after r193749
https://bugs.webkit.org/show_bug.cgi?id=152127

Reviewed by Mark Lam.

* heap/IncrementalSweeper.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193902 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[CoordinatedGraphics] Reserve capacity for the children vector in CoordinatedGraphics...
zandobersek@gmail.com [Thu, 10 Dec 2015 12:12:17 +0000 (12:12 +0000)]
[CoordinatedGraphics] Reserve capacity for the children vector in CoordinatedGraphicsScene::setLayerChildrenIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=152117

Reviewed by Martin Robinson.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::setLayerChildrenIfNeeded): Reserve the capacity
for the new Vector that will contain the same number of items as the Vector
on the CoordinatedGraphicsLayerState object.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193901 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoSource/JavaScriptCore/create_hash_table shouldn't be too verbose
ossy@webkit.org [Thu, 10 Dec 2015 12:01:42 +0000 (12:01 +0000)]
Source/JavaScriptCore/create_hash_table shouldn't be too verbose
https://bugs.webkit.org/show_bug.cgi?id=151861

Reviewed by Darin Adler.

* create_hash_table:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193900 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoJSC Builtins should use safe array methods
youenn.fablet@crf.canon.fr [Thu, 10 Dec 2015 10:50:47 +0000 (10:50 +0000)]
JSC Builtins should use safe array methods
https://bugs.webkit.org/show_bug.cgi?id=151501

Reviewed by Darin Adler.

Source/JavaScriptCore:

Adding @push and @shift to Array prototype.
Using @push in TypedArray built-in.

Covered by added test in LayoutTests/js/builtins

* builtins/TypedArray.prototype.js:
(filter):
* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation):
* runtime/CommonIdentifiers.h:

Source/WebCore:

Using @push and @shift in internal arrays in lieu of push and shift.
This cannot be disrupted by user scripts except if arrays are also made accessible to user scripts.

Covered by added tests for ReadableStream constructs.

* Modules/mediastream/RTCPeerConnectionInternals.js:
(runNext):
(enqueueOperation):
* Modules/streams/ReadableStreamInternals.js:
(enqueueInReadableStream):
(readFromReadableStreamReader):
* Modules/streams/StreamInternals.js:
(dequeueValue):
(enqueueValueWithSize):

LayoutTests:

Adding shielding test for TypedArray.prototype.filter and stream enqueuing of values and read promises.

* js/builtins/resources/shielding-typedarray.js: Added.
(Array.prototype.push):
(try.array.Int8Array.from.string_appeared_here.filter):
* js/builtins/shielding-typedarray-expected.txt: Added.
* js/builtins/shielding-typedarray.html: Added.
* streams/streams-promises-expected.txt:
* streams/streams-promises.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193899 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[TexMap] pixel coverage multiplication in TiledBackingStore can overflow
zandobersek@gmail.com [Thu, 10 Dec 2015 10:24:55 +0000 (10:24 +0000)]
[TexMap] pixel coverage multiplication in TiledBackingStore can overflow
https://bugs.webkit.org/show_bug.cgi?id=152055

Reviewed by Carlos Garcia Campos.

The computation of the pixel coverage in TiledBackingStore can easily overflow
when the candidate size is relatively large (for instance when the backed
layer is transformed in a way that increases its perceived size). This can result
in missing tiles for this specific backing store, at least until the layer in
question is transformed again into a shape that produces a smaller candidate size.

To avoid the integer overflow, the multiplication is done in a safe manner,
defaulting to the max positive value an integer can hold in case the overflow
is detected.

* platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::adjustForContentsRect):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193898 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[TexMap] Clean up BitmapTexturePool
zandobersek@gmail.com [Thu, 10 Dec 2015 10:23:06 +0000 (10:23 +0000)]
[TexMap] Clean up BitmapTexturePool
https://bugs.webkit.org/show_bug.cgi?id=152073

Reviewed by Daniel Bates.

Move BitmapTexturePoolEntry class under the BitmapTexturePool class, renaming
it to simply Entry and keeping it private. Have the constructor take in an
rvalue reference to the RefPtr<BitmapTexture> object. Remove the static
compareTimeLastUsed() function and use a lambda directly in its place.

Remove the default BitmapTexturePool constructor, which isn't used anywhere.
Have the constructor and some methods accept or return RefPtr objects, possibly
via rvalue references. Clean up the header file by removing a few unnecessary
header includes and using forward declarations where possible.

In the BitmapTexturePool implementation file, mark the two const variables as
static. The ::acquireTexture() method now uses the std::find_if() algorithm
to find a fitting Entry object in the Vector. The same method is also moved
upwards so we follow the order of declaration in the header. ::createTexture()
inlines the return of the new expression into the adoptRef() call in the return
statement.

TextureMapperGL constructor is updated to pass a copied RefPtr object into the
BitmapTexturePool constructor.

* platform/graphics/texmap/BitmapTexturePool.cpp:
(WebCore::BitmapTexturePool::BitmapTexturePool):
(WebCore::BitmapTexturePool::acquireTexture):
(WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired):
(WebCore::BitmapTexturePool::createTexture):
* platform/graphics/texmap/BitmapTexturePool.h:
(WebCore::BitmapTexturePool::Entry::Entry):
(WebCore::BitmapTexturePool::Entry::markUsed):
(WebCore::BitmapTexturePoolEntry::BitmapTexturePoolEntry): Deleted.
(WebCore::BitmapTexturePoolEntry::markUsed): Deleted.
(WebCore::BitmapTexturePoolEntry::compareTimeLastUsed): Deleted.
* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::TextureMapperGL::TextureMapperGL):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193897 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[GTK] RenderThemeGtk::platformActiveSelectionBackgroundColor, et. al. should not...
mcatanzaro@igalia.com [Thu, 10 Dec 2015 10:15:36 +0000 (10:15 +0000)]
[GTK] RenderThemeGtk::platformActiveSelectionBackgroundColor, et. al. should not clobber state of cached GtkStyleContexts
https://bugs.webkit.org/show_bug.cgi?id=151533

Reviewed by Carlos Garcia Campos.

Remove the style context cache to simplify the code, drastically reduce the number of
expensive save/restore operations performed on style contexts, and avoid unwanted
side-effects in RenderThemeGtk::styleColor. This is also a speculative fix for improper
button rendering with certain custom themes, and a simplification that will make it easier
to fix bug #150550.

This change does have performance implications, which I intend to check on the perf bot
after landing to ensure that removing the cache does not have a significant negative impact
on performance; I have no clue whether this will be a net performance win or loss. However,
this is a bit tricky, because the bot is running GTK+ 3.16, whereas I expect save/restore
might be much more expensive in GTK+ 3.20, and I do not want to make performance decisions
except based on the latest GTK+ due to large changes in the implementation of
GtkStyleContext.

* rendering/RenderThemeGtk.cpp:
(WebCore::createStyleContext):
(WebCore::getStockIconForWidgetType):
(WebCore::getStockSymbolicIconForWidgetType):
(WebCore::RenderThemeGtk::initMediaColors):
(WebCore::RenderThemeGtk::adjustRepaintRect):
(WebCore::setToggleSize):
(WebCore::paintToggle):
(WebCore::RenderThemeGtk::setCheckboxSize):
(WebCore::RenderThemeGtk::setRadioSize):
(WebCore::RenderThemeGtk::paintButton):
(WebCore::getComboBoxMetrics):
(WebCore::RenderThemeGtk::paintMenuList):
(WebCore::RenderThemeGtk::paintTextField):
(WebCore::RenderThemeGtk::paintSliderTrack):
(WebCore::RenderThemeGtk::paintSliderThumb):
(WebCore::RenderThemeGtk::adjustSliderThumbSize):
(WebCore::RenderThemeGtk::paintProgressBar):
(WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle):
(WebCore::RenderThemeGtk::paintInnerSpinButton):
(WebCore::styleColor):
(WebCore::gtkStyleChangedCallback): Deleted.
(WebCore::styleContextMap): Deleted.
(WebCore::getStyleContext): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193896 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUnreviewed. GTK+ gardening: skip HLS tests crashing in debug after r192102.
carlosgc@webkit.org [Thu, 10 Dec 2015 09:20:01 +0000 (09:20 +0000)]
Unreviewed. GTK+ gardening: skip HLS tests crashing in debug after r192102.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193895 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agofont-variant-caps does not work if the font does not support font features
mmaxfield@apple.com [Thu, 10 Dec 2015 08:37:03 +0000 (08:37 +0000)]
font-variant-caps does not work if the font does not support font features
https://bugs.webkit.org/show_bug.cgi?id=149774

Reviewed by Antti Koivisto.

Source/WebCore:

This test implements synthesis for small-caps and all-small-caps. It does so by
moving font variant selection into a higher level (ComplexTextController).
In general, the approach is to use the pure font feature until we encounter
a character which needs to be uppercased, and which the font feature does not
support uppercasing. In this situation, we try again with synthesis. In this
case, synthesis means artificially uppercasing letters and rendering them with
a smaller font.

We require system support to know which glyphs a particular font feature supports.
Therefore, on operating systems which do not include this support, we will simply
say that the font feature does not support any glyphs.

Test: css3/font-variant-small-caps-synthesis.html
      css3/font-variant-petite-caps-synthesis.html

* platform/graphics/Font.cpp:
(WebCore::Font::noSmallCapsFont): Return the same font, but without smcp or c2sc.
This function utilizes a cache.
* platform/graphics/Font.h:
(WebCore::Font::variantFont): Small caps should never go through this function
anymore.
* platform/graphics/FontCascade.h: Because we're moving variant selection into
a higher level, we remove the FontVariant argument from the lower-level call.
* platform/graphics/FontCascadeFonts.cpp:
(WebCore::FontCascadeFonts::glyphDataForVariant): Use early-return style.
(WebCore::FontCascadeFonts::glyphDataForNormalVariant): Ditto.
* platform/graphics/cocoa/FontCascadeCocoa.mm:
(WebCore::FontCascade::fontForCombiningCharacterSequence): Because we're moving
variant selection into a higher level, we remove the FontVariant argument from
the lower-level call.
* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::Font::smallCapsSupportsCharacter):
(WebCore::Font::allSmallCapsSupportsCharacter):
(WebCore::smallCapsOpenTypeDictionary): Helper function for
smallCapsSupportsCharacter().
(WebCore::smallCapsTrueTypeDictionary): Ditto.
(WebCore::unionBitVectors):
(WebCore::Font::glyphsSupportedBySmallCaps): Compute a bit vector of supported
glyphs.
(WebCore::Font::glyphsSupportedByAllSmallCaps): Ditto.
(WebCore::createDerivativeFont): Moving common code into its own helper function.
(WebCore::Font::createFontWithoutSmallCaps):
(WebCore::Font::platformCreateScaledFont): Use the common code.
* platform/graphics/mac/ComplexTextController.cpp:
(WebCore::capitalized): What is the capitalized form of a character?
(WebCore::ComplexTextController::collectComplexTextRuns): Implement the core
logic of this patch. This includes the retry when we encounter a character which
is not supported by the font feature.
* platform/spi/cocoa/CoreTextSPI.h:

LayoutTests:

Adding two new font which include lowercase characters which respond to 'smcp' and 'c2sc'.

The character mappings are:

OpenType:
'smcp': f
'c2sc': g

TrueType:
kLowerCaseType / kLowerCaseSmallCapsSelector: r
kUpperCaseType / kUpperCaseSmallCapsSelector: u

* css3/font-variant-all-expected.html:
* css3/font-variant-all.html:
* css3/font-variant-small-caps-synthesis-expected.html: Added.
* css3/font-variant-small-caps-synthesis.html: Added.
* css3/font-variant-petite-caps-synthesis-expected.html: Added.
* css3/font-variant-petite-caps-synthesis.html: Added.
* css3/resources/FontWithFeaturesLowercaseSmallCaps.otf: Added.
* css3/resources/FontWithFeaturesLowercaseSmallCaps.ttf: Added.
* platform/mac/TestExpectations:
* platform/mac/fast/writing-mode/broken-ideograph-small-caps-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193894 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[TexMap] Remove the TEXMAP_OPENGL_ES_2 define
zandobersek@gmail.com [Thu, 10 Dec 2015 08:28:19 +0000 (08:28 +0000)]
[TexMap] Remove the TEXMAP_OPENGL_ES_2 define
https://bugs.webkit.org/show_bug.cgi?id=152069

Reviewed by Alex Christensen.

Remove the TEXMAP_OPENGL_ES_2 macro define and clean up the code
that it was (not) guarding.

* platform/graphics/texmap/BitmapTexture.h:
* platform/graphics/texmap/BitmapTextureGL.cpp: Remove the TEXMAP_OPENGL_ES_2
guard. Keep the GL_UNSIGNED_INT_8_8_8_8_REV define for OS(DARWIN), but use
the GraphicsContext3D constants for other values.
(WebCore::BitmapTextureGL::updateContentsNoSwizzle):
(WebCore::BitmapTextureGL::initializeStencil): Remove the TEXMAP_OPENGL_ES_2
guard and default to calling the renderbufferStorage() function with the
GraphicsContext3D::STENCIL_INDEX8 argument.
* platform/graphics/texmap/BitmapTexturePool.h:
* platform/graphics/texmap/TextureMapper.h:
* platform/graphics/texmap/TextureMapperGL.cpp: Remove both the TEXMAP_OPENGL_ES_2
guard and the code it guarded. Because we were defining TEXMAP_OPENGL_ES_2 and not
USE_TEXMAP_OPENGL_ES_2, the guarded defines were always enforced, but they're never
actually used in this file anyway.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193893 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/objectstore-basics.html fails.
beidson@apple.com [Thu, 10 Dec 2015 07:09:34 +0000 (07:09 +0000)]
Modern IDB: storage/indexeddb/objectstore-basics.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152101

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Multiple tests updated to the new error messaging cover it).

* Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
(WebCore::IDBClient::IDBObjectStore::putOrAdd): Add plenty of detailed error messaging.

LayoutTests:

* platform/mac-wk1/TestExpectations:
* platform/wk2/storage/indexeddb/mozilla/bad-keypath-expected.txt: Copied from LayoutTests/storage/indexeddb/mozilla/bad-keypath-expected.txt.
* platform/wk2/storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt: Copied from LayoutTests/storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt.
* platform/wk2/storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt: Copied from LayoutTests/storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt.
* platform/wk2/storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt: Copied from LayoutTests/storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt.
* storage/indexeddb/invalid-keys-expected.txt:
* storage/indexeddb/key-type-binary-expected.txt:
* storage/indexeddb/keypath-edges-expected.txt:
* storage/indexeddb/mozilla/bad-keypath-expected.txt:
* storage/indexeddb/mozilla/key-requirements-inline-and-passed-expected.txt:
* storage/indexeddb/mozilla/key-requirements-put-no-key-expected.txt:
* storage/indexeddb/mozilla/key-requirements-put-null-key-expected.txt:
* storage/indexeddb/objectstore-basics-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193892 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoTextPainter: Make before and after selection painting more explicit.
zalan@apple.com [Thu, 10 Dec 2015 04:59:56 +0000 (04:59 +0000)]
TextPainter: Make before and after selection painting more explicit.
https://bugs.webkit.org/show_bug.cgi?id=152104

Reviewed by Myles C. Maxfield.

Instead of swapping start end end positions and expecting TextPainter::drawTextOrEmphasisMarks()
to recognize it, we call painting with 0 - startPosition and endPosition - length.

No change in functionality.

* rendering/TextPainter.cpp:
(WebCore::TextPainter::drawTextOrEmphasisMarks):
(WebCore::TextPainter::paintTextAndEmphasisMarksIfNeeded):
(WebCore::TextPainter::paintText):
(WebCore::TextPainter::paintEmphasisMarksIfNeeded): Deleted.
(WebCore::TextPainter::paintTextWithStyle): Deleted.
* rendering/TextPainter.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193891 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoFTL B3 should have basic GetById support
fpizlo@apple.com [Thu, 10 Dec 2015 03:50:07 +0000 (03:50 +0000)]
FTL B3 should have basic GetById support
https://bugs.webkit.org/show_bug.cgi?id=152035

Reviewed by Saam Barati.

Source/JavaScriptCore:

Adds basic GetById support. This was so easy to do. Unlike the LLVM code for this, the B3 code is
entirely self-contained within the getById() method in LowerDFG.

I discovered that we weren't folding Check(NotEqual(x, 0)) to Check(x). This was preventing us
from generating good code for Check(NotEqual(BitAnd(x, tagMask), 0)), since the BitAnd was
concealed. This was an easy strength reduction rule to add.

Finally, I found it easier to say append(value, rep) than append(ConstrainedValue(value, rep)), so
I added that API. The old ConstrainedValue form is still super useful in other places, like
compileCallOrConstruct(), where the two-argument form would be awkward. It's great to have both
APIs to pick from.

* b3/B3ReduceStrength.cpp:
* b3/B3StackmapValue.cpp:
(JSC::B3::StackmapValue::~StackmapValue):
(JSC::B3::StackmapValue::append):
* b3/B3StackmapValue.h:
* dfg/DFGCommon.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::getById):

Source/WTF:

When dealing with shared task lambdas, you often want to force a value to be allocated so that it
has reference semantics, but you still want the lambda to execute OK when we pop stack. In PL we
usually call this a "box". This is easy to do if the value that happened to be stack-allocated
is also RefCounted, but that's rare, since stack-allocated values often have copy semantics. So,
I've added a Box type to WTF. Behind the scenes, it allocates your object with fast malloc inside
a ThreadSAfeRefCounted. When you pass Box<T>, you're passing the reference. This makes it a lot
easier to work with by-reference capture.

* WTF.xcodeproj/project.pbxproj:
* wtf/Box.h: Added.
(WTF::Box::Box):
(WTF::Box::create):
(WTF::Box::get):
(WTF::Box::operator*):
(WTF::Box::operator->):
(WTF::Box::operator bool):
(WTF::Box::Data::Data):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193890 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoREGRESSION: code-review-tests.html fails with error "Received an error at line 214"
dbates@webkit.org [Thu, 10 Dec 2015 03:42:46 +0000 (03:42 +0000)]
REGRESSION: code-review-tests.html fails with error "Received an error at line 214"
https://bugs.webkit.org/show_bug.cgi?id=152103

Reviewed by Darin Adler.

Fixes an issue where opening the file code-review-test.html in Safari shows the error message
"FAIL: Received an error at line 214" and in the console there is a JavaScript TypeError:
    undefined is not an object (evaluating '$('.overallComments textarea').val().trim')

Notice that test testReaddDiscardedCommentWithPreviousComment() is the only test that appends
the toolbar, which inserts the overall comments textarea. The test testSaveCommentsWithMissingLineIds()
assumes that the own properties of the window object are enumerated in the same order as they
were defined in the file code-review-test.html such that the test testReaddDiscardedCommentWithPreviousComment()
is executed before test testSaveCommentsWithMissingLineIds(). The behavior of JavaScriptCore with
respect to the enumeration order of properties on the window object have changed since the
test testSaveCommentsWithMissingLineIds() was written such that the order of the own properties
on the window object do not reflect the order in which they were defined in the file. We should
append the toolbar before running the tests and explicitly execute the tests in chosen order so
as to be able to reason of the test results regardless of the enumeration ordering of the
properties in the DOM window object.

Also, removed duplicate 'd' in the name of function "testReaddDiscardedCommentWithPreviousComment"
such that it reads "testReadDiscardedCommentWithPreviousComment".

* code-review-test.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193889 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[iOS] Suspend and resume device motion and device orientation updates when page is...
dbates@webkit.org [Thu, 10 Dec 2015 02:53:12 +0000 (02:53 +0000)]
[iOS] Suspend and resume device motion and device orientation updates when page is hidden and visible, respectively
https://bugs.webkit.org/show_bug.cgi?id=151840
<rdar://problem/23753931>

Reviewed by Simon Fraser.

.:

Add a manual test that can be used to verify that we suspend dispatching device motion and
device orientation events when the page is hidden.

* ManualTests/ios/resources/suspend-orientation-and-motion-events-when-page-becomes-hidden.js: Added.
(resetTest):
(checkEvent):
(handleVisibilityChange):
* ManualTests/ios/suspend-orientation-and-motion-events-when-page-becomes-hidden.html: Added.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::suspendDeviceMotionAndOrientationUpdates): Added.
(WebCore::Document::resumeDeviceMotionAndOrientationUpdates): Added.
(WebCore::Document::platformSuspendOrStopActiveDOMObjects): Moved logic to suspend device motion and
orientation updates from here to Document::suspendDeviceMotionAndOrientationUpdates().
(WebCore::Document::suspendActiveDOMObjects): Modified to call Document::suspendDeviceMotionAndOrientationUpdates().
(WebCore::Document::resumeActiveDOMObjects): Modified to call Document::resumeDeviceMotionAndOrientationUpdates().
* dom/Document.h:
* page/Page.cpp:
(WebCore::Page::setIsVisibleInternal): Suspend device motion and orientation updates when the page is hidden and
resume updates when the page is visible.
(WebCore::Page::suspendDeviceMotionAndOrientationUpdates): Added.
(WebCore::Page::resumeDeviceMotionAndOrientationUpdates): Added.
* page/Page.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193885 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUnify iOS Frame::setTimersPaused() logic and Frame::{suspend, resume}ActiveDOMObjects...
dbates@webkit.org [Thu, 10 Dec 2015 02:51:11 +0000 (02:51 +0000)]
Unify iOS Frame::setTimersPaused() logic and Frame::{suspend, resume}ActiveDOMObjectsAndAnimations()
https://bugs.webkit.org/show_bug.cgi?id=152006

Reviewed by Simon Fraser.

Currently we have almost identical logic to suspend and resume a web page for iOS and non-iOS ports.
We should unify this logic instead of duplicating it.

* dom/ActiveDOMObject.h: Remove iOS-specific enumeration DocumentWillBePaused and standardize on
enumerator PageWillBeSuspended.
* dom/Document.cpp:
(WebCore::Document::didBecomeCurrentDocumentInFrame): Unify iOS and non-iOS-specific code.
(WebCore::Document::suspendScheduledTasks): Ignore subsequent calls to this function so long as the reason for
the first invocation was ActiveDOMObject::PageWillBeSuspended. Such a subsequent call may occur as part of
handling a scroll or zoom gesture.
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::suspendActiveDOMObjects): Ignore subsequent calls to this function
so long as the reason for the first invocation was ActiveDOMObject::PageWillBeSuspended. Such a subsequent
call may occur as part of the process of a page being added to the page cache.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::suspend): Remove case for ActiveDOMObject::DocumentWillBePaused as this
enumerator is being removed.
* page/DOMTimer.cpp:
(WebCore::DOMTimer::install): Write logic that used Frame::timersPaused() terms of
ScriptExecutionContext::activeDOMObjectsAreSuspended() as we are removing Frame::timersPaused().
(WebCore::DOMTimer::fired): Remove iOS-specific assertion with respect to Frame::timersPaused().
This function already asserts the equivalent condition that ScriptExecutionContext::activeDOMObjectsAreSuspended()
evaluates to false. Clean up iOS-specific code that depends on the ScriptExecutionContext being a
Document object by taking advantage of the fact that this assumption is true when shouldBeginObservingChanges
evaluates to true.
* page/Frame.cpp:
(WebCore::Frame::Frame): Remove instance variable m_timersPausedCount and unify the iOS and non-iOS logic.
(WebCore::Frame::suspendActiveDOMObjectsAndAnimations): Standardize on the iOS logic for suspending
DOM objects and animations because it is more comprehensive on what it suspends and works with the deferred
loading machinery (Page::setDefersLoading() - see remarks in Frame::resumeActiveDOMObjectsAndAnimations() for
more details). Specifically, make use of Frame::clearTimers() to suspend non-scripted animations (i.e. non-requestAnimationFrame()
animations), auto-scroll timer, and pending relayouts. And use Document::suspendScheduledTasks() to suspend
all other tasks, including WebSQL database callbacks, active DOM objects, scripted animations and execution of
<script async>/<script defer> JavaScript scripts.
(WebCore::Frame::resumeActiveDOMObjectsAndAnimations): Standardize on the iOS logic for resuming
DOM objects and animations for symmetry and because it works with the deferred loading machinery. We call
Document::resumeScheduledTasks() (which calls Document::resumeActiveDOMObjects()) instead of calling
Document::resumeActiveDOMObjects() directly because the former will ultimately process the queue of pending
tasks (Document::m_pendingTasks).
* page/Frame.h: Remove instance variable m_timersPausedCount.
(WebCore::Frame::timersPaused): Deleted.
* page/ios/FrameIOS.mm:
(WebCore::Frame::setTimersPaused): Write this function in terms of Page::{suspend, resume}ActiveDOMObjectsAndAnimations().
We need to keep this function for Legacy WebKit on iOS.
(WebCore::Frame::setTimersPausedInternal): Deleted.
* rendering/RenderElement.cpp:
(WebCore::shouldRepaintForImageAnimation): Remove iOS-specific code to early return when Frame::timersPaused()
evaluates to true. This function already has the equivalent code to early return when Document::activeDOMObjectsAreSuspended()
evaluates to true.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193884 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[iOS] Bail out if the page proxy is invalid when WebPageProxy::processWillBecome...
dbates@webkit.org [Thu, 10 Dec 2015 02:50:31 +0000 (02:50 +0000)]
[iOS] Bail out if the page proxy is invalid when WebPageProxy::processWillBecome{Foreground, Suspended}() are called
https://bugs.webkit.org/show_bug.cgi?id=151877

Reviewed by Darin Adler.

We cannot assume that a WebPageProxy is in a valid state when WebPageProxy::processWillBecome{Foreground, Suspended}()
are called because these callbacks may occur after the web process crashed and before a
WebPageProxy attaches to a new web process (and hence is considered in a valid state).

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processWillBecomeSuspended): Early return if the page proxy is invalid.
(WebKit::WebPageProxy::processWillBecomeForeground): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193883 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/metadata.html fails
beidson@apple.com [Thu, 10 Dec 2015 00:53:11 +0000 (00:53 +0000)]
Modern IDB: storage/indexeddb/metadata.html fails
https://bugs.webkit.org/show_bug.cgi?id=152099

Reviewed by Alex Christensen.

Source/WebCore:

Test: storage/indexeddb/modern/abort-objectstore-info.html
      And at least one existing failure now passes.

We did not properly reset object store info when version change transactions aborted.

* Modules/indexeddb/client/IDBObjectStoreImpl.cpp:
(WebCore::IDBClient::IDBObjectStore::IDBObjectStore):
(WebCore::IDBClient::IDBObjectStore::rollbackInfoForVersionChangeAbort):
* Modules/indexeddb/client/IDBObjectStoreImpl.h:

* Modules/indexeddb/client/IDBTransactionImpl.cpp:
(WebCore::IDBClient::IDBTransaction::abort):

LayoutTests:

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/modern/abort-objectstore-info-expected.txt: Added.
* storage/indexeddb/modern/abort-objectstore-info.html: Added.
* storage/indexeddb/modern/resources/abort-objectstore-info.js: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193878 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUnreviewed, rolling out r193864.
commit-queue@webkit.org [Wed, 9 Dec 2015 23:57:59 +0000 (23:57 +0000)]
Unreviewed, rolling out r193864.
https://bugs.webkit.org/show_bug.cgi?id=152100

caused all inspector tests to assert in WK2 Debug (Requested
by brrian on #webkit).

Reverted changeset:

"Web Inspector: reproducible debug ASSERT when inspecting the
inspector (WK2)"
https://bugs.webkit.org/show_bug.cgi?id=152080
http://trac.webkit.org/changeset/193864

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193877 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoAdjust layer backing store format
simon.fraser@apple.com [Wed, 9 Dec 2015 23:51:54 +0000 (23:51 +0000)]
Adjust layer backing store format
https://bugs.webkit.org/show_bug.cgi?id=152097
rdar://problem/23305376

Reviewed by Tim Horton.

Call setBackingStoreFormat() on UIWebView tile grid layers, and on compositing
layers which can allocate backing store.

* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::setBackingStoreFormat):
(PlatformCALayerCocoa::commonInit):
* platform/ios/LegacyTileGridTile.mm:
(WebCore::setBackingStoreFormat):
(WebCore::LegacyTileGridTile::LegacyTileGridTile):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193876 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/intversion-close-between-events.html fails.
beidson@apple.com [Wed, 9 Dec 2015 23:40:18 +0000 (23:40 +0000)]
Modern IDB: storage/indexeddb/intversion-close-between-events.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152096

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes).

* bindings/js/JSIDBDatabaseCustom.cpp:
(WebCore::JSIDBDatabase::transaction): In addition to JSArrays, treat DOMStringLists as a valid string sequence.

LayoutTests:

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193875 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[iOS] ResourceUsageOverlay should work on iOS.
akling@apple.com [Wed, 9 Dec 2015 23:21:14 +0000 (23:21 +0000)]
[iOS] ResourceUsageOverlay should work on iOS.
<https://webkit.org/b/152021>

Reviewed by Antti Koivisto.

Source/WebCore:

Make ResourceUsageOverlay work on iOS and on Mac desktops with UI-side compositing.

* page/ResourceUsageOverlay.cpp:
(WebCore::ResourceUsageOverlay::initialize): Move the overlay to the top of the view on iOS for now.
* page/ResourceUsageOverlay.h:
* page/cocoa/ResourceUsageOverlayCocoa.mm:
(WebCore::createColor): Make a custom CGColor factory since we can't use CGColorCreateGenericRGB on iOS.
(WebCore::MemoryCategoryInfo::MemoryCategoryInfo):
(WebCore::ResourceUsageOverlay::platformInitialize): Put the overlay CALayer into a container layer and
hook it up with GraphicsLayer::setContentsToPlatformLayer so it works with all compositing modes.
(WebCore::showText): Move CGContextSaveGState call to the top of the function to preserve everything.
(WebCore::drawGraphLabel):
(WebCore::drawCpuHistory):
(WebCore::drawGCHistory):
(WebCore::ResourceUsageOverlay::platformDraw): Flip the CGContext if needed.
(WebCore::runSamplerThread): Update the layer rects on each thread iteration. This shouldn't be
necessary but it papers over an issue where the containing layer would shrink down to 0x0 and
disappear. Added a FIXME for this.
* platform/spi/cocoa/MachVMSPI.h: Add purgeable VM SPI.

Source/WTF:

* wtf/Platform.h: Enable RESOURCE_USAGE_OVERLAY for all COCOA platforms.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: when a marked-dirty subview is attached to a parent View, dirtyDescend...
mattbaker@apple.com [Wed, 9 Dec 2015 23:07:10 +0000 (23:07 +0000)]
Web Inspector: when a marked-dirty subview is attached to a parent View, dirtyDescendantsCount gets out of sync
https://bugs.webkit.org/show_bug.cgi?id=151876

Reviewed by Brian Burg.

* UserInterface/Base/Main.js:
Use root view singleton instead of creating it explicitly.

* UserInterface/Views/View.js:
(WebInspector.View):
(WebInspector.View.rootView):
Singleton root view access. Lazily create and return a view backed
by the document's body element.
(WebInspector.View.prototype.isDescendantOf):
(WebInspector.View.prototype.insertSubviewBefore):
(WebInspector.View.prototype.removeSubview):
(WebInspector.View.prototype.didMoveToWindow):
Notify the view when it becomes, or is no longer, descended from the root view.
(WebInspector.View.prototype.didMoveToParent):
Notify the view when it's added to, or removed from, a parent view.
(WebInspector.View._scheduleLayoutForView):
(WebInspector.View._cancelScheduledLayoutForView):
(WebInspector.View.prototype.makeRootView): Deleted.
No longer needed.
(WebInspector.View.prototype.didAttach): Deleted.
(WebInspector.View.prototype.didDetach): Deleted.
Replaced by didMoveToParent.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193872 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/database-closepending-flag.html fails.
beidson@apple.com [Wed, 9 Dec 2015 22:46:10 +0000 (22:46 +0000)]
Modern IDB: storage/indexeddb/database-closepending-flag.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152095

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes).

The server-side checks the closepending flag before dispatching the event to the client,
but due to the inherent asynchronous race between server and client, the client needs to
check its closePending flag as well.

* Modules/indexeddb/client/IDBDatabaseImpl.cpp:
(WebCore::IDBClient::IDBDatabase::fireVersionChangeEvent): Don't fire if m_closePending is set.

LayoutTests:

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193871 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: control whether to collect and dump protocol messages using a WebInspe...
bburg@apple.com [Wed, 9 Dec 2015 22:45:21 +0000 (22:45 +0000)]
Web Inspector: control whether to collect and dump protocol messages using a WebInspector.Setting
https://bugs.webkit.org/show_bug.cgi?id=151635

Reviewed by Timothy Hatcher.

When closing and reopening the inspector, the setting for whether
to dump protocol messages should be persisted. Otherwise, enabling
dumping from the debug-only UI will miss the initial flood of
messages that are processed when the Inspector loads initial data.

To support a persistent setting, and build some infrastructure for
more advanced uses of collected protocol messages, this patch adds
a new object to trace protocol events. It gets callbacks for each
and implements the console-dumping functionality previously baked in
to InspectorBackend.

In follow-up patches, other protocol tracers will be added to save
protocol data to disk, marshall it to a higher inspection level,
or provide more fine-grained control over what is logged.

This change moves Setting.js into the Base/ directory,
since it is used by Views, Models, and now Protocol classes.

* UserInterface/Base/Setting.js: Renamed from Source/WebInspectorUI/UserInterface/Models/Setting.js.
(WebInspector.Setting):
(WebInspector.Setting.prototype.get name):
(WebInspector.Setting.prototype.get value):
(WebInspector.Setting.prototype.set value):
* UserInterface/Main.html:
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass):
(InspectorBackendClass.prototype.set dumpInspectorProtocolMessages):
(InspectorBackendClass.prototype.get dumpInspectorProtocolMessages):

    We still want to support the legacy way to enable dumping:
    `InspectorBackend.dumpInspectorProtocolMessages = true`. This
    is because some tests always use it, and it's easier to set this
    flag in a custom Bootstrap.js file than to configure the Setting.

(InspectorBackendClass.prototype.set dumpInspectorTimeStats):
(InspectorBackendClass.prototype.get dumpInspectorTimeStats):

    We still want to support the legacy way to enable dumping:
    `InspectorBackend.dumpInspectorTimeStats = true`. This is
    because MessageDispatcher checks this flag for its logging.

(InspectorBackendClass.prototype.set activeTracer):
(InspectorBackendClass.prototype.get activeTracer):

    Set the active tracer, finalizing and removing any active tracer
    if one exists. If removing a custom tracer (setting to null), then
    re-sync activeTracer with the automatic tracing Setting.

(InspectorBackendClass.prototype.dispatch):
(InspectorBackendClass.prototype._startOrStopAutomaticTracing):

    Sync the Setting with activeTracer. If an custom tracer is active,
    don't replace it with the automatic logging tracer.

(InspectorBackendClass.prototype._sendCommandToBackendWithCallback):
(InspectorBackendClass.prototype._sendCommandToBackendExpectingPromise):
(InspectorBackendClass.prototype._sendMessageToBackend):
(InspectorBackendClass.prototype._dispatchResponse):
(InspectorBackendClass.prototype._dispatchEvent):
(InspectorBackendClass.prototype._flushPendingScripts):
* UserInterface/Protocol/LoggingProtocolTracer.js: Added.
(WebInspector.LoggingProtocolTracer):
(WebInspector.LoggingProtocolTracer.prototype.set dumpMessagesToConsole):
(WebInspector.LoggingProtocolTracer.prototype.get dumpMessagesToConsole):
(WebInspector.LoggingProtocolTracer.prototype.set dumpTimingDataToConsole):
(WebInspector.LoggingProtocolTracer.prototype.get dumpTimingDataToConsole):
(WebInspector.LoggingProtocolTracer.prototype.logFrontendException):
(WebInspector.LoggingProtocolTracer.prototype.logProtocolError):
(WebInspector.LoggingProtocolTracer.prototype.logFrontendRequest):
(WebInspector.LoggingProtocolTracer.prototype.logWillHandleResponse):
(WebInspector.LoggingProtocolTracer.prototype.logDidHandleResponse):
(WebInspector.LoggingProtocolTracer.prototype.logWillHandleEvent):
(WebInspector.LoggingProtocolTracer.prototype.logDidHandleEvent):
(WebInspector.LoggingProtocolTracer.prototype._processEntry):
* UserInterface/Protocol/ProtocolTracer.js: Added.
(WebInspector.ProtocolTracer.prototype.logStarted):
(WebInspector.ProtocolTracer.prototype.logFrontendException):
(WebInspector.ProtocolTracer.prototype.logProtocolError):
(WebInspector.ProtocolTracer.prototype.logFrontendRequest):
(WebInspector.ProtocolTracer.prototype.logWillHandleResponse):
(WebInspector.ProtocolTracer.prototype.logDidHandleResponse):
(WebInspector.ProtocolTracer.prototype.logWillHandleEvent):
(WebInspector.ProtocolTracer.prototype.logDidHandleEvent):        (WebInspector.ProtocolTracer.prototype.logFinished):
(WebInspector.ProtocolTracer):
* UserInterface/Test.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193870 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: Some tests expect UInt8Array to be a valid key.
beidson@apple.com [Wed, 9 Dec 2015 22:36:04 +0000 (22:36 +0000)]
Modern IDB: Some tests expect UInt8Array to be a valid key.
https://bugs.webkit.org/show_bug.cgi?id=152092

Reviewed by Alex Christensen.

Everything that expected UInt8Array to be a valid key needs to be updated to expect it to be invalid.

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/factory-cmp-expected.txt:
* storage/indexeddb/key-type-binary-expected.txt:
* storage/indexeddb/resources/factory-cmp.js:
* storage/indexeddb/resources/key-type-binary.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193867 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoModern IDB: storage/indexeddb/createIndex-after-failure.html fails.
beidson@apple.com [Wed, 9 Dec 2015 22:22:26 +0000 (22:22 +0000)]
Modern IDB: storage/indexeddb/createIndex-after-failure.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152078

Reviewed by Alex Christensen.

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/createIndex-after-failure-expected.txt:
* storage/indexeddb/resources/createIndex-after-failure.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193865 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: reproducible debug ASSERT when inspecting the inspector (WK2)
bburg@apple.com [Wed, 9 Dec 2015 22:11:41 +0000 (22:11 +0000)]
Web Inspector: reproducible debug ASSERT when inspecting the inspector (WK2)
https://bugs.webkit.org/show_bug.cgi?id=152080

Reviewed by Timothy Hatcher.

We hit an assert underneath ChildProcessProxy::addMessageReceiver because
we tried to connect the inspector page and inspected page more than once.
This relationship is already set up in the constructor of WebProcessProxy.

* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::eagerlyCreateInspectorPage):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193864 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoBaseline fast/dom/HTMLProgressElement/native-progress-bar.html for iOS
ryanhaddad@apple.com [Wed, 9 Dec 2015 22:06:22 +0000 (22:06 +0000)]
Baseline fast/dom/HTMLProgressElement/native-progress-bar.html for iOS
https://bugs.webkit.org/show_bug.cgi?id=152094

Unreviewed test gardening.

* platform/ios-simulator/fast/dom/HTMLProgressElement/native-progress-bar-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193861 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoBaseline fast/text/text-combine-shrink-on-color-change.html for iOS
ryanhaddad@apple.com [Wed, 9 Dec 2015 21:48:00 +0000 (21:48 +0000)]
Baseline fast/text/text-combine-shrink-on-color-change.html for iOS
https://bugs.webkit.org/show_bug.cgi?id=151218

Unreviewed test gardening.

* platform/ios-simulator/fast/text/text-combine-shrink-on-color-change-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193860 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoPicture element needs to respond to dynamic viewport changes.
hyatt@apple.com [Wed, 9 Dec 2015 21:42:25 +0000 (21:42 +0000)]
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.
Picture element needs to respond to dynamic viewport changes.
https://bugs.webkit.org/show_bug.cgi?id=152013
<rdar://problem/23766375>

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in fast/picture.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evalCheckingViewportDependentResults):
Add new evaluation method that adds viewport dependent results to a vector. A follow-up patch
will refactor the style resolver code to use this function instead of the special style resolver one, in order to
get rid of the code duplication. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152089.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryResult::MediaQueryResult):
* css/StyleResolver.h:
(WebCore::MediaQueryResult::MediaQueryResult): Deleted.
Move MediaQueryResult into a header since it is used in multiple places now and not just by the style
resolver.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueryList):
(WebCore::Document::checkViewportDependentPictures):
(WebCore::Document::optimizedStyleSheetUpdateTimerFired):
(WebCore::Document::applyContentDispositionAttachmentSandbox):
(WebCore::Document::addViewportDependentPicture):
(WebCore::Document::removeViewportDependentPicture):
* dom/Document.h:
The document now maintains a HashSet of viewport-dependent pictures, and it checks them whenever the
viewport changes. If their media queries stay the same, then nothing happens. If they change, then
the <picture> will go back and re-check all its <source> elements to see what the new best candidate is.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
Revised to check for viewport dependencies and to cache viewport-dependent results on the <picture> elements.
When a <picture> is found to be viewport-dependent (or not) it is also added to or removed from the document's
set of tracked pictures.

* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::HTMLPictureElement):
(WebCore::HTMLPictureElement::~HTMLPictureElement):
(WebCore::HTMLPictureElement::didMoveToNewDocument):
(WebCore::HTMLPictureElement::create):
(WebCore::HTMLPictureElement::sourcesChanged):
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture):
* html/HTMLPictureElement.h:
New caching of results and updating of the document HashSet when the picture gets destroyed or moves to
a different document.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parseAttribute):
* html/HTMLSourceElement.h:
Cache the media attribute in a parsed form. A follow-up patch will improve the <video>/<audio>
code to make use of this parsed result. Tracked by https://bugs.webkit.org/show_bug.cgi?id=152090.

LayoutTests:

* fast/picture/resources/resize-test.js: Added.
* fast/picture/viewport-resize-expected.txt: Added.
* fast/picture/viewport-resize.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193859 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoWeb Inspector: zoom with Ctrl +/- doesn't work correctly when inspector is docked
bburg@apple.com [Wed, 9 Dec 2015 21:34:52 +0000 (21:34 +0000)]
Web Inspector: zoom with Ctrl +/- doesn't work correctly when inspector is docked
https://bugs.webkit.org/show_bug.cgi?id=152076

Reviewed by Timothy Hatcher.

When computing the new width or height of the inspector, take the zoom level into
account. window.inner{Width,Height} are in document pixels, but we need to specify
device pixels to InspectorFrontendHost.

* UserInterface/Base/Main.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193858 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoTextPainter: Rename start and end position to selectionStart and selectionEnd.
zalan@apple.com [Wed, 9 Dec 2015 21:22:03 +0000 (21:22 +0000)]
TextPainter: Rename start and end position to selectionStart and selectionEnd.
https://bugs.webkit.org/show_bug.cgi?id=152088

Reviewed by Myles C. Maxfield.

They actually mean selection start/end.

No change in functionality.

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paint):
* rendering/TextPainter.cpp:
(WebCore::TextPainter::TextPainter):
(WebCore::TextPainter::paintText):
* rendering/TextPainter.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoRun atleast one simulator even if max process limit is low
commit-queue@webkit.org [Wed, 9 Dec 2015 21:14:03 +0000 (21:14 +0000)]
Run atleast one simulator even if max process limit is low
https://bugs.webkit.org/show_bug.cgi?id=152081
<rdar://problem/23819694>

Patch by Aakash Jain <aakash_jain@apple.com> on 2015-12-09
Reviewed by Alexey Proskuryakov.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193856 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoRename ftl-object-* tests to ftl-polymorphic-*.
mark.lam@apple.com [Wed, 9 Dec 2015 21:07:23 +0000 (21:07 +0000)]
Rename ftl-object-* tests to ftl-polymorphic-*.
https://bugs.webkit.org/show_bug.cgi?id=152091

Reviewed by Saam Barati.

This is because those tests are actually testing the effects of polymorphic
operands on performance, and not the correctness of operations on objects.

* js/regress/ftl-object-div-expected.txt: Removed.
* js/regress/ftl-object-div.html: Removed.
* js/regress/ftl-object-mul-expected.txt: Removed.
* js/regress/ftl-object-mul.html: Removed.
* js/regress/ftl-object-sub-expected.txt: Removed.
* js/regress/ftl-object-sub.html: Removed.
* js/regress/ftl-polymorphic-div-expected.txt: Copied from LayoutTests/js/regress/ftl-object-div-expected.txt.
* js/regress/ftl-polymorphic-div.html: Copied from LayoutTests/js/regress/ftl-object-div.html.
* js/regress/ftl-polymorphic-mul-expected.txt: Copied from LayoutTests/js/regress/ftl-object-mul-expected.txt.
* js/regress/ftl-polymorphic-mul.html: Copied from LayoutTests/js/regress/ftl-object-mul.html.
* js/regress/ftl-polymorphic-sub-expected.txt: Copied from LayoutTests/js/regress/ftl-object-sub-expected.txt.
* js/regress/ftl-polymorphic-sub.html: Copied from LayoutTests/js/regress/ftl-object-sub.html.
* js/regress/script-tests/ftl-object-div.js: Removed.
* js/regress/script-tests/ftl-object-mul.js: Removed.
* js/regress/script-tests/ftl-object-sub.js: Removed.
* js/regress/script-tests/ftl-polymorphic-div.js: Copied from LayoutTests/js/regress/script-tests/ftl-object-div.js.
* js/regress/script-tests/ftl-polymorphic-mul.js: Copied from LayoutTests/js/regress/script-tests/ftl-object-mul.js.
* js/regress/script-tests/ftl-polymorphic-sub.js: Copied from LayoutTests/js/regress/script-tests/ftl-object-sub.js.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193855 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUpdate generators' features.json to indicate that we have a spec compliant implementation
sbarati@apple.com [Wed, 9 Dec 2015 20:22:51 +0000 (20:22 +0000)]
Update generators' features.json to indicate that we have a spec compliant implementation
https://bugs.webkit.org/show_bug.cgi?id=152085

Reviewed by Joseph Pecoraro.

* features.json:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193854 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[GTK] Unreviewed GTK Gardening.
clopez@igalia.com [Wed, 9 Dec 2015 20:12:29 +0000 (20:12 +0000)]
[GTK] Unreviewed GTK Gardening.

Rebaseline media tests after r190054 and r190200.

* platform/gtk/media/audio-controls-rendering-expected.txt:
* platform/gtk/media/controls-strict-expected.txt:
* platform/gtk/media/media-controls-clone-expected.txt:
* platform/gtk/media/video-controls-rendering-expected.txt:
* platform/gtk/media/video-display-toggle-expected.txt:
* platform/gtk/media/video-empty-source-expected.txt:
* platform/gtk/media/video-no-audio-expected.txt:
* platform/gtk/media/video-volume-slider-expected.txt:
* platform/gtk/media/video-zoom-controls-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193853 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoUpdate features.json w.r.t tail calls
sbarati@apple.com [Wed, 9 Dec 2015 19:58:28 +0000 (19:58 +0000)]
Update features.json w.r.t tail calls
https://bugs.webkit.org/show_bug.cgi?id=152072

Reviewed by Michael Saboff.

* features.json:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193851 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[EFL] Need to change expectation result in ewk_settings_offline_web_application_cache...
gyuyoung.kim@webkit.org [Wed, 9 Dec 2015 19:20:49 +0000 (19:20 +0000)]
[EFL] Need to change expectation result in ewk_settings_offline_web_application_cache_enabled API test
https://bugs.webkit.org/show_bug.cgi?id=152063

Reviewed by Csaba Osztrogonác.

Expect false initial value of ewk_settings_offline_web_application_cache_enabled_get()
because r193812 didn't enable it by default.

* UIProcess/API/efl/tests/test_ewk2_settings.cpp:
(TEST_F):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193847 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[ThreadedCompositor] Add support for HiDPI
yoon@igalia.com [Wed, 9 Dec 2015 18:52:16 +0000 (18:52 +0000)]
[ThreadedCompositor] Add support for HiDPI
https://bugs.webkit.org/show_bug.cgi?id=152071

Reviewed by Carlos Garcia Campos.

* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::setDeviceScaleFactor): Added to receive the
device scale factor from the layer tree host.
(WebKit::ThreadedCompositor::renderLayerTree):
Apply device scale factor before rendering the page.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged):
Send a updated device scale factor to the compositing thread.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193844 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[CoordinatedGraphics] Remove unnecessary guards in CoordinatedDrawingArea
ryuan.choi@navercorp.com [Wed, 9 Dec 2015 18:32:22 +0000 (18:32 +0000)]
[CoordinatedGraphics] Remove unnecessary guards in CoordinatedDrawingArea
https://bugs.webkit.org/show_bug.cgi?id=152068

Reviewed by Gyuyoung Kim.

CoordinatedDrawingArea is only for UI side compositor of CoordinatedGraphics.
So, COORDINATED_GRAPHICS_MULTIPROCESS guards are not necessary.
This patch also removes COORDINATED_GRAPHICS_MULTIPROCESS guards from DrawingAreaImpl
because of same reason.

* UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp:
(WebKit::CoordinatedDrawingAreaProxy::CoordinatedDrawingAreaProxy): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
(WebKit::CoordinatedDrawingArea::CoordinatedDrawingArea): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
* WebProcess/WebPage/DrawingAreaImpl.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193843 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agowe should emit op_watchdog after op_enter
sbarati@apple.com [Wed, 9 Dec 2015 18:31:24 +0000 (18:31 +0000)]
we should emit op_watchdog after op_enter
https://bugs.webkit.org/show_bug.cgi?id=151972

Reviewed by Mark Lam.

This also solves the issue of watchdog not being
observed when we loop purely through tail calls.

* API/tests/ExecutionTimeLimitTest.cpp:
(testExecutionTimeLimit):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitProfiledOpcode):
(JSC::BytecodeGenerator::emitEnter):
(JSC::BytecodeGenerator::emitLoopHint):
* bytecompiler/BytecodeGenerator.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193842 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoAX: [GTK] Anonymous render block flow elements should be exposed as ATK_ROLE_SECTION...
jdiggs@igalia.com [Wed, 9 Dec 2015 18:24:35 +0000 (18:24 +0000)]
AX: [GTK] Anonymous render block flow elements should be exposed as ATK_ROLE_SECTION; not ATK_ROLE_PANEL
https://bugs.webkit.org/show_bug.cgi?id=152070

Reviewed by Mario Sanchez Prada.

Source/WebCore:

Map the element to WebCore AccessibilityRole DivRole for GTK. This is being
done in the shared layer rather than in the platform layer because we want all
subsequent logic to treat anonymous render block flow elements as divs.

No new tests. We already have sufficient test coverage. The expectations
been updated accordingly.

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

LayoutTests:

* platform/gtk/accessibility/deleting-iframe-destroys-axcache-expected.txt: Added.
* platform/gtk/accessibility/gtk/media-controls-panel-title-expected.txt: Added.
* platform/gtk/accessibility/gtk/replaced-objects-in-anonymous-blocks-expected.txt: Added.
* platform/gtk/accessibility/image-link-expected.txt: Updated
* platform/gtk/accessibility/image-with-alt-and-map-expected.txt: Updated.
* platform/gtk/accessibility/lists-expected.txt: Updated.
* platform/gtk/accessibility/media-emits-object-replacement-expected.txt: Updated.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193841 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoform.elements should reflect the element ordering after the HTML tree builder algorithm
commit-queue@webkit.org [Wed, 9 Dec 2015 18:19:08 +0000 (18:19 +0000)]
form.elements should reflect the element ordering after the HTML tree builder algorithm
https://bugs.webkit.org/show_bug.cgi?id=148870
rdar://problem/22589879

Patch by Keith Rollin <krollin@apple.com> on 2015-12-09
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline existing test.

* web-platform-tests/html/semantics/forms/the-form-element/form-elements-nameditem-02-expected.txt:

Source/WebCore:

form.elements should return form-associated elements in tree order.
However, when presented with an HTML fragment like the following,
forms.elements is not built in tree order. Instead, the elements
appear in forms.element in the same order they appear in the HTML --
that is in the same order as they are parsed.

<form id=form>
    <table>
        <tr>
            <td><input type="radio" name="radio1" id="r1" value=1></td>
            <td><input type="radio" name="radio2" id="r2" value=2></td>
            <input type="radio" name="radio0" id="r0" value=0>
        </tr>
    </table>
</form>

The reason why elements appear in forms.elements in parse order is
because they register themselves with the designated form when they
are created. At this time, they are not in the DOM tree, so the form
can only assume that the element will be appended to the DOM tree,
with the result that it records the elements in the HTML fragment
above as [r1, r2, r0].

However, it's not always the case that the newly-created element will
be appended to the current tree. In the HTML fragment above, the r0
input element is hoised out of the table element. It ends up being the
preceding sibling of the table element, with the result that the
actual tree-order of the input elements is [r0, r1, r2].

Because the problem is due to registering form-associated elements
with the form *before* the elements are added to the DOM tree, the
solution is to defer that registration until afterwards. With the new
element in the tree, the form can now use its current location in the
tree to correctly place the element in form.elements.

Existing tests now pass:
- imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-elements-nameditem-02-html

* html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::FormAssociatedElement):
(WebCore::FormAssociatedElement::insertedInto):
(WebCore::FormAssociatedElement::removedFrom):
(WebCore::FormAssociatedElement::formRemovedFromTree):
(WebCore::FormAssociatedElement::formWillBeDestroyed):
* html/FormAssociatedElement.h:
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::HTMLFormControlElement):
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::insertedInto):
(WebCore::HTMLImageElement::removedFrom):
* html/HTMLImageElement.h:
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::HTMLObjectElement):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193840 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoReplacing Yosemite flag with Release flag for two flaky xmlhttprequest tests.
ryanhaddad@apple.com [Wed, 9 Dec 2015 17:48:36 +0000 (17:48 +0000)]
Replacing Yosemite flag with Release flag for two flaky xmlhttprequest tests.
https://bugs.webkit.org/show_bug.cgi?id=151729

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193838 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[ThreadedCompositor] Support HTML5 Video
yoon@igalia.com [Wed, 9 Dec 2015 17:37:29 +0000 (17:37 +0000)]
[ThreadedCompositor] Support HTML5 Video
https://bugs.webkit.org/show_bug.cgi?id=143301

Reviewed by Žan Doberšek.

This patch implements HTML5 Video supports in Threaded Compositor.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
Added to support GStreamer GL by ensuring unmapping of the swapped
GstVideoFrame performed at GStreamer GL's gl thread.
(WebCore::MediaPlayerPrivateGStreamerBase::updateTexture):
Modified to upload decoded frame to the given texture instead of
creating a texture itself because we should use a texture from the
proxy when we are using the threaded compositor.
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
Implements two ways to send a texture from GStreamer to the compositor.
1. If we are not using GStreamer GL, we are going to acquire a free texture
from a TextureMapperPlatformLayerProxy and upload the decoded frame to the
texture. This should be done at the compositing thread because we
don't have a Gst's GL thread.
2. If we are using GStreamer GL, we map a texture for the given frame
and passes it to the compositing thread. The mapped frame will be
freed if it is swapped out or the layer is removed.

(WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper):
Modified to aquire a new texture itself.

* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
Adds a way to pass a function to the compositing thread to allocate /
upload textures at the compositing thread.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193836 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoFixed broken link: https://webkit.org/old/security/security-group-members.html
jond@apple.com [Wed, 9 Dec 2015 17:34:04 +0000 (17:34 +0000)]
link: https://webkit.org/old/security/security-group-members.html
https://bugs.webkit.org/show_bug.cgi?id=152010

Reviewed by Timothy Hatcher.

* .htaccess:
* security-policy.md:
* wp-content/themes/webkit/style.css:
(article h4):
(article h5):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193835 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoMarking inspector/debugger/command-line-api-exception.html as flaky on Mac
ryanhaddad@apple.com [Wed, 9 Dec 2015 16:54:37 +0000 (16:54 +0000)]
Marking inspector/debugger/command-line-api-exception.html as flaky on Mac
https://bugs.webkit.org/show_bug.cgi?id=152029

Unreviewed test gardening.

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193834 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoFixed function call reference.
jond@apple.com [Wed, 9 Dec 2015 15:41:54 +0000 (15:41 +0000)]
Fixed function call reference.

* wp-content/themes/webkit/scripts/global.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193833 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[Streams API] pipeThrough test failing
calvaris@igalia.com [Wed, 9 Dec 2015 15:34:28 +0000 (15:34 +0000)]
[Streams API] pipeThrough test failing
https://bugs.webkit.org/show_bug.cgi?id=152061

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/streams-api/readable-streams/pipe-through-expected.txt: Expectations.

Source/WebCore:

Test: imported/w3c/web-platform-tests/streams-api/readable-streams/pipe-through.html

* Modules/streams/ReadableStream.js:
(pipeThrough): Mimic destructuring for the streams parameter.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoAX: [GTK] Remove duplicate/platform media-emits-object-replacement.html and move...
jdiggs@igalia.com [Wed, 9 Dec 2015 15:01:26 +0000 (15:01 +0000)]
AX: [GTK] Remove duplicate/platform media-emits-object-replacement.html and move expectations where they belong
https://bugs.webkit.org/show_bug.cgi?id=152064

Unreviewed test gardening.

* accessibility/gtk/media-emits-object-replacement.html: Removed.
* platform/gtk/accessibility/media-emits-object-replacement-expected.txt: Renamed from LayoutTests/accessibility/gtk/media-emits-object-replacement-expected.txt.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193831 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[GTK] Crash in WebProcess when loading large content with custom URI schemes
mario@webkit.org [Wed, 9 Dec 2015 14:52:46 +0000 (14:52 +0000)]
[GTK] Crash in WebProcess when loading large content with custom URI schemes
https://bugs.webkit.org/show_bug.cgi?id=144262

Reviewed by Carlos Garcia Campos.

Source/WebKit2:

Properly handle scenarios where errors happen after reading the first
chunk of data coming from the GInputStream provided by the application.

* UIProcess/API/gtk/WebKitWebContextPrivate.h:
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextIsLoadingCustomProtocol): New, checks whether a load
is still in progress, after the startLoading method has been called.
* UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
(webkitURISchemeRequestReadCallback): Early return if the stream has been
cancelled on finish_error, so that we make sure we don't keep on reading
the GInputStream after that point.
(webkit_uri_scheme_request_finish_error): Don't send a didFailWithError
message to the Network process if the load is not longer in progress.
* Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp:
(WebKit::CustomProtocolManagerImpl::didFailWithError): Handle the case where
an error is notified from the UI process after the first chunk has been read.
(WebKit::CustomProtocolManagerImpl::didReceiveResponse): Handle the case where
data might no longer be available if an error happened even before this point.
* WebProcess/soup/WebKitSoupRequestInputStream.h:
* WebProcess/soup/WebKitSoupRequestInputStream.cpp:
(webkitSoupRequestInputStreamDidFailWithError): Notify the custom GInputStream
that we no longer want to keep reading data in chunks due to a specific error.
(webkitSoupRequestInputStreamReadAsync): Early finish the GTask with a specific
error whenever webkitSoupRequestInputStreamDidFailWithError() has been called.

Tools:

Added new unit test to check the additional scenarios we now
handle for custom URI schemes.

* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:
(generateHTMLContent): New helper function to generate big enough content.
(testWebContextURIScheme): New unit test.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193830 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoBad position of large operators inside an munderover element
fred.wang@free.fr [Wed, 9 Dec 2015 14:46:11 +0000 (14:46 +0000)]
Bad position of large operators inside an munderover element
https://bugs.webkit.org/show_bug.cgi?id=151916

Reviewed by Alejandro G. Castro.

Source/WebCore:

Test: mathml/opentype/large-operators-munderover.html

* rendering/mathml/RenderMathMLOperator.h:
(WebCore::RenderMathMLOperator::isVertical): Expose the direction of the operator.
* rendering/mathml/RenderMathMLUnderOver.cpp:
(WebCore::RenderMathMLUnderOver::layout): Remove call to horizontal stretching for vertical operators.

LayoutTests:

* mathml/opentype/large-operators-munderover-expected.txt: Added.
* mathml/opentype/large-operators-munderover.html: Added.

Add a test to verify the position and size of a large operator used as an munderover base.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193829 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years ago[TexMap] TextureMapperTiledBackingStore should notify the ImageObserver of the data...
zandobersek@gmail.com [Wed, 9 Dec 2015 14:03:34 +0000 (14:03 +0000)]
[TexMap] TextureMapperTiledBackingStore should notify the ImageObserver of the data access
https://bugs.webkit.org/show_bug.cgi?id=152053

Reviewed by Martin Robinson.

TextureMapperTiledBackingStore should call ImageObserver::didDraw() on the Image's
observer after updating the tile with the Image's data. This way the CachedImage
(i.e. the observer) can mark the data access with the current timestamp, avoiding
removing the decoded data in the very near future during a cache purge.

* platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:
(WebCore::TextureMapperTiledBackingStore::updateContentsFromImageIfNeeded):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5 years agoSource/WebKit2:
ryuan.choi@navercorp.com [Wed, 9 Dec 2015 14:00:03 +0000 (14:00 +0000)]
Source/WebKit2:
[CoordinatedGraphics][EFL] Fix unhandled web process message when launching MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=152048

Reviewed by Gyuyoung Kim.

WebPage should be initialized before updating preferences.

* UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
(WKViewInitialize): Deleted.
* UIProcess/API/C/CoordinatedGraphics/WKView.h:
* UIProcess/API/efl/EwkView.cpp:
(EwkView::EwkView):
Calls WKViewSetIsActive instead of WKViewInitialize not to change the behavior
of EFL port.
* UIProcess/CoordinatedGraphics/WebView.cpp:
(WebKit::WebView::WebView):
Initialize just before creating WebPage because there is not use case to separate
initializing WebPage from creating in CoordinatedGraphics.
(WebKit::WebView::initialize): Deleted.
* UIProcess/CoordinatedGraphics/WebView.h:

Tools:
[EFL] Fix unhandled web process message when launching MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=152048

Reviewed by Gyuyoung Kim.

* TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@193827 268f45cc-cd09-0410-ab3c-d52691b4dbfc