Undo some erroneous changes to the Xcode scheme files from r172259.

* WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
* WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172345 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Progress towards using CMake on Mac.
https://bugs.webkit.org/show_bug.cgi?id=135662

Reviewed by Laszlo Gombos.

* CMakeLists.txt:
.:

Mavericks has a flex version of "flex 2.5.35 Apple(flex-31)" which CMake doesn't like on Mac.
* Source/cmake/WebKitFeatures.cmake:
* Source/cmakeconfig.h.cmake:
Added features that are needed by the Mac port.
* Source/cmake/OptionsMac.cmake:
Enable CSS_IMAGE_SET based on FeatureDefines.h.
Disable the FTL with CMake for now.
* Source/cmake/OptionsEFL.cmake:
* Source/cmake/OptionsGTK.cmake:
Enable subpixel layout to not conflict with FeatureDefines.h

Source/WebCore:

Added necessary include directories and idls.
* PlatformEfl.cmake:
* PlatformGTK.cmake:
Moved ImageSource.cpp and image-decoders to platform CMake files because they are not used on mac.
* PlatformMac.cmake:
Corrected some sources.
* config.h:
Added workaround for not using prefix headers with CMake.
* platform/graphics/ANGLEWebKitBridge.h:
Compile fix to find ANGLE headers while using CMake.
* platform/graphics/FormatConverter.h:
* platform/mac/NSScrollerImpDetails.h:
Removed unnecessary config.h includes.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172346 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Clean up image subsampling code, make it less iOS-specific
https://bugs.webkit.org/show_bug.cgi?id=134916

Reviewed by Dean Jackson.

Compile the image subsampling code on both Mac and iOS, and make it more platform
neutral in general. Add a setting to allow it to be enabled on Mac for testing.

The most significant changes are in ImageSourceCG and BitmapImageCG. CG's ImageSource
is no longer stateful with respect to subsampling; its functions take a SubsamplingLevel
when appropriate. CG's BitmapImage now determines which level of subsampling to use
for a given frame, storing the subsampling level in the frame data. It can replace
an aggressively subsampled frame with a less subsampled frame if necessary.

To reduce the chances of subsampling affecting rendering, BitmapImage::size() now
always returns the non-subsampled size; subsampling is strictly internal to BitmapImage.
BitmapImage::draw() takes care of scaling the srcRect for subsampled images.

iOS had a code path that enabled caching of frame metadata in BitmapImage without
actually decoding the frame; make this cross-platform.

Fix a couple of issues in the original pathc: remove a log, and ImageSource::allowSubsamplingOfFrameAtIndex()
return false.

