Layout Test http/tests/loading/307-after-303-after-post.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=73030

Reviewed by Anders Carlsson.

Source/WebKit2:

* UIProcess/WebContext.cpp:
(WebKit::WebContext::createNewWebProcess): Added a FIXME comment.
(WebKit::WebContext::setIconDatabasePath): Don't enable m_iconDatabase if the path
is empty, meaning that the database is disabled (which is not a great way to say
that, but WebKit2 icon database doesn't support enabling/disabling cleanly).
(WebKit::WebContext::iconDatabasePath): Keep it empty if it was empty.

Tools:

* WebKitTestRunner/TestController.cpp: (WTR::TestController::initialize): Set icon
database to empty to avoid having it fetch default favicons at random times.
DumpRenderTree also disables it, and also it has a way for tests to temporarily
enable it.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177234 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement EXT_blend_minmax as a WebGL 1 extension.
https://bugs.webkit.org/show_bug.cgi?id=128974.
<rdar://problem/19195535>


Tested by:
webgl/1.0.3/conformance/extensions/ext-blend-minmax.html
fast/canvas/webgl/constants.html

Specifications for this extension:
https://www.khronos.org/registry/webgl/extensions/EXT_blend_minmax/

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSWebGLRenderingContextCustom.cpp:
(WebCore::toJS):
* html/canvas/EXTBlendMinMax.cpp: Added.
(WebCore::EXTBlendMinMax::EXTBlendMinMax):
(WebCore::EXTBlendMinMax::~EXTBlendMinMax):
(WebCore::EXTBlendMinMax::getName):
* html/canvas/EXTBlendMinMax.h: Added.
* html/canvas/EXTBlendMinMax.idl: Added.
* html/canvas/WebGLExtension.h:
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):
(WebCore::WebGLRenderingContext::validateBlendEquation):
* html/canvas/WebGLRenderingContext.h:
* html/canvas/WebGLRenderingContext.idl:
* platform/graphics/Extensions3D.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177235 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Win] Unreviewed build fix following r177235.

* WebCore.vcxproj/WebCore.vcxproj:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177236 268f45cc-cd09-0410-ab3c-d52691b4dbfc
http/tests/xmlhttprequest/workers/abort-exception-assert.html often times out
https://bugs.webkit.org/show_bug.cgi?id=139595

* TestExpectations: Mark it as such.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177237 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION (r168217): Images are cropped out during animation at jetblue.com
https://bugs.webkit.org/show_bug.cgi?id=136410
rdar://problem/18188533

Reviewed by Dean Jackson.

During GraphicsLayer flushing, for tiled layers we can compute a visible rect using
the current state of an animation, which is obtained via the AnimationController.
If that animation was running in a subframe, AnimationController could use a stale
beginAnimationUpdateTime since no-one called its beginAnimationUpdate(). That
resulted in an incorrect computation of the visible rect, resulting in missing tiles.

There are two parts to this fix. First, add an assertion that beginAnimationUpdateTime()
is being called inside an animation update block. This required moving m_beginAnimationUpdateCount
into AnimationControllerPrivate, and changes to endAnimationUpdate().

The second is adding a AnimationUpdateBlock to getAnimatedStyleForRenderer(), which
can be called outside of style resolution. We also need some in other API functions.

Testing revealed that layout can call via layoutOverflowRectForPropagation(), suggesting
that we should have an animation batch inside FrameView::layout(). In addition, a single
resolveStyle/layout should use the same animationBeginTime, so we add a batch to
updateLayoutAndStyleIfNeededRecursive().

No test because it's timing-dependent. Existing tests exercise the new assertion.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::computeRenderStyleForProperty):
* page/FrameView.cpp:
(WebCore::FrameView::layout):
(WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive):
* page/animation/AnimationController.cpp:
(WebCore::AnimationPrivateUpdateBlock::AnimationPrivateUpdateBlock):
(WebCore::AnimationPrivateUpdateBlock::~AnimationPrivateUpdateBlock):
(WebCore::AnimationControllerPrivate::AnimationControllerPrivate):
(WebCore::AnimationControllerPrivate::animationTimerFired):
(WebCore::AnimationControllerPrivate::suspendAnimationsForDocument):
(WebCore::AnimationControllerPrivate::resumeAnimationsForDocument):
(WebCore::AnimationControllerPrivate::beginAnimationUpdateTime):
(WebCore::AnimationControllerPrivate::beginAnimationUpdate):
(WebCore::AnimationControllerPrivate::endAnimationUpdate):
(WebCore::AnimationControllerPrivate::getAnimatedStyleForRenderer):
(WebCore::AnimationController::AnimationController):
(WebCore::AnimationController::notifyAnimationStarted):
(WebCore::AnimationController::pauseAnimationAtTime):
(WebCore::AnimationController::pauseTransitionAtTime):
(WebCore::AnimationController::resumeAnimationsForDocument):
(WebCore::AnimationController::startAnimationsIfNotSuspended):
(WebCore::AnimationController::beginAnimationUpdate):
(WebCore::AnimationController::endAnimationUpdate):
* page/animation/AnimationController.h:
* page/animation/AnimationControllerPrivate.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177238 268f45cc-cd09-0410-ab3c-d52691b4dbfc
fast/images/animated-gif-body-outside-viewport.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=139599

