[GTK] REGRESSION(r166239): The ld version script is not being used
https://bugs.webkit.org/show_bug.cgi?id=135694

Reviewed by Martin Robinson.

.:

Move the symbols filter file from Tools/gtk to Source/cmake and rename
it as gtksymbols.filter. Also updated it, since some of the symbols
exported were renamed.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/gtksymbols.filter: Renamed from Tools/gtk/symbols.filter.

Source/WebKit2:

* CMakeLists.txt: Add VERSION_SCRIPT to WebKit2 link flags if present.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172377 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Update HashTable's operator= after r172167 per review comments

* wtf/HashTable.h:
Update the type as suggested by Darin.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172378 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: new glyphs are visible on OS X 10.9 builds
https://bugs.webkit.org/show_bug.cgi?id=135743

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Images/Legacy/UserInputPrompt.svg: Removed.
* UserInterface/Images/Legacy/UserInputPromptPrevious.svg: Removed.
* UserInterface/Images/Legacy/UserInputResult.svg: Removed.
Removed images that were not used.

* UserInterface/Views/DashboardContainerView.css:
(body.mac-platform.legacy .dashboard-container .advance-arrow):
* UserInterface/Views/DebuggerDashboardView.js:
(WebInspector.DebuggerDashboardView):
* UserInterface/Views/FolderIcon.css:
(body.mac-platform.legacy .folder-icon .icon):
* UserInterface/Views/HierarchicalPathComponent.css:
(body.mac-platform.legacy .hierarchical-path-component > .selector-arrows):
* UserInterface/Views/LogContentView.js:
(WebInspector.LogContentView):
Use legacy images.

* UserInterface/Views/NavigationSidebarPanel.css:
(.navigation-sidebar-panel-content-tree-outline:focus .item.selected .subtitle):
Fix color for selected subtitle.

* UserInterface/Views/TimelineSidebarPanel.js:
(WebInspector.TimelineSidebarPanel):
Use legacy images.

Source/WebKit/mac:

* WebCoreSupport/WebInspectorClient.mm:
(-[WebInspectorWindowController window]): Use 10100 instead of 1090 for the version.

Source/WebKit2:

* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::createInspectorWindow): Use 10100 instead of 1090 for the version.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172379 268f45cc-cd09-0410-ab3c-d52691b4dbfc
JSC Lexer is allowing octals 08 and 09 in strict mode functions
https://bugs.webkit.org/show_bug.cgi?id=135704

Patch by Diego Pino Garcia <dpino@igalia.com> on 2014-08-10
Reviewed by Oliver Hunt.

Return syntax error ("Decimal integer literals with a leading zero are
forbidden in strict mode") if a number starts with 0 and is followed
by a digit.

* parser/Lexer.cpp:
(JSC::Lexer<T>::lex):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172380 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Destructuring assignment in a var declaration list incorrectly consumes subsequent variable initialisers
https://bugs.webkit.org/show_bug.cgi?id=135773

Reviewed by Michael Saboff.

Source/JavaScriptCore:

We should be using parseAssignment expression in order to get the correct
precedence.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseVarDeclarationList):

LayoutTests:

Add new tests.

* js/destructuring-assignment-expected.txt:
* js/script-tests/destructuring-assignment.js:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172381 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Refactor ServiceOverlayController in preparation for fading between highlights
https://bugs.webkit.org/show_bug.cgi?id=135787
<rdar://problem/17935736>

Reviewed by Brady Eidson.

Rework ServicesOverlayController so that we always keep a set of generic
"potential highlights", which are refcounted Highlight objects and
wrap a DDHighlightRef, as well as a type (Selection or TelephoneNumber),
Range (only used in the case of TelephoneNumber), and potentially more
things in the future (like, say, fade state!).

We eagerly update the list of potential highlights when the selection or set
of detected telephone numbers changes, and use this information to install
or uninstall the page overlay as needed.