* WebCore.exp.in: Changed signature for GraphicsContext::drawNativeImage().
* WebCore.xcodeproj/project.pbxproj: Added ImageSource.cpp, which is not built
for Cocoa but useful for reference.
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::imageSizeForRenderer): Remove iOS-specific subsampling code.
(WebCore::CachedImage::createImage): Call setAllowSubsampling() on the image if we
can get to Settings (m_loader is null for image documents).
(WebCore::CachedImage::currentFrameKnownToBeOpaque): This forced decode always
caused creation of the non-subsampled image, so remove it. There's no reason to
eagerly decode the frame here.
* loader/cache/CachedImage.h: Fix comment.
* page/Settings.cpp: Add defaultImageSubsamplingEnabled, true for iOS and false for Mac.
* page/Settings.in: Added imageSubsamplingEnabled.
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::BitmapImage): Init some more things. Default m_allowSubsampling to
true for iOS to catch images created in code paths where we can't get to Settings.
(WebCore::BitmapImage::haveFrameAtIndex): Handy helper.
(WebCore::BitmapImage::cacheFrame): Now takes the subsampling level and whether to cache
just metadata, or also the frame.
(WebCore::BitmapImage::didDecodeProperties): No need to store originalSize.
(WebCore::BitmapImage::updateSize): When we get the size for the first time, call
determineMinimumSubsamplingLevel() to choose a reasonable subsampling level which takes
platform-specific limits into account.
(WebCore::BitmapImage::dataChanged): Comment.
(WebCore::BitmapImage::ensureFrameIsCached): Take ImageFrameCaching into account.
(WebCore::BitmapImage::frameAtIndex): Choose a subsampling level given the scale,
then determine if we can use the currently cached frame, or whether we should resample.
(WebCore::BitmapImage::frameIsCompleteAtIndex): Caching m_isComplete is now done when caching
frame metadata.
(WebCore::BitmapImage::frameDurationAtIndex):
(WebCore::BitmapImage::frameHasAlphaAtIndex): The 'true' return is the safe return value.
(WebCore::BitmapImage::frameOrientationAtIndex): Caching m_orientation is now done when caching
frame metadata.
(WebCore::BitmapImage::cacheFrameInfo): Deleted.
(WebCore::BitmapImage::originalSize): Deleted.
(WebCore::BitmapImage::originalSizeRespectingOrientation): Deleted.
(WebCore::BitmapImage::currentFrameSize): Deleted.
(WebCore::BitmapImage::ensureFrameInfoIsCached): Deleted.
* platform/graphics/BitmapImage.h:
(WebCore::FrameData::FrameData):
* platform/graphics/GraphicsContext.h: No need to pass a scale param now.
* platform/graphics/ImageSource.cpp: Non-Cocoa changes.
(WebCore::ImageSource::subsamplingLevelForScale):
(WebCore::ImageSource::allowSubsamplingOfFrameAtIndex):
(WebCore::ImageSource::size):
(WebCore::ImageSource::frameSizeAtIndex):
(WebCore::ImageSource::createFrameAtIndex):
(WebCore::ImageSource::frameBytesAtIndex):
* platform/graphics/ImageSource.h: No longer stores subsampling state.
(WebCore::ImageSource::isSubsampled): Deleted.
* platform/graphics/cairo/BitmapImageCairo.cpp:
(WebCore::BitmapImage::determineMinimumSubsamplingLevel):
* platform/graphics/cg/BitmapImageCG.cpp:
(WebCore::FrameData::clear):
(WebCore::BitmapImage::BitmapImage): Init more members.
(WebCore::BitmapImage::determineMinimumSubsamplingLevel): Choose a minimum subsampling
level for the platform (subsample until the image area falls under a threshold).
(WebCore::BitmapImage::checkForSolidColor): Don't bother decoding frames if the image
is not 1x1. Also take care not to decode a non-subsampled image.
(WebCore::BitmapImage::draw): The actual bug fix is here; remove logic that
computed srcRectForCurrentFrame from m_size and m_originalSize; for some callers
srcRect was computed using the pre-subsampled size, and for others it was the subsampled size.
Instead, scale srcRect by mapping between the non-subsampled size, and the size of the CGImageRef
which is affected by subsampling.
(WebCore::BitmapImage::copyUnscaledFrameAtIndex):
* platform/graphics/cg/GraphicsContext3DCG.cpp:
(WebCore::GraphicsContext3D::ImageExtractor::extractImage): Remove #ifdeffed code.
(WebCore::GraphicsContext3D::paintToCanvas):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContext::drawNativeImage): No more weird scaling!
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::draw):
* platform/graphics/cg/ImageSourceCG.cpp:
(WebCore::ImageSource::ImageSource):
(WebCore::createImageSourceOptions): Helper that always returns a new CFDictionaryRef.
(WebCore::imageSourceOptions): If not subsampling, return the cached CFDictionaryRef, otherwise
make a new options dict and return it.
(WebCore::ImageSource::subsamplingLevelForScale): Helper that returns a subsampling level
between 0 and 3 given a scale.
(WebCore::ImageSource::isSizeAvailable): SkipMetadata is a default value for the param now.
(WebCore::ImageSource::allowSubsamplingOfFrameAtIndex): We turn off subsampling for progressive
JPEGs because of a bug, so need this to know if a frame should be subsampled.
(WebCore::ImageSource::frameSizeAtIndex): The looping to find a subsampling level is now in BitmapImageCG.
(WebCore::ImageSource::orientationAtIndex):
(WebCore::ImageSource::size): Always use a subsampling level of 0 for size().
(WebCore::ImageSource::getHotSpot):
(WebCore::ImageSource::repetitionCount):
(WebCore::ImageSource::createFrameAtIndex): The caller mapped a scale to a level.
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::frameBytesAtIndex):
(WebCore::ImageSource::imageSourceOptions): Deleted.
(WebCore::ImageSource::originalSize): Deleted.
* platform/graphics/mac/ImageMac.mm:
(WebCore::BitmapImage::invalidatePlatformData): 0 -> nullptr
* platform/graphics/wince/ImageWinCE.cpp:
(WebCore::BitmapImage::determineMinimumSubsamplingLevel):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
make clean does not work in OpenSource, fails in WebKitLibraries
https://bugs.webkit.org/show_bug.cgi?id=135734

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2014-08-08
Reviewed by David Kilzer.

Tools:

* Scripts/copy-webkitlibraries-to-product-directory:
Add a --clean switch that removes possible WebKitSystemInterface
and LLVM libraries and headers that may have been copied to the
product directory.

WebKitLibraries:

* Makefile:
Add a "clean" target that runs copy-webkitlibraries-to-product-dir
with the new --clean switch.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172349 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Uncaught Exception opening Web Inspector - TypeError: undefined is not a function - candidateObjectCookie.every
https://bugs.webkit.org/show_bug.cgi?id=135762

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2014-08-08
Reviewed by Timothy Hatcher.

* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype.treeElementMatchesCookie):
Fix a typo, the wrong object was being used.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172350 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Adjustments to CueBox CSS Width calculations.
https://bugs.webkit.org/show_bug.cgi?id=135759
<rdar://problem/17954473>.

Reviewed by Eric Carlson.

This is a followup patch that addresses some of the test failures caused by r172224.
These tests were skipped in r172253.
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateActiveCuesFontSize):
Tell the cue boxes that they need to be updated when the font size specified in the user prefs changes.

Cap width to 100%, calculate max-width in percentages instead of pixels.
* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::applyCSSProperties):

(WebCore::VTTCue::setFontSize):
Remove some unnecessary code that doesn't actually work.
Make sure to tell cuebox that it needs to be updated.

* TestExpectations:
Unskip tests media/track/track-cue-rendering-horizontal.html and media/track/track-cue-rendering-rtl.html.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172351 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: When Switching Recordings, the UI datagrids do not update to match selection
https://bugs.webkit.org/show_bug.cgi?id=135764

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2014-08-08
Reviewed by Timothy Hatcher.

* UserInterface/Views/TimelineSidebarPanel.js:
When changing the activeContentView trigger an update of the datagrids by
re-applying the filter, which will be different now that the view is different.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172352 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Gardening: fix Windows build after r172259.

Not reviewed.

* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::addMockSpeechInputResult): Deleted.
(TestRunner::setMockSpeechInputDumpRect): Deleted.
(TestRunner::startSpeechInput): Deleted.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172353 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: add debugging flag to InspectorTest for unbuffered logging to stderr
https://bugs.webkit.org/show_bug.cgi?id=135726

Reviewed by Timothy Hatcher.

Source/WebCore:

Add a bridge so that InspectorTest can synchronously log to the console.

* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::unbufferedLog): Added.
* inspector/InspectorFrontendHost.h:
* inspector/InspectorFrontendHost.idl:

Source/WebInspectorUI:

Added a flag for debugging inspector tests which will synchronously log messages.
This avoids failure modes that prevent logging from being added to the test page.

* UserInterface/Base/Test.js:
(InspectorTest.debugLog):
(InspectorTest.addResult):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172355 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Refactor getExcludedIntervals since only one LineSegment is ever returned
https://bugs.webkit.org/show_bug.cgi?id=135757

Reviewed by Zoltan Horvath.

The interface for getExcludedIntervals was designed when shape-inside
was still a thing, and it was possible for a line in a shape to have
multiple segments. shape-outside can only have one segment per line,
so this refactors the code to simplify and reflect that reality.

No new test, no behavior change.

* rendering/shapes/BoxShape.cpp:
(WebCore::BoxShape::getExcludedInterval):
(WebCore::BoxShape::getExcludedIntervals): Deleted.
* rendering/shapes/BoxShape.h:
* rendering/shapes/PolygonShape.cpp:
(WebCore::PolygonShape::getExcludedInterval):
(WebCore::PolygonShape::getExcludedIntervals): Deleted.
* rendering/shapes/PolygonShape.h:
* rendering/shapes/RasterShape.cpp:
(WebCore::RasterShape::getExcludedInterval):
(WebCore::RasterShape::getExcludedIntervals): Deleted.
* rendering/shapes/RasterShape.h:
* rendering/shapes/RectangleShape.cpp:
(WebCore::RectangleShape::getExcludedInterval):
(WebCore::RectangleShape::getExcludedIntervals): Deleted.
* rendering/shapes/RectangleShape.h:
* rendering/shapes/Shape.h:
(WebCore::LineSegment::LineSegment):
* rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::logicalLeftOffset):
(WebCore::ShapeOutsideInfo::updateDeltasForContainingBlockLine):
(WebCore::ShapeOutsideInfo::computeSegmentsForLine): Deleted.
* rendering/shapes/ShapeOutsideInfo.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172357 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Clients that request the selection services menu after WebKit2 will get one with different metrics than otherwise
https://bugs.webkit.org/show_bug.cgi?id=135765
<rdar://problem/17962180>

Reviewed by Brady Eidson.

* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::setupServicesMenu):
The menu is cached between clients, but we make adjustments to it.
We should copy it before adjusting.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172364 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WK2] Scrolling does not work inside nested frames
https://bugs.webkit.org/show_bug.cgi?id=135775
<rdar://problem/17959896>

Reviewed by Tim Horton.

Source/WebCore:

r169733 added an "isMainFrame" check in AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged.
However we have to rebuild the non-fast-scrollable region when any subframe changes,
even a deeply nested one. So always rebuild it, starting from the root frame.