* platform/mac-wk1/TestExpectations: Mark it as such.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177239 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Unreviewed 64bit build fix.

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177240 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Keep single RefCounter to track whether any pages in a context are process suppressible
https://bugs.webkit.org/show_bug.cgi?id=139576

Reviewed by Sam Weinig.

Currently we keep separate counters in each process, and coallesce these in the
context. Instead we should have a counter in the WebContext.

Also, changed the name to better describe the state we're tracking, rather than
describing what it's currently used for. This counter will also be useful for
iOS, to better manage background state of the networking process.

* UIProcess/WebContext.cpp:
(WebKit::WebContext::WebContext):
    - initialize m_userObservablePageCounter.
* UIProcess/WebContext.h:
(WebKit::WebContext::updateProcessSuppressionState):
    - Added no-op implementation for non-cocoa platforms.
(WebKit::WebContext::userObservablePageCount):
    - Count the number of user visible (audible / visible) pages in Context.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateProccessSuppressionState):
    - WebProcessProxy::processSuppressionCounter -> WebContext::userObservablePageCount
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::didFinishLaunching):
    - moved all processs supression state tracking to the WebContext.
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::processSuppressionCounter): Deleted.
    - moved all processs supression state tracking to the WebContext.
* UIProcess/ios/WebProcessProxyIOS.mm:
(WebKit::WebProcessProxy::allPagesAreProcessSuppressible): Deleted.
(WebKit::WebProcessProxy::updateProcessSuppressionState): Deleted.
    - moved all processs supression state tracking to the WebContext.
* UIProcess/mac/WebContextMac.mm:
(WebKit::WebContext::processSuppressionEnabled):
    - no need to interate all processes; just have a single counter.
* UIProcess/mac/WebProcessProxyMac.mm:
(WebKit::WebProcessProxy::allPagesAreProcessSuppressible): Deleted.
(WebKit::WebProcessProxy::updateProcessSuppressionState): Deleted.
    - moved all processs supression state tracking to the WebContext.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177241 268f45cc-cd09-0410-ab3c-d52691b4dbfc
TextIndicator (and other view-relative subwindows) is not dismissed on zoom gesture
https://bugs.webkit.org/show_bug.cgi?id=139580
<rdar://problem/19226350>

Reviewed by Anders Carlsson.

* UIProcess/PageClient.h:
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::dismissContentRelativeChildWindows):
(WebKit::PageClientImpl::dismissDictionaryLookupPanel): Deleted.
(WebKit::PageClientImpl::dismissActionMenuPopovers): Deleted.
Merge dismissDictionaryLookupPanel and dismissActionMenuPopovers into
_dismissContentRelativeChildWindows, which also dismisses TextIndicator and the
text correction panel. Dismissal of any child windows which are anchored to
the page content now bottlenecks through this function.

(WebKit::PageClientImpl::navigationGestureDidBegin):
Dismiss all anchored subwindows when starting a navigation gesture, not
just TextIndicator and action menu popovers.

* UIProcess/API/mac/WKView.mm:
(-[WKView scrollWheel:]):
No need to dismiss TextIndicator here; we've got this covered in the more-inclusive
WebPageProxy::pageDidScroll, and will now dismiss more things.

(-[WKView mouseDown:]):
Dismiss more things.

(-[WKView viewDidMoveToWindow]):
Dismiss more things.

(-[WKView _dismissContentRelativeChildWindows]):
The aforementioned combined dismissal function.

(-[WKView magnifyWithEvent:]):
(-[WKView smartMagnifyWithEvent:]):
(-[WKView setMagnification:centeredAtPoint:]):
(-[WKView setMagnification:]):
Any time the page magnification changes, dismiss all the things.

* UIProcess/API/mac/WKViewPrivate.h:
Expose _dismissContentRelativeChildWindows instead of _dismissActionMenuPopovers;
for all existing clients, it makes more sense to dismiss all view-relative subwindows
than just a subset of them.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::pageDidScroll):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
Make use of dismissAnchoredSubwindows.

* UIProcess/mac/WKActionMenuController.h:
* UIProcess/mac/WKActionMenuController.mm:
(-[WKActionMenuController prepareForMenu:withEvent:]):
Dismiss more things.

(-[WKActionMenuController _defaultMenuItemsForDataDetectedText]):
(-[WKActionMenuController dismissActionMenuPopovers]): Deleted.
dismissActionMenuPopovers is folded into WKView's _dismissContentRelativeChildWindows.

(-[WKActionMenuController _showTextIndicator]): Deleted.
(-[WKActionMenuController _hideTextIndicator]): Deleted.
Fold _showTextIndicator and _hideTextIndicator into their only callers.
_isShowingTextIndicator was never necessary, because it's OK to change
the current TextIndicator at any time, and a newer one is always more relevant.


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