When we need to recompute the "active" highlight from this set (for example,
we need to handle a mouse event or paint the highlight), we look through
the set of potential highlights and decide. This moves the "active" highlight
decision logic into one small and confined place.

* WebProcess/WebPage/ServicesOverlayController.h:
(WebKit::ServicesOverlayController::Highlight):
Add the new aforementioned refcounted Highlight class.
Rename m_lastHoveredHighlightChangeTime to m_lastActiveHighlightChangeTime.
Make m_webPage a reference.
The rest is just added/removed/adjusted functions for the refactoring.

(WebKit::TelephoneNumberData::TelephoneNumberData): Deleted.
* WebProcess/WebPage/mac/ServicesOverlayController.mm:
(WebKit::ServicesOverlayController::Highlight::createForSelection):
(WebKit::ServicesOverlayController::Highlight::createForTelephoneNumber):
Create Highlights for the two different highlight types.

(WebKit::ServicesOverlayController::ServicesOverlayController):
(WebKit::ServicesOverlayController::willMoveToWebPage):
Our WebPage pointer is always valid because it owns us; don't clear it.
We need to keep it around so that we can uninstall the overlay and
install it again later, anyway.

(WebKit::ServicesOverlayController::selectionRectsDidChange):
(WebKit::ServicesOverlayController::selectedTelephoneNumberRangesChanged):
When selection rects or detected telephone numbers change, rebuild potential highlights.
This will have the side-effect of installing the overlay if needed.

(WebKit::ServicesOverlayController::mouseIsOverHighlight):
Make this function take a Highlight instead of a DDHighlightRef.

(WebKit::ServicesOverlayController::remainingTimeUntilHighlightShouldBeShown):
Make this function take a Highlight instead of a DDHighlightRef.

(WebKit::ServicesOverlayController::drawHighlight):
Make this function take a Highlight instead of a DDHighlightRef.
There's no reason to do the translation separately from the layer blit,
also allowing us to avoid the StateSaver.

(WebKit::ServicesOverlayController::drawRect):
drawRect now always paints the active highlight, instead of duplicating
logic about which highlight should be active.
Also, it will update the active highlight before painting.
We no longer need to re-determine whether the active highlight's phone
number range is still a valid phone number range, because we rebuild
the potential highlights whenever the set of phone number ranges changes.

(WebKit::ServicesOverlayController::clearActiveHighlight):
Mostly an adoption of new names.

(WebKit::ServicesOverlayController::removeAllPotentialHighlightsOfType):
Run through the list of potential highlights and remove any of the given type.
The two highlight building functions use this helper to clear the old ones before building.

(WebKit::ServicesOverlayController::buildPhoneNumberHighlights):
(WebKit::ServicesOverlayController::buildSelectionHighlight):
Rebuild the list of potential highlights, replacing all highlights of
the given type with new ones.

(WebKit::ServicesOverlayController::hasRelevantSelectionServices):
Factor out the code that decides whether our current selection is
viable for servicing based on whether we have plain-text and/or rich-text services.

(WebKit::ServicesOverlayController::didRebuildPotentialHighlights):
When rebuilding potential highlights, if we have no potential highlights at all,
uninstall the page overlay; we don't need mouse tracking and don't need to
paint anything. This improves memory use and compositing performance significantly,
where previously we were leaving the overlay up forever after creating it.

If we have either detected telephone numbers or relevant selection services,
create and install the overlay if it doesn't already exist.

(WebKit::ServicesOverlayController::createOverlayIfNeeded):
This just moved from elsehwere, except that it now uses FadeMode::DoNotFade.
It doesn't make sense to fade on install/uninstall (which happens even before hover)
but not on changing the active highlight; fading will be re-addressed in the next patch.

(WebKit::ServicesOverlayController::highlightsAreEquivalent):
Determine whether two highlights are equivalent. While we may have
created a new Highlight at rebuild time, if two telephone number
highlights have equivalent ranges, there's no need to 'transition' to the new one.

(WebKit::ServicesOverlayController::determineActiveHighlight):
Run through the list of services, and try to find one that is hovered.
We prefer telephone number highlights to selection highlights, and
we will never make a selection highlight active if it is both
not serviceable and there are no telephone numbers to show in the combined menu.
This is the centralized location for determination of which highlight
should be considered active. If the active highlight changed, update
the time since last change and cancel the mouse-down tracking.

(WebKit::ServicesOverlayController::mouseEvent):
Adjust some comments to be more explanatory.
A bunch of code moved out of here and into determineActiveHighlight.

(WebKit::ServicesOverlayController::handleClick):
Adjust to take a reference and use Highlight instead of DDHighlightRef.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172382 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Yelp phone number highlights often disappear
https://bugs.webkit.org/show_bug.cgi?id=135789
<rdar://problem/17971057>

Reviewed by Brady Eidson.

Since selectedTelephoneNumberRangesChanged doesn't provide an associated
Frame, an incoming selectedTelephoneNumberRangesChanged from a subframe
would overwrite ServicesOverlayController's cached (and potentially active)
telephone number highlights.

This happens a lot on Yelp, because they have many subframes which are
doing layout on a regular basis.

* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::selectedTelephoneNumberRangesChanged):
* WebProcess/WebCoreSupport/WebEditorClient.h:
Adjust to the new (lack of) arguments.

* WebProcess/WebPage/ServicesOverlayController.h:
* WebProcess/WebPage/mac/ServicesOverlayController.mm:
(WebKit::ServicesOverlayController::selectedTelephoneNumberRangesChanged):
Adjust logging; we can revisit it later.

(WebKit::ServicesOverlayController::buildPhoneNumberHighlights):
When building phone number highlights, walk the Frame tree and retrieve
them from all of the Editors.

(WebKit::ServicesOverlayController::didRebuildPotentialHighlights):
(WebKit::ServicesOverlayController::telephoneNumberRangesForFocusedFrame):
(WebKit::ServicesOverlayController::determineActiveHighlight):
(WebKit::ServicesOverlayController::handleClick):
Retrieve the detected telephone number ranges from the focused frame
when combining telephone numbers with selection services.
This ensures that we don't show combined phone number highlights from other frames.

* editing/Editor.cpp:
(WebCore::Editor::scanSelectionForTelephoneNumbers):
(WebCore::Editor::clearDataDetectedTelephoneNumbers): Deleted.
* editing/Editor.h:
(WebCore::Editor::detectedTelephoneNumberRanges):
* page/EditorClient.h:
(WebCore::EditorClient::selectedTelephoneNumberRangesChanged):
Cache and expose detected telephone number ranges on Editor.
Change selectedTelephoneNumberRangesChanged to take no arguments; it's
just a notification now.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove inputSpeech.png
https://bugs.webkit.org/show_bug.cgi?id=135771

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-08-10
Reviewed by Andreas Kling.

* Resources/inputSpeech.png: Removed.
* WebCore.xcodeproj/project.pbxproj:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172384 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] No IPC messages are sent when building WebKitGTK+ with VERSION_SCRIPT
https://bugs.webkit.org/show_bug.cgi?id=135760

Reviewed by Philippe Normand.

The problem is that the threading initialization is failing
because there are two copies of WTF, one in libjavascriptcoregtk
and the other in libwebkit2gtk. When WebKit2 is initialized in the
UI process, JSC::initializeThreading() is called first and then
WTF::initializeMainThread(). The former is calling
ThreadIdentifierData::initializeOnce() initializing the
ThreadIdentifierData::m_key symbol in libjavascriptcoregtk, while
the latter is using the ThreadIdentifierData API from libwebkit2gtk
that hasn't been initialized.

* CMakeLists.txt: Do not add WTF to the list of WebKit2 libraries,
WebKit2 already depends on JavaScriptCore that already links to WTF.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172385 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed. Fix GTK+ make distcheck.

* gtk/manifest.txt: Remove Source/WebCore/Resources/inputSpeech.png.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172386 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.5.2 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