Fixes scrolling on nested framesets like http://www.opengl.org/sdk/docs/man3/.

Test: platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):

LayoutTests:

Nested frameset test that dumps the scrolling tree.

* platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html: Added.
* platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172365 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[mac] Dynamically update serviceability when the set of services changes
https://bugs.webkit.org/show_bug.cgi?id=135738
<rdar://problem/17533459>

Reviewed by Brady Eidson.

* UIProcess/WebContext.cpp:
(WebKit::WebContext::createNewWebProcess):
Adopt the new universal refreshExistingServices.

(WebKit::WebContext::refreshExistingServices): Deleted.
* UIProcess/WebContext.h:
Remove WebContext::refreshExistingServices; there's no need for it.

* UIProcess/mac/ServicesController.h:
* UIProcess/mac/ServicesController.mm:
Fix the build with only public headers by including NSSharingService.h itself.
Place the NSSharingServicePicker (Details) category outside the #ifdef.
Forward-declare and possibly import NSExtension SPI.

(WebKit::ServicesController::ServicesController):
Register a callback to be notified whenever the set of services changes.
When this occurs, call refreshExistingServices. We let refreshExistingServices
coalesce updates because these notifications can come in small batches.

(WebKit::ServicesController::refreshExistingServices):
Dispatch changes in service availability to all processes in all contexts.

* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::setupServicesMenu):
Adjust the referenced rdar:// and call ServicesController::refreshExistingServices
instead of the now-removed WebContext:: variant. We can't remove this
yet because our services state can still be stale because NSServiceSharingPicker
can still sometimes lie about the current service state immediately after a change occurs;
once that is fixed, we should get rid of this as well as the refresh in Web Process creation.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172366 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement long mouse press over links. Part of 135257 - Add long mouse press gesture.
https://bugs.webkit.org/show_bug.cgi?id=135476

Patch by Peyton Randolph <prandolph@apple.com> on 2014-08-08
Reviewed by Tim Horton.

* page/EventHandler.cpp:
(WebCore::EventHandler::EventHandler):
(WebCore::EventHandler::clear): Clear long press state.
(WebCore::EventHandler::handleMousePressEvent): Start the long-press if the mouse press is a left
mouse press over a link.
(WebCore::EventHandler::eventMayStartDrag): We cannot start a drag if we've recognized a long press.
(WebCore::EventHandler::handleMouseReleaseEvent):
If we didn't recognize a long press, cancel the long press.
(WebCore::EventHandler::beginTrackingPotentialLongMousePress):
Begin the long mouse press by kicking off a timer. If the timer fires before the long press is
cancelled, the long press is recognized.
(WebCore::EventHandler::recognizeLongMousePress): Added. Trigger the long-press and disable other
actions like dragging.
(WebCore::EventHandler::cancelTrackingPotentialLongMousePress): Added. Cancel the long press by
clearing related state.
(WebCore::EventHandler::clearLongMousePressState): Added. Clear long press state.
(WebCore::EventHandler::handleLongMousePressMouseMovedEvent): Added. Cancel the long press if
the mouse moves outside a specified hysteresis interval.
(WebCore::EventHandler::handleMouseMoveEvent): Ask handleLongMousePressMouseMovedEvent whether to
return early and not update hovers, cursors, drags, etc.
(WebCore::EventHandler::dragHysteresisExceeded): Factor out the hysteresis bounds check into
mouseHysteresisExceeded().
(WebCore::EventHandler::handleDrag): Cancel long press upon starting drag.
(WebCore::EventHandler::mouseHysteresisExceeded): Added. General hysteresis function that takes an
arbitrary mouse movement threshold. Factored out from dragHysteresisExceeded.
* page/EventHandler.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172367 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Load the layout test result image diff HTML from a file, rather than having it inline in webkitpy
https://bugs.webkit.org/show_bug.cgi?id=135780

Reviewed by Dan Bates.

Tools:

Pull the HTML for the image diff file into a separate file, for easier hackability.

* Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
(TestResultWriter.write_image_diff_files):

LayoutTests:

Add image-diff-template.html and expected result (crazy, but this is what we do
for results.html too).

* fast/harness/image-diff-template-expected.txt: Added.
* fast/harness/image-diff-template.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172368 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Build fix for 32-bit.

* UIProcess/mac/ServicesController.mm:
(WebKit::ServicesController::ServicesController):
Don't dynamically refresh services in 32-bit apps. It's not possible
to write a 32-bit app with the Modern API, so this doesn't matter.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172369 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unbreak webkitpy unit tests by checking for the existence of the image diff template
file before trying to open it (as the tests do for results.html).

* Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
(TestResultWriter.write_image_diff_files):

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