2014-05-23  Michael Saboff  <msaboff@apple.com>

        REGRESSION(r169265): sh: line 0: cd: ../.vm
        https://bugs.webkit.org/show_bug.cgi?id=133242

        Rubber stamped by Geoffrey Garen.

        Added missing shell escapes '\' required as part of previous fix.

        * Scripts/run-jsc-stress-tests:

2014-05-23  Ryosuke Niwa  <rniwa@webkit.org>

        Revert the erroneous change committed in r169286.

        * Scripts/webkitpy/performance_tests/perftest.py:
        (PerfTest._run_with_driver):

2014-05-23  Geoffrey Garen  <ggaren@apple.com>

        run-perf-tests should ignore whitespace lines when snarfing test output
        https://bugs.webkit.org/show_bug.cgi?id=133238

        Reviewed by Ryosuke Niwa.

        Required for PerformanceTests/Canvas/terrain.html.

        * Scripts/webkitpy/performance_tests/perftest.py:
        (PerfTest._run_with_driver):
        (PerfTest):

2014-05-23  Michael Saboff  <msaboff@apple.com>

        REGRESSION (r169241) Crash running run-jsc-stress-tests on EFL ARM
        https://bugs.webkit.org/show_bug.cgi?id=133223

        Reviewed by Geoffrey Garen.

        Change runAndMonitorTestRunnerCommand() to convert the *cmd argument to a
        string before calling IO.popen() to work with older versions of ruby.
        Changed the remote path in runShellTestRunner to quote the command
        string we want to run via ssh so that it will work correctly with array
        to string conversion needed for popen.

        * Scripts/run-jsc-stress-tests:

2014-05-23  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        Remove 'css-shaders' option from the build-webkit
        https://bugs.webkit.org/show_bug.cgi?id=133212

        Reviewed by Daniel Bates.

        Original CSS shaders removed in r162644.

        * Scripts/webkitperl/FeatureList.pm:

2014-05-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] GObject DOM bindings API break test should fail in the bots when the command fails to run
        https://bugs.webkit.org/show_bug.cgi?id=133209

        Reviewed by Sergio Villar Senin.

        Return FAILURE when the command failed to run.

        * BuildSlaveSupport/build.webkit.org-config/master.cfg:
        (RunGtkWebKitGObjectDOMBindingsAPIBreakTests.evaluateCommand):

2014-05-23  Alberto Garcia  <berto@igalia.com>

        [GTK] Install libharfbuzz-dev in Tools/gtk/install-dependencies
        https://bugs.webkit.org/show_bug.cgi?id=133210

        Reviewed by Carlos Garcia Campos.

        * gtk/install-dependencies:

2014-05-22  Benjamin Poulain  <bpoulain@apple.com>

        Add Yusuke Suzuki to the list of contributors (for real)

        Wrong section...

        * Scripts/webkitpy/common/config/contributors.json:

2014-05-22  Benjamin Poulain  <bpoulain@apple.com>

        Add Yusuke Suzuki to the list of contributors

        * Scripts/webkitpy/common/config/contributors.json:

2014-05-22  Michael Saboff  <msaboff@apple.com>

        Eliminate n/total progress update from run-jsc-stress-tests output to file
        https://bugs.webkit.org/show_bug.cgi?id=133191

        Reviewed by Geoffrey Garen.

        Changed progressMeter setting to be based on stdout being a tty instead of
        stdin.  Unified the processing of output from the shell runner to match the
        same processing as is used by the makefile runner.  As part of this, the 
        shell runner script was simplified.  It now forwards the output of each
        test_script just like the Makefile and doesn't provide its own progress.

        * Scripts/jsc-stress-test-helpers/shell-runner.sh:
        * Scripts/run-jsc-stress-tests:

2014-05-22  Michael Saboff  <msaboff@apple.com>

        Add option to run-jsc-stress-tests to use installed jsc
        https://bugs.webkit.org/show_bug.cgi?id=133102

        Reviewed by Geoffrey Garen.

        Added --no-copy option to not copy a JavaScriptCore framework, but use the one
        provied with the --jsc option.

        * Scripts/run-jsc-stress-tests:

2014-05-21  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        [EFL] Add include path of compact_unwind_encoding.h if FTL JIT is enabled
        https://bugs.webkit.org/show_bug.cgi?id=132907

        Reviewed by Gyuyoung Kim.

        We need the mach-o/compact_unwind_encoding.h header from libc++abi-dev package
        in JavaScriptCore/ftl/FTLUnwindInfo.cpp when FTL JIT is enabled.

        * efl/install-dependencies:

2014-05-21  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        REGRESSION(r169092): It broke run-jsc-stress tests on non Mac platforms
        https://bugs.webkit.org/show_bug.cgi?id=133145

        Reviewed by Csaba Osztrogonác.

        * Scripts/run-jsc-stress-tests:

2014-05-20  Alexey Proskuryakov  <ap@apple.com>

        [Mac] WebProcess doesn't follow localization of UI process when run as a service
        https://bugs.webkit.org/show_bug.cgi?id=133126
        <rdar://problem/13396515>
        <rdar://problem/16561084>

        Reviewed by Sam Weinig and Tim Horton.

        * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
        (WTR::InjectedBundle::platformInitialize): It was too late to override language
        here, and it's not necessary any more. Keeping the code for older OS versions in
        case it did have effect in some code paths.

2014-05-19  David Farler  <dfarler@apple.com>

        Move WebKitTestRunner to std::unique_ptr
        https://bugs.webkit.org/show_bug.cgi?id=133081

        Reviewed by Daniel Bates.

        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
        (WTR::InjectedBundle::didCreatePage):
        * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::initialize):
        (WTR::TestController::createWebViewWithOptions):
        (WTR::TestController::resetStateToConsistentValues):
        (WTR::TestController::runTest):
        * WebKitTestRunner/TestController.h:
        * WebKitTestRunner/TestInvocation.cpp:
        * WebKitTestRunner/TestInvocation.h:
        * WebKitTestRunner/WorkQueueManager.cpp:
        (WTR::WorkQueueManager::processWorkQueue):
        (WTR::WorkQueueManager::enqueue):
        * WebKitTestRunner/WorkQueueManager.h:

2014-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebKitWebPage::send-request always pass a valid pointer for redirected response
        https://bugs.webkit.org/show_bug.cgi?id=133119

        Reviewed by Sergio Villar Senin.

        Check that redirect response parameter of
        WebKitWebPage::send-request signal is NULL when not redirecting
        and a valid WebKitURIResponse object when redirecting.

        * TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp:
        (testWebResourceSendRequest):
        (serverCallback):
        * TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:
        (sendRequestCallback):

2014-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(CMAKE): [GTK] Several WebKit2GTK+ unit tests are no longer built
        https://bugs.webkit.org/show_bug.cgi?id=133117

        Reviewed by Philippe Normand.

        Bring back missing tests to the build.

        * TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:

2014-05-19  Filip Pizlo  <fpizlo@apple.com>

        Take care of some ARM64 test failures
        https://bugs.webkit.org/show_bug.cgi?id=133090

        Reviewed by Geoffrey Garen.

        * Scripts/run-jsc-stress-tests: Make it easier to conditionally skip things.

2014-05-19  David Kilzer  <ddkilzer@apple.com>

        [iOS] REGRESSION (r168910): webkitdirs.pm: Be more forgiving when parsing --sdk, --device and --sim
        <http://webkit.org/b/133089>

        Reviewed by Darin Adler.

        * Scripts/webkitdirs.pm:
        (determineXcodeSDK): If both '--sdk SDKROOT' and '--sim' are
        specified on the command line, we would remove the '--sdk'
        arguments, but leave '--sim', potentially passing it along to
        xcodebuild causing a build failure.  This happens when
        'old-run-webkit-tests --release --sim' invokes
        build-dumprendertree when DumpRenderTree hasn't been built yet.

2014-05-19  David Farler  <dfarler@apple.com>

        Dashboard: OpenSource revision key changed from WebKitOpenSource to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=133086

        Reviewed by Daniel Bates.

        * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:

2014-05-19  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r169042): Fix run-api-tests on Mountain Lion
        <http://webkit.org/b/132954>

        * Scripts/webkitdirs.pm:
        (sharedCommandLineOptionsUsage): Remove the prototype for the
        subroutine.  Older perls don't like the "+@" syntax.

2014-05-19  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        run-javascriptcore-tests should sort the list of failing stress tests
        https://bugs.webkit.org/show_bug.cgi?id=132989

        Reviewed by Csaba Osztrogonác.

        * Scripts/run-javascriptcore-tests:

2014-05-19  David Kilzer  <ddkilzer@apple.com>

        webkitdirs.pm: Add setupMacWebKitEnvironment() to set __XPC_DYLD_FRAMEWORK_PATH consistently
        <http://webkit.org/b/132954>

        Reviewed by Darin Adler.

        Extract code into setupMacWebKitEnvironment() for setting up
        common environment variables so it may be shared.  Sets
        __XPC_DYLD_FRAMEWORK_PATH consistently and adds support for
        using guardmalloc to some scripts.

        Also adds support for parsing shared (common) command-line
        switches, initially just -g|--guard-malloc.

        * Scripts/bisect-builds: Add -g|--guard-malloc support by using
        sharedCommandLineOptions() and sharedCommandLineOptionsUsage().
        (mountAndRunNightly): Call setupMacWebKitEnvironment().  Use a
        local copy of %ENV when launching Safari so we don't have to
        restore variables.

        * Scripts/run-api-tests: Add -g|--guard-malloc support by using
        sharedCommandLineOptions() and sharedCommandLineOptionsUsage().
        Check result of GetOptions() to catch invalid command-line
        switches.
        (runTest): Use a local copy of %ENV when running tests so we
        don't have to restore variables.
        (prepareEnvironmentForRunningTestTool): Call
        setupMacWebKitEnvironment().

        * Scripts/run-pageloadtest: Add -g|--guard-malloc support by
        using sharedCommandLineOptions() and
        sharedCommandLineOptionsUsage().  Call
        setupMacWebKitEnvironment().

        * Scripts/webkitdirs.pm:
        (sharedCommandLineOptions): Return array of common switches to
        pass to Getopt::Long::GetOptions().
        (sharedCommandLineOptionsUsage): Return formatted string of
        common switches for printing usage help text.
        (setUpGuardMallocIfNeeded): Support using '-g' for enabling
        guardmalloc.
        (printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Ditto.
        (setupMacWebKitEnvironment): Extracted from runMacWebKitApp()
        and changed not to clobber DYLD_FRAMEWORK_PATH if already set.
        (runMacWebKitApp): Call setupMacWebKitEnvironment().  Use a
        local copy of %ENV when launching Safari so we don't have to
        restore variables.
        (execMacWebKitAppForDebugging): Call
        setupMacWebKitEnvironment().

2014-05-18  Rik Cabanier  <cabanier@adobe.com>

        support for navigator.hardwareConcurrency
        https://bugs.webkit.org/show_bug.cgi?id=132588

        Reviewed by Filip Pizlo.

        * Scripts/webkitperl/FeatureList.pm:

2014-05-18  Anders Carlsson  <andersca@apple.com>

        Implement Navigations for all methods declared returning one
        https://bugs.webkit.org/show_bug.cgi?id=133048
        <rdar://problem/16830064>

        Reviewed by Sam Weinig.

        * MiniBrowser/mac/MiniBrowser_Prefix.pch:
        Import WebKit.h.
        
        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController webView:didStartProvisionalNavigation:]):
        (-[WK2BrowserWindowController webView:didReceiveServerRedirectForProvisionalNavigation:]):
        (-[WK2BrowserWindowController webView:didFailProvisionalNavigation:withError:]):
        (-[WK2BrowserWindowController webView:didCommitNavigation:]):
        (-[WK2BrowserWindowController webView:didFinishLoadingNavigation:]):
        (-[WK2BrowserWindowController webView:didFailNavigation:withError:]):
        Print out the navigations.

2014-05-17  Zalan Bujtas  <zalan@apple.com>

        Subpixel rendering: Add subpixelCSSOMElementMetricsEnabled to WK1 WebPreferences.
        https://bugs.webkit.org/show_bug.cgi?id=133029

        Reviewed by Simon Fraser.

        Added a menu item to toggle subpixelCSSOMElementMetricsEnabled's value. However
        toggling it on a WK2 window needs restart.
        Adding dynamic toggle to WK2 requires a WebPreferences SPI. It's not worth cluttering
        the WebPreferences just to support this temporary toggle.

        * MiniBrowser/mac/BrowserWindowController.h:
        * MiniBrowser/mac/MainMenu.xib:
        * MiniBrowser/mac/WK1BrowserWindowController.m:
        (-[WK1BrowserWindowController validateMenuItem:]):
        (-[WK1BrowserWindowController isSubpixelCSSOMElementMetricsEnabled]):
        (-[WK1BrowserWindowController toggleSubpixelCSSOMElementMetricsEnabled:]):
        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController validateMenuItem:]):
        (-[WK2BrowserWindowController isSubpixelCSSOMElementMetricsEnabled]):
        (-[WK2BrowserWindowController toggleSubpixelCSSOMElementMetricsEnabled:]):

2014-05-17  Anders Carlsson  <andersca@apple.com>

        Replace WKContextSetDatabaseDirectory with two WKContextConfiguration parameters
        https://bugs.webkit.org/show_bug.cgi?id=133033
        <rdar://problem/16830143>

        Reviewed by Sam Weinig.

        Set up the WebSQL and IndexedDB directories.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::initialize):

2014-05-16  Martin Hock  <mhock@apple.com>

        MemoryCache::addImageToCache should return the result of add().
        https://bugs.webkit.org/show_bug.cgi?id=132928
        <rdar://problem/16651547>

        Reviewed by Alexey Proskuryakov.

        * TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
        * TestWebKitAPI/Tests/ios/MemoryCacheAddImageToCacheIOS.mm: Added.
        (TestWebKitAPI::TEST):

2014-05-15  David Farler  <dfarler@apple.com>

        old-run-webkit-tests: allow specifying a simulator app path
        https://bugs.webkit.org/show_bug.cgi?id=132975

        Reviewed by Anders Carlsson.

        * Scripts/old-run-webkit-tests:
        (openIPhoneSimulator):
        Add new --simulator-app command line parameter for specifying the
        absolute path to the simulator app to launch before starting a
        session.

2014-05-16  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [webkitpy] In case of multiple bug rollout, all bugs should be reopened, not only the oldest one
        https://bugs.webkit.org/show_bug.cgi?id=131363

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/common/checkout/checkout_mock.py:
        * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
        (MockBugzilla):
        * Scripts/webkitpy/tool/commands/download_unittest.py:
        (test_create_rollout_multiple_revision_with_one_resolved):
        (test_create_rollout_multiple_resolved):
        (test_rollout_two_revisions):
        (test_rollout_multiple_revisions):
        (test_rollout_multiple_revisions_with_a_missing_bug_id):
        * Scripts/webkitpy/tool/steps/createbug.py:
        (CreateBug.run):
        * Scripts/webkitpy/tool/steps/reopenbugafterrollout.py:
        (ReopenBugAfterRollout.run):

2014-05-16  Martin Hodovan  <mhodovan.u-szeged@partner.samsung.com>

        [WK2] Change the remaining framework includes from WebKit2 to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=132956

        Reviewed by Sam Weinig.

        * MiniBrowser/MiniBrowserWebProcessPlugIn.h:
        * MiniBrowser/mac/AppDelegate.m:
        * MiniBrowser/mac/WK2BrowserWindowController.m:
        * TestWebKitAPI/InjectedBundleController.h:
        * TestWebKitAPI/InjectedBundleMain.cpp:
        * TestWebKitAPI/JavaScriptTest.cpp:
        * TestWebKitAPI/PlatformUtilities.h:
        * TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm:
        * TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp:
        * TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/CookieManager.cpp:
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp:
        (TestWebKitAPI::TEST):
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewRestoreZoomAndScrollBackForward.cpp:
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp:
        * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp:
        * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/DidNotHandleKeyDown.cpp:
        * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp:
        * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp:
        * TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp:
        * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp:
        * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
        * TestWebKitAPI/Tests/WebKit2/Find.cpp:
        * TestWebKitAPI/Tests/WebKit2/FindMatches.mm:
        * TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp:
        * TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp:
        * TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp:
        * TestWebKitAPI/Tests/WebKit2/Geolocation.cpp:
        * TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp:
        * TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:
        * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp:
        * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp:
        * TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp:
        * TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp:
        * TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp:
        * TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp:
        * TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
        * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
        * TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp:
        * TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm:
        * TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp:
        * TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp:
        * TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp:
        * TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp:
        * TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp:
        * TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp:
        * TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp:
        * TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp:
        * TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
        * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
        * TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp:
        * TestWebKitAPI/Tests/WebKit2/WebArchive.cpp:
        * TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:
        * TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm:
        * TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm:
        * TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor_Bundle.mm:
        * TestWebKitAPI/Tests/WebKit2/mac/GetPIDAfterAbortedProcessLaunch.cpp:
        * TestWebKitAPI/Tests/WebKit2/mac/WeakObjCPtr.mm:
        * TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp:
        * TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp:
        * TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp:
        * TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp:
        * TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp:
        * TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp:
        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        * TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm:
        * TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:
        * TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm:
        * TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp:
        * TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
        * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:
        * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm:
        * TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm:
        * TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm:
        * TestWebKitAPI/config.h:
        * TestWebKitAPI/efl/PlatformWebView.cpp:
        * TestWebKitAPI/mac/JavaScriptTestMac.mm:
        * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
        * TestWebKitAPI/mac/PlatformWebViewMac.mm:
        * TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h:
        * TestWebKitAPI/mac/WebKitAgnosticTest.mm:
        * WebKitTestRunner/EventSenderProxy.h:
        * WebKitTestRunner/GeolocationProviderMock.cpp:
        * WebKitTestRunner/GeolocationProviderMock.h:
        * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
        * WebKitTestRunner/InjectedBundle/EventSendingController.h:
        * WebKitTestRunner/InjectedBundle/GCController.cpp:
        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
        * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
        * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp:
        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
        * WebKitTestRunner/InjectedBundle/TestRunner.h:
        * WebKitTestRunner/InjectedBundle/TextInputController.cpp:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        * WebKitTestRunner/InjectedBundle/cocoa/InjectedBundlePageCocoa.mm:
        * WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:
        * WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm:
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
        * WebKitTestRunner/PlatformWebView.h:
        * WebKitTestRunner/StringFunctions.h:
        * WebKitTestRunner/TestController.cpp:
        * WebKitTestRunner/TestController.h:
        * WebKitTestRunner/TestInvocation.cpp:
        * WebKitTestRunner/TestInvocation.h:
        * WebKitTestRunner/WebKitTestRunnerPrefix.h:
        * WebKitTestRunner/WebNotificationProvider.cpp:
        * WebKitTestRunner/WebNotificationProvider.h:
        * WebKitTestRunner/WorkQueueManager.cpp:
        * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
        * WebKitTestRunner/cg/TestInvocationCG.cpp:
        * WebKitTestRunner/cocoa/CrashReporterInfo.mm:
        * WebKitTestRunner/config.h:
        * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
        * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
        * WebKitTestRunner/ios/PlatformWebViewIOS.mm:
        * WebKitTestRunner/ios/TestControllerIOS.mm:
        * WebKitTestRunner/mac/EventSenderProxy.mm:
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
        * WebKitTestRunner/mac/TestControllerMac.mm:

2014-05-15  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL][WK2] Skip failing unit tests
        https://bugs.webkit.org/show_bug.cgi?id=132979

        Reviewed by Daniel Bates.

        * TestWebKitAPI/PlatformEfl.cmake: Skip failing unit tests for now.

2014-05-15  David Kilzer  <ddkilzer@apple.com>

        [iOS] Support TestWebKitAPI in the iOS Simulator
        <http://webkit.org/b/129535>
        <rdar://problem/16203529>

        Reviewed by Daniel Bates.

        * Scripts/run-api-tests:
        (runTest):
        (listAllTests):
        - Extract common arguments into local variable.
        - Use xcrun to find the sim tool in order to invoke
        TestWebKitAPI properly in the iOS Simulator. 

        * Scripts/webkitdirs.pm:
        (argumentsForConfiguration): Set --device or --sim as
        appropriate to fix buildTestTool() in run-api-tests.

2014-05-15  Tim Horton  <timothy_horton@apple.com>

        Fix a logging typo in copy-webkitlibraries-to-product-directory

        Reviewed by Dean Jackson.

        * Scripts/copy-webkitlibraries-to-product-directory:

2014-05-15  David Kilzer  <ddkilzer@apple.com>

        TestWebKitAPI: URLExtras.mm should be a shared test for iOS and Mac
        <http://webkit.org/b/132959>

        Reviewed by Dan Bernstein.

        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add
        Cocoa directory to project and move URLExtras.mm into it.
        * TestWebKitAPI/Tests/Cocoa/URLExtras.mm: Renamed from Tools/TestWebKitAPI/Tests/mac/URLExtras.mm.

2014-05-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Compile all installed resources as GResources
        https://bugs.webkit.org/show_bug.cgi?id=131099

        Reviewed by Philippe Normand.

        * Scripts/webkitpy/port/gtk.py:
        (GtkPort.setup_environ_for_server): Removed now unneeded
        AUDIO_RESOURCES_PATH env var.

2014-05-14  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>

        Remove CSS_STICKY_POSITION guards
        https://bugs.webkit.org/show_bug.cgi?id=132676

        Reviewed by Simon Fraser.

        * Scripts/webkitperl/FeatureList.pm:

2014-05-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(CMAKE): [GTK] InputMethodFilter unit test is not built
        https://bugs.webkit.org/show_bug.cgi?id=132686

        Reviewed by Philippe Normand.

        Bring back InputMethodFilter test to the build and compile it into
        a single binary TestWebCore with the other WebCore tests. Also
        move it from TestWebKitAPI/gtk/ to TestWebKitAPI/Tests/WebCore/gtk/.

        * Scripts/run-gtk-tests:
        (TestRunner): Remove WebCoreGtk from the list of test directories.
        * TestWebKitAPI/PlatformGTK.cmake:
        * TestWebKitAPI/Tests/WebCore/gtk/InputMethodFilter.cpp: Renamed from Tools/TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp.

2014-05-14  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        [EFL] Make XVFBDriver optional
        https://bugs.webkit.org/show_bug.cgi?id=131036

        Reviewed by Gyuyoung Kim.

        * Scripts/webkitpy/port/efl.py:
        (EflPort._driver_class):

2014-05-13  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Flakiness dashboard contains outdated list of bots on builders.jsonp
        https://bugs.webkit.org/show_bug.cgi?id=132874

        Reviewed by Darin Adler.

        * TestResultServer/static-dashboards/builders.jsonp: Regenerate this
        file by changing to the directory Tools/TestResultServer and executing
        the script generate_builders_json.py

2014-05-11  Anders Carlsson  <andersca@apple.com>

        Replace WKContextSetLocalStorageDirectory with a context configuration getter/setter
        https://bugs.webkit.org/show_bug.cgi?id=132809

        Reviewed by Dan Bernstein.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::initialize):
        Set the local storage directory using WKContextConfigurationSetLocalStorageDirectory.

2014-05-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(CMAKE): [GTK] JavaScriptCore API tests are not built anymore
        https://bugs.webkit.org/show_bug.cgi?id=132739

        Reviewed Anders Carlsson.

        * TestWebKitAPI/CMakeLists.txt: Add missing includes required by
        the JSC unit tests.
        * TestWebKitAPI/PlatformGTK.cmake: Bring back JavaScriptCore unit tests.

2014-05-11  Anders Carlsson  <andersca@apple.com>

        Add a WKContextConfigurationRef object and make the injected bundle path part of the configuration
        https://bugs.webkit.org/show_bug.cgi?id=132806

        Reviewed by Beth Dakin.

        Migrate to WKContextConfiguration.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::initialize):

2014-05-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(CMAKE): [GTK] WebKit2 C API tests are not longer built in the same binary
        https://bugs.webkit.org/show_bug.cgi?id=132685

        Reviewed by Martin Robinson.

        Use a single TestWebKit2 binary for all WebKit2 C API tests.

        * TestWebKitAPI/PlatformGTK.cmake:

2014-05-09  Benjamin Poulain  <benjamin@webkit.org>

        [iOS] Switch geolocation to an explicit authorization query model
        https://bugs.webkit.org/show_bug.cgi?id=132717

        Reviewed by Sam Weinig.

        * DumpRenderTree/mac/MockGeolocationProvider.mm:
        (-[MockGeolocationProvider initializeGeolocationForWebView:listener:]):
        (-[MockGeolocationProvider cancelWarmUpForWebView:]): Deleted.

2014-05-09  David Farler  <dfarler@apple.com>

        com.apple.iphonesimulator.startSession needs to pass "RuntimeIdentifier"
        https://bugs.webkit.org/show_bug.cgi?id=132718

        Reviewed by David Kilzer.

        The simulator may not be able to look up runtimes by SDK paths
        and instead will map SDK versions to runtimes instead. In
        com.apple.iphonesimulator.startSession notifications,
        'runtimeIdentifier' (SDK version string) is preferred over
        'sdkRoot' (SDK path) anyway. Include the 'runtimeIdentifier' key
        when creating a new DRT or WKTR simulator session.

        IPhoneSimulatorNotification.pm filters out keys for this
        notification's userInfo with a hard-coded list. There's no harm
        in including extra key-value pairs in an NSNotification userInfo
        dictionary anyway and the simulator may again change its
        userInfo schema for this notification.

        * DumpRenderTree/ios/PerlSupport/IPhoneSimulatorNotification/lib/IPhoneSimulatorNotification.pm:
        (postStartSessionNotification):
        * Scripts/old-run-webkit-tests:
        (installAndLaunchDumpToolAppUsingNotification):

2014-05-09  Anders Carlsson  <andersca@apple.com>

        Another build fix.

        * Scripts/build-webkit:
        WebKit2 should always be built for OS X and iOS.

2014-05-09  Anders Carlsson  <andersca@apple.com>

        Follow-up build fix.

        * Scripts/build-webkit:
        WebKit2 should no longer be built before WebKit.

2014-05-09  Anders Carlsson  <andersca@apple.com>

        Rename WebKit2.framework to WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=132743
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * Scripts/check-for-inappropriate-files-in-framework:
        Use PRODUCT_NAME instead of PROJECT_NAME when matching frameworks.
        Change WebKit2 to WebKit.

        * Scripts/check-for-webkit-framework-include-consistency:
        Change WebKit to WebKitLegacy.

2014-05-09  Manuel Rego Casasnovas  <rego@igalia.com>

        Remove GTK+ WK1 EWS from build.webkit.org/dashboard
        https://bugs.webkit.org/show_bug.cgi?id=132732

        Reviewed by Alexey Proskuryakov.

        GTK+ WK1 EWS was removed in r166427, so it shouldn't appear in the dashboard.

        * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/EWS.js:
        (EWS): Remove GTK+ WK1 EWS.

2014-05-09  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        Add new u-szeged contributors.

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/common/config/contributors.json:

2014-05-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(CMAKE): [GTK] run-gtk-tests doesn't set the right injected bundle path
        https://bugs.webkit.org/show_bug.cgi?id=132736

        Reviewed by Philippe Normand.

        There are two problems, the path returned by common.library_build_path() is wrong when
        common.binary_build_path() has previously been called, and the test is still looking for
        the .la instead of .so

        * TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp:
        (TestWebKitAPI::Util::createInjectedBundlePath): Use .so instead
        of .la as extension of the injected bundle library.
        * gtk/common.py:
        (binary_build_path): Remove unused global variable and add a new
        one for binary_build_dir instead of sharing the same global
        variable for library_build_path and binary_build_path.

2014-05-08  Praveen R Jadhav  <praveen.j@samsung.com>

        [EFL] Enable MEDIA_STREAM for EFL port
        https://bugs.webkit.org/show_bug.cgi?id=132648

        Reviewed by Gyuyoung Kim.

        Script modified to enable MEDIA_STREAM for EFL build.

        * Scripts/webkitperl/FeatureList.pm: 

2014-05-08  David Farler  <dfarler@apple.com>

        old-run-webkit-tests: update strings for simulator devices and app name
        https://bugs.webkit.org/show_bug.cgi?id=132687

        Reviewed by Darin Adler.

        iPhone Retina (4-inch) -> iPhone 5
        iPhone Retina (4-inch 64-bit) -> iPhone 5s

        * Scripts/old-run-webkit-tests:
        (installAndLaunchDumpToolAppUsingNotification):
        (openIPhoneSimulator):
        (quitIPhoneSimulator):
        quit iOS Simulator, not iPhone Simulator.

2014-05-08  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r168471): Update the builder names on the scheduler list.
        https://bugs.webkit.org/show_bug.cgi?id=132699

        Reviewed by Martin Robinson.

        On r168471 I missed to update the builder names for the GTK build
        bots on the AnyBranchScheduler type scheduler list of bots.

        * BuildSlaveSupport/build.webkit.org-config/config.json:

2014-05-08  Brady Eidson  <beidson@apple.com>

        "shouldKeepCurrentBackForwardListItemInList" API should pass clientInfo to the callback
        <rdar://problem/16855357> and https://bugs.webkit.org/show_bug.cgi?id=132692

        Reviewed by Tim Horton.

        * TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp:
        (TestWebKitAPI::shouldKeepCurrentBackForwardListItemInList):

2014-05-08  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r168471): Duplicate builddirs broke the build master.
        https://bugs.webkit.org/show_bug.cgi?id=132688

        Reviewed by Carlos Garcia Campos.

        Rename the builddirs of the new GTK bots introduced on r168471 to
        be unique. Otherwise the master will break.

        * BuildSlaveSupport/build.webkit.org-config/config.json:

2014-05-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] webkitdom script assumes mkdir only fails because the directory already exists
        https://bugs.webkit.org/show_bug.cgi?id=132674

        Reviewed by Philippe Normand.

        Only ignore mkdir failure when exception is raised because the
        file already exists and it's a directory.

        * gtk/webkitdom.py:
        (write_doc_files):

2014-05-08  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WK2][GTK] Split the 64-bit GTK buildbots in Build and Test.
        https://bugs.webkit.org/show_bug.cgi?id=131358

        Reviewed by Carlos Garcia Campos.

        Current 64-bit GTK build bots (Release and Debug) not only test
        the build, but run all tests. Split each one of the bots in
        BuildOnly and TestWebKit2.

        This will allow us to have a better overview of the status of
        the GTK port.

        Original patch from Sergio Villar Senin <svillar@igalia.com>

        * BuildSlaveSupport/build.webkit.org-config/config.json:
        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
        * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
        (WebKitBuildbot):
        * Scripts/webkitpy/port/builders.py:
        * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
        (TestRebaselineTest.test_baseline_directory):
        * TestResultServer/static-dashboards/builders.jsonp:
        * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
        (resetGlobals):
        * TestResultServer/static-dashboards/loader_unittests.js:

2014-05-07  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [CoordinatedGraphics][WK2] Scale factor and scroll position is not being restored properly in a back/forward load
        https://bugs.webkit.org/show_bug.cgi?id=126022

        Reviewed by Benjamin Poulain.

        Original author : Thiago de Barros Lacerda, and finished by Gyuyoung Kim.

        Added an unit test case to check if scroll position and scale are restored properly.

        * TestWebKitAPI/PlatformEfl.cmake:
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewRestoreZoomAndScrollBackForward.cpp: Added.
        (TestWebKitAPI::didFinishLoadForFrame):
        (TestWebKitAPI::didChangeContentsPosition):
        (TestWebKitAPI::TEST):
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward1.html: Added.
        * TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward2.html: Added.

2014-05-07  Simon Fraser  <simon.fraser@apple.com>

        WebKit1 is flashy when compositing layers come and go
        https://bugs.webkit.org/show_bug.cgi?id=132655
        <rdar://problem/16830981&16788846>

        Reviewed by Sam Weinig.
        
        Revert the change from r166117.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (updateDisplay):

2014-05-07  Chris Fleizach  <cfleizach@apple.com>

        AX: AXSelectTextWithCriteria should support capitalize/lowercase/uppercase
        https://bugs.webkit.org/show_bug.cgi?id=132622

        Reviewed by Mario Sanchez Prada.

        * DumpRenderTree/AccessibilityUIElement.cpp:
        (selectTextWithCriteriaCallback):
        (isEqualCallback):
        * DumpRenderTree/AccessibilityUIElement.h:
        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        (AccessibilityUIElement::selectTextWithCriteria):
        * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
        (AccessibilityUIElement::selectTextWithCriteria):
        * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
        (selectTextParameterizedAttributeForCriteria):
        (AccessibilityUIElement::selectTextWithCriteria):
        * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
        (AccessibilityUIElement::selectTextWithCriteria):
        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
        (WTR::AccessibilityUIElement::selectTextWithCriteria):
        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
        * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::selectTextWithCriteria):
        * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
        (WTR::AccessibilityUIElement::selectTextWithCriteria):
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
        (WTR::selectTextParameterizedAttributeForCriteria):
        (WTR::AccessibilityUIElement::selectTextWithCriteria):

2014-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] TLSErrors do not cause page load to fail when not ignored
        https://bugs.webkit.org/show_bug.cgi?id=121548

        Reviewed by Sergio Villar Senin.

        Add unit tests to check that the load fails with TLS errors in
        case of a redirection.

        * TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp:
        (testTLSErrorsRedirect):
        (httpsServerCallback):
        (beforeAll):

2014-05-07  Manuel Rego Casasnovas  <rego@igalia.com>

        [CSS Grid Layout] Remove runtime feature
        https://bugs.webkit.org/show_bug.cgi?id=132382

        Reviewed by Benjamin Poulain.

        Remove cssGridLayoutEnabled setting usage.

        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
        (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
        * DumpRenderTree/efl/TestRunnerEfl.cpp:
        (TestRunner::overridePreference):
        * DumpRenderTree/mac/DumpRenderTree.mm:
        (resetWebPreferencesToConsistentValues):

2014-05-06  David Kilzer  <ddkilzer@apple.com>

        Add Makefile targets for copying static libraries (LLVM and WKSI)
        <http://webkit.org/b/132619>

        Reviewed by Mark Rowe.

        * Scripts/copy-webkitlibraries-to-product-directory: Set a
        sensible default for product directory if not specified on
        either the command-line or in the environment (by Xcode) by
        calling productDir() in webkitdirs.pm.

2014-05-06  Brady Eidson  <beidson@apple.com>

        Add WK2 SPI to prevent the previous back/forward item from remaining in the list
        <rdar://problem/16248710> and https://bugs.webkit.org/show_bug.cgi?id=132636

        Reviewed by Sam Weinig.

        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

        * TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp: Added.
        (TestWebKitAPI::itemURLLastComponentIsString):
        (TestWebKitAPI::didFinishLoadForFrame):
        (TestWebKitAPI::willGoToBackForwardListItem):
        (TestWebKitAPI::shouldKeepCurrentBackForwardListItemInList):
        (TestWebKitAPI::setPageLoaderClient):
        (TestWebKitAPI::TEST):
        * TestWebKitAPI/Tests/WebKit2/simple2.html: Added.
        * TestWebKitAPI/Tests/WebKit2/simple3.html: Added.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::createWebViewWithOptions): Update for new client layout.

2014-05-06  Darin Adler  <darin@apple.com>

        Try to fix iOS build.

        * DumpRenderTree/mac/TestRunnerMac.mm:
        (-[APITestDelegateIPhone initWithTestRunner:utf8Data:baseURL:]):
        Updated since I changed testRunner into a pointer instead of a reference.
        Updated argument names to avoid conflict with field names.
        (-[APITestDelegateIPhone run]): Ditto.
        (-[APITestDelegateIPhone _cleanUp]): Ditto.

2014-05-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r168304.
        https://bugs.webkit.org/show_bug.cgi?id=132607

        Broke the build (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK][CMake] Unable to do make install"
        https://bugs.webkit.org/show_bug.cgi?id=130188
        http://trac.webkit.org/changeset/168304

2014-05-04  Darin Adler  <darin@apple.com>

        RetainPtr: Use adoptCF function instead of AdoptCF constructor argument
        https://bugs.webkit.org/show_bug.cgi?id=80222

        Reviewed by Alexey Proskuryakov.

        * DumpRenderTree/mac/TestRunnerMac.mm:
        (-[APITestDelegateIPhone initWithTestRunner:utf8Data:baseURL:]): Updated to
        do more work here so we don't use RetainPtr local variables.
        (-[APITestDelegateIPhone dealloc]): Added.
        (-[APITestDelegateIPhone run]): Added an early exit if the web view is already
        created. Updated for changes to member names and types.
        (-[APITestDelegateIPhone _cleanUp]): Added code to set webView to nil and
        updated for changes to member names and types. Changed to two word spelling.
        (-[APITestDelegateIPhone webView:didFailLoadWithError:forFrame:]): Updated
        name of _cleanUp method.
        (-[APITestDelegateIPhone webView:didFailProvisionalLoadWithError:forFrame:]):
        Ditto.
        (-[APITestDelegateIPhone webView:didFinishLoadForFrame:]): Ditto.

2014-05-05  Benjamin Poulain  <benjamin@webkit.org>

        Clean up Image Document and tweak the layout and viewport
        https://bugs.webkit.org/show_bug.cgi?id=132552

        Reviewed by Anders Carlsson.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (resetWebPreferencesToConsistentValues):
        Update the default settings to have something consistent with WebKit2.

2014-05-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Unable to do make install
        https://bugs.webkit.org/show_bug.cgi?id=130188

        Reviewed by Carlos Garcia Campos.

        * Scripts/webkitdirs.pm:
        (buildCMakeGeneratedProject): Always build gtkdoc-no-html for WebKitGTK+. This
        will give an early signal that a change has broken the documentation.

2014-05-05  Pratik Solanki  <psolanki@apple.com>

        Update framework locations in package-root
        https://bugs.webkit.org/show_bug.cgi?id=132571

        Reviewed by Simon Fraser.

        * Scripts/package-root:

2014-05-05  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Refactor favicon database APIs
        https://bugs.webkit.org/show_bug.cgi?id=132519

        Reviewed by Gyuyoung Kim.

        * MiniBrowser/efl/main.c: Use ewk_favicon_database_icon_get instead of ewk_view_favicon_get.
        (update_view_favicon):
        (on_icon_changed_cb):
        (window_free):
        (on_url_changed):
        (window_create):
        (on_view_favicon_changed): Deleted.

2014-05-02  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/132505> Make it possible to tell copy-webkitlibraries-to-product-directory which OS X version to copy for

        Reviewed by Dan Bernstein.

        * Scripts/copy-webkitlibraries-to-product-directory: Add an --osx-version argument and use the passed value
        when determining which LLVM archive to extract.

2014-05-02  Jeremy Jones  <jeremyj@apple.com>

        Add Jeremy as a committer.
        https://bugs.webkit.org/show_bug.cgi?id=132492

        Reviewed by Jer Noble.

        Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-05-02  Jeremy Jones  <jeremyj@apple.com>

        Add Jeremy as a committer.
        https://bugs.webkit.org/show_bug.cgi?id=132492

        Reviewed by Jer Noble.

        Add Jeremy Jones to the committers file.

        * Scripts/webkitpy/common/config/contributors.json:

2014-05-02  Brian J. Burg  <burg@cs.washington.edu>

        Hard to figure out how to run a single test with run-api-tests
        https://bugs.webkit.org/show_bug.cgi?id=116332

        Reviewed by Alexey Proskuryakov.

        * Scripts/run-api-tests: add two examples to the help message.

2014-05-02  Simon Fraser  <simon.fraser@apple.com>

        Fix several memory leaks found by code inspection
        https://bugs.webkit.org/show_bug.cgi?id=132472

        Reviewed by Geoffrey Garen.
        
        Fix memory leaks.

        * TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm:
        (TestWebKitAPI::TEST):
        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
        (WTR::InjectedBundlePage::willSendRequestForFrame):
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
        (WTR::PlatformWebView::changeWindowScaleIfNeeded):

2014-05-02  Filip Pizlo  <fpizlo@apple.com>

        DFGAbstractInterpreter should not claim Int52 arithmetic creates Int52s
        https://bugs.webkit.org/show_bug.cgi?id=132446

        Reviewed by Mark Hahnenberg.
        
        Test the FTL by default now that it's enabled by default.

        * Scripts/run-javascriptcore-tests:

2014-05-01  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK1] Drop ewk_view_setting_tiled_backingstore APIs
        https://bugs.webkit.org/show_bug.cgi?id=132240

        Reviewed by Anders Carlsson.

        Removed ewk_view_setting_tiled_backingstore related code.

        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
        (DumpRenderTreeChrome::createView):
        (shouldUseTiledBackingStore): Deleted.
        * EWebLauncher/main.c:
        (windowCreate):
        (parseUserArguments):

2014-05-01  Anders Carlsson  <andersca@apple.com>

        window.testRunner.keepWebHistory() should update the UI process state
        https://bugs.webkit.org/show_bug.cgi?id=132440

        Reviewed by Dan Bernstein.

        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
        (WTR::InjectedBundle::postSetAddsVisitedLinks):
        * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
        (WTR::TestRunner::keepWebHistory):
        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::TestInvocation::invoke):
        (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

2014-05-01  David Kilzer  <ddkilzer@apple.com>

        Really remove ENABLE_PLUGIN_PROXY_FOR_VIDEO
        <http://webkit.org/b/132432>

        Reviewed by Tim Horton.

        * Scripts/webkitperl/FeatureList.pm: Remove support for
        --plugin-proxy-for-video switch.

2014-04-30  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Kernel sysctl interface hw.activecpu don't exists on Linux.
        https://bugs.webkit.org/show_bug.cgi?id=132286

        Reviewed by Filip Pizlo.

        * Scripts/run-jsc-stress-tests: Redirect stderr to null when
        calling sysctl over hw.activecpu

2014-04-30  Anders Carlsson  <andersca@apple.com>

        Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=132399
        <rdar://problem/15920046>

        Reviewed by Dan Bernstein.

        * Scripts/check-for-webkit-framework-include-consistency:
        Allos WAK headers in WebKitLegacy as well as WebKit.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        * TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm:
        Update header imports.

2014-04-30  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Add test URL to crash reports for the UI process, clean up project
        https://bugs.webkit.org/show_bug.cgi?id=131954

        Reviewed by Darin Adler.
        
        WebKitTestRunner was adding application-specific information to crash reports
        to log the test path, but only in the web process. Fix it to also do this
        for the UI process, for both iOS and OS X.
        
        Moved InjectedBundlePageMac.mm to InjectedBundlePageCocoa.mm and compile it for
        both iOS and OS X.
        
        Factored crash reprorter-related code into CrashReporterInfo, and call it from
        a new TestController::platformWillRunTest() function on Mac and iOS.
        
        Also remove Xcode-added unit test junk from the project.

        * WebKitTestRunner/InjectedBundle/cocoa/InjectedBundlePageCocoa.mm: Copied from Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm.
        (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame):
        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::runTest):
        * WebKitTestRunner/TestController.h:
        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::TestInvocation::url):
        * WebKitTestRunner/TestInvocation.h:
        * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
        * WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests-Info.plist: Removed.
        * WebKitTestRunner/WebKitTestRunnerAppTests/WebKitTestRunnerAppTests.m: Removed.
        * WebKitTestRunner/WebKitTestRunnerAppTests/en.lproj/InfoPlist.strings: Removed.
        * WebKitTestRunner/cocoa/CrashReporterInfo.h: Renamed from Tools/WebKitTestRunner/InjectedBundle/ios/InjectedBundlePageIOS.mm.
        * WebKitTestRunner/cocoa/CrashReporterInfo.mm: Renamed from Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm.
        (WTR::testPathFromURL):
        (WTR::setCrashReportApplicationSpecificInformationToURL):
        * WebKitTestRunner/efl/TestControllerEfl.cpp:
        (WTR::TestController::platformWillRunTest):
        * WebKitTestRunner/gtk/TestControllerGtk.cpp:
        (WTR::TestController::platformWillRunTest):
        * WebKitTestRunner/ios/TestControllerIOS.mm:
        (WTR::TestController::platformWillRunTest):
        (WTR::TestController::setHidden):
        * WebKitTestRunner/mac/TestControllerMac.mm:
        (WTR::TestController::platformWillRunTest):

2014-04-30  Simon Fraser  <simon.fraser@apple.com>

        Fix DRT assertion about mock scrollbars, which doesn't apply to iOS.

        Reviewed by Tim Horton.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (resetWebPreferencesToConsistentValues):
        (prepareConsistentTestingEnvironment):

2014-04-30  Anders Carlsson  <andersca@apple.com>

        check-for-inappropriate-macros-in-external-headers should get the product name, not the project name
        https://bugs.webkit.org/show_bug.cgi?id=132397

        Reviewed by Dan Bernstein.

        * Scripts/check-for-inappropriate-macros-in-external-headers:

2014-04-29  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Make it easier to run CMake for downstreams
        https://bugs.webkit.org/show_bug.cgi?id=132370

        Reviewed by Carlos Garcia Campos.

        * Scripts/webkitdirs.pm:
        (generateBuildSystemFromCMakeProject): Pass -DDEVELOPER_MODE when building
        the GTK+ port.

2014-04-29  Stephanie Lewis  <slewis@apple.com>

        <rdar://problem/16765765> Use JSON::PP in perl scripts instead of JSON.
        
        Rubber stamped by Jessie Berlin.

        JSON.pm was removed from our tools setup.

        * Scripts/generate-coverage-data:

2014-04-29  Filip Pizlo  <fpizlo@apple.com>

        Use LLVM as a backend for the fourth-tier DFG JIT (a.k.a. the FTL JIT)
        https://bugs.webkit.org/show_bug.cgi?id=112840

        Rubber stamped by Geoffrey Garen.

        * Scripts/build-jsc: Enable it on Mac.
        * Scripts/build-webkit: Enable it on Mac.
        * Scripts/export-llvm-build: Make it slightly easier to export the build if you've done a "make install".

2014-04-28  Sam Weinig  <sam@webkit.org>

        REGRESSION (r167751): svn-create-patch is very slow
        https://bugs.webkit.org/show_bug.cgi?id=132300

        Reviewed by Alexey Proskuryakov.

        * Scripts/svn-create-patch:
        Change default behavior of svn-create-patch to no longer run the style checker. It can still be run
        by calling `svn-create-patch --style`.

2014-04-29  Enrique Ocaña González  <eocanha@igalia.com>

        Generate Eclipse project + ninja build for GTK+ if Eclipse in available in the PATH
        https://bugs.webkit.org/show_bug.cgi?id=132190

        Reviewed by Gustavo Noronha Silva.

        * Scripts/webkitdirs.pm:
        (canUseEclipse): Test if Eclipse is in the path. This is the same method used to test
            if ninja is in the path.
        (generateBuildSystemFromCMakeProject): Use the eclipse generator if possible, fallback
            to the previous ninja generator if not.

2014-04-29  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        check-webkit-style should understand --git-index
        https://bugs.webkit.org/show_bug.cgi?id=125364

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/common/checkout/scm/git.py:
        (Git.create_patch): The command now supports the --cached option.
        * Scripts/webkitpy/style/main.py:
        (CheckWebKitStyle.main): Passing the --git-index option.
        * Scripts/webkitpy/style/optparser.py:
        (CommandOptionValues.__init__): The git-index option is switched off by default.
        (CommandOptionValues.__eq__): Equality check for the new option.
        (ArgumentParser._create_option_parser):Adding the --git-index option
        (ArgumentParser.parse):
        * Scripts/webkitpy/style/optparser_unittest.py: New tests for the --git-index option
        (CommandOptionValuesTest.test_init): 
        (CommandOptionValuesTest.test_eq):

2014-04-28  Michael Saboff  <msaboff@apple.com>

        Crash in platform/mac/accessibility/table-visible-rows.html
        https://bugs.webkit.org/show_bug.cgi?id=132146

        Reviewed by Filip Pizlo.

        Instead of creating a local JSValueRef array on the stack and passing that to
        JSObjectMakeArray(), changed to create an empty JSArray and then populate the
        values using the JSObjectSetPropertyAtIndex() API.

        * DumpRenderTree/AccessibilityUIElement.cpp:
        (elementsForRangeCallback):
        (convertElementsToObjectArray):
        * DumpRenderTree/mac/TestRunnerMac.mm:
        (originsArrayToJS):
        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
        (WTR::EventSendingController::contextClick):
        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
        (WTR::stringArrayToJS):
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
        (WTR::convertElementsToObjectArray):

2014-04-28  Filip Pizlo  <fpizlo@apple.com>

        Make sure that the coverage of our tests doesn't change much if we change the thresholds now and in the future, but making
        "no-cjit" runs force the old-school threshold.

        Rubber stamped by Mark Hahnenberg.

        * Scripts/run-jsc-stress-tests:

2014-04-28  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] install-dependencies should also install ruby-json and ruby-highline
        https://bugs.webkit.org/show_bug.cgi?id=132292

        Reviewed by Philippe Normand.

        * gtk/install-dependencies: Install ruby json and highline packages.

2014-04-27  Joonghun Park  <jh718.park@samsung.com>

        [EFL] Remove indexedDB's dependency on leveldb and disable indexedDB
        https://bugs.webkit.org/show_bug.cgi?id=132176

        Reviewed by Gyuyoung Kim.

        EFL port will use sqlite to support indexedDB. So, this patch removes levelDB dependency
        and turn off indexedDB feature until the sqlite implementation is introduced.

        * Scripts/webkitperl/FeatureList.pm:

2014-04-25  James Craig  <jcraig@apple.com>

        Set prepare-Changelog flag so that it no longer runs check-webkit-style by default
        https://bugs.webkit.org/show_bug.cgi?id=132209

        Reviewed by Daniel Bates.

        Set default to --no-style to avoid additional spew from false positives in check-webkit-style.
        Run check-webkit-style before generating changelogs to avoid additional spurious errors.

        * Scripts/prepare-ChangeLog:
        (main): 

2014-04-25  Michael Saboff  <msaboff@apple.com>

        Crash in platform/mac/accessibility/table-visible-rows.html
        https://bugs.webkit.org/show_bug.cgi?id=132146

        Reviewed by Mark Lam.

        Changed to use a local JSValueRef array temporary instead of a
        std::make_unique<JSValueRef[]> when making an array of JSValues so that the temporary
        JSValues are visited during garbage collection when the stack is scanned.  Otherwise,
        the temporary values could be collected.

        * DumpRenderTree/AccessibilityUIElement.cpp:
        (convertElementsToObjectArray):
        * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
        (WTR::EventSendingController::contextClick):
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
        (WTR::convertElementsToObjectArray):

2014-04-24  Eduardo Lima Mitev  <elima@igalia.com>

        Unreviewed GTK gardening

        * Scripts/run-gtk-tests: Skips one flaky accesibility test in WK2API suite
        (TestRunner):

2014-04-24  László Langó  <llango.u-szeged@partner.samsung.com>

        prepare-ChangeLog reports as deleted methods that has not been removed.
        https://bugs.webkit.org/show_bug.cgi?id=131733

        Reviewed by Ryosuke Niwa.

        * Scripts/prepare-ChangeLog:
        (originalFile): Set merge base to origin/master by default.

2014-04-23  James Craig  <jcraig@apple.com>

        prepare-Changelog and svn-create-patch should optionally run check-webkit-style.
        https://bugs.webkit.org/show_bug.cgi?id=131115

        Reviewed by Daniel Bates.

        Added [--[no-]style] param to run check-webkit-style as part of prepare-Changelog and svn-create-patch.

        * Scripts/commit-log-editor: Added --no-style.
        * Scripts/prepare-ChangeLog: Primary patch.
        (main): Primary patch.
        (createPatchCommand): Added --no-style.
        * Scripts/svn-create-patch: Primary patch.
        * Scripts/webkit-tools-completion.sh: Added --style and --no-style.
        * Scripts/webkitpy/common/checkout/scm/svn.py: Added --no-style.
        (SVN.create_patch): Added --no-style.

2014-04-23  Anders Carlsson  <andersca@apple.com>

        Try to fix iOS build.

        * DumpRenderTree/mac/DumpRenderTree.mm:

2014-04-23  Alexey Proskuryakov  <ap@apple.com>

        Eliminate internals.setMockScrollbarsEnabled()
        https://bugs.webkit.org/show_bug.cgi?id=132085

        Reviewed by Tim Horton.

        * DumpRenderTree/mac/DumpRenderTree.mm: (resetWebPreferencesToConsistentValues):
        No need to reset the preference, there is no way it can change.

2014-04-23  James Craig  <jcraig@apple.com>

        Unreviewed. Moving myself from Contributors to Committers list.

        * Scripts/webkitpy/common/config/contributors.json:

2014-04-23  Tim Horton  <timothy_horton@apple.com>

        Mock scrollbars don't always work in DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=132082

        Reviewed by Alexey Proskuryakov.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (prepareConsistentTestingEnvironment):
        Set the mock scrollbar setting before creating the WebView, as this setting
        cannot be dynamically changed, so any scrollbars that are created during
        WebView initialization and are not replaced before snapshotting will end
        up being platform scrollbars instead of mock ones.
        WebKitTestRunner already sets this preference before creating WKViews,
        so we're just matching its behavior.

2014-04-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] ShadowRoot API was removed in r164131
        https://bugs.webkit.org/show_bug.cgi?id=132059

        Reviewed by Gustavo Noronha Silva.

        Add WebKitDOMShadowRoot to the list of deleted classes to generate
        the API docs.

        * gtk/webkitdom.py:
        (WebKitDOMDocGenerator):

2014-04-23  Lorenzo Tilve  <ltilve@igalia.com>

        [GTK] run-webkit-tests script is failing to invoke run-launcher
        https://bugs.webkit.org/show_bug.cgi?id=132051

        Reviewed by Philippe Normand.

        After the WK1 support was dropped, if run-webkit-tests is executed
        without --no-show-results parameter, the launcher is being called
        using a -2 parameter that is it causing the run-launcher to break.

        * Scripts/webkitpy/port/gtk.py:
        (GtkPort.show_results_html_file):

2014-04-22  Tim Horton  <timothy_horton@apple.com>

        DumpRenderTree generates black snapshots on some platforms
        https://bugs.webkit.org/show_bug.cgi?id=132029
        <rdar://problem/16679363>

        Reviewed by Simon Fraser.

        * DumpRenderTree/mac/PixelDumpSupportMac.mm:
        (createBitmapContextFromWebView):
        DRT checks with the WebView to determine whether it can use the window's
        backing store directly or (because of compositing) needs to take a WindowServer
        snapshot. However, on some platforms and in some situations, the window can
        be layer backed without the WebView necessarily currently being composited.
        We should check with the window in addition to the WebView before going
        ahead and using its backing store.

2014-04-22  Tim Horton  <timothy_horton@apple.com>

        DumpRenderTree generates white snapshots on some platforms
        https://bugs.webkit.org/show_bug.cgi?id=132026
        <rdar://problem/16679363>

        Reviewed by Simon Fraser.

        * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
        Link DRT against QuartzCore.

        * DumpRenderTree/mac/PixelDumpSupportMac.mm:
        (createBitmapContextFromWebView):
        Force CoreAnimation to synchronously update layers in a more explicit
        way that doesn't depend on AppKit behavior. This is very similar to what
        WebKitTestRunner does (indirectly) during its force repaint.

2014-04-22  Brent Fulgham  <bfulgham@apple.com>

        [Win] Support Python 2.7 in Cygwin
        https://bugs.webkit.org/show_bug.cgi?id=132023

        Reviewed by Michael Saboff.

        * Scripts/webkitdirs.pm:
        (checkInstalledTools): Remove check for Python 2.7, since
        it now works properly.

2014-04-22  Filip Pizlo  <fpizlo@apple.com>

        Switch the LLVMForJSC target to using the LLVM in /usr/local rather than /usr/local/LLVMForJavaScriptCore on iOS
        https://bugs.webkit.org/show_bug.cgi?id=130867
        <rdar://problem/16432456> 

        Reviewed by Mark Hahnenberg.

        * Scripts/build-webkit:
        * Scripts/copy-webkitlibraries-to-product-directory:

2014-04-22  Gustavo Noronha Silva  <gns@gnome.org>

        [GTK] Fails to build documentation when output is redirected
        https://bugs.webkit.org/show_bug.cgi?id=131178

        Reviewed by Martin Robinson.

        * gtk/generate-gtkdoc: set the output for stdout and stderr to UTF-8
        explicitly to avoid encoding issues when they are redirected.

2014-04-22  ChangSeok Oh  <changseok.oh@collabora.com>

        [GTK] YCM choose a newer compile_commands.json in between Release or Debug
        https://bugs.webkit.org/show_bug.cgi?id=131911

        Reviewed by Martin Robinson.

        common.get_build_path returns release path even though Debug configuration
        is newer than Release. So YouCompleteMe is used to refer old build setup inadvertently.

        * gtk/ycm_extra_conf.py:
        (get_build_path): Compare modified time of Release and Debug. And return a recent modified path.
        (FlagsForFile):

2014-04-21  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix.

        * DumpRenderTree/mac/EventSendingController.mm:
        (-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]):
        Correct a typo that prevented tests from working properly.

2014-04-21  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Should have the ability to output composited contents during layout testing
        https://bugs.webkit.org/show_bug.cgi?id=131864

        Reviewed by Philippe Normand.

        * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
        (WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Add a path that paints the widget contents
        to an image surface. We run the main loop a bit to match the implementation from WebKit1 and EFL.
        * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
        (WTR::PlatformWebView::windowSnapshotImage): Use the new UI-process path on GTK+.

2014-04-21  Sam Weinig  <sam@webkit.org>

        Attempt to fix the tests.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm:
        (-[DidFailProvisionalNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
        Add policy handler to override the new default of denying loads that NSURLConnection cannot handle.

2014-04-21  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed test gardening, make no-eager runs run everything except eager (as opposed to
        being the same as a "quick run", which is meant for genuinely slow tests).

        * Scripts/run-jsc-stress-tests:

2014-04-21  Darin Adler  <darin@apple.com>

        Add HashSet::takeAny
        https://bugs.webkit.org/show_bug.cgi?id=131928

        Reviewed by Benjamin Poulain.

        * TestWebKitAPI/Tests/WTF/HashSet.cpp: Added a test for takeAny.

2014-04-20  Dan Bernstein  <mitz@apple.com>

        Fixed a test timing out after r167572.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm:
        (-[NavigationDelegate webView:didFinishNavigation:]): Renamed from
        -webView:didFinishLoadingNavigation:.

2014-04-20  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r167510.
        https://bugs.webkit.org/show_bug.cgi?id=131915

        broke GTK Debug bot (Requested by philn on #webkit).

        Reverted changeset:

        "[GTK] Add llvmpipe (Mesa) to the JHBuild moduleset and force
        it when running layout tests"
        https://bugs.webkit.org/show_bug.cgi?id=131472
        http://trac.webkit.org/changeset/167510

2014-04-18  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Add llvmpipe (Mesa) to the JHBuild moduleset and force it when running layout tests
        https://bugs.webkit.org/show_bug.cgi?id=131472

        Reviewed by Philippe Normand.

        * Scripts/webkitpy/port/gtk.py:
        (GtkPort.setup_environ_for_server): Use the LLVMPIPE_LIBGL_PATH to set the LD_LIBRARY_PATH
        when running WebKitTestRunner with run-webkit-tests.
        * gtk/jhbuild.modules: Add Mesa to the modulelist so that the llvmpipe libGL is build, but not
        installed.
        * gtk/jhbuildrc: Set the LLVMPIPE_LIBGL_PATH environment variable so that the test driver knows
        how to properly set the LD_LIBRARY_PATH variable. We do this because it is much easier to
        calculate the path in the jhbuildrc than in the test driver code. This simplifies things a great
        deal.

2014-04-18  Alexey Proskuryakov  <ap@apple.com>

        DownloadDecideDestinationCrash API test uses an incorrect value for path
        https://bugs.webkit.org/show_bug.cgi?id=131845
        <rdar://problem/15925560>

        Reviewed by Enrica Casucci.

        * TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp:
        (TestWebKitAPI::decideDestinationWithSuggestedFilename):

2014-04-17  Alexey Proskuryakov  <ap@apple.com>

        [Mac] AttributedStringTest API tests fail with async text input
        https://bugs.webkit.org/show_bug.cgi?id=131833

        Reviewed by Enrica Casucci.

        Don't run sync NSTextInputClient tests where we don't implement these calls.

        * TestWebKitAPI/Tests/mac/AttributedString.mm:
        (TestWebKitAPI::AttributedStringTest_CustomFont::didLoadURL):
        (TestWebKitAPI::AttributedStringTest_CustomFont::runSyncTest):
        (TestWebKitAPI::AttributedStringTest_Strikethrough::didLoadURL):
        (TestWebKitAPI::AttributedStringTest_Strikethrough::runSyncTest):
        (TestWebKitAPI::AttributedStringTest_CustomFont::runTest): Deleted.
        (TestWebKitAPI::AttributedStringTest_Strikethrough::runTest): Deleted.

2014-04-18  Philippe Normand  <pnormand@igalia.com>

        Remove NETWORK_INFO support
        https://bugs.webkit.org/show_bug.cgi?id=131841

        Reviewed by Gyuyoung Kim.

        * Scripts/webkitperl/FeatureList.pm:

2014-04-17  ChangSeok Oh  <changseok.oh@collabora.com>

        [GTK] YouCompleteMe doesn't work for cmake build system.
        https://bugs.webkit.org/show_bug.cgi?id=131591

        Reviewed by Martin Robinson.

        Add cmake build system support for YouCompleteMe. It should work regardless of
        using make or ninja. In addition, autotools related code is removed since it's
        not used anymore in WebKit.

        * Scripts/webkitdirs.pm:
        (generateBuildSystemFromCMakeProject):
        * gtk/ycm_extra_conf.py:
        (transform_relative_paths_to_absolute_paths):
        (FlagsForFile):

2014-04-17  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
        (-[ConvertResponseToDownloadNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

2014-04-17  Anders Carlsson  <andersca@apple.com>

        Remove unused API enums
        https://bugs.webkit.org/show_bug.cgi?id=131836

        Reviewed by Tim Horton.

        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController webView:decidePolicyForNavigationResponse:decisionHandler:]):

2014-04-16  Brent Fulgham  <bfulgham@apple.com>

        [Win] A few final cleanups to the DataObject classes.
        https://bugs.webkit.org/show_bug.cgi?id=131784

        Reviewed by Anders Carlsson.

        * DumpRenderTree/win/DRTDataObject.cpp:
        (DRTDataObject::clearData): Use 'last()' method.
        * DumpRenderTree/win/UIDelegate.cpp:
        (DRTUndoStack::pop): Use 'takeLast()' method.

2014-04-17  Andres Gomez  <agomez@igalia.com>

        [Win] cygwin to keep installing curl 7.33.0-1 and subversion 1.7.14-1
        https://bugs.webkit.org/show_bug.cgi?id=131365

        Reviewed by Brent Fulgham.

        The cygwin installer is now downloading the wanted versions for
        the local installation given to the setup wizard.

        * CygwinDownloader/cygwin-downloader.py:
        * CygwinDownloader/cygwin-downloader.zip:

2014-04-17  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Make run-webkit-tests always use WKTR
        https://bugs.webkit.org/show_bug.cgi?id=131737

        Reviewed by Darin Adler.

        Now that the GTK+ port only has support for WebKit2, instruct
        run-webkit-tests to always use WKTR. This avoids needing to pass
        flag "-2" every time.

        * Scripts/webkitpy/layout_tests/run_webkit_tests.py: 
        (_set_up_derived_options): Always set webkit_test_runner when
        the platform is GTK+.

2014-04-17  Brendan Long  <b.long@cablelabs.com>

        [Gtk] Install ninja-build in Tools/gtk/install-dependencies
        https://bugs.webkit.org/show_bug.cgi?id=131760

        Reviewed by Philippe Normand.

        * gtk/install-dependencies: Install ninja-build when it's available.

2014-04-16  peavo@outlook.com  <peavo@outlook.com>

        [Win] run-javascriptcore-tests fails to run.
        https://bugs.webkit.org/show_bug.cgi?id=131761

        Reviewed by Brent Fulgham.

        * Scripts/build-jsc: For now, don't try to build bmalloc on Windows.

2014-04-16  Andres Gomez  <agomez@igalia.com>

        [Win] Pass default parameters to cygwin setup wizard
        https://bugs.webkit.org/show_bug.cgi?id=131361

        Reviewed by Brent Fulgham.

        Added some parameters to the cygwin setup wizard so the user
        doesn't really have to do any interaction.

        * CygwinDownloader/cygwin-downloader.py:
        * CygwinDownloader/cygwin-downloader.zip:

2014-04-15  Brent Fulgham  <bfulgham@apple.com>

        [Win] Eliminate use of deleteAllValues in Windows Files
        https://bugs.webkit.org/show_bug.cgi?id=131631

        Reviewed by Darin Adler.

        Switch to std::unique_ptr for memory lifetime. Get rid of
        deleteAllValues now that it is no longer needed. Use ranged
        for loops where possible.

        * DumpRenderTree/win/DRTDataObject.cpp:
        (WCEnumFormatEtc::WCEnumFormatEtc):
        (DRTDataObject::~DRTDataObject):
        (DRTDataObject::GetData):
        (DRTDataObject::QueryGetData):
        (DRTDataObject::SetData):
        (DRTDataObject::clearData):
        * DumpRenderTree/win/DRTDataObject.h:
        * DumpRenderTree/win/UIDelegate.cpp:
        (DRTUndoObject::DRTUndoObject):
        (DRTUndoObject::~DRTUndoObject):
        (DRTUndoStack::~DRTUndoStack):
        (DRTUndoStack::clear):
        (DRTUndoStack::pop):
        (DRTUndoManager::DRTUndoManager):
        (DRTUndoManager::redo):
        (DRTUndoManager::undo):
        (UIDelegate::UIDelegate):
        (UIDelegate::resetUndoManager):
        * DumpRenderTree/win/UIDelegate.h:

2014-04-16  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] Unreviewed GTK gardening.

        Update list of skipped unit tests:

          Skip test: WebKit2Gtk/TestWebKitWebView:/webkit2/WebKitWebView/page-visibility

          Unskip tests: WebKit2/TestWebKit2:WebKit2.ResizeReversePaginatedWebView
          and WebKit2/TestWebKit2:WebKit2.ScrollPinningBehaviors

        * Scripts/run-gtk-tests:
        (TestRunner):

2014-04-16  Tim Horton  <timothy_horton@apple.com>

        check-webkit-style doesn't check code style in .mm or .m files
        https://bugs.webkit.org/show_bug.cgi?id=131708

        Reviewed by Darin Adler.

        * Scripts/webkitpy/style/checker.py:
        * Scripts/webkitpy/style/checker_unittest.py:
        (CheckerDispatcherDispatchTest.test_cpp_paths):
        (CheckerDispatcherDispatchTest.test_text_paths):
        Check .mm and .m files as C++.

        * Scripts/webkitpy/style/checkers/cpp.py:
        (check_spacing):
        Add an override for our ordinary "missing spaces around =" for @synthesize,
        which should look like "@synthesize propertyName=_varName;"

        Add an override for "missing space before {" for blocks' "^{".

        Don't follow the "extra space before [" rule for Objective-C, because
        it breaks this rule in a multitude of ways because of method calls.

        (check_braces):
        Don't complain about { not being on the end of the previous line if
        the previous line starts with "- (" or "+ (", which would indicate a
        Objective-C method definition.

2014-04-16  Darin Adler  <darin@apple.com>

        Make Vector::takeLast work with move-only types (and optimize for types where move is faster)
        https://bugs.webkit.org/show_bug.cgi?id=131735

        Reviewed by Alexey Proskuryakov.

        * TestWebKitAPI/Tests/WTF/Vector.cpp: Added a test for Vector::takeLast with move only types.
        Fixed invocations of EXPECT macros so the expected value is on the left, and the test result
        is on the right. This can be confusing since our JavaScript test framework does it the opposite
        way, but gtest works better this way.

2014-04-15  Hyowon Kim  <hw1008.kim@samsung.com>

        [EFL] Fix problems with the pixel dump.
        https://bugs.webkit.org/show_bug.cgi?id=131265

        Reviewed by Gyuyoung Kim.

        Painting and compositing paths of WebKit-EFL were totally modified from r166768.
        However pixel dump codes still call deprecated functions like ewk_view_paint(),
        which causes that nothing is drawn.

        This patch adds new member functions to AcceleratedCompositingContext to support pixel dump.
        One of new functions is AcceleratedCompositingContext::extractImageData(),
        which replaces deprecated function calls. Besides the extractImageData() is invoked by
        ewk_view_screenshot_contents_get() in order to take the visible content displayed on the EFL webview.

        * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
        (createBitmapContextFromWebView): Add to call DumpRenderTreeSupportEfl::forcePaint().

2014-04-15  Filip Pizlo  <fpizlo@apple.com>

        Update LLVM export scrpt to handle the build directory being different from the
        source directory.

        Rubber stamped by Geoffrey Garen.

        * Scripts/export-llvm-build:

2014-04-15  Ryosuke Niwa  <rniwa@webkit.org>

        Update the hyperlink to waterfall views of perf bots on build.webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=131695

        Reviewed by Antti Koivisto.

        Updated.

        * BuildSlaveSupport/build.webkit.org-config/templates/root.html:

2014-04-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Reduce the binary size by compressing the text based web inspector resources
        https://bugs.webkit.org/show_bug.cgi?id=121545

        Reviewed by Gustavo Noronha Silva.

        Compress text based files when compiling inspector resources. It
        reduces the binary size in 3MB.

        * gtk/generate-inspector-gresource-manifest.py:
        (find_all_files_in_directory):
        (is_compressible):

2014-04-14  Alexey Proskuryakov  <ap@apple.com>

        Remove Gtk WebKit1 tester.

        Gtk WebKit1 port no longer exists, and dashboard was trying to load its tester
        results over and over as fast as it could.

        * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
        (WebKitBuildbot):

2014-04-14  Alexey Proskuryakov  <ap@apple.com>

        Wrong link for webkitpy tests results in dashboard popover
        https://bugs.webkit.org/show_bug.cgi?id=131664

        Reviewed by Timothy Hatcher.

        * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:
        (BuildbotTesterQueueView.prototype._presentPopoverForMultipleFailureKinds):
        Use a correct link.

2014-04-14  Alexey Proskuryakov  <ap@apple.com>

        Update webkitpy regression test result that started to fail after http://trac.webkit.org/r167243

        I'm not sure whether the changes are desirable, but am not suspicious enough to roll out.

        * Scripts/webkitpy/common/checkout/checkout_unittest.py:
        (CommitMessageForThisCommitTest):

2014-04-14  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        Fix commit-log-editor bug revealed by r165447
        https://bugs.webkit.org/show_bug.cgi?id=130676

        Reviewed by Csaba Osztrogonác.

        * Scripts/commit-log-editor:
        (createCommitMessage): Omitting empty Source/JavaScriptCore:... blocks.
        Add \n before the first block too, because the longest common prefix now ends with only one newline.
        (removeLongestCommonPrefixEndingInNewline): The longest common prefix ends with only one newline,
        now the last block of the common prefix isn't duplicated below. Changing the function name accordingly.

2014-04-13  Darin Adler  <darin@apple.com>

        userVisibleString should not try to "encode" host names
        https://bugs.webkit.org/show_bug.cgi?id=131587
        rdar://problem/14686849

        Reviewed by Alexey Proskuryakov.

        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added URLExtras.mm.

        * TestWebKitAPI/Tests/mac/URLExtras.mm: Added. A few tests for WebCoreNSURLExtras.
        Coverage is tiny at this point; we could add a lot more cases!

2014-04-13  Jaehun Lim  <ljaehun.lim@samsung.com>

        Use #include instead of #import
        https://bugs.webkit.org/show_bug.cgi?id=131604

        Reviewed by Darin Adler.

        Fix "warning: #import is a deprecated GCC extension [-Wdeprecated]".

        * TestWebKitAPI/Tests/WTF/StringView.cpp:

2014-04-12  Filip Pizlo  <fpizlo@apple.com>

        Make slow-stress tests run faster by running fewer VM variants.

        Rubber stamped by Geoffrey Garen.

        * Scripts/run-javascriptcore-tests:
        * Scripts/run-jsc-stress-tests:

2014-04-10  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Add missing WTF unit tests
        https://bugs.webkit.org/show_bug.cgi?id=131459

        Reviewed by Martin Robinson.

        * TestWebKitAPI/CMakeLists.txt: Add a few missing source files
        that should be compiled into the TestWTF binary.

2014-04-10  Brendan Long  <b.long@cablelabs.com>

        [Gtk] run-launcher doesn't work by default
        https://bugs.webkit.org/show_bug.cgi?id=131494

        Reviewed by Philippe Normand.

        * Scripts/run-launcher: Always use MiniBrowser for WebKitGTK.
        * Scripts/webkitdirs.pm:
        (launcherName): Same.
        * Scripts/webkitpy/style/checker.py: Remove reference to GtkLauncher.
        * gtk/common.py:
        (get_build_path.is_valid_build_directory): Same.
        * gtk/manifest.txt: Same.

2014-04-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r167046.
        https://bugs.webkit.org/show_bug.cgi?id=131479

        Caused 300+ failures on Mavericks WK1 tester (Requested by ap
        on #webkit).

        Reverted changeset:

        "Remove "System Font" from whitelisted DRT fonts and char
        width calculations"
        https://bugs.webkit.org/show_bug.cgi?id=131411
        http://trac.webkit.org/changeset/167046

2014-04-09  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove "System Font" from whitelisted DRT fonts and char width calculations
        https://bugs.webkit.org/show_bug.cgi?id=131411

        Reviewed by Tim Horton.

        Covered by existing tests.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (allowedFontFamilySet):

2014-04-09  Myles C. Maxfield  <mmaxfield@apple.com>

        systemHiddenFontFamilySet in DRT is unnecessary
        https://bugs.webkit.org/show_bug.cgi?id=131414

        Reviewed by Tim Horton.

        It doesn't seem to affect test results on my machine.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (drt_NSFontManager_availableFonts):
        (systemHiddenFontFamilySet): Deleted.

2014-04-09  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed test fix: Don't double-release BSTR.

        * DumpRenderTree/win/DumpRenderTree.cpp:
        (dump): Remove unneeded call to SysFreeString now that we are
        using _bstr_t for this variable.

2014-04-09  Brent Fulgham  <bfulgham@apple.com>

        [Win] Various DumpRenderTree Fixes.
        https://bugs.webkit.org/show_bug.cgi?id=131446.

        Reviewed by Tim Horton.

        * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
        (AccessibilityUIElement::title): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (AccessibilityUIElement::description): Ditto.
        (AccessibilityUIElement::helpText): Ditto.
        (AccessibilityUIElement::intValue): Ditto.
        (AccessibilityUIElement::isPressActionSupported): Ditto.
        (AccessibilityUIElement::accessibilityValue): Ditto.
        * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
        (DRTDesktopNotificationPresenter::QueryInterface): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (DRTDesktopNotificationPresenter::AddRef): Ditto.
        (DRTDesktopNotificationPresenter::Release): Ditto.
        (DRTDesktopNotificationPresenter::showDesktopNotification): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (DRTDesktopNotificationPresenter::cancelDesktopNotification): Ditto.
        (DRTDesktopNotificationPresenter::notificationDestroyed): Ditto.
        (DRTDesktopNotificationPresenter::checkNotificationPermission): Ditto.
        (DRTDesktopNotificationPresenter::requestNotificationPermission): Ditto.
        * DumpRenderTree/win/DRTDesktopNotificationPresenter.h:
        * DumpRenderTree/win/DumpRenderTree.cpp:
        (dumpFrameScrollPosition): Ditto.
        (dumpFramesAsText): Ditto.
        (compareHistoryItems): Ditto.
        (dumpHistoryItem): Ditto.
        (dump): Ditto.
        (resetDefaultsToConsistentValues): Ditto.
        (resetWebViewToConsistentStateBeforeTesting): Ditto.
        (runTest): Ditto.
        (createWebViewAndOffscreenWindow): Ditto.
        * DumpRenderTree/win/EditingDelegate.cpp:
        (EditingDelegate::QueryInterface): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (EditingDelegate::AddRef): Ditto.
        (EditingDelegate::Release): Ditto.
        (dumpPath): Switch to _bstr_t. Use JSStringCreateWithBSTR
        (EditingDelegate::shouldBeginEditingInDOMRange): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (EditingDelegate::shouldEndEditingInDOMRange): Ditto.
        (EditingDelegate::shouldInsertNode): Ditto.
        (EditingDelegate::shouldInsertText): Ditto.
        (EditingDelegate::shouldDeleteDOMRange): Ditto.
        (EditingDelegate::shouldChangeSelectedDOMRange): Ditto.
        (EditingDelegate::shouldApplyStyle): Ditto.
        (EditingDelegate::shouldChangeTypingStyle): Ditto.
        (EditingDelegate::doPlatformCommand): Ditto.
        (EditingDelegate::webViewDidBeginEditing): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (EditingDelegate::webViewDidChange): Ditto.
        (EditingDelegate::webViewDidEndEditing): Ditto.
        (EditingDelegate::webViewDidChangeTypingStyle): Ditto.
        (EditingDelegate::webViewDidChangeSelection): Ditto.
        (EditingDelegate::checkSpellingOfString): Ditto.
        * DumpRenderTree/win/FrameLoadDelegate.cpp:
        (descriptionSuitableForTestResult): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (FrameLoadDelegate::FrameLoadDelegate): Ditto.
        (FrameLoadDelegate::QueryInterface): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (FrameLoadDelegate::AddRef): Ditto.
        (FrameLoadDelegate::Release): Ditto.
        (FrameLoadDelegate::didStartProvisionalLoadForFrame): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame): Ditto.
        (FrameLoadDelegate::didFailProvisionalLoadWithError): Ditto.
        (FrameLoadDelegate::didCommitLoadForFrame): Ditto.
        (FrameLoadDelegate::didReceiveTitle): Ditto.
        (FrameLoadDelegate::didChangeIcons): Ditto.
        (delegatesWithDelayedWork): Ditto.
        (FrameLoadDelegate::didFinishLoadForFrame): Ditto.
        (FrameLoadDelegate::didFailLoadWithError): Ditto.
        (FrameLoadDelegate::willPerformClientRedirectToURL): Ditto.
        (FrameLoadDelegate::didCancelClientRedirectForFrame): Ditto.
        (FrameLoadDelegate::willCloseFrame): Ditto.
        (FrameLoadDelegate::didFinishDocumentLoadForFrame): Ditto.
        (FrameLoadDelegate::didHandleOnloadEventsForFrame): Ditto.
        (FrameLoadDelegate::didFirstVisuallyNonEmptyLayoutInFrame): Ditto.
        (FrameLoadDelegate::didDisplayInsecureContent): Ditto.
        (FrameLoadDelegate::didRunInsecureContent): Ditto.
        * DumpRenderTree/win/FrameLoadDelegate.h:
        * DumpRenderTree/win/HistoryDelegate.cpp:
        (HistoryDelegate::didNavigateWithNavigationData): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (HistoryDelegate::updateHistoryTitle): Ditto.
        (HistoryDelegate::populateVisitedLinksForWebView): Ditto.
        * DumpRenderTree/win/PolicyDelegate.cpp:
        (dumpPath):
        (PolicyDelegate::QueryInterface): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (PolicyDelegate::AddRef): Ditto.
        (PolicyDelegate::Release): Ditto.
        (PolicyDelegate::decidePolicyForNavigationAction): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (PolicyDelegate::unableToImplementPolicyWithError): Ditto.
        * DumpRenderTree/win/ResourceLoadDelegate.cpp:
        (ResourceLoadDelegate::descriptionSuitableForTestResult): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (ResourceLoadDelegate::QueryInterface): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (ResourceLoadDelegate::AddRef): Ditto.
        (ResourceLoadDelegate::Release): Ditto.
        (ResourceLoadDelegate::identifierForInitialRequest): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (ResourceLoadDelegate::removeIdentifierForRequest): Ditto.
        (ResourceLoadDelegate::willSendRequest): Ditto.
        (ResourceLoadDelegate::didReceiveAuthenticationChallenge): Ditto.
        (ResourceLoadDelegate::didReceiveResponse): Ditto.
        (ResourceLoadDelegate::didFinishLoadingFromDataSource): Ditto.
        (ResourceLoadDelegate::didFailLoadingWithError): Ditto.
        * DumpRenderTree/win/TestRunnerWin.cpp: Ditto.
        (TestRunner::queueLoad): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (TestRunner::setUserStyleSheetLocation): Ditto.
        (TestRunner::execCommand): Ditto.
        (TestRunner::overridePreference): Ditto.
        (TestRunner::evaluateScriptInIsolatedWorld): Ditto.
        * DumpRenderTree/win/TextInputControllerWin.cpp: Ditto.
        (TextInputController::setMarkedText): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (TextInputController::insertText): Ditto.
        * DumpRenderTree/win/UIDelegate.cpp:
        (UIDelegate::QueryInterface): Get rid of uneeded STDMETHODCALLTYPE declaration.
        (UIDelegate::AddRef): Ditto.
        (UIDelegate::Release): Ditto.
        (UIDelegate::hasCustomMenuImplementation): Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (UIDelegate::trackCustomPopupMenu): Ditto.
        (UIDelegate::registerUndoWithTarget): Ditto.
        (UIDelegate::removeAllActionsWithTarget): Ditto.
        (UIDelegate::setActionTitle): Ditto.
        (UIDelegate::undo): Ditto.
        (UIDelegate::redo): Ditto.
        (UIDelegate::canUndo): Ditto.
        (UIDelegate::canRedo): Ditto.
        (UIDelegate::printFrame): Ditto.
        (UIDelegate::ftpDirectoryTemplatePath): Ditto.
        (UIDelegate::webViewHeaderHeight): Ditto.
        (UIDelegate::webViewFooterHeight): Ditto.
        (UIDelegate::drawHeaderInRect): Ditto.
        (UIDelegate::drawFooterInRect): Ditto.
        (UIDelegate::webViewPrintingMarginRect): Ditto.
        (UIDelegate::canRunModal): Ditto.
        (UIDelegate::createModalDialog): Ditto.
        (UIDelegate::runModal): Ditto.
        (UIDelegate::isMenuBarVisible): Ditto.
        (UIDelegate::setMenuBarVisible): Ditto.
        (UIDelegate::runDatabaseSizeLimitPrompt): Ditto.
        (UIDelegate::paintCustomScrollbar): Ditto.
        (UIDelegate::paintCustomScrollCorner): Ditto.
        (UIDelegate::setFrame): Ditto.
        (UIDelegate::webViewFrame): Ditto.
        (UIDelegate::runJavaScriptAlertPanelWithMessage): Ditto.
        (UIDelegate::runJavaScriptConfirmPanelWithMessage): Ditto.
        (UIDelegate::runJavaScriptTextInputPanelWithPrompt): Ditto.
        (UIDelegate::runBeforeUnloadConfirmPanelWithMessage): Ditto.
        (UIDelegate::webViewAddMessageToConsole): Ditto.
        (UIDelegate::doDragDrop): Ditto.
        (UIDelegate::webViewGetDlgCode): Ditto.
        (UIDelegate::createWebViewWithRequest): Ditto.
        (UIDelegate::webViewClose): Ditto.
        (UIDelegate::webViewFocus): Ditto.
        (UIDelegate::webViewUnfocus): Ditto.
        (UIDelegate::webViewPainted): Ditto.
        (UIDelegate::exceededDatabaseQuota): Ditto.
        (UIDelegate::embeddedViewWithArguments): Ditto.
        (UIDelegate::webViewClosing): Ditto.
        (UIDelegate::webViewSetCursor): Ditto.
        (UIDelegate::webViewDidInvalidate): Ditto.
        (UIDelegate::setStatusText): Ditto.
        (UIDelegate::desktopNotificationsDelegate): Ditto.
        (UIDelegate::drawBackground): Ditto.
        (UIDelegate::decidePolicyForGeolocationRequest): Ditto.
        (UIDelegate::didPressMissingPluginButton): Ditto.
        * DumpRenderTree/win/WorkQueueItemWin.cpp: Ditto.
        (LoadItem::invoke):  Switch to _bstr_t. Use JSStringCreateWithBSTR.
        (LoadHTMLStringItem::invoke): Ditto.
        (ScriptItem::invoke): Ditto.

2014-04-09  Gergo Balogh  <gbalogh.u-szeged@partner.samsung.com>

        Stylechecker: False positive on inline asm code.
        https://bugs.webkit.org/show_bug.cgi?id=130570

        Reviewed by Csaba Osztrogonác.

        Disable stylechecking in asm blocks.

        * Scripts/webkitpy/style/checkers/cpp.py:
        (process_line):
        (_InlineASMState):
        (_InlineASMState.__init__):
        (_InlineASMState.process_line):
        (_InlineASMState.isInside):
        (_process_lines):
        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
        (WebKitStyleTest.test_member_initialization_list):

2014-04-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move WebKit1 unit tests resources used by WebKit2 unit tests to WebKit2 resources dir
        https://bugs.webkit.org/show_bug.cgi?id=131029

        Reviewed by Philippe Normand.

        Add blank.ico and test.pdf to resources dir of WebKit2Gtk unit
        tests and remove the getWebKit1TestResoucesDir() method.

        * TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp:
        (testDownloadLocalFile): Use Test::getResourcesDir().
        (testDownloadLocalFileError): Ditto.
        (serverCallback): Ditto.
        * TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp:
        (serverCallback): Ditto.
        * TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp:
        (httpServerCallback): Ditto.
        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp:
        (serverCallback): Ditto.
        * TestWebKitAPI/Tests/WebKit2Gtk/resources/blank.ico: Added.
        * TestWebKitAPI/Tests/WebKit2Gtk/resources/test.pdf: Added.
        * TestWebKitAPI/gtk/WebKit2Gtk/TestMain.h:
        (Test::getWebKit1TestResoucesDir): Deleted.

2014-04-09  Alexey Proskuryakov  <ap@apple.com>

        [WK2] HTTP authentication regression tests fail
        https://bugs.webkit.org/show_bug.cgi?id=81627
        <rdar://problem/11079296>

        Reviewed by Anders Carlsson.

        * WebKitTestRunner/TestController.h:
        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::createWebViewWithOptions): Added canAuthenticateAgainstProtectionSpaceInFrame
        to pageLoaderClient structure.
        (WTR::TestController::canAuthenticateAgainstProtectionSpaceInFrame): Return true
        for password based authentication (we do get server trust challenges on some tests,
        which WKTR can't handle).
        When this client call is not implemented or returns false, didReceiveAuthenticationChallengeInFrame
        calls won't be made, at least on CFNetwork based platforms.
        (WTR::TestController::didReceiveAuthenticationChallengeInFrame): Changed the output
        to omit <unknown>. The resource is always unknown with WK2, and it doesn't really
        make sense to associate auth requests with individual resources - there can be
        multiple resources loading at once from the same protection space, so WebKit1 API
        that had a resource identifier was inherently racy.

2014-04-09  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL] Change font path for DumpRenderTree and WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=131427

        Reviewed by Gyuyoung Kim.

        Since r166973, font path was changed.

        * DumpRenderTree/PlatformEfl.cmake:
        * WebKitTestRunner/PlatformEfl.cmake:

2014-04-08  Geoffrey Garen  <ggaren@apple.com>

        Fix the build-jsc build
        https://bugs.webkit.org/show_bug.cgi?id=131410

        Reviewed by Michael Saboff.

        * Scripts/build-jsc: Make sure to build bmalloc before WTF, since
        WTF depends on it.

2014-04-08  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove WebKit1 unit tests
        https://bugs.webkit.org/show_bug.cgi?id=131359

        Reviewed by Anders Carlsson.

        Remove all WebKit1 GTK+ unit tests, in preparation for removing the WebKit1 port
        entirely. We also remove the list of skipped WebKi1 tests from run-gtk-tests, as
        they were inadvertently left in http://trac.webkit.org/changeset/166504.

        * CMakeLists.txt: No longer load the WebKit1 unit test CMakeLists.txt file.
        * Scripts/run-gtk-tests: Remove skipped WebKit1 unit tests.
        * TestWebKitAPI/Tests/WebKitGtk/CMakeLists.txt: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/resources/blank.ico: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/resources/test.html: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/resources/test.ogg: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/resources/test.pdf: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/resources/test.txt: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/test_utils.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/test_utils.h: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testapplicationcache.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testatk.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testatkroles.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testcontextmenu.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testcopyandpaste.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testdomdocument.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testdomdomwindow.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testdomnode.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testdownload.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testfavicondatabase.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testglobals.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testhittestresult.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testhttpbackend.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testkeyevents.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testloading.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testmimehandling.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testnetworkrequest.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testnetworkresponse.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebbackforwardlist.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebdatasource.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebframe.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebhistoryitem.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebinspector.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebplugindatabase.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebresource.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebsettings.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwebview.c: Removed.
        * TestWebKitAPI/Tests/WebKitGtk/testwindow.c: Removed.

2014-04-08  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed gardening (Take 2): Prevent users from attempting
        to build with known invalid cURL. 

        * Scripts/webkitdirs.pm:
        (checkInstalledTools): Check for 7.34.0 (the broken version), not
        7.33.0 (the known good version).

2014-04-08  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove DumpRenderTree and GtkLauncher
        https://bugs.webkit.org/show_bug.cgi?id=131373

        Reviewed by Andreas Kling.

        Remove the GTK+ port of DumpRenderTree and GtkLauncher. These tools are
        no longer necessary now that WebKit1 GTK+ will be removed.

        * CMakeLists.txt:
        * DumpRenderTree/PlatformGTK.cmake: Removed.
        * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp: Removed.
        * DumpRenderTree/gtk/DumpRenderTree.cpp: Removed.
        * DumpRenderTree/gtk/DumpRenderTreeGtk.h: Removed.
        * DumpRenderTree/gtk/EditingCallbacks.cpp: Removed.
        * DumpRenderTree/gtk/EditingCallbacks.h: Removed.
        * DumpRenderTree/gtk/EventSender.cpp: Removed.
        * DumpRenderTree/gtk/EventSender.h: Removed.
        * DumpRenderTree/gtk/GCControllerGtk.cpp: Removed.
        * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp: Removed.
        * DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp: Removed.
        * DumpRenderTree/gtk/SelfScrollingWebKitWebView.h: Removed.
        * DumpRenderTree/gtk/TestRunnerGtk.cpp: Removed.
        * DumpRenderTree/gtk/TextInputController.cpp: Removed.
        * DumpRenderTree/gtk/TextInputController.h: Removed.
        * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: Removed.
        * GtkLauncher/CMakeLists.txt: Removed.
        * GtkLauncher/LauncherInspectorWindow.c: Removed.
        * GtkLauncher/LauncherInspectorWindow.h: Removed.
        * GtkLauncher/main.c: Removed.
        * GtkLauncher/simple.svg: Removed.
        * GtkLauncher/text.html: Removed.
        * WebKitTestRunner/PlatformGTK.cmake:
        * WebKitTestRunner/gtk/fonts/AHEM____.TTF: Renamed from Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF.
        * WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon: Renamed from Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon.
        * WebKitTestRunner/gtk/fonts/fonts.conf: Renamed from Tools/DumpRenderTree/gtk/fonts/fonts.conf.

2014-04-08  Mark Rowe  <mrowe@apple.com>

        XPC services launched by Safari have wrong DYLD_FRAMEWORK_PATH set when launched via run-safari / debug-safari
        <https://webkit.org/b/131388> / <rdar://problem/16291687>

        Reviewed by Alexey Proskuryakov.

        * Scripts/webkitdirs.pm:
        (runMacWebKitApp): Set __XPC_DYLD_FRAMEWORK_PATH to the absolute path to the built products directory.
        (execMacWebKitAppForDebugging): Ditto.

2014-04-08  Geoffrey Garen  <ggaren@apple.com>

        Build bmalloc on iOS too
        https://bugs.webkit.org/show_bug.cgi?id=131381

        Reviewed by Andreas Kling.

        * Scripts/build-webkit:

2014-04-08  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed gardening: Prevent users from attempting
        to build with known invalid cURL.

        * Scripts/webkitdirs.pm:
        (checkInstalledTools): Block build attempts with bad
        Cygwin tool set.

2014-04-07  Geoffrey Garen  <ggaren@apple.com>

        Build bmalloc on Mac
        https://bugs.webkit.org/show_bug.cgi?id=131333

        Reviewed by Mark Rowe.

        * Scripts/build-webkit: Add the bmalloc target if we're on Mac.
        (Note: Just testing Mac is not good enough because in this
        script 'Mac' means 'Mac or iOS'.)

2014-03-30  Filip Pizlo  <fpizlo@apple.com>

        Move slow JSRegress tests out of the way so that they don't show up in run-jsc-benchmarks runs and also skip tests that are extremely long-running
        https://bugs.webkit.org/show_bug.cgi?id=130951

        Reviewed by Geoffrey Garen.

        * Scripts/run-javascriptcore-tests:

2014-04-06  Darin Adler  <darin@apple.com>

        Rework CSS calc logic, fixing some reference count mistakes in Length
        https://bugs.webkit.org/show_bug.cgi?id=131280

        Reviewed by Andreas Kling.

        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added CalculationValue.cpp.
        * TestWebKitAPI/Tests/WebCore/CalculationValue.cpp: Added.

2014-04-04  Brian J. Burg  <burg@cs.washington.edu>

        Enable WEB_REPLAY for PLATFORM(MAC)
        https://bugs.webkit.org/show_bug.cgi?id=130700

        Reviewed by Timothy Hatcher.

        * Scripts/webkitperl/FeatureList.pm: Set the default for WEB_REPLAY for OS X engineering builds.

2014-04-05  Raphael Kubo da Costa  <raphael.kubo.da.costa@intel.com>

        [CMake] Include X11's include dirs in TestNetscapePlugin
        https://bugs.webkit.org/show_bug.cgi?id=131270

        Reviewed by Martin Robinson.

        * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt: Include X11_INCLUDE_DIR since
        TestNetscapePlugin includes WebCore code that includes X headers.

2014-04-05  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r166529): Fix build after renaming TileCache to LegacyTileCache
        <http://webkit.org/b/130986>

        * Scripts/check-for-inappropriate-objc-class-names: Add 'Legacy'
        prefix to TileCache class names in exception list.

2014-04-04  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] kill-old-processes should kill dbus-daemon processes
        https://bugs.webkit.org/show_bug.cgi?id=127352

        Reviewed by Martin Robinson.

        * BuildSlaveSupport/kill-old-processes:
        (main):

2014-04-04  Andres Gomez  <agomez@igalia.com>

        [Win] Update obsolete packages in cygwin
        https://bugs.webkit.org/show_bug.cgi?id=126264

        Reviewed by Brent Fulgham.

        Removed "apache" and "minires" as the first has been replaced by
        "lighttpd" and the second is now integrated into
        "cygwin". Replaced the transitional and now obsolete "gcc" package
        with "gcc-g++" and ensure that "python" stays at version "2.6.8"
        since the newer version available is "2.7.3" which breaks the
        build due to some funniness with environment variable handling.

        * CygwinDownloader/cygwin-downloader.py:
        * CygwinDownloader/cygwin-downloader.zip:

2014-04-03  Joseph Pecoraro  <pecoraro@apple.com>

        check-webkit-style: Improve warnings on Objective-C @property syntax
        https://bugs.webkit.org/show_bug.cgi?id=131200

        Reviewed by Dan Bernstein.

        * Scripts/webkitpy/style/checkers/cpp.py:
        (check_spacing):
        (CppChecker):
        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
        (CppStyleTest.test_spacing_in_objective_c_properties):

2014-04-03  Santosh Mahto  <santoshbit2007@gmail.com>

        Unreviewed. Moving my name to commiter section

        * Scripts/webkitpy/common/config/contributors.json:

2014-04-03  Santosh Mahto  <santoshbit2007@gmail.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-04-03  Andrzej Badowski  <a.badowski@samsung.com>

        [EFL][WK2] Replacing zoom functionality of MiniBrowser from scale_set to page_zoom_set.
        https://bugs.webkit.org/show_bug.cgi?id=130391

        Reviewed by Gyuyoung Kim.

        Change the implementation of the zoom functionality from ewk_view_scale_set
        to ewk_view_page_zoom_set.

        * MiniBrowser/efl/main.c:

2014-04-03  Manuel Rego Casasnovas  <rego@igalia.com>

        [webkitpy] perf profiler does not understand --call-graph argument
        https://bugs.webkit.org/show_bug.cgi?id=131132

        Reviewed by Ryosuke Niwa.

        New versions of perf profiler have changed the argument from --call-graph to -g.

        * Scripts/webkitpy/common/system/profiler.py:
        (Perf.wrapper_arguments): Use -g instead of --call-graph.
        * Scripts/webkitpy/port/driver_unittest.py:
        (DriverTest.test_profiler_as_wrapper): Update test accordingly.

2014-04-03  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        Add EFL WK2 performance bot to build.webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=131034

        Fix after r166707, use "Perf" instead of "perf" for consistency.

        Reviewed by Csaba Osztrogonác.

        * BuildSlaveSupport/build.webkit.org-config/config.json:

2014-04-03  Zsolt Borbely  <zsborbely.u-szeged@partner.samsung.com>

        Add EFL WK2 performance bot to build.webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=131034

        Reviewed by Csaba Osztrogonác.

        * BuildSlaveSupport/build.webkit.org-config/config.json:

2014-04-02  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK1] Use Evas_Touch_Point_State instead of Ewk_Touch_Point_Type
        https://bugs.webkit.org/show_bug.cgi?id=131151

        Reviewed by Gyuyoung Kim.

        * DumpRenderTree/efl/EventSender.cpp: Replace Ewk_Touch_Point_Type to Evas_Touch_Point_State.
        (TouchEventInfo::TouchEventInfo):
        (sendTouchEvent):
        (addTouchPointCallback):
        (updateTouchPointCallback):
        (cancelTouchPointCallback):
        (releaseTouchPointCallback):

2014-04-02  David Kilzer  <ddkilzer@apple.com>

        filter-build-webkit: Ignore xcodebuild warnings when compiling with newer builds of clang
        <http://webkit.org/b/131045>

        Reviewed by Daniel Bates.

        * Scripts/filter-build-webkit:
        (shouldIgnoreLine): Ignore DVTAssertions related to new builds
        of clang, plus debug data for all DVTAssertions.

2014-04-01  Dean Jackson  <dino@apple.com>

        Load Media Controls js/css from bundle
        https://bugs.webkit.org/show_bug.cgi?id=131086

        Reviewed by Eric Carlson.

        We're now putting CSS files into the bundle, so remove the test for them.

        * Scripts/check-for-inappropriate-files-in-framework:

2014-04-02  Martin Hock  <mhock@apple.com>

        Unify private browsing with sessions.
        https://bugs.webkit.org/show_bug.cgi?id=130099

        Reviewed by Alexey Proskuryakov.

        Add an API test for ephemeral sessions similar to PrivateBrowsingPushStateNoHistoryCallback.
        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
        * TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp:
        (TestWebKitAPI::didNavigateWithNavigationData):
        (TestWebKitAPI::didSameDocumentNavigationForFrame):
        (TestWebKitAPI::TEST):

        * TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp: Also test to make sure private browsing can be disabled.
        (TestWebKitAPI::didNavigateWithoutNavigationData):
        (TestWebKitAPI::didNavigateWithNavigationData):
        (TestWebKitAPI::didSameDocumentNavigationForFrame):
        (TestWebKitAPI::TEST):

2014-04-02  Martin Robinson  <mrobinson@igalia.com>

        REGRESSION(r165704): [GTK] Inspector resources not correctly generated
        https://bugs.webkit.org/show_bug.cgi?id=130343

        Reviewed by Gustavo Noronha Silva.

        * gtk/generate-inspector-gresource-manifest.py: Instead of hard-coding the file list, accept a list
        of directories on the command line and look for all appropriate files in those directories for the
        GResource archive. Also make archive paths relative to those directories.
        (find_all_files_in_directory): This helper looks for all the appropriate files in a given directory.
        (find_all_files_in_directory.select_file): Whether or not to add the file to the archive.

2014-04-02  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [webkitpy] Avoid multiple "Preparing rollout for bug" log messages
        https://bugs.webkit.org/show_bug.cgi?id=131106

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/tool/commands/download.py:
        (AbstractRolloutPrepCommand._prepare_state):
        * Scripts/webkitpy/tool/commands/download_unittest.py:
        (test_prepare_rollout):
        (test_create_rollout):
        (test_create_rollout_resolved):
        (test_rollout):

2014-04-02  Krzysztof Wolanski  <k.wolanski@samsung.com>

        [EFL] Add option to use separate web process for new window in MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=130190

        Reviewed by Gyuyoung Kim.

        New created window (CTRL + n) will be open in separated web process.
        This option is enabled by adding a flag (S/separate-process) with launching
        MiniBrowser.

        * MiniBrowser/efl/main.c:
        (elm_main):

2014-04-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Move NEWS file to a new location
        https://bugs.webkit.org/show_bug.cgi?id=130901

        Reviewed by Brent Fulgham.

        * gtk/manifest.txt: Update the NEWS file path.

2014-04-01  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController awakeFromNib]):
        (-[WK2BrowserWindowController dealloc]):
        (-[WK2BrowserWindowController observeValueForKeyPath:ofObject:change:context:]):

2014-04-01  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed test gardening.

        * Scripts/webkitpy/port/base_unittest.py:
        (PortTest.test_build_path): Handle the Debug case so we don't get webkitpy-test failures on our test bots.

2014-04-01  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Exclusions] Remove exclusions parsing support
        https://bugs.webkit.org/show_bug.cgi?id=131046

        Reviewed by David Hyatt.

        * Scripts/webkitperl/FeatureList.pm:

2014-04-01  Manuel Rego Casasnovas  <rego@igalia.com>

        [GTK] Remove last reference to GTK+ WK1 EWS
        https://bugs.webkit.org/show_bug.cgi?id=131058

        Reviewed by Martin Robinson.

        In r166427 WK1 GTK+ bots and EWS where removed, but this file was missing.

        * QueueStatusServer/config/queues.py: Remove reference to GTK+ WK1 EWS.

2014-04-01  Lucas Forschler  <lforschler@apple.com>

        Add a 32bit JSC builder/tester.
        https://bugs.webkit.org/show_bug.cgi?id=131054
        
        Reviewed by Michael Saboff.

        * BuildSlaveSupport/build.webkit.org-config/config.json:
        * BuildSlaveSupport/build.webkit.org-config/master.cfg:
        (Compile32bitJSC):
        (Run32bitJSCTests):
        (Run32bitJSCTests.countFailures):
        (BuildAndTest32bitJSCFactory):
        (BuildAndTest32bitJSCFactory.__init__):

2014-04-01  Martin Robinson  <mrobinson@igalia.com>

        [GTK] No longer build WebKit1 gtkdoc
        https://bugs.webkit.org/show_bug.cgi?id=130970

        Reviewed by Anders Carlsson.

        * gtk/common.py:
        (gtk_version_of_pkg_config_file): Deleted.
        * gtk/generate-gtkdoc:
        (get_gtkdoc_module_paths): We no longer need to worry about GTK+ 2, since it
        was only applicable for WebKit1.
        (get_generator_for_config): No longer look for the WebKit1 configuration file.

2014-04-01  Mario Sanchez Prada  <mario.prada@samsung.com>

        [GTK] Running minibrowser with url crashes in debug build
        https://bugs.webkit.org/show_bug.cgi?id=130492

        Reviewed by Martin Robinson.

        Update "uri-scheme" test not to use invalid URIs in it, so we
        don't get a mistmatch when comparing the original URI stored in
        the test class with the one returned by the WebKitWebView.

        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:
        (testWebContextURIScheme): Update the test.

2014-04-01  Mihai Tica  <mitica@adobe.com>

        Unreviewed: Add myself as a commiter to the contributors list.

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-31  Ryuan Choi  <ryuan.choi@samsung.com>

        [EFL][WK2] Extract the control of page background out of color_set
        https://bugs.webkit.org/show_bug.cgi?id=127539

        Reviewed by Gyuyoung Kim.

        Added an option(C) to change background color.

        * MiniBrowser/efl/main.c:
        (window_create):
        (elm_main):

2014-03-31  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on the EFL port with latest EFL libraries since r166149

        * ImageDiff/PlatformEfl.cmake: Added ECORE_IMF_INCLUDE_DIRS to include dirs

2014-03-31  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed test correction after r166530.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (setDefaultsToConsistentValuesForTesting): No need to change preference for all tests. We set the proper
        fine-grained setting for swipe tests. This prevents existing tests from breaking.

2014-03-31  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Remove the trigger for webkit1 tests on the gtk-linux-64-release bot
        https://bugs.webkit.org/show_bug.cgi?id=130987

        r166427 removed the WebKit1 GTK+ bots, so we don't longer need to
        trigger the webkit1 bot tests on the gtk-linux-64-release bot.

        Reviewed by Martin Robinson.

        * BuildSlaveSupport/build.webkit.org-config/config.json:

2014-03-31  Dean Jackson  <dino@apple.com>

        Remove WEB_ANIMATIONS
        https://bugs.webkit.org/show_bug.cgi?id=130989

        Reviewed by Simon Fraser.

        Remove this feature flag until we plan to implement.

        * Scripts/webkitperl/FeatureList.pm:

2014-03-31  Brent Fulgham  <bfulgham@apple.com>

        Reduced Latched Scroll Test Flakiness
        https://bugs.webkit.org/show_bug.cgi?id=130983

        Reviewed by Darin Adler.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (setDefaultsToConsistentValuesForTesting): Test user should have 'high resolution' scrolling.
        * DumpRenderTree/mac/EventSendingController.mm:
        (-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]): Generate mouse wheel events
        with high resolution flags turned on.
        * WebKitTestRunner/mac/EventSenderProxy.mm:
        (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Ditto.

2014-03-31  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        run-webkit-tests should have a --no-timeout option
        https://bugs.webkit.org/show_bug.cgi?id=128286

        Reviewed by Joseph Pecoraro.

        * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
        (Worker._run_test): Renaming _run_test_with_timeout()
        (Worker._run_test_with_or_without_timeout): Renaming _run_test_with_timeout(), because tests can now run without timeout.
        (Worker._run_test_in_another_thread): Passing the --no-timeout option to the driver
        (Worker._run_test_in_this_thread):
        (Worker._run_test_with_timeout): Deleted.
        * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
        (parse_args): Added the --no-timeout option

2014-03-31  Samuel White  <samuel_white@apple.com>

        AX: Need ability to get line range for text marker.
        https://bugs.webkit.org/show_bug.cgi?id=130906

        Reviewed by Chris Fleizach.

        Added a new function in DRT and TestRunner to test that AXLineTextMarkerRangeForTextMarker works as expected.

        * DumpRenderTree/AccessibilityUIElement.cpp:
        (lineTextMarkerRangeForTextMarkerCallback):
        (AccessibilityUIElement::lineTextMarkerRangeForTextMarker):
        (AccessibilityUIElement::getJSClass):
        * DumpRenderTree/AccessibilityUIElement.h:
        * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
        (AccessibilityUIElement::lineTextMarkerRangeForTextMarker):
        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
        (WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker):
        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
        * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker):
        * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
        (WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker):
        * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
        (WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker):

2014-03-31  Filip Pizlo  <fpizlo@apple.com>

        More validation for FTL inline caches
        https://bugs.webkit.org/show_bug.cgi?id=130948

        Reviewed by Geoffrey Garen.

        * Scripts/run-jsc-stress-tests:

2014-03-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Do not run WebKit1 unit tests by default
        https://bugs.webkit.org/show_bug.cgi?id=130968

        Reviewed by Martin Robinson.

        * Scripts/run-gtk-tests:
        (TestRunner):

2014-03-31  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove scripts code only applicable to autotools
        https://bugs.webkit.org/show_bug.cgi?id=130841

        Reviewed by Anders Carlsson.

        * BuildSlaveSupport/build.webkit.org-config/wkbuild.py:
        (_should_file_trigger_build): Update file list to reflect GTK+ CMake port.
        * Scripts/webkitpy/common/config/watchlist: Remove the GTK+ build watchlist.
        * Scripts/webkitpy/style/checker.py: The GNUmakefile doesn't exist any longer.
        * gtk/find-make-dist-errors: Removed.
        * gtk/generate-feature-defines-files: Removed.
        * gtk/manifest.txt: No longer need to consider autotools files.

2014-03-30  Andy Estes  <aestes@apple.com>

        Fix two failing layout tests on Mountain Lion after r166466.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadDelegate _downloadDidStart:]):

2014-03-30  Andy Estes  <aestes@apple.com>

        [Cocoa] Add an originatingWebView property to _WKDownload
        https://bugs.webkit.org/show_bug.cgi?id=130945

        Reviewed by Anders Carlsson.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadDelegate _downloadDidStart:]):
        (-[OriginatingWebViewDownloadDelegate initWithWebView:]):
        (-[OriginatingWebViewDownloadDelegate _downloadDidStart:]):
        (TEST):

2014-03-28  Filip Pizlo  <fpizlo@apple.com>

        Land the stackmap register liveness glue with the uses of the liveness disabled
        https://bugs.webkit.org/show_bug.cgi?id=130924

        Reviewed by Oliver Hunt.

        * Scripts/run-jsc-stress-tests:

2014-03-29  Alexey Proskuryakov  <ap@apple.com>

        Update WebKit1.StringTruncator for Mountain Lion.

        * TestWebKitAPI/Tests/mac/StringTruncator.mm: Looks like one subtest was failing
        due to different font metrics on 10.8.

2014-03-28  Darin Adler  <darin@apple.com>

        Fix recently-introduced off-by-one error in centerTruncateToBuffer
        https://bugs.webkit.org/show_bug.cgi?id=130889

        Reviewed by Alexey Proskuryakov.

        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added StringTruncator.mm.
        * TestWebKitAPI/Tests/mac/StringTruncator.mm: Added. One test for each of the
        WebStringTruncator methods; should be good for a start. These are dependent on the
        metrics of Helvetica 12, but I am hoping that will be consistent across OS X machines.

2014-03-28  Martin Hock  <mhock@apple.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-28  Martin Robinson  <mrobinson@igalia.com>

        Remove WebKit1 GTK+ bots
        https://bugs.webkit.org/show_bug.cgi?id=130904

        Reviewed by Anders Carlsson.

        * BuildSlaveSupport/build.webkit.org-config/config.json: Remove references to GTK+ WebKit1 test bot and ensure
        all bots are testing WebKit2 only.
        * Scripts/webkitpy/common/config/ews.json: Remove references to GTK+ WK1 EWS.
        * Scripts/webkitpy/common/config/ports.py: Remove references to GTK+ WK1 bots.
        * Scripts/webkitpy/common/config/ports_unittest.py: Ditto.
        * Scripts/webkitpy/port/builders.py: Ditto.
        * Scripts/webkitpy/tool/commands/rebaseline_unittest.py: Ditto.
        * TestResultServer/static-dashboards/builders.jsonp: Ditto.

2014-03-28  Timothy Hatcher  <timothy@apple.com>

        Remove Brian Burg's apple.com email address.

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-28  David Kilzer  <ddkilzer@apple.com>

        bisect-builds should print Trac 'changeset' URL if only one build is detected
        <http://webkit.org/b/130903>

        Reviewed by Dan Bernstein.

        * Scripts/bisect-builds:
        (printTracLink): Print a direct link to the Trac 'changeset'
        URL if there is only one revision in the range.

2014-03-28  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        [EFL] Bump glib version from 2.36 to 2.38 
        https://bugs.webkit.org/show_bug.cgi?id=130886

        Reviewed by Csaba Osztrogonác.

        There is a build break on EFL port when using glib 2.36 ver. To fix it,
        we need to bump glib version up to 2.38 as gtk port.

        * efl/jhbuild.modules:

2014-03-27  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        <https://webkit.org/b/42704> WebKitTestRunner needs to print history delegate information

        Provide an implementation of WKContextHistoryClient that logs when called for tests in
        the globalhistory directory.

        Reviewed by Sam Weinig.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::TestController):
        (WTR::TestController::initialize): Set the history client.
        (WTR::TestController::resetStateToConsistentValues): Disable logging of history client callbacks.
        (WTR::TestController::didNavigateWithNavigationData): Log information about the navigation. Some portions
        of the output are hard-coded to match WebKit1's results for now since they're fixed in our existing tests
        and we don't yet have API to access the data in question.
        (WTR::TestController::didPerformClientRedirect):
        (WTR::TestController::didPerformServerRedirect):
        (WTR::TestController::didUpdateHistoryTitle):
        * WebKitTestRunner/TestController.h:
        (WTR::TestController::setShouldLogHistoryClientCallbacks):
        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::shouldLogHistoryClientCallbacks): Log history client callbacks for tests in a globalhistory directory.
        (WTR::TestInvocation::invoke):

2014-03-27  Filip Pizlo  <fpizlo@apple.com>

        Revert http://trac.webkit.org/changeset/166386 because it broke builds.

        * Scripts/build-webkit:
        * Scripts/copy-webkitlibraries-to-product-directory:

2014-03-27  Filip Pizlo  <fpizlo@apple.com>

        Switch the LLVMForJSC target to using the LLVM in /usr/local rather than /usr/local/LLVMForJavaScriptCore on iOS
        https://bugs.webkit.org/show_bug.cgi?id=130867
        <rdar://problem/16432456> 

        Reviewed by Mark Hahnenberg.

        * Scripts/build-webkit:
        * Scripts/copy-webkitlibraries-to-product-directory:

2014-03-26  Andy Estes  <aestes@apple.com>

        [Cocoa] Expose DownloadClient::didFail() and DownloadClient::didCancel()
        https://bugs.webkit.org/show_bug.cgi?id=130805

        Reviewed by Dan Bernstein.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadDelegate _download:didReceiveResponse:]):
        (-[DownloadDelegate _downloadDidFinish:]):
        (runTest):
        (TEST):
        (-[FailingDownloadDelegate _downloadDidFinish:]):
        (-[FailingDownloadDelegate _download:didFailWithError:]):
        (-[FailingDownloadDelegate _downloadDidCancel:]):
        (-[CancelledDownloadDelegate _downloadDidStart:]):
        (-[CancelledDownloadDelegate _downloadDidFinish:]):
        (-[CancelledDownloadDelegate _download:didFailWithError:]):
        (-[CancelledDownloadDelegate _downloadDidCancel:]):
        (-[DownloadDelegate initWithSourceURL:]): Deleted.
        (-[DownloadDelegate sourceURL]): Deleted.
        (runTestWithNavigationDelegate): Deleted.

2014-03-26  Anders Carlsson  <andersca@apple.com>

        Change MiniBrowser to hold on to window controllers instead of windows
        https://bugs.webkit.org/show_bug.cgi?id=130797

        Reviewed by Oliver Hunt.

        * MiniBrowser/mac/AppDelegate.h:
        * MiniBrowser/mac/AppDelegate.m:
        (-[BrowserAppDelegate init]):
        (-[BrowserAppDelegate newWindow:]):
        (-[BrowserAppDelegate browserWindowWillClose:]):
        (-[BrowserAppDelegate applicationWillTerminate:]):
        (-[BrowserAppDelegate frontmostBrowserWindowController]):

2014-03-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r166264.
        https://bugs.webkit.org/show_bug.cgi?id=130785

        Broke some window.opener tests for WK2 Mavericks (Requested by
        brrian__ on #webkit).

        Reverted changeset:

        "Web Replay: resource unique identifiers should be unique-per-
        frame, not globally"
        https://bugs.webkit.org/show_bug.cgi?id=130632
        http://trac.webkit.org/changeset/166264

2014-03-26  Zoltan Horvath  <zoltan@webkit.org>

        [CSS Shapes] Remove shape-inside support
        https://bugs.webkit.org/show_bug.cgi?id=130698

        Reviewed by David Hyatt.

        * Scripts/webkitperl/FeatureList.pm:

2014-02-27  Gurpreet Kaur  <k.gurpreet@samsung.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-26  Tomas Popela  <tpopela@redhat.com>

        run-launcher is Perl script so use elsif and not elif
        https://bugs.webkit.org/show_bug.cgi?id=130771

        Reviewed by Carlos Garcia Campos.

        * Scripts/run-launcher:

2014-03-26  Krzysztof Czech  <k.czech@samsung.com>

        [ATK] Utilize new AtkValue interface coming in ATK 2.11.92
        https://bugs.webkit.org/show_bug.cgi?id=130575

        Reviewed by Mario Sanchez Prada.

        Change ATK version to 2.11.92. Adjust current implementation.

        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        (AccessibilityUIElement::intValue):
        (AccessibilityUIElement::minValue):
        (AccessibilityUIElement::maxValue):
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::intValue):
        (WTR::AccessibilityUIElement::minValue):
        (WTR::AccessibilityUIElement::maxValue):
        * efl/jhbuild.modules:
        * gtk/jhbuild.modules:

2014-03-12  Philippe Normand  <pnormand@igalia.com>

        [GTK] The gnumake package is no longer needed in jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=130121

        Reviewed by Martin Robinson.

        For GTK build-webkit now relies on cmake and ninja/gnumake. Even
        for a debug build cmake/system-gnumake worked just fine for me.

        * gtk/jhbuild.modules: Removed gnumake.
        * gtk/patches/make-3.82-arg-list-length.patch: Removed.
        * gtk/patches/make-3.82-parallel-build.patch: Removed.

2014-03-25  Andy Estes  <aestes@apple.com>

        Fix a failing API test on Mountain Lion and remove temporary debug logging.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadDelegate _download:didReceiveData:]):
        (-[DownloadDelegate _downloadDidFinish:]):

2014-03-25  Brian Burg  <bburg@apple.com>

        Web Replay: resource unique identifiers should be unique-per-frame, not globally
        https://bugs.webkit.org/show_bug.cgi?id=130623

        Reviewed by Timothy Hatcher.

        The resource loader callback dumping routines assumed that resource identifiers
        were globally unique. Its map of resource identifiers to URLs must also track the
        frame associated with the resource.

        * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
        (WTR::dumpResourceURL): Additionally take a WKBundleFrameRef argument, and use the
        opaque pointer as part of the key for assignedUrlsCache. The frame pointer is
        stable as long as the frame is valid.
        (WTR::InjectedBundlePage::didInitiateLoadForResource):
        (WTR::InjectedBundlePage::willSendRequestForFrame):
        (WTR::InjectedBundlePage::didReceiveResponseForResource):
        (WTR::InjectedBundlePage::didFinishLoadForResource):
        (WTR::InjectedBundlePage::didFailLoadForResource):

2014-03-25  Andy Estes  <aestes@apple.com>

        Fix one API test expectation failure on Mountain Lion, and add additional logging to help diagnose another.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadDelegate _download:didReceiveResponse:]):
        (-[DownloadDelegate _download:didReceiveData:]):

2014-03-25  Andy Estes  <aestes@apple.com>

        Add some debug logging to an API test that's failing on Mountain Lion.

        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
        (-[DownloadDelegate _download:didReceiveResponse:]):
        (-[DownloadDelegate _downloadDidFinish:]):

2014-03-25  Anders Carlsson  <andersca@apple.com>

        Add goBack: and goForward: IBActions and move stopLoading: to a new WKIBActions category on WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=130732

        Reviewed by Tim Horton.

        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController validateUserInterfaceItem:]):

2014-03-25  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the autotools build
        https://bugs.webkit.org/show_bug.cgi?id=130717

        Reviewed by Anders Carlsson.

        * DumpRenderTree/config.h: Remove references to the autotools configure file.
        * GNUmakefile.am: Removed.
        * GtkLauncher/GNUmakefile.am: Removed.
        * GtkLauncher/main.c: Remove references to the autotools configure file.
        * MiniBrowser/gtk/BrowserDownloadsBar.c: Ditto.
        * MiniBrowser/gtk/BrowserSearchBar.c: Ditto.
        * MiniBrowser/gtk/BrowserWindow.c: Ditto.
        * MiniBrowser/gtk/GNUmakefile.am: Removed.
        * MiniBrowser/gtk/main.c: Remove references to the autotools configure file.
        * Scripts/build-webkit: No longer handle autotools.
        * Scripts/run-gtk-tests: Ditto.
        (TestRunner._setup_testing_environment):
        * Scripts/run-launcher: Ditto.
        * Scripts/webkitdirs.pm: Ditto.
        * Scripts/webkitpy/common/config/contributionareas.py: Remove autotools as a contribution area.
        * Scripts/webkitpy/common/config/contributors.json: Ditto.
        * Scripts/webkitpy/port/gtk.py: No longer handle autotools.
        * Scripts/webkitpy/style/checker.py:
        * TestWebKitAPI/GNUmakefile.am: Removed.
        * TestWebKitAPI/config.h: Remove references to the autotools configure file.
        * WebKitTestRunner/GNUmakefile.am: Removed.
        * WebKitTestRunner/WebKitTestRunnerPrefix.h: Ditto.
        * gtk/GNUmakefile.am: Removed.
        * gtk/common.py: Remove checks for the autotools build.
        * gtk/symbols.filter: Renamed from Source/autotools/symbols.filter.

2014-03-25  László Langó  <llango.u-szeged@partner.samsung.com>

        prepare-ChangeLog throws false positive warnings for modified files.
        https://bugs.webkit.org/show_bug.cgi?id=130687

        Reviewed by Darin Adler.

        * Scripts/prepare-ChangeLog:
        (originalFile): Ignore git commit paremeter.
        We don't need this to get the unmodified file.
        (extractLineRangeBeforeChange):
        Simplify the if statement. Follow-up after r166189.

2014-03-25  Gabor Rapcsanyi  <rgabor@webkit.org>

        [EFL] Add ARM64 build support
        https://bugs.webkit.org/show_bug.cgi?id=130506

        Rubber stamped by Gyuyoung Kim.

        * Scripts/webkitdirs.pm:
        (isARM): Detect aarch64 as ARM.

2014-03-25  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [webkitpy] Improve _parse_bug_description to recognize more descriptions
        https://bugs.webkit.org/show_bug.cgi?id=130137

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/common/checkout/changelog.py:
        (ChangeLogEntry._parse_bug_description):
        * Scripts/webkitpy/common/checkout/changelog_unittest.py:
        (test_parse_log_entries_from_changelog):
        * Scripts/webkitpy/common/checkout/checkout_unittest.py:
        (CheckoutTest.test_commit_info_for_revision):

2014-03-24  Andy Estes  <aestes@apple.com>

        Fix the iOS build of TestWebKitAPI.

        * TestWebKitAPI/Configurations/Base.xcconfig:
        * TestWebKitAPI/PlatformUtilities.h:

2014-03-24  László Langó  <llango.u-szeged@partner.samsung.com>

        Fix prepare-ChangeLog after r166156.
        https://bugs.webkit.org/show_bug.cgi?id=130674

        Reviewed by Darin Adler.

        * Scripts/prepare-ChangeLog:
        (generateFunctionLists):
        (extractLineRangeBeforeChange):

2014-03-24  Andy Estes  <aestes@apple.com>

        [iOS] Download support by CFURLDownloadRef under USE(CFNETWORK).
        https://bugs.webkit.org/show_bug.cgi?id=129322

        Reviewed by Anders Carlsson.

        Add an API test suite for _WKDownload.

        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
        * TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm: Added.
        (-[DownloadDelegate initWithSourceURL:]):
        (-[DownloadDelegate sourceURL]):
        (-[DownloadDelegate _downloadDidStart:]):
        (-[DownloadDelegate _download:didReceiveResponse:]):
        (-[DownloadDelegate _download:didReceiveData:]):
        (-[DownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
        (-[DownloadDelegate _downloadDidFinish:]):
        (TEST):
        (runTestWithNavigationDelegate):
        (-[DownloadNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
        (-[ConvertResponseToDownloadNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):

2014-03-24  Joseph Pecoraro  <pecoraro@apple.com>

        filter-build-webkit: reduce unfiltered output
        https://bugs.webkit.org/show_bug.cgi?id=130485

        Reviewed by Brent Fulgham.

        * Scripts/filter-build-webkit:
        (shouldIgnoreLine):

2014-03-24  László Langó  <llango.u-szeged@partner.samsung.com>

        prepare-ChangeLog should list functions that have been removed too.
        https://bugs.webkit.org/show_bug.cgi?id=130508

        Reviewed by Darin Adler.

        The prepare-ChangeLog does not list the deleted functions in the Changelog.
        We have to read the functions and the line ranges of them from the source
        before the change, then search for overlaps between them and the changed
        line ranges from diff.

        * Scripts/prepare-ChangeLog:
        (originalFile): Get original source command.
        (generateFunctionLists): Collect deleted functions too.
        (generateFunctionListsByRanges): Duplicated code is moved to a separate subroutine.
        (extractLineRangeBeforeChange): Extract line ranges from the original source to get
        deleted functions ranges too.
        (extractLineRange): Renamed to extractLineRangeAfterChange.

2014-03-23  Hyowon Kim  <hw1008.kim@samsung.com>

        Move all EFL typedefs into EflTypedefs.h.
        https://bugs.webkit.org/show_bug.cgi?id=130511

        Reviewed by Gyuyoung Kim.

        * TestWebKitAPI/PlatformWebView.h: Remove EFL typedefs.
        * WebKitTestRunner/InjectedBundle/TestRunner.h: Ditto.
        * WebKitTestRunner/PlatformWebView.h: Ditto.

2014-03-21  Simon Fraser  <simon.fraser@apple.com>

        Don't flush compositing layers within FrameView::willPaintContents()
        https://bugs.webkit.org/show_bug.cgi?id=130627
        <rdar://problem/16368869>

        Reviewed by Sam Weinig.
        
        Fix DRT to correctly render tests with layers now that FrameView::paintContents
        does not flush.
        
        Move the -[WebView displayIfNeeded] from -[FrameLoadDelegate webView:didFinishLoadForFrame:]
        into an explicit function called before dumping. 
        
        Then explicitly call _flushCompositingChanges to ensure that GraphicsLayer changes
        are flushed to CA. They will be pushed to the window by snapshotting.

        * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
        Fix weird path to IOKit.framework.
        * DumpRenderTree/mac/DumpRenderTree.mm:
        (updateDisplay):
        (dump):
        * DumpRenderTree/mac/FrameLoadDelegate.mm:
        (-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]): Fix parameter name.
        (-[FrameLoadDelegate webView:didFinishLoadForFrame:]): Remove display call.

2014-03-21  David Kilzer  <ddkilzer@apple.com>

        fix-blink-patch: tool to fix up renamed directory paths in Blink
        <http://webkit.org/b/130609>

        Reviewed by Ryosuke Niwa.

        Usage: cat blink.patch | fix-blink-patch | svn-apply

        * Scripts/fix-blink-patch: Added.

2014-03-21  Darin Adler  <darin@apple.com>

        Remove use of deprecatedCharacters in WebKit API tests
        https://bugs.webkit.org/show_bug.cgi?id=130602

        Reviewed by Antti Koivisto.

        * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
        (TestWebKitAPI::expectBuilderContent): Use characters8/16 instead of deprecatedCharacters.
        (TestWebKitAPI::expectEmpty): Use characters8.
        (TestWebKitAPI::TEST): Use characters8 instead of deprecatedCharacters in most cases.

        * TestWebKitAPI/Tests/WTF/StringImpl.cpp:
        Removed the test that is entirely about 16-bit conversion since that's basically a test of
        the deprecatedCharacters function itself, which we are about to delete.

2014-03-21  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        [webkitpy] Fix has_valid_reviewer()
        https://bugs.webkit.org/show_bug.cgi?id=130589

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/common/checkout/changelog.py:
        (ChangeLogEntry.has_valid_reviewer):
        * Scripts/webkitpy/common/checkout/changelog_unittest.py:
        (test_has_valid_reviewer):
        * Scripts/webkitpy/common/config/committers.py:
        (CommitterList._reviewer_only):
        (CommitterList.committer_by_name):
        (CommitterList.reviewer_by_email):
        (CommitterList):
        (CommitterList.reviewer_by_name):

2014-03-21  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        Add cache support for jhbuild
        https://bugs.webkit.org/show_bug.cgi?id=130588

        Reviewed by Csaba Osztrogonác.

        * jhbuild/jhbuildrc_common.py:
        (init): Jhbuild can now save the dependencies locally, if the JHBUILD_MIRROR environment variable is set.

2014-03-21  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [CMake] Add support for MAX_CPU_LOAD translated to -l in ninja and make
        https://bugs.webkit.org/show_bug.cgi?id=130504

        Reviewed by Martin Robinson.

        * Scripts/build-webkit: Add the maxCPULoad() to the makeArgs in
        CMake if not specified.
        * Scripts/webkitdirs.pm:
        (determineMaxCPULoad): Read MAX_CPU_LOAD as maxCPULoad.
        (maxCPULoad): determineMaxCPULoad and return maxCPULoad.

2014-03-21  Andreas Kling  <akling@apple.com>

        RetainPtr API test should use CFArray instead of CFString for testing.
        <rdar://problem/16384899>

        Unreviewed bot fix.

        * TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp:
        (TestWebKitAPI::TEST):
        * TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp:
        (TestWebKitAPI::TEST):

2014-03-20  Hyowon Kim  <hw1008.kim@samsung.com>

        Move to using std::unique_ptr for EFL objects.
        https://bugs.webkit.org/show_bug.cgi?id=129853

        Reviewed by Gyuyoung Kim.

        EflUniquePtr is a template alias of std::unique_ptr
        with a custom deleter for each Efl Objects, which is motivated by GUniquePtr.
        This patch replaces uses of OwnPtr and PassOwnPtr for Efl objects with EflUniquePtr.

        * DumpRenderTree/efl/DumpRenderTree.cpp:
        (main):
        * ImageDiff/efl/ImageDiff.cpp:
        (initEfl):
        (main):

2014-03-20  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed buildfix after r165983 for non Cocoa platforms

        Renamed WKPreferencesPrivate.h to WKPreferencesRefPrivate.h

        * TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp:
        * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
        * WebKitTestRunner/TestController.cpp:

2014-03-20  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][CMake] Add support for building with Clang
        https://bugs.webkit.org/show_bug.cgi?id=130260

        Reviewed by Martin Robinson.

        * TestWebKitAPI/CMakeLists.txt: When building with Clang TestWebKitAPI should be
        built with GTEST_HAS_TR1_TUPLE defined to 0 to avoid build failures occuring in the
        included GTest framework headers.
        * gtk/generate-gtkdoc:
        (prepare_environment_for_gtkdoc_generation): Don't modify the CFLAGS env anymore
        in case of using Clang since that is now set by the CMake rule.

2014-03-19  Simon Fraser  <simon.fraser@apple.com>

        Expose text and page zoom in WK2 SPI, and hook them up in MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=130476

        Reviewed by Anders Carlsson.
        
        Hook up page/text zoom in MiniBrowser, make reload work, remove some logging.

        * MiniBrowser/mac/WK1BrowserWindowController.m:
        (-[WK1BrowserWindowController webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
        Remove log.
        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController awakeFromNib]):
        (-[WK2BrowserWindowController validateMenuItem:]):
        (-[WK2BrowserWindowController reload:]):
        Hook up reload.
        (-[WK2BrowserWindowController toggleZoomMode:]):
        (-[WK2BrowserWindowController resetZoom:]):
        (-[WK2BrowserWindowController canResetZoom]):
        (-[WK2BrowserWindowController currentZoomFactor]):
        (-[WK2BrowserWindowController setCurrentZoomFactor:]):
        (-[WK2BrowserWindowController canZoomIn]):
        (-[WK2BrowserWindowController canZoomOut]):

2014-03-19  Alexey Proskuryakov  <ap@apple.com>

        REGRESSION (OS X 10.9.2): PageVisibilityStateWithWindowChanges.WebKit2 API test fails
        https://bugs.webkit.org/show_bug.cgi?id=130463

        * TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm: Disable the test.

2014-03-18  Samuel White  <samuel_white@apple.com>

        AX: Not able to use arrow keys to read text with VoiceOver before selection is set someplace (anyplace).
        https://bugs.webkit.org/show_bug.cgi?id=130250

        Reviewed by Chris Fleizach.

        Added ability to toggle enhanced accessibility on and off to support tests that require it.

        * DumpRenderTree/AccessibilityController.cpp:
        (enableEnhancedAccessibilityCallback):
        (getEnhancedAccessibilityEnabledCallback):
        (AccessibilityController::getJSClass):
        * DumpRenderTree/AccessibilityController.h:
        * DumpRenderTree/atk/AccessibilityControllerAtk.cpp:
        (AccessibilityController::enableEnhancedAccessibility):
        (AccessibilityController::enhancedAccessibilityEnabled):
        * DumpRenderTree/ios/AccessibilityControllerIOS.mm:
        (AccessibilityController::enableEnhancedAccessibility):
        (AccessibilityController::enhancedAccessibilityEnabled):
        * DumpRenderTree/mac/AccessibilityControllerMac.mm:
        (AccessibilityController::enableEnhancedAccessibility):
        (AccessibilityController::enhancedAccessibilityEnabled):
        * DumpRenderTree/win/AccessibilityControllerWin.cpp:
        (AccessibilityController::enableEnhancedAccessibility):
        (AccessibilityController::enhancedAccessibilityEnabled):
        * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
        (WTR::AccessibilityController::enableEnhancedAccessibility):
        (WTR::AccessibilityController::enhancedAccessibilityEnabled):
        * WebKitTestRunner/InjectedBundle/AccessibilityController.h:
        * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:

2014-03-18  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, add some contributors, and fix Nadav's entry (he's not really a reviewer
        yet).

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-18  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove stale ReportMemoryUsagePlugin
        https://bugs.webkit.org/show_bug.cgi?id=130405

        Reviewed by Andreas Kling.

        This clang plugin looks like it was used for the old Inspector memory
        instrumentation that was removed. So the tool can be removed.

        * clang/ReportMemoryUsagePlugin/CMakeLists.txt: Removed.
        * clang/ReportMemoryUsagePlugin/Makefile: Removed.
        * clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp: Removed.
        * clang/ReportMemoryUsagePlugin/tests/Source/WebCore/Test.cpp: Removed.

2014-03-18  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        webkit-patch land shouldn't add a reviewer for unreviewed build fixes
        https://bugs.webkit.org/show_bug.cgi?id=130220

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitpy/common/checkout/changelog.py:
        (ChangeLog.set_reviewer):
        * Scripts/webkitpy/common/checkout/changelog_unittest.py:
        (test_set_reviewer):

2014-03-17  Filip Pizlo  <fpizlo@apple.com>

        More FTL enabling.

        Rubber stamped by Dan Bernstein.

        * Tools/Scripts/build-webkit:

2014-03-17  Simon Fraser  <simon.fraser@apple.com>

        Renable pagination mode in WK2 MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=130374

        Reviewed by Anders Carlsson.
        
        Put the implementation of togglePaginationMode: back, and correctly
        enable the menu item.

        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController validateMenuItem:]):
        (-[WK2BrowserWindowController isPaginated]):
        (-[WK2BrowserWindowController togglePaginationMode:]):

2014-03-18  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        Add --reset option to Tools/Scripts/set-webkit-configuration script
        https://bugs.webkit.org/show_bug.cgi?id=130401

        Reviewed by Csaba Osztrogonác.

        * Scripts/set-webkit-configuration:

2014-03-18  Alberto Garcia  <berto@igalia.com>

        [GTK] [CMake] build-webkit-options.txt is not generated during a fresh build
        https://bugs.webkit.org/show_bug.cgi?id=130388

        Reviewed by Sergio Villar Senin.

        * Scripts/webkitdirs.pm:
        (shouldRemoveCMakeCache): make sure that the build directory
        exists before attempting to create a file in it.

2014-03-18  Robert Plociennik  <r.plociennik@samsung.com>

        [EFL] fontconfig-2.8.0 is not compliant with C++11 leading to a build break
        https://bugs.webkit.org/show_bug.cgi?id=130336

        Reviewed by Gyuyoung Kim.

        Compilation with gcc 4.8.x results in 'invalid suffix on literal; C++11
        requires a space between literal and string macro [-Wliteral-suffix]'
        warning treated as error.

        This patch applies a solution from r162448 to the EFL port.

        * efl/patches/fontconfig-C-11-requires-a-space-between-literal-and-identifier.patch: Added.
        * efl/jhbuild.modules: Added appropriate patch section.

2014-03-17  Ryosuke Niwa  <rniwa@webkit.org>

        webkitpy test rebaseline.

        * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
        (MainTest.test_default_args):

2014-03-17  Ryosuke Niwa  <rniwa@webkit.org>

        --profile should imply --test-runner-count=1 in run-perf-tests
        https://bugs.webkit.org/show_bug.cgi?id=130375

        Reviewed by Benjamin Poulain.

        Use the test runner count of 1 when --profile is specified but not --test-runner-count.

        * Scripts/webkitpy/performance_tests/perftestsrunner.py:
        (PerfTestsRunner._parse_args): Use -1 as the default value.
        (PerfTestsRunner._collect_tests): If --test-runner-count is set (i.e. it's a positive value),
        then use that value. Otherwise, if it's never set and --profile is present, test-runner-count
        should be 1.

2014-03-17  Simon Fraser  <simon.fraser@apple.com>

        Address some style nits.

        * MiniBrowser/mac/WK2BrowserWindowController.m:

2014-03-17  Simon Fraser  <simon.fraser@apple.com>

        Add transparent window support back into MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=130363

        Reviewed by Anders Carlsson.
        
        Re-enable transparent window support for WK2.

        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController validateMenuItem:]):
        (-[WK2BrowserWindowController toggleTransparentWindow:]):

2014-03-17  Simon Fraser  <simon.fraser@apple.com>

        Fix the 32-bit build; make the open panel make a WK1 window.

        * MiniBrowser/mac/AppDelegate.m:
        (-[BrowserAppDelegate openDocument:]):

2014-03-17  Simon Fraser  <simon.fraser@apple.com>

        Convert MiniBrowser to use WKWebView API
        https://bugs.webkit.org/show_bug.cgi?id=130061

        Reviewed by Anders Carlsson.
        
        Convert the MiniBrowser WK2 window to use WebKit2 API as much
        as possible.
        
        Some functionality was removed temporarily:
            - text zoom, page zoom
            - reload
            - pagination mode
            - transparent window
            - dumping source
            - window.open support
            - beforeUnload panel
            - find in page

        * MiniBrowser/mac/AppDelegate.h:
        * MiniBrowser/mac/AppDelegate.m:
        (-[BrowserAppDelegate init]):
        (-[BrowserAppDelegate newWindow:]):
        (-[BrowserAppDelegate applicationWillTerminate:]):
        (-[BrowserAppDelegate openDocument:]):
        * MiniBrowser/mac/WK2BrowserWindowController.h:
        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController awakeFromNib]):
        (-[WK2BrowserWindowController dealloc]):
        (-[WK2BrowserWindowController fetch:]):
        (-[WK2BrowserWindowController validateMenuItem:]):
        (-[WK2BrowserWindowController reload:]):
        (-[WK2BrowserWindowController goBack:]):
        (-[WK2BrowserWindowController goForward:]):
        (-[WK2BrowserWindowController toggleZoomMode:]):
        (-[WK2BrowserWindowController resetZoom:]):
        (-[WK2BrowserWindowController canResetZoom]):
        (-[WK2BrowserWindowController dumpSourceToConsole:]):
        (-[WK2BrowserWindowController togglePaginationMode:]):
        (-[WK2BrowserWindowController validateUserInterfaceItem:]):
        (-[WK2BrowserWindowController windowShouldClose:]):
        (-[WK2BrowserWindowController applicationTerminating]):
        (-[WK2BrowserWindowController currentZoomFactor]):
        (-[WK2BrowserWindowController setCurrentZoomFactor:]):
        (-[WK2BrowserWindowController toggleTransparentWindow:]):
        (-[WK2BrowserWindowController observeValueForKeyPath:ofObject:change:context:]):
        (-[WK2BrowserWindowController webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
        (-[WK2BrowserWindowController webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:]):
        (-[WK2BrowserWindowController webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:]):
        (-[WK2BrowserWindowController find:]):
        (-[WK2BrowserWindowController webView:decidePolicyForNavigationResponse:decisionHandler:]):
        (-[WK2BrowserWindowController webView:didStartProvisionalNavigation:]):
        (-[WK2BrowserWindowController webView:didReceiveServerRedirectForProvisionalNavigation:]):
        (-[WK2BrowserWindowController webView:didFailProvisionalNavigation:withError:]):
        (-[WK2BrowserWindowController webView:didCommitNavigation:]):
        (-[WK2BrowserWindowController webView:didFinishLoadingNavigation:]):
        (-[WK2BrowserWindowController webView:didFailNavigation:withError:]):
        * WebKitTestRunner/PlatformWebView.h:
        * WebKitTestRunner/ios/PlatformWebViewIOS.mm:
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:

2014-03-17  Zan Dobersek  <zdobersek@igalia.com>

        Use RunLoop objects through references instead of pointers
        https://bugs.webkit.org/show_bug.cgi?id=130313

        Reviewed by Andreas Kling.

        Adjust the code accordingly now that RunLoop::current() and RunLoop::main()
        return RunLoop reference instead of a pointer.

        * TestWebKitAPI/Tests/WebKit2Gtk/DOMDOMWindowTest.cpp:
        (loadedCallback):
        (clickedCallback):

2014-03-17  Tim Horton  <timothy_horton@apple.com>

        sort-export-file --help doesn't work (missing 'use')
        https://bugs.webkit.org/show_bug.cgi?id=130338

        Reviewed by Anders Carlsson.

        * Scripts/sort-export-file:
        Add a missing 'use', and fix a typo in an error message.

2014-03-17  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Ensure that HAVE_GTK_UNIX_PRINTING is defined when appropriate
        https://bugs.webkit.org/show_bug.cgi?id=130155

        Reviewed by Philippe Normand.

        * TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt: Add GTK_UNIX_PRINT flags to the build.

2014-03-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] MiniBrowser fails to load injected bundle lib
        https://bugs.webkit.org/show_bug.cgi?id=130332

        Reviewed by Anders Carlsson.

        This is because WEBKIT_INJECTED_BUNDLE_PATH env var is set too late.

        * MiniBrowser/gtk/main.c:
        (main): Make sure WEBKIT_INJECTED_BUNDLE_PATH is set before a web
        process is spawn.

2014-03-16  Kim Byung Jun  <bj1987.kim@samsung.com>

        [EFL] Enable TOUCH_SLIDER macro
        https://bugs.webkit.org/show_bug.cgi?id=130185

        Reviewed by Gyuyoung Kim.

        * Scripts/webkitperl/FeatureList.pm:

2014-03-16  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][CMake] Build with -fno-rtti
        https://bugs.webkit.org/show_bug.cgi?id=130261

        Reviewed by Martin Robinson.

        * TestWebKitAPI/CMakeLists.txt: Build TestWebKitAPI with GTEST_HAS_RTTI macro
        defined to 0 to prevent typeid use in included GTest headers.

2014-03-16  Brian Burg  <bburg@apple.com>

        Web Inspector: vended backend commands file should be generated as part of the build
        https://bugs.webkit.org/show_bug.cgi?id=130110

        Reviewed by Timothy Hatcher.

        * Scripts/build-webkit: build WebInspectorUI after WebCore but before WebKit.

2014-03-16  Diego Pino García  <dpino@igalia.com>

        [GTK] Minibrowser: Add shortcuts for reloading page and reloading page ignoring cache
        https://bugs.webkit.org/show_bug.cgi?id=128999

        Reviewed by Philippe Normand.

        * MiniBrowser/gtk/BrowserWindow.c:
        (reloadPage):
        (reloadPageIgnoringCache):
        (browser_window_init):

2014-03-15  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Improve ninja detection in webkitdirs.pm
        https://bugs.webkit.org/show_bug.cgi?id=129902

        Reviewed by Daniel Bates.

        * Scripts/webkitdirs.pm:
        (canUseNinja): Use which instead of trying to invoke ninja directly. This also allows
        us to look for ninja-build as well.

2014-03-14  Maciej Stachowiak  <mjs@apple.com>

        Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
        https://bugs.webkit.org/show_bug.cgi?id=130276
        <rdar://problem/16266927>
        
        Reviewed by Simon Fraser.

        * BuildSlaveSupport/build-launcher-app:
        * BuildSlaveSupport/build-launcher-dmg:
        * DumpRenderTree/DumpRenderTree.h:
        * DumpRenderTree/DumpRenderTreePrefix.h:
        * DumpRenderTree/GCController.cpp:
        * DumpRenderTree/GCController.h:
        * DumpRenderTree/JavaScriptThreading.cpp:
        * DumpRenderTree/JavaScriptThreading.h:
        * DumpRenderTree/PixelDumpSupport.cpp:
        * DumpRenderTree/PixelDumpSupport.h:
        * DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm:
        * DumpRenderTree/TestRunner.cpp:
        * DumpRenderTree/TestRunner.h:
        * DumpRenderTree/WorkQueue.cpp:
        * DumpRenderTree/WorkQueue.h:
        * DumpRenderTree/WorkQueueItem.h:
        * DumpRenderTree/atk/AccessibilityCallbacks.h:
        * DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:
        * DumpRenderTree/cairo/PixelDumpSupportCairo.cpp:
        * DumpRenderTree/cairo/PixelDumpSupportCairo.h:
        * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
        * DumpRenderTree/cg/PixelDumpSupportCG.h:
        * DumpRenderTree/efl/EditingCallbacks.cpp:
        * DumpRenderTree/efl/EditingCallbacks.h:
        * DumpRenderTree/efl/EventSender.cpp:
        * DumpRenderTree/efl/EventSender.h:
        * DumpRenderTree/efl/GCControllerEfl.cpp:
        * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
        * DumpRenderTree/efl/TestRunnerEfl.cpp:
        * DumpRenderTree/gtk/DumpRenderTree.cpp:
        * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
        * DumpRenderTree/gtk/EditingCallbacks.cpp:
        * DumpRenderTree/gtk/EditingCallbacks.h:
        * DumpRenderTree/gtk/EventSender.cpp:
        * DumpRenderTree/gtk/EventSender.h:
        * DumpRenderTree/gtk/GCControllerGtk.cpp:
        * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
        * DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp:
        * DumpRenderTree/gtk/SelfScrollingWebKitWebView.h:
        * DumpRenderTree/gtk/TestRunnerGtk.cpp:
        * DumpRenderTree/gtk/TextInputController.cpp:
        * DumpRenderTree/gtk/TextInputController.h:
        * DumpRenderTree/ios/PerlSupport/IPhoneSimulatorNotification/Makefile.PL:
        * DumpRenderTree/ios/PerlSupport/IPhoneSimulatorNotification/lib/IPhoneSimulatorNotification.pm:
        * DumpRenderTree/ios/PixelDumpSupportIOS.mm:
        * DumpRenderTree/mac/AppleScriptController.h:
        * DumpRenderTree/mac/AppleScriptController.m:
        * DumpRenderTree/mac/CheckedMalloc.cpp:
        * DumpRenderTree/mac/CheckedMalloc.h:
        * DumpRenderTree/mac/DumpRenderTree.mm:
        * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h:
        * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm:
        * DumpRenderTree/mac/DumpRenderTreeMac.h:
        * DumpRenderTree/mac/DumpRenderTreePasteboard.h:
        * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
        * DumpRenderTree/mac/DumpRenderTreeWindow.h:
        * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
        * DumpRenderTree/mac/EditingDelegate.h:
        * DumpRenderTree/mac/EditingDelegate.mm:
        * DumpRenderTree/mac/EventSendingController.h:
        * DumpRenderTree/mac/EventSendingController.mm:
        * DumpRenderTree/mac/FrameLoadDelegate.h:
        * DumpRenderTree/mac/FrameLoadDelegate.mm:
        * DumpRenderTree/mac/GCControllerMac.mm:
        * DumpRenderTree/mac/MockWebNotificationProvider.h:
        * DumpRenderTree/mac/MockWebNotificationProvider.mm:
        * DumpRenderTree/mac/NavigationController.h:
        * DumpRenderTree/mac/NavigationController.m:
        * DumpRenderTree/mac/ObjCController.h:
        * DumpRenderTree/mac/ObjCController.m:
        * DumpRenderTree/mac/ObjCPlugin.h:
        * DumpRenderTree/mac/ObjCPlugin.m:
        * DumpRenderTree/mac/ObjCPluginFunction.h:
        * DumpRenderTree/mac/ObjCPluginFunction.m:
        * DumpRenderTree/mac/PixelDumpSupportMac.mm:
        * DumpRenderTree/mac/PolicyDelegate.h:
        * DumpRenderTree/mac/PolicyDelegate.mm:
        * DumpRenderTree/mac/ResourceLoadDelegate.h:
        * DumpRenderTree/mac/ResourceLoadDelegate.mm:
        * DumpRenderTree/mac/TestRunnerMac.mm:
        * DumpRenderTree/mac/TextInputController.h:
        * DumpRenderTree/mac/TextInputController.m:
        * DumpRenderTree/mac/UIDelegate.h:
        * DumpRenderTree/mac/UIDelegate.mm:
        * DumpRenderTree/mac/WorkQueueItemMac.mm:
        * DumpRenderTree/win/DRTDataObject.cpp:
        * DumpRenderTree/win/DRTDataObject.h:
        * DumpRenderTree/win/DRTDesktopNotificationPresenter.h:
        * DumpRenderTree/win/DRTDropSource.cpp:
        * DumpRenderTree/win/DRTDropSource.h:
        * DumpRenderTree/win/DraggingInfo.h:
        * DumpRenderTree/win/DumpRenderTree.cpp:
        * DumpRenderTree/win/DumpRenderTreeWin.h:
        * DumpRenderTree/win/EditingDelegate.cpp:
        * DumpRenderTree/win/EditingDelegate.h:
        * DumpRenderTree/win/EventSender.cpp:
        * DumpRenderTree/win/EventSender.h:
        * DumpRenderTree/win/FrameLoadDelegate.cpp:
        * DumpRenderTree/win/FrameLoadDelegate.h:
        * DumpRenderTree/win/GCControllerWin.cpp:
        * DumpRenderTree/win/HistoryDelegate.cpp:
        * DumpRenderTree/win/HistoryDelegate.h:
        * DumpRenderTree/win/MD5.cpp:
        * DumpRenderTree/win/MD5.h:
        * DumpRenderTree/win/PixelDumpSupportWin.cpp:
        * DumpRenderTree/win/PolicyDelegate.cpp:
        * DumpRenderTree/win/PolicyDelegate.h:
        * DumpRenderTree/win/ResourceLoadDelegate.cpp:
        * DumpRenderTree/win/ResourceLoadDelegate.h:
        * DumpRenderTree/win/TestRunnerWin.cpp:
        * DumpRenderTree/win/TextInputController.cpp:
        * DumpRenderTree/win/TextInputController.h:
        * DumpRenderTree/win/TextInputControllerWin.cpp:
        * DumpRenderTree/win/UIDelegate.cpp:
        * DumpRenderTree/win/UIDelegate.h:
        * DumpRenderTree/win/WorkQueueItemWin.cpp:
        * EWebLauncher/main.c:
        * GtkLauncher/main.c:
        * ImageDiff/efl/ImageDiff.cpp:
        * ImageDiff/gtk/ImageDiff.cpp:
        * MiniBrowser/gtk/main.c:
        * Scripts/SpacingHeuristics.pm:
        * Scripts/VCSUtils.pm:
        * Scripts/bisect-builds:
        * Scripts/build-dumprendertree:
        * Scripts/build-jsc:
        * Scripts/build-webkit:
        * Scripts/check-dom-results:
        * Scripts/check-for-exit-time-destructors:
        * Scripts/check-for-global-initializers:
        * Scripts/commit-log-editor:
        * Scripts/compare-timing-files:
        * Scripts/debug-minibrowser:
        * Scripts/debug-safari:
        * Scripts/do-file-rename:
        * Scripts/find-extra-includes:
        * Scripts/generate-coverage-data:
        * Scripts/make-script-test-wrappers:
        * Scripts/malloc-tree:
        * Scripts/old-run-webkit-tests:
        * Scripts/parse-malloc-history:
        * Scripts/report-include-statistics:
        * Scripts/resolve-ChangeLogs:
        * Scripts/run-bindings-tests:
        * Scripts/run-iexploder-tests:
        * Scripts/run-javascriptcore-tests:
        * Scripts/run-jsc:
        * Scripts/run-launcher:
        * Scripts/run-leaks:
        * Scripts/run-mangleme-tests:
        * Scripts/run-minibrowser:
        * Scripts/run-pageloadtest:
        * Scripts/run-regexp-tests:
        * Scripts/run-safari:
        * Scripts/run-sunspider:
        * Scripts/run-webkit-app:
        * Scripts/sampstat:
        * Scripts/set-webkit-configuration:
        * Scripts/sort-Xcode-project-file:
        * Scripts/sort-export-file:
        * Scripts/split-file-by-class:
        * Scripts/sunspider-compare-results:
        * Scripts/svn-apply:
        * Scripts/svn-create-patch:
        * Scripts/svn-unapply:
        * Scripts/test-webkit-scripts:
        * Scripts/update-javascriptcore-test-results:
        * Scripts/update-webkit:
        * Scripts/update-webkit-auxiliary-libs:
        * Scripts/update-webkit-dependency:
        * Scripts/update-webkit-localizable-strings:
        * Scripts/update-webkit-support-libs:
        * Scripts/update-webkit-wincairo-libs:
        * Scripts/webkit-build-directory:
        * Scripts/webkitdirs.pm:
        (installedSafariPath):
        * Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl:
        * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
        * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl:
        * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
        * Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
        * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
        * Scripts/webkitperl/features.pm:
        * Scripts/webkitperl/httpd.pm:
        * Scripts/webkitpy/bindings/main.py:
        * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py:
        * TestWebKitAPI/Tests/WTF/MediaTime.cpp:
        * TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
        * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
        * TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp:
        * TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp:
        * TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm:
        * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
        * WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp:
        * WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h:
        * WebKitTestRunner/PixelDumpSupport.cpp:
        * WebKitTestRunner/PixelDumpSupport.h:
        * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
        * WinLauncher/WinLauncher.cpp:
        * WinLauncher/WinLauncher.h:
        * WinLauncher/stdafx.cpp:
        * WinLauncher/stdafx.h:

2014-03-14  Filip Pizlo  <fpizlo@apple.com>

        Sometimes we need to be explicit about the SDK when running ranlib on Darwin
        https://bugs.webkit.org/show_bug.cgi?id=130265

        Reviewed by Michael Saboff.

        * Scripts/build-webkit:
        * Scripts/copy-webkitlibraries-to-product-directory:

2014-03-14  Landry Breuil  <landry@openbsd.org>

        Recognize openbsd/netbsd and am64 archs in Tools/Scripts.
        Also allow to set MAKE in the environment.
        https://bugs.webkit.org/show_bug.cgi?id=129991

        Reviewed by Andreas Kling.

        * Scripts/webkitdirs.pm:
        (determineArchitecture):
        (determineNumberOfCPUs):
        (isBSD):
        (buildAutotoolsProject):
        * Scripts/webkitpy/common/system/platforminfo.py:
        (PlatformInfo.__init__):
        (PlatformInfo.is_openbsd):
        (PlatformInfo):
        (PlatformInfo.is_netbsd):
        (PlatformInfo._determine_os_name):

2014-03-14  Dean Jackson  <dino@apple.com>

        Remove libWebKitSystemInterfaceLion.a
        https://bugs.webkit.org/show_bug.cgi?id=130254

        Reviewed by Geoffrey Garen and Andreas Kling.

        No need to copy the Lion libraries into the build.

        * Scripts/copy-webkitlibraries-to-product-directory:

2014-03-14  Jinwoo Song  <jinwoo7.song@samsung.com>

        [EFL][MiniBrowser] Revise help messages of command line parameters
        https://bugs.webkit.org/show_bug.cgi?id=130222

        Reviewed by Csaba Osztrogonác.

        Correct the default value description and make help messages to be consistent.

        * MiniBrowser/efl/main.c:

2014-03-12  Sergio Villar Senin  <svillar@igalia.com>

        Rename DEFINE_STATIC_LOCAL to DEPRECATED_DEFINE_STATIC_LOCAL
        https://bugs.webkit.org/show_bug.cgi?id=129612

        Reviewed by Darin Adler.

        For new code use static NeverDestroyed<T> instead.

        * DumpRenderTree/JavaScriptThreading.cpp:
        (javaScriptThreadsMutex):
        (javaScriptThreads):
        * DumpRenderTree/efl/EventSender.cpp:
        (touchPointList):
        (delayedEventQueue):
        * DumpRenderTree/win/FrameLoadDelegate.cpp:
        (delegatesWithDelayedWork):
        * Scripts/check-for-exit-time-destructors:
        * TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp:
        * TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:
        (testsMap):

2014-03-13  Sanghyup Lee  <sh53.lee@samsung.com>

        [EFL][WK2] Fix compilation warning in Minibrowser
        https://bugs.webkit.org/show_bug.cgi?id=130132

        Reviewed by Csaba Osztrogonác.

        Replace mktemp() with mkstemp() to fix compilation warning in MiniBrowser.

        * MiniBrowser/efl/main.c:
        (on_download_request):

2014-03-13  Filip Pizlo  <fpizlo@apple.com>

        FTL should support IsBlah
        https://bugs.webkit.org/show_bug.cgi?id=130202

        Reviewed by Geoffrey Garen.
        
        Running existing JSRegress tests with noInline gives us coverage for these
        changes. Chances are, this will also give coverage for other interesting things
        as well.

        * Scripts/run-jsc-stress-tests:

2014-03-12  Brian Burg  <bburg@apple.com>

        Web Inspector: Remove unused callId parameter from evaluateInWebInspector
        https://bugs.webkit.org/show_bug.cgi?id=129744

        Reviewed by Timothy Hatcher.

        * DumpRenderTree/TestRunner.cpp:
        (evaluateInWebInspectorCallback):
        * DumpRenderTree/TestRunner.h:
        * DumpRenderTree/efl/TestRunnerEfl.cpp:
        (TestRunner::evaluateInWebInspector):
        * DumpRenderTree/gtk/TestRunnerGtk.cpp:
        (TestRunner::evaluateInWebInspector):
        * DumpRenderTree/mac/TestRunnerMac.mm:
        (TestRunner::evaluateInWebInspector):
        * DumpRenderTree/win/TestRunnerWin.cpp:
        (TestRunner::evaluateInWebInspector):
        * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
        (WTR::TestRunner::evaluateInWebInspector):
        * WebKitTestRunner/InjectedBundle/TestRunner.h:

2014-03-13  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        [GTK] build-webkit shouldn't show error message when ninja isn't installed
        https://bugs.webkit.org/show_bug.cgi?id=130129

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitdirs.pm:
        (canUseNinja): Redirecting stderr to /dev/null

2014-03-13  Andres Gomez  <agomez@igalia.com>

        [GTK] "Tools/jhbuild/jhbuild-wrapper --gtk" build fails even after running Tools/gtk/install-dependencies due to missing proper libxml2 python bindings
        https://bugs.webkit.org/show_bug.cgi?id=130092

        Reviewed by Csaba Osztrogonác.

        Added "python-dev" as dependency for deb based distros. It is
        already present for rpm based distros. This dependency will allow
        libxml2 to generate its python bindings, needed by gtk-doc.

        * gtk/install-dependencies:

2014-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ cmake build after r165488.

        * MiniBrowser/gtk/CMakeLists.txt: Add CMAKE_BINARY_DIR to include dirs.

2014-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][CMAKE] Remove compile warnings about GTK+ deprecated API
        https://bugs.webkit.org/show_bug.cgi?id=130014

        Reviewed by Martin Robinson.

        Include cmake or autotools config header.

        * MiniBrowser/gtk/BrowserDownloadsBar.c:
        * MiniBrowser/gtk/BrowserSearchBar.c:
        * MiniBrowser/gtk/BrowserWindow.c:
        * MiniBrowser/gtk/main.c:

2014-03-12  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r165471.
        https://bugs.webkit.org/show_bug.cgi?id=130139

        Didn't really fix the issue and broke another bot (Requested
        by mrobinson on #webkit).

        Reverted changeset:

        "[CMake] Newer versions of CMake cannot find older versions of
        Freetype"
        https://bugs.webkit.org/show_bug.cgi?id=130107
        http://trac.webkit.org/changeset/165471

2014-03-11  Filip Pizlo  <fpizlo@apple.com>

        It should be possible to build WebKit with FTL on iOS
        https://bugs.webkit.org/show_bug.cgi?id=130116

        Reviewed by Dan Bernstein.

        * Scripts/build-webkit:
        * Scripts/copy-webkitlibraries-to-product-directory:

2014-03-12  Brent Fulgham  <bfulgham@apple.com>

        [Win] Remove use of QTSDK
        https://bugs.webkit.org/show_bug.cgi?id=130049

        Reviewed by Darin Adler.

        * DumpRenderTree/win/DumpRenderTree.cpp:
        (initialize): Remove QuickTime code.
        * win/AssembleBuildLogs/AssembleLogs.cmd: Don't grab logs from
        building QTMovieWin.

2014-03-12  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMAKE] Too verbose build output
        https://bugs.webkit.org/show_bug.cgi?id=130076

        Reviewed by Carlos Garcia Campos.

        Instead of building with cmake --build which isn't smart about pretty printing and
        colors, we build with a script which calls the proper build command.

        * Scripts/webkitdirs.pm:
        (buildCMakeGeneratedProject): For GTK+ call the script that we generate during
        the CMake configuration pass.

2014-03-11  Martin Robinson  <mrobinson@igalia.com>

        [CMake] Newer versions of CMake cannot find older versions of Freetype
        https://bugs.webkit.org/show_bug.cgi?id=130107

        Reviewed by Gustavo Noronha Silva.

        * gtk/jhbuildrc: Work around a bug in newer CMakes by giving the FREETYPE_DIR hint
        to CMake during jhbuild initialization.

2014-03-12  Zalan Bujtas  <zalan@apple.com>

        Add hiDPI support for compositing content in DumpRenderTree/WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=129961

        Reviewed by Simon Fraser.

        Now scaled content can go through the window capturing mechanism too for compositing content.
        AppleMagnifiedMode is redundant.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (setDefaultsToConsistentValuesForTesting):
        (runTest):
        * DumpRenderTree/mac/PixelDumpSupportMac.mm:
        (createBitmapContextFromWebView):
        * WebKitTestRunner/PlatformWebView.h:
        * WebKitTestRunner/cg/TestInvocationCG.cpp:
        (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
        (WTR::PlatformWebView::didInitializeClients):
        (WTR::PlatformWebView::changeWindowScaleIfNeeded):
        (WTR::PlatformWebView::forceWindowFramesChanged):
        * WebKitTestRunner/mac/main.mm:
        (setDefaultsToConsistentValuesForTesting):

2014-03-12  Anton Obzhirov  <a.obzhirov@samsung.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-12  Ryuan Choi  <ryuan.choi@samsung.com>

        Unreviewed build fix on the EFL port when used lower version of ATK

        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::y): Fixed typo.

2014-03-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Some images are blank in the rebaseline server UI
        https://bugs.webkit.org/show_bug.cgi?id=130104

        Reviewed by Tim Horton.

        Let the server check for images in the 'retries' directory
        if it can't find an image otherwise.

        * Scripts/webkitpy/tool/servers/rebaselineserver.py:
        (RebaselineHTTPRequestHandler.test_result):

2014-03-11  Gustavo Noronha Silva  <gustavo.noronha@collabora.com>

        [GTK][CMake] --update-gtk has no effect
        https://bugs.webkit.org/show_bug.cgi?id=130088

        Reviewed by Philippe Normand.

        * Scripts/webkitdirs.pm:
        (buildCMakeProjectOrExit): call update-webkitgtk-libs if --update-gtk has been passed
        as an argument.

2014-03-10  Myles C. Maxfield  <mmaxfield@apple.com>

        Add "System Font" to the list of whitelisted DRT fonts
        https://bugs.webkit.org/show_bug.cgi?id=130046

        Reviewed by Darin Adler.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (allowedFontFamilySet):
        * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:

2014-03-11  Martin Robinson  <mrobinson@igalia.com>

        [GTK] The jhbuild environment should set CMAKE_PREFIX_PATH and CMAKE_LIBRARY_PATH
        https://bugs.webkit.org/show_bug.cgi?id=130064

        Reviewed by Philippe Normand.

        * efl/jhbuildrc: Remove duplicated code.
        * gtk/jhbuildrc: Remove duplicated code.
        * jhbuild/jhbuildrc_common.py:
        (init): Move duplicated code from jhbuildrc's and extend setting CMake environment variables to
        GTK+. We always set the CMAKE_LIBRARY_PATH, which should be harmless for EFL 32-bit systems.
        and is apparently necessary for GTK+.

2014-03-11  László Langó  <llango.u-szeged@partner.samsung.com>

        check-webkit-style failed to complain about missing braces
        https://bugs.webkit.org/show_bug.cgi?id=34189

        Reviewed by Ryosuke Niwa.

        * Scripts/webkitpy/style/checkers/cpp.py:
        (check_braces):
        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
        (WebKitStyleTest.test_braces):

2014-03-11  László Langó  <llango.u-szeged@partner.samsung.com>

        Remove Qt cruft from style checker.
        https://bugs.webkit.org/show_bug.cgi?id=130085

        Reviewed by Csaba Osztrogonác.

        There is no 'foreach' keyword in c++. That was a Qt feature
        added in: http://trac.webkit.org/changeset/46113
        Qt was removed from WebKit, so we should remove the checks
        of this keyword from check-webkit-style scripts.

        * Scripts/webkitpy/style/checkers/cpp.py:
        (check_spacing_for_function_call):
        (check_spacing):
        (check_braces):
        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
        (CppStyleTest.test_mismatching_spaces_in_parens):
        (CppStyleTest.test_spacing_for_fncall):
        (WebKitStyleTest.test_braces):

2014-03-11  Martin Hodovan  <mhodovan@inf.u-szeged.hu>

        [GTK] update-webkitgtk-libs needs itstool
        https://bugs.webkit.org/show_bug.cgi?id=130082

        After http://trac.webkit.org/changeset/165110 WebKitGTK+ uses gtk-doc 1.20.
        itstool is a dependency of building gtk-doc from version 1.19, so it should
        be added to Tools/gtk/install-dependencies script, too.

        Reviewed by Philippe Normand.

        * gtk/install-dependencies:

2014-03-11  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>

        webkitbot rollout ChangeLogs should be nicer
        https://bugs.webkit.org/show_bug.cgi?id=122654

        Reviewed by Csaba Osztrogonác.

        Added bug urls and descriptions of rolled out patches to the rollout changelog
        if they are present in the original changelog. Additionally removed the list of
        changed files and functions.

        * Scripts/webkitpy/common/checkout/changelog.py:
        (ChangeLog.update_with_unreviewed_message): Cut off the list of modified files.
        * Scripts/webkitpy/common/checkout/checkout.py:
        (Checkout._changelog_data_for_revision): Store bug description.
        * Scripts/webkitpy/common/checkout/checkout_mock.py:
        * Scripts/webkitpy/common/checkout/checkout_unittest.py:
        (CheckoutTest.test_commit_info_for_revision):
        * Scripts/webkitpy/common/checkout/commitinfo.py:
        (CommitInfo.bug_description): Added.
        (CommitInfo.to_json):
        * Scripts/webkitpy/common/checkout/commitinfo_unittest.py:
        (CommitInfoTest.test_commit_info_creation):
        * Scripts/webkitpy/tool/commands/download.py:
        (AbstractRolloutPrepCommand._prepare_state): Store bug ids and descriptions of rolled
        out patches for creating rollout changelog.
        (CreateRollout._prepare_state): Remove obsolete comments and code, the bug id that
        caused the regression is stored in state["bug_blocked"] now.
        * Scripts/webkitpy/tool/commands/download_unittest.py:
        (test_prepare_rollout):
        (test_create_rollout_multiple_revision):
        * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
        (PrepareChangeLogForRevert._message_for_revert): Add bug urls and descriptions of
        rolled out patches to the changelog.
        (PrepareChangeLogForRevert.run):
        * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:
        (UpdateChangeLogsForRevertTest):
        (test_message_for_revert):
        * Scripts/webkitpy/tool/steps/reopenbugafterrollout.py:
        (ReopenBugAfterRollout.run):

2014-03-11  Krzysztof Czech  <k.czech@samsung.com>

        [ATK] Adjust WKTR/DRT to use new API from ATK 2.11.90
        https://bugs.webkit.org/show_bug.cgi?id=130021

        Reviewed by Mario Sanchez Prada.

        Replace deprecated functions to use new API from ATK 2.11.90.

        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        (AccessibilityUIElement::x):
        (AccessibilityUIElement::y):
        (AccessibilityUIElement::width):
        (AccessibilityUIElement::height):
        (AccessibilityUIElement::clickPointX):
        (AccessibilityUIElement::clickPointY):
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::x):
        (WTR::AccessibilityUIElement::y):
        (WTR::AccessibilityUIElement::width):
        (WTR::AccessibilityUIElement::height):
        (WTR::AccessibilityUIElement::clickPointX):
        (WTR::AccessibilityUIElement::clickPointY):

2014-03-11  Krzysztof Czech  <k.czech@samsung.com>

        [ATK] Expose aria-posinset and aria-setsize through object attributes
        https://bugs.webkit.org/show_bug.cgi?id=130011

        Reviewed by Chris Fleizach.

        Added missing implementation of numberAttributeValue both to WKTR and DRT.

        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        (AccessibilityUIElement::numberAttributeValue):
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::numberAttributeValue):

2014-03-10  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix.

        Some bad Windows code was committed at some point that prevents the Apple Windows port
        from finding its runtime dependencies reliably.

        * win/DLLLauncher/DLLLauncherMain.cpp:
        (appleApplicationSupportDirectory): Restored this function.
        (modifyPath): Update to use appleApplicationSupportDirectory function.

2014-03-10  Zoltan Horvath  <zoltan@webkit.org>

        Let the user define the full address of the performance-site-server for uploading results
        https://bugs.webkit.org/show_bug.cgi?id=129819

        Reviewed by Ryosuke Niwa.

        Currently perftestsrunner.py assumes that the server uses https protocol all the time, which
        can be confusing. It's more straightforward, if you need to define explicitly the server's full
        address along with the protocol, when you're using this parameter. I added HTTPS as the default
        protocol for now, in order to avoid breaking the perf bots.

        * Scripts/webkitpy/performance_tests/perftestsrunner.py:
        (_upload_json):
        * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
        (MainTest.test_upload_json):

2014-03-10  Brent Fulgham  <bfulgham@apple.com>

        [Win] Pass environment to Pre-Build, Pre-Link, and Post-Build Stages.
        https://bugs.webkit.org/show_bug.cgi?id=130023

        Reviewed by Dean Jackson.

        * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj: Add missing
        /SAFESEH flag to DLL launcher process.

2014-03-09  Martin Robinson  <mrobinson@igalia.com>

        RunGtkWebKitGObjectDOMBindingsAPIBreakTests should be added to the BuildAndTestFactory not the TestFactory
        https://bugs.webkit.org/show_bug.cgi?id=129980

        Reviewed by Carlos Garcia Campos.

        * BuildSlaveSupport/build.webkit.org-config/master.cfg: Add RunGtkWebKitGObjectDOMBindingsAPIBreakTests to the correct factory.

2014-03-09  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Remove the WebView source-mode WebKit1 test
        https://bugs.webkit.org/show_bug.cgi?id=129976

        Reviewed by Carlos Garcia Campos.

        * TestWebKitAPI/Tests/WebKitGtk/testwebview.c: Remove the source-mode test.

2014-03-08  Martin Robinson  <mrobinson@igalia.com>

        Unreviewed build fix for GTKbuild after the switch to CMake

        * gtk/common.py:
        (is_cmake_build): Like r165284, we need to assume CMake by default, since the
        test-only bot doesn't have any build files.

2014-03-07  Martin Robinson  <mrobinson@igalia.com>

        [GTK] built-product-archive does not handle GTK+ CMake build
        https://bugs.webkit.org/show_bug.cgi?id=129941

        * BuildSlaveSupport/built-product-archive:
        (archiveBuiltProduct): Fix the build by adding support to built-product-archive for
        the CMake build.

2014-03-07  Lorenzo Tilve  <ltilve@igalia.com>

        [GTK] Include CMake into install-dependencies script
        https://bugs.webkit.org/show_bug.cgi?id=129909

        Reviewed by Martin Robinson.

        As since r165267 buid-webkit uses CMake by default, the dependency
        with 'cmake' package should be introduced.

        * gtk/install-dependencies: Ditto.

2014-03-07  Martin Robinson  <mrobinson@igalia.com>

        REGRESSION(165267): Broke a webkitpy unit tests
        https://bugs.webkit.org/show_bug.cgi?id=129904

        Reviewed by Jon Honeycutt.

        * Scripts/webkitpy/port/gtk.py: Flip the default test to assume CMake by default.
        (GtkPort._is_cmake_build):

2014-03-07  Andres Gomez  <agomez@igalia.com>

        [GTK] webkit-patch setup-git-clone fails even after running Tools/gtk/install-dependencies
        https://bugs.webkit.org/show_bug.cgi?id=129893

        Reviewed by Martin Robinson.

        Added "git-svn" as dependency for deb based distros and,
        additionally, "subversion" for rpm based distros.

        * gtk/install-dependencies:

2014-03-07  Roger Fong  <roger_fong@apple.com>

        Remove dummy setSystemWebGLLoadPolicy client method.
        https://bugs.webkit.org/show_bug.cgi?id=129873.

        Reviewed by Dean Jackson.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::createWebViewWithOptions):

2014-03-07  Mark Hahnenberg  <mhahnenberg@apple.com>

        run-jsc-stress-tests doesn't eagerly report test failures when using the shell runner
        https://bugs.webkit.org/show_bug.cgi?id=129886

        Reviewed by Mark Lam.

        * Scripts/jsc-stress-test-helpers/shell-runner.sh: Added a "verbose" mode to the shell runner.
        If we're in verbose mode, then we don't redirect any output when running each test. If we're not
        in verbose mode then we redirect stdout to /dev/null and allow any stderr output through.
        * Scripts/run-jsc-stress-tests: Redirect any sort of error output to stderr so that it will 
        make it through when in non-verbose mode.

2014-03-07  Martin Robinson  <mrobinson@igalia.com>

        [GTK] buid-webkit should use CMake by default
        https://bugs.webkit.org/show_bug.cgi?id=129855

        Reviewed by Carlos Garcia Campos.

        Make the CMake build the default GTK+ build when using build-webkit. This will
        ensure that all bots are using CMake. We do this by swapping --gtk and --gtkcmake,
        so that we have --gtk and --gtkautotools.

        * Scripts/webkitdirs.pm: Swap --gtkcmake/--gtk for --gtk/--gtkautotools.
        * Scripts/webkitpy/port/gtk.py: Ditto.

2014-03-06  Martin Robinson  <mrobinson@igalia.com>

        [CMake] [GTK] Build with ninja when it is available
        https://bugs.webkit.org/show_bug.cgi?id=129805

        Reviewed by Philippe Normand.

        * Scripts/webkitdirs.pm:
        (canUseNinja): Added this helper which tries to execute Ninja, in an effort to determine
        if it's available on the system.
        (cmakeGeneratedBuildfile): Return the path to the generated build file. Only Unix support ATM.
        (generateBuildSystemFromCMakeProject): For GTK+ compile with Ninja when possible.

2014-03-06  Filip Pizlo  <fpizlo@apple.com>

        If the FTL is build-time enabled then it should be run-time enabled.

        Rubber stamped by Geoffrey Garen.

        * Scripts/run-jsc-stress-tests:

2014-03-06  Mark Hahnenberg  <mhahnenberg@apple.com>

        detectFailures in run-jsc-stress-tests can report everything was ok if too many tests fail
        https://bugs.webkit.org/show_bug.cgi?id=129837

        Reviewed by Michael Saboff.

        ls test_fail_* can fail if there are too many files that match. We then swallow that error, which makes everything seem ok.
        The fix is to use find instead of ls like we do in shell-runner.sh.

        * Scripts/run-jsc-stress-tests:

2014-03-06  Joseph Pecoraro  <pecoraro@apple.com>

        filter-build-webkit should not strip .o
        https://bugs.webkit.org/show_bug.cgi?id=129614

        Reviewed by Dean Jackson.

        This makes it much easier to jump from the failing output at
        the end back up to the compile errors earlier in the output.

        * Scripts/filter-build-webkit:

2014-03-06  Anders Carlsson  <andersca@apple.com>

        Build WebKit2 before building WebKit
        https://bugs.webkit.org/show_bug.cgi?id=129831
        <rdar://problem/15920020>

        Reviewed by Dan Bernstein.

        * Scripts/build-webkit:
        Always build WebKit2 and make sure to build it before WebKit when building on Mac.

2014-03-06  ChangSeok Oh  <changseok.oh@collabora.com>

        make-3.82 fails to build on ARM/Linux
        https://bugs.webkit.org/show_bug.cgi?id=107926

        Reviewed by Martin Robinson.

        Some ARM/Linux systems don't support PAGE_SIZE macro so that it causes a build failure.
        The related bug reporting is here. https://lists.debian.org/debian-kernel/2014/02/msg00274.html
        To avoid this, I propose to use sysconf(_SC_PAGESIZE) instead of PAGE_SIZE
        where it is not defined. See more details, http://linux.die.net/man/2/getpagesize

        * gtk/patches/make-3.82-arg-list-length.patch:

2014-03-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Close the page when the view is disposed instead of when finalized
        https://bugs.webkit.org/show_bug.cgi?id=129783

        Reviewed by Sergio Villar Senin.

        Add test case but disabled for now because it's affetected by bug #129684.

        * TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:
        (testProcessPerWebView):

2014-03-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] MiniBrowser crashes when opening several urls passed as command line options
        https://bugs.webkit.org/show_bug.cgi?id=129738

        Reviewed by Sergio Villar Senin.

        The problem is that we are calling g_object_unref() for the
        WebKitWebSettings everytime we set it to a WebKitWebView, but the
        view only increases the reference counter when the settings is not
        the same it currently has. We should release our reference once.

        * MiniBrowser/gtk/main.c:
        (createBrowserWindow):
        (main):

2014-03-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Tarball is created with wrong tarball paths
        https://bugs.webkit.org/show_bug.cgi?id=129496

        Reviewed by Daniel Bates.

        * gtk/make-dist.py:
        (Manifest.__init__): I inadvertently inverted the logic of these checks when
        landing the original patch with some suggestions from the reviewer. With the
        checks corrected, the tarball path is constructed properly.

2014-03-05  Jae Hyun Park  <jaepark@webkit.org>

        Unreviewed. Update my email in contributors.json

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-05  Dean Jackson  <dino@apple.com>

        [WebGL] Use WKSI to see what the system policy for WebGL is
        https://bugs.webkit.org/show_bug.cgi?id=129722
        <rdar://problem/15790542>

        Reviewed by Tim Horton.

        Dummy entry for setSystemWebGLLoadPolicy.

        * WebKitTestRunner/TestController.cpp:
        (WTR::TestController::createWebViewWithOptions):

2014-03-03  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Generate documentation for the DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=126211

        Reviewed by Carlos Garcia Campos.

        * gtk/GNUmakefile.am: No longer generation sections and SGML files in the makefile.
        * gtk/generate-gtkdoc: Call the code from webkitdom.py to generate sections and SGML files.
        * gtk/generate-webkitdom-doc-files: Removed.
        * gtk/webkitdom.py: Moved WebKit GObject DOM bindings doc generation code here, so
        that it can be called by generate-gtkdoc.

2014-03-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] build-webkit should rerun cmake if the Makefile is missing
        https://bugs.webkit.org/show_bug.cgi?id=129380

        Reviewed by Philippe Normand.

        * Scripts/webkitdirs.pm:
        (generateBuildSystemFromCMakeProject): Check for the existence of the Makefile before
        skipping CMake execution.

2014-03-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK] The jhbuild environment should have the latest stable release of gtk-doc
        https://bugs.webkit.org/show_bug.cgi?id=129651

        Reviewed by Philippe Normand.

        * gtk/jhbuild.modules: Add gtk-doc to the list of modules.

2014-03-05  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Give the WebKit GObject DOM bindings API break detection it's own buildbot bubble
        https://bugs.webkit.org/show_bug.cgi?id=129637

        Reviewed by Carlos Garcia Campos.

        * BuildSlaveSupport/build.webkit.org-config/master.cfg:
        (RunGtkWebKitGObjectDOMBindingsAPIBreakTests): Added this test runner.
        (RunGtkWebKitGObjectDOMBindingsAPIBreakTests.commandComplete): Run the breakage test command and scan the output.
        (RunGtkWebKitGObjectDOMBindingsAPIBreakTests.evaluateCommand): Return failure if there is missing API (an API break).
        New API typically just requires a rebaseline and isn't necessarily a faiulre.
        (TestFactory.__init__): Add the test for GTK+.
        * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Add a unit test for the new bubble.

2014-03-05  Krzysztof Czech  <k.czech@samsung.com>

        [ATK] Expose missing functionalities of AtkTableCell to AT
        https://bugs.webkit.org/show_bug.cgi?id=129492

        Reviewed by Mario Sanchez Prada.

        Reducing some code by using new API of AtkTableCell.

        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

2014-03-04  Alex Christensen  <achristensen@webkit.org>

        Preparing to run layout tests on Wincairo.
        https://bugs.webkit.org/show_bug.cgi?id=129709

        Reviewed by Brent Fulgham.

        * Scripts/webkitdirs.pm:
        (setPathForRunningWebKitApp):
        Add GStreamer directory for WinCairo running layout tests.
        * win/DLLLauncher/DLLLauncherMain.cpp:
        (modifyPath):
        Added the WinCairo bin32 or bin64 directory for running WinLauncher.

2014-03-04  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Simplify the GObject DOM bindings API break check into one step
        https://bugs.webkit.org/show_bug.cgi?id=129571

        Reviewed by Carlos Garcia Campos.

        * GNUmakefile.am: Add the API break check to 'make check.'
        * gtk/check-for-webkitdom-api-breaks: Added. A combination of the two removed scripts.
        * gtk/check-gdom-symbols: Removed.
        * gtk/webkitdom.py: Added.
        (header_name_list_from_gtkdoc_config_file): Gets the names of all headers from the gtkdoc config file.
        (get_all_webkitdom_symbol_files): Find the symbol files from the names.

2014-03-03  Simon Fraser  <simon.fraser@apple.com>

        Add Jeremy Jones to the contributors list as a contributor.

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-03  Adenilson Cavalcanti  <cavalcantii@gmail.com>

        Unreviewed. Update contact email.
        https://bugs.webkit.org/show_bug.cgi?id=129610

        * Scripts/webkitpy/common/config/contributors.json:

2014-03-02  Brian Burg  <bburg@apple.com>

        Web Inspector model tests load wrong inspector page under WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=129460

        Reviewed by Dan Bernstein.

        Don't unconditionally open the inspector before running an inspector test.
        Instead, the test should request that the inspector open when it's ready.

        This change was lost during a rebase, but is the same change made to
        DumpRenderTree.

        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::TestInvocation::invoke): 

2014-03-02  Darin Adler  <darin@apple.com>

        Split TextIteratorBehavior into a separate header
        https://bugs.webkit.org/show_bug.cgi?id=129578

        Reviewed by Sam Weinig.

        * Scripts/sort-export-file: Added special cases to the script so you can just paste link errors
        from WebKit in and the script will add them in as unconditional exports. This makes the "add"
        task easy, but the remove is still a bit of a pain.

2014-03-02  Darin Adler  <darin@apple.com>

        Sort Mac platform export files so they merge better
        https://bugs.webkit.org/show_bug.cgi?id=129581

        Reviewed by Sam Weinig.

        * Scripts/sort-export-file: Added. Quickly whipped together script that sorts
        Mac export files in a "canonical" order for this project.

2014-02-28  Zalan Bujtas  <zalan@apple.com>

        Add hiDPI support to DumpRenderTree/WebKitTestRunner without the need of reloading the test case.
        https://bugs.webkit.org/show_bug.cgi?id=129438

        Reviewed by Simon Fraser.

        'hidpi-' prefixed test cases now trigger 2x scale factor on the testing
        offscreen window. It makes testing subpixel rendering and positioning possible.

        Both the offscreen window's and WebKit's scaling are set accordingly.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (createWebViewAndOffscreenWindow): cleanup
        (destroyWebViewAndOffscreenWindow): cleanup
        (dumpRenderTree):
        (changeWindowScaleIfNeeded):
        (runTest):
        * DumpRenderTree/mac/DumpRenderTreeWindow.h:
        * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
        (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]): cleanup
        * WebKitTestRunner/PlatformWebView.h:
        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::changeWindowScaleIfNeeded):
        (WTR::TestInvocation::invoke):
        * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
        (WTR::PlatformWebView::changeWindowScaleIfNeeded):
        * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
        (WTR::PlatformWebView::changeWindowScaleIfNeeded):
        * WebKitTestRunner/ios/PlatformWebViewIOS.mm:
        (WTR::PlatformWebView::changeWindowScaleIfNeeded):
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
        (WTR::PlatformWebView::changeWindowScaleIfNeeded):

2014-02-28  Anders Carlsson  <andersca@apple.com>

        Remove logging.

        Reviewed by Dan Bernstein.

        * MiniBrowser/mac/WK2BrowserWindowController.m:
        (-[WK2BrowserWindowController browsingContextController:decidePolicyForNavigationAction:decisionHandler:]):

2014-02-28  Daniel Bates  <dabates@apple.com>

        [iOS] DumpRenderTree Perl Support may build against wrong SDK and toolchain
        https://bugs.webkit.org/show_bug.cgi?id=129163

        Reviewed by David Kilzer.

        Fixes an issue where DumpRenderTree Perl Support may build with the specified
        iOS Simulator SDK and toolchain instead of using the OS X SDK and toolchain.
        This issue manifests itself in a build failure when building the IPhoneSimulatorNotification
        bundle.

        Currently we build DumpRenderTree Perl Support with respect to the variable SDKROOT,
        which is specified either explicitly when building with MAKE(1) or implicitly by
        build-{dumprendertree, webkit}. Instead we should always build Perl Support using
        the OS X SDK and toolchain since the built products are only applicable to OS X.

        * DumpRenderTree/ios/PerlSupport/Makefile:

2014-02-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r164859.
        http://trac.webkit.org/changeset/164859
        https://bugs.webkit.org/show_bug.cgi?id=129483

        caused WK1 crashes (DumpRenderTree) (Requested by zalan on
        #webkit).

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (createWebViewAndOffscreenWindow):
        (dumpRenderTree):
        (runTest):
        * DumpRenderTree/mac/DumpRenderTreeWindow.h:
        * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
        (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]):
        * WebKitTestRunner/PlatformWebView.h:
        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::TestInvocation::invoke):
        * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
        * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
        * WebKitTestRunner/ios/PlatformWebViewIOS.mm:
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
        (-[WebKitTestRunnerWindow frameRespectingFakeOrigin]):

2014-02-28  Zalan Bujtas  <zalan@apple.com>

        Add hiDPI support to DumpRenderTree/WebKitTestRunner without the need of reloading the test case.
        https://bugs.webkit.org/show_bug.cgi?id=129438

        Reviewed by Simon Fraser.

        'hidpi-' prefixed test cases now trigger 2x scale factor on the testing
        offscreen window. It makes testing subpixel rendering and positioning possible.

        Both the offscreen window's and WebKit's scaling are set accordingly.

        * DumpRenderTree/mac/DumpRenderTree.mm:
        (createWebViewAndOffscreenWindow): unrelated cleanup.
        (destroyWebViewAndOffscreenWindow): unrelated cleanup.
        (dumpRenderTree):
        (changeOffscreenWindowScaleIfNeeded):
        (runTest):
        * DumpRenderTree/mac/DumpRenderTreeWindow.h:
        * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
        (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]): cleanup.
        * WebKitTestRunner/PlatformWebView.h:
        * WebKitTestRunner/TestInvocation.cpp:
        (WTR::changeOffscreenWindowScaleIfNeeded):
        (WTR::TestInvocation::invoke):
        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
        (WTR::PlatformWebView::changeOffscreenWindowScaleIfNeeded):

2014-02-27  Brian Burg  <bburg@apple.com>

        Web Inspector: model tests should use a special Test.html inspector page
        https://bugs.webkit.org/show_bug.cgi?id=129190

        Reviewed by Timothy Hatcher.

        Remove code that immediately opens the Web Inspector based on the file path of the test.
        Instead, the test page should request that the inspector open inside its `test()` method.

        This change is necessary because otherwise, the inspector would be opened too early for
        InspectorController::isUnderTest to get set in time, so the normal Web Inspector page
        will get loaded instead of the minimal test page.

        * DumpRenderTree/efl/DumpRenderTree.cpp:
        (createTestRunner):
        * DumpRenderTree/gtk/DumpRenderTree.cpp:
        (runTest):
        * DumpRenderTree/mac/DumpRenderTree.mm:
        (runTest):
        * DumpRenderTree/win/DumpRenderTree.cpp:
        (runTest):

2014-02-27  Laszlo Vidacs  <lvidacs.u-szeged@partner.samsung.com>

        check-webkit-style indentation false alarm in WebKit/win/WebNodeHighlight.cpp
        https://bugs.webkit.org/show_bug.cgi?id=127076

        Reviewed by Anders Carlsson.

        Avoid match for :: as start of a member initialization list. Modify expression to match
        after a colon either non-colon character or end of line.

        * Scripts/webkitpy/style/checkers/cpp.py:
        (check_member_initialization_list):
        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
        (WebKitStyleTest.test_member_initialization_list):

2014-02-27  Renata Hodovan  <rhodovan.u-szeged@partner.samsung.com>

        Unreviewed. Update my email addresses in contributors.json.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-27  Alberto Garcia  <berto@igalia.com>

        [gtk-doc] UnicodeEncodeError: 'ascii' codec can't encode character
        https://bugs.webkit.org/show_bug.cgi?id=128927

        Reviewed by Philippe Normand.

        Encode manually the data for sys.{stdout,stderr}.write.

        * gtk/gtkdoc.py:
        (GTKDoc._run_command):

2014-02-27  Andres Gomez  <agomez@igalia.com>

        Unreviewed. Add myself to watchlists

        * Scripts/webkitpy/common/config/watchlist: Add myself to
        watchlists.

2014-02-27  Andres Gomez  <agomez@igalia.com>

        Unreviewed, rolling out r164790.
        http://trac.webkit.org/changeset/164790

        Revert r164790 because of erroneous commit log

        * Scripts/webkitpy/common/config/watchlist:

2014-02-27  Krzysztof Czech  <k.czech@samsung.com>

        [ATK] Utilize AtkTableCell to expose directly AccessibilityTableCell to AT
        https://bugs.webkit.org/show_bug.cgi?id=129250

        Reviewed by Mario Sanchez Prada.

        Changing version of ATK to 2.11.90, because it introduces AtkTableCell interface.
        Implementing methods so that we could test column/row headers represented as an array of cells.

        * DumpRenderTree/AccessibilityUIElement.cpp:
        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        (AccessibilityUIElement::columnHeaders):
        (AccessibilityUIElement::rowHeaders):
        * DumpRenderTree/win/AccessibilityUIElementWin.cpp: Adding empty stubs, to not break compilation.
        (AccessibilityUIElement::columnHeaders):
        (AccessibilityUIElement::rowHeaders):
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::rowHeaders):
        (WTR::AccessibilityUIElement::columnHeaders):
        * efl/jhbuild.modules:
        * gtk/jhbuild.modules:

2014-02-27  Andres Gomez  <agomez@igalia.com>

        Unreviewed. Add myself to watchlists

        * Scripts/webkitpy/common/config/watchlist: Add myself to
        watchlists.

2014-02-27  Andres Gomez  <agomez@igalia.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-27  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        Unreviewed. Add Víctor Jáquez and myself to watchlists

        * Scripts/webkitpy/common/config/watchlist: Add Víctor Jáquez and
        myself to watchlists.

2014-02-26  Julien Brianceau  <jbriance@cisco.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-26  Laszlo Vidacs  <lvidacs.u-szeged@partner.samsung.com>

        Unreviewed. Moved myself to the list of committers.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-24  Martin Robinson  <mrobinson@igalia.com>

        [GTK] Reduplicate common.top_level_path in scripts
        https://bugs.webkit.org/show_bug.cgi?id=129291

        Reviewed by Philippe Normand.

        Duplicate common.top_level_path and avoid polluting many scripts with awkward system
        path manipulation and weird dependencies on the jhbuild infrastructure.

        * Scripts/run-gtk-tests: Use common again.
        (TestRunner._setup_testing_environment): Ditto.
        * gtk/check-gdom-symbols: Ditto.
        * gtk/common.py:
        (top_level_path): Re-add top_level_path..
        (get_build_path): Use the builtin top_level_path again.
        * gtk/find-make-dist-errors: Use common again.
        (get_missing_headers): Ditto.
        * gtk/generate-inspector-gresource-manifest.py: Ditto.

2014-02-26  Mark Hahnenberg  <mhahnenberg@apple.com>

        runscript: line 42: /bin/ls: Argument list too long
        https://bugs.webkit.org/show_bug.cgi?id=129376

        Reviewed by Michael Saboff.

        The "test_script_*" can expand to more things than can be passed as arguments on the command line. 
        We should use find instead, which generates the list of files rather than expanding them all on 
        the command line and spitting them back out.

        * Scripts/jsc-stress-test-helpers/shell-runner.sh: 

2014-02-26  Martin Robinson  <mrobinson@igalia.com>

        ENABLE_PROMISES is improperly specified as ENABLE_PROMISE in Features.pm
        https://bugs.webkit.org/show_bug.cgi?id=129377

        Reviewed by Csaba Osztrogonác.

        * Scripts/webkitperl/FeatureList.pm: Properly specify the promises feature as ENABLE_PROMISES.

2014-02-26  Manuel Rego Casasnovas  <rego@igalia.com>

        [GTK] Re-enable gtk-doc in EWS
        https://bugs.webkit.org/show_bug.cgi?id=128369

        Reviewed by Carlos Garcia Campos.

        Enable again gtk-doc generation in EWS once bug #128417 has been fixed.

        * Scripts/webkitpy/common/config/ports.py:
        (GtkPort.build_webkit_command): Add --disable-gtk-doc arg.
        (GtkWK2Port.build_webkit_command): Ditto.
        * Scripts/webkitpy/common/config/ports_unittest.py:
        (DeprecatedPortTest.test_gtk_port): Ditto.
        (DeprecatedPortTest.test_gtk_wk2_port): Ditto.

2014-02-26  Martin Robinson  <mrobinson@igalia.com>

        [GTK] generate-gtkdoc can fail with WebKit1 or WebKit2 only builds
        https://bugs.webkit.org/show_bug.cgi?id=129319

        Reviewed by Carlos Garcia Campos.

        * gtk/generate-gtkdoc:
        (get_generator_for_config): Properly handle the situation where the pkgconfig file is missing.

2014-02-25  Mihai Maerean  <mmaerean@adobe.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-25  Sergio Villar Senin  <svillar@igalia.com>

        [CSS Grid Layout] Add ENABLE flag
        https://bugs.webkit.org/show_bug.cgi?id=129153

        Reviewed by Simon Fraser.

        Added ENABLE_CSS_GRID_LAYOUT feature flag. It's on by default for
        all ports for developer builds.

        * Scripts/webkitperl/FeatureList.pm:

2014-02-25  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>

        Added myself as a committer.

        Unreviewed.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-25  Tamas Gergely  <tgergely.u-szeged@partner.samsung.com>

        Unreviewed. Moved myself to the list of committers.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-25  Peter Molnar  <pmolnar.u-szeged@partner.samsung.com>

        Move myself to the committers list.

        Unreviewed.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-25  László Langó  <llango.u-szeged@partner.samsung.com>

        Unreviewed. Add myself as a committer.

        * Scripts/webkitpy/common/config/contributors.json:

2014-02-25  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r164639.
        http://trac.webkit.org/changeset/164639
        https://bugs.webkit.org/show_bug.cgi?id=129302

        gtk-doc still have problems in EWS (Requested by rego on
        #webkit).

        * Scripts/webkitpy/common/config/ports.py:
        (GtkPort.build_webkit_command):
        (GtkWK2Port.build_webkit_command):
        * Scripts/webkitpy/common/config/ports_unittest.py:
        (DeprecatedPortTest.test_gtk_port):
        (DeprecatedPortTest.test_gtk_wk2_port):

2014-02-25  Manuel Rego Casasnovas  <rego@igalia.com>

        [GTK] Re-enable gtk-doc in EWS
        https://bugs.webkit.org/show_bug.cgi?id=128369

        Reviewed by Carlos Garcia Campos.

        Enable again gtk-doc generation in EWS once bug #128417 has been fixed.

        * Scripts/webkitpy/common/config/ports.py:
        (GtkPort.build_webkit_command): Add --disable-gtk-doc arg.
        (GtkWK2Port.build_webkit_command): Ditto.
        * Scripts/webkitpy/common/config/ports_unittest.py:
        (DeprecatedPortTest.test_gtk_port): Ditto.
        (DeprecatedPortTest.test_gtk_wk2_port): Ditto.

2014-02-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Mark view source mode methods as deprecated
        https://bugs.webkit.org/show_bug.cgi?id=128920

        Reviewed by Martin Robinson.

        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
        (beforeAll): Remove view mode test.

2014-02-24  Martin Robinson  <mrobinson@igalia.com>

        [GTK] generate-gtkdoc should not generate documentation for source files for unbuilt source files
        https://bugs.webkit.org/show_bug.cgi?id=128417

        Reviewed by Carlos Garcia Campos.

        * gtk/GNUmakefile.am: Make the documentation process depend on the configuration files.
        * gtk/generate-gtkdoc: Switch from using hard-coded configurations to reading them from
        a makefile. This allows accepting a header list from the build system, which can be used
        to dynamically build a list of ignored files. We can ignore any source file that doesn't
        have a corresponding header file on the header list. 
        * gtk/gtkdoc.py: Now accept a headers parameter, which can be used instead of passing just
        source directories to gtkdoc-scan.

2014-02-24  Anders Carlsson  <andersca@apple.com>

        Add a DefaultVisitedLinkProvider and route visited link actions through it
        https://bugs.webkit.org/show_bug.cgi?id=129285

        Reviewed by Dan Bernstein.

        * MiniBrowser/mac/AppDelegate.m:
        (-[BrowserAppDelegate applicationDidFinishLaunching:]):
        Set a shared history so we'll get visited link tracking.

        * MiniBrowser/mac/WK1BrowserWindowController.m:
        (-[WK1BrowserWindowController awakeFromNib]):
        Set a group name.

2014-02-24  Dan Bernstein  <mitz@apple.com>

        iOS build fix after r164577.

        * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
        (AccessibilityUIElement::selectedChildrenCount):
        (AccessibilityUIElement::selectedChildAtIndex):

2014-02-24  David Kilzer  <ddkilzer@apple.com>

        [ASan] Remove methods from ignore list that no longer cause crashes
        <http://webkit.org/b/129257>

        Reviewed by Anders Carlsson.

        * asan/webkit-asan-ignore.txt: Remove old methods.

2014-02-24  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>

        Extract common parts from jhbuildrc files.
        https://bugs.webkit.org/show_bug.cgi?id=125986

        Reviewed by Csaba Osztrogonác.

        Co-authored with Peter Szanka <h868064@stud.u-szeged.hu>.

        * Scripts/run-gtk-tests:
        (TestRunner._setup_testing_environment):
        * efl/common.py: Removed.
        * efl/jhbuildrc:
        * gtk/check-gdom-symbols:
        * gtk/common.py:
        (binary_build_path):
        (get_build_path):
        * gtk/find-make-dist-errors:
        (get_missing_headers):
        * gtk/generate-gtkdoc:
        (get_webkit2_options):
        (get_webkit1_options.src_path):
        (get_webkit1_options):
        (get_webkitdom_options.src_path):
        (get_webkitdom_options):
        * gtk/generate-inspector-gresource-manifest.py:
        * gtk/jhbuildrc:
        * jhbuild/jhbuildrc_common.py: Added.
        (script_path):
        (top_level_path):
        (init):

2014-02-24  Diego Pino Garcia  <dpino@igalia.com>

        Unreviewed. Fix code indentation and spacing.

        * Scripts/webkitpy/style/checkers/js.py:
        (SingleQuoteChecker.check):

2014-02-24  Krzysztof Czech  <k.czech@samsung.com>

        [ATK] Wrong selected element at a given index in a list box.
        https://bugs.webkit.org/show_bug.cgi?id=129039

        Reviewed by Chris Fleizach.

        Added missing implementation and proposed some new function for testing selection
        in a list boxes.

        * DumpRenderTree/AccessibilityUIElement.cpp:
        (setSelectedChildAtIndexCallback):
        (removeSelectionAtIndexCallback):
        (AccessibilityUIElement::getJSClass):
        * DumpRenderTree/AccessibilityUIElement.h:
        * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
        (AccessibilityUIElement::selectedChildrenCount):
        (AccessibilityUIElement::selectedChildAtIndex):
        (AccessibilityUIElement::setSelectedChildAtIndex):
        (AccessibilityUIElement::removeSelectionAtIndex):
        * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
        (AccessibilityUIElement::selectedChildrenCount):
        (AccessibilityUIElement::selectedChildAtIndex):
        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
        (WTR::AccessibilityUIElement::setSelectedChildAtIndex):
        (WTR::AccessibilityUIElement::removeSelectionAtIndex):
        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
        * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
        (WTR::AccessibilityUIElement::selectedChildAtIndex):
        (WTR::AccessibilityUIElement::selectedChildrenCount):
        (WTR::AccessibilityUIElement::setSelectedChildAtIndex):
        (WTR::AccessibilityUIElement::removeSelectionAtIndex):

2014-02-23  Diego Pino García  <dpino@igalia.com>

        [GTK] Fix build after Web Inspector code reorganization (r164543)
        https://bugs.webkit.org/show_bug.cgi?id=129231

        Reviewed by Dean Jackson.

        * gtk/generate-inspector-gresource-manifest.py:
        Modify paths to Web Inspector code.

2014-02-23  Martin Robinson  <mrobinson@igalia.com>

        [GTK] generate-gtkdoc should use argparse
        https://bugs.webkit.org/show_bug.cgi?id=128418

        Reviewed by Carlos Garcia Campos.

        * gtk/generate-gtkdoc: Get all arguments from argparse, pass then as parameters
        to all functions, and guard the main routine with a __name__ == __main__ check.

2014-02-23  Martin Robinson  <mrobinson@igalia.com>

        [GTK][CMake] Many plugin tests fail when running WebKit1 layout tests
        https://bugs.webkit.org/show_bug.cgi?id=129191

        Reviewed by Anders Carlsson.

        * DumpRenderTree/PlatformGTK.cmake: Properly specify the library build directory
        for the GTK+ DumpRenderTree build. We could manually construct this path, but the
        name of the directory is "lib" and not "libs". Instead we should use the CMake
        variable specifically assigned to this task.

2014-02-23  David Kilzer  <ddkilzer@apple.com>

        [ASan] Add JSC::DFG::prepareOSREntry() to ignore list
        <http://webkit.org/b/129209>

        Reviewed by Geoffrey Garen.

        * asan/webkit-asan-ignore.txt: Add DFG::prepareOSREntry() to the
        ignore list to make ASan builds usable again.  Follow-up
        investigation is tracked by <rdar://problem/16055903>.

2014-02-20  David Farler  <dfarler@apple.com>

        Make old-run-webkit-tests work with iOS Simulator WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=128622

        Reviewed by Simon Fraser.

        With this change, we now have layout tests running in both DumpRenderTree
        and WebKitTestRunner, with WebKit and WebKit2 used respectively in the iOS
        simulator.

        * Scripts/old-run-webkit-tests:
        In general, make any specific reference to DumpRenderTree
        able to refer to WebKitTestRunner wherever possible:
        - Rename functions to remove DRT-specific naming.
        - Name FIFOs after the tool that is being used.
        -- Clean up FIFO creation code
        Other necessary changes:
        - Allow use of an ios-sim-wk2 platform.
        - Clean up platform hierarchy creation where the simulator platform behavior differed.
        * WebKitTestRunner/TestController.cpp:
        Open FIFOs to get dumps out of the simulator as we do in DumpRenderTree.
        (WTR::TestController::TestController):
        * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
        Copy the injected bundle into the app bundle.

2014-02-21  Joseph Pecoraro  <pecoraro@apple.com>

        run-webkit-httpd fails to find httpd configuation file.

        Reviewed by Ryosuke Niwa.

        * Scripts/webkitperl/httpd.pm:
        (getHTTPDConfigPathForTestDirectory):

2014-02-21  Eric Carlson  <eric.carlson@apple.com>

        Fix TimeRanges layering violations
        https://bugs.webkit.org/show_bug.cgi?id=128717

        Reviewed by Jer Noble.

        * TestWebKitAPI/Tests/WebCore/TimeRanges.cpp: TimeRanges* -> TimeRanges&.
        (TestWebKitAPI::TEST):

2014-02-21  Diego Pino García  <dpino@igalia.com>

        Web Inspector: update check-webkit-style to flag single quotes in WebInspectorUI projects
        https://bugs.webkit.org/show_bug.cgi?id=128422

        Reviewed by Joseph Pecoraro.

        * Scripts/webkitpy/style/checkers/js.py:
        (JSChecker.__init__):
        (JSChecker.check):
        (SingleQuoteChecker):
        (SingleQuoteChecker.__init__):
        (SingleQuoteChecker.check):
        * Scripts/webkitpy/style/checkers/js_unittest.py:
        (JSTestCase.assertError.error_for_test):
        (JSTestCase.assertError):
        (JSTestCase.test_no_error):
        (JSTestCase.test_error):

== Rolled over to ChangeLog-2014-02-20 ==