* gtk/NEWS: Add release notes for 2.5.2.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172387 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Adds stubs for all subtle crypto algorithm implemntations
https://bugs.webkit.org/show_bug.cgi?id=133316

Patch by Eduardo Lima Mitev <elima@igalia.com> on 2014-08-11
Reviewed by Philippe Normand.

.:

* Source/cmake/OptionsGTK.cmake: Add ENABLE_SUBTLE_CRYPTO option
* Source/cmake/WebKitFeatures.cmake: Add ENABLE_SUBTLE_CRYPTO option
* Source/cmakeconfig.h.cmake: Define ENABLE_SUBTLE_CRYPTO

Source/WebCore:

No new tests since no new functionality has been added.

* CMakeLists.txt: Add subtle crypto 'algorithms' and 'parameters' dirs to WebCore incuded dirs
* PlatformGTK.cmake:  Add subtle crypto sources to WebCore target
* crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp: Added.
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
* crypto/gtk/CryptoAlgorithmAES_KWGtk.cpp: Added.
(WebCore::CryptoAlgorithmAES_KW::platformEncrypt):
(WebCore::CryptoAlgorithmAES_KW::platformDecrypt):
* crypto/gtk/CryptoAlgorithmHMACGtk.cpp: Added.
(WebCore::CryptoAlgorithmHMAC::platformSign):
(WebCore::CryptoAlgorithmHMAC::platformVerify):
* crypto/gtk/CryptoAlgorithmRSAES_PKCS1_v1_5Gtk.cpp: Added.
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt):
* crypto/gtk/CryptoAlgorithmRSASSA_PKCS1_v1_5Gtk.cpp: Added.
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify):
* crypto/gtk/CryptoAlgorithmRSA_OAEPGtk.cpp: Added.
(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):
* crypto/gtk/CryptoAlgorithmRegistryGtk.cpp: Added.
(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
* crypto/gtk/CryptoDigestGtk.cpp: Added.
(WebCore::CryptoDigest::CryptoDigest):
(WebCore::CryptoDigest::~CryptoDigest):
(WebCore::CryptoDigest::create):
(WebCore::CryptoDigest::addBytes):
(WebCore::CryptoDigest::computeHash):
* crypto/gtk/CryptoKeyRSAGtk.cpp: Added.
(WebCore::CryptoKeyRSA::CryptoKeyRSA):
(WebCore::CryptoKeyRSA::create):
(WebCore::CryptoKeyRSA::~CryptoKeyRSA):
(WebCore::CryptoKeyRSA::restrictToHash):
(WebCore::CryptoKeyRSA::isRestrictedToHash):
(WebCore::CryptoKeyRSA::keySizeInBits):
(WebCore::CryptoKeyRSA::buildAlgorithmDescription):
(WebCore::CryptoKeyRSA::exportData):
(WebCore::CryptoKeyRSA::generatePair):
* crypto/gtk/SerializedCryptoKeyWrapGtk.cpp: Added.
(WebCore::getDefaultWebCryptoMasterKey):
(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):
* crypto/keys/CryptoKeyRSA.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172389 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed fix after r172348.

* platform/graphics/cairo/BitmapImageCairo.cpp:
(WebCore::BitmapImage::BitmapImage): Initialize m_minimumSubsamplingLevel to 0.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172390 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Fix debug build after r172389.

Patch by Eduardo Lima Mitev <elima@igalia.com> on 2014-08-11
Rubber-stamped by Philippe Normand.

* crypto/gtk/CryptoKeyRSAGtk.cpp:
(WebCore::CryptoKeyRSA::exportData): Remove spurious ASSERT from
stub. It will be added back along with the real implementation of
the method.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172391 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, EFL build fix since r172385.

* PlatformEfl.cmake:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172392 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Adds dependency on GnuTLS 3.0+ for the implementation of subtle crypto algorithms
https://bugs.webkit.org/show_bug.cgi?id=133317

.:

GnuTLS is already an indirect dependency through libsoup -> glib-networking.

Patch by Eduardo Lima Mitev <elima@igalia.com> on 2014-08-11
Reviewed by Philippe Normand.

No new tests since no new functionality has been added.

* Source/cmake/OptionsGTK.cmake: Adds search for required GnuTLS package

Source/WebCore:

Patch by Eduardo Lima Mitev <elima@igalia.com> on 2014-08-11
Reviewed by Philippe Normand.

No new tests since no new functionality has been added.

* PlatformGTK.cmake: Adds GnuTLS libs and included dirs to WebCore targets

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172393 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, rolling out r172393.
https://bugs.webkit.org/show_bug.cgi?id=135796

discussion needed about GnuTLS version bump on the bots
(Requested by philn on #webkit).

Reverted changeset:

https://bugs.webkit.org/show_bug.cgi?id=133317
http://trac.webkit.org/changeset/172393

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Services with UI] Action menu arrow hit testing is sometimes wrong.
https://bugs.webkit.org/show_bug.cgi?id=135776
<rdar://problem/17837670>

Reviewed by Brady Eidson.

There was a problem in the algorithm that stitches together the selection rectangles
to be given to Data Detectors API.
This change adds a new function that stiches together all the rects contributing to the
first line, all the rects contributing to the last line and all the ones in the middle.
This way we can have a maximum of 3 non overlapping rectangles.

* WebProcess/WebPage/mac/ServicesOverlayController.mm:
(WebKit::stitchRects):
(WebKit::compactRectsWithGapRects):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172395 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Add a helper to avoid leaking single-fire event listeners in Promise chains
https://bugs.webkit.org/show_bug.cgi?id=135772

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

A common pattern when working with promise chains is to convert an event
handler into a promise by using a single-fire event listener with the
resolve continuation as the callback. This is fine if the event fires;
if it doesn't fire, then the event emitter permanently keeps a reference to the
this-object and the callback.

This patch adds EventListener, a proxy object for events that can be manipulated
from multiple promise callback functions. If a promise is rejected, the catch
block can disconnect any event listeners set up earlier in the promise chain.

This patch also reimplements EventListenerSet to use multiple EventListeners,
since they share the same logic to uniformly handle Inspector and DOM events.

Test: inspector/event-listener.html
Test: inspector/event-listener-set.html

* UserInterface/Base/EventListener.js: Added.
(WebInspector.EventListener):
(WebInspector.EventListener.prototype.this._callback):
(WebInspector.EventListener.prototype.connect):
(WebInspector.EventListener.prototype.disconnect):
* UserInterface/Base/EventListenerSet.js: Update license block.
(WebInspector.EventListenerSet.prototype.register):
(WebInspector.EventListenerSet.prototype.install):
(WebInspector.EventListenerSet.prototype.uninstall):
* UserInterface/Main.html: Include EventListener.
* UserInterface/Test.html: Include EventListener and EventListenerSet.

LayoutTests:

* inspector/event-listener-expected.txt: Added.
* inspector/event-listener-set-expected.txt: Added.
* inspector/event-listener-set.html: Added.
* inspector/event-listener.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172396 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Win] Adjust build script for Windows production build.
https://bugs.webkit.org/show_bug.cgi?id=135806
<rdar://problem/17978299>

Reviewed by Timothy Hatcher.

../JavaScriptCore:

* JavaScriptCore.vcxproj/copy-files.cmd: Copy file for later use
in WebInspectorUI build.

../WebCore:

* WebCore.vcxproj/copyForwardingHeaders.cmd: Copy file needed
for WebInspectorUI build.

../WebInspectorUI:

* WebInspectorUI.vcxproj/WebInspectorUI.make: Make sure target for
xcopy operation exists.
* WebInspectorUI.vcxproj/WebInspectorUI.proj: Don't create directories
we don't need, make sure the target location exists before we build.
* WebInspectorUI.vcxproj/build-webinspectorui.pl: Make sure that
production builds get the intermediary command files from the
right place.


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