[GTK] Safeguard against possible NULL-dereference
https://bugs.webkit.org/show_bug.cgi?id=104931

Patch by Claudio Saavedra <csaavedra@igalia.com> on 2013-01-16
Reviewed by Martin Robinson.

* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetIndexInParent): Move the NULL-safeguard to a
place where it actually makes sense.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139890 268f45cc-cd09-0410-ab3c-d52691b4dbfc
RenderListMarker::computePreferredLogicalWidth should not be public
https://bugs.webkit.org/show_bug.cgi?id=106956

Reviewed by Tony Chang.

RenderListItem was calling computePreferredLogicalWidths for the side
effects of updating the marker content and margins. Instead, call
updateMarginsAndContent directly.

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::updateMarkerLocation):
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::layout):
The isImage() codepath never calls computePreferredLogicalWidths, so we need to make
sure the content and margins are updated.

(WebCore::RenderListMarker::updateContent):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::updateMarginsAndContent):
* rendering/RenderListMarker.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139891 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreveiwed gardening. Updating expectations following r139865.

* platform/chromium-linux/fast/forms/time/time-appearance-basic-expected.png:
* platform/chromium-mac-lion/fast/forms/time/time-appearance-basic-expected.png:
* platform/chromium-mac-snowleopard/fast/forms/time/time-appearance-basic-expected.png:
* platform/chromium-mac/fast/forms/time/time-appearance-basic-expected.png:
* platform/chromium-win/fast/forms/time/time-appearance-basic-expected.png:
* platform/chromium/TestExpectations:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139892 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed gardening. Marking several tests as crashing on Debug builds following
r139853.

* platform/chromium/TestExpectations:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139893 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use SkMatrix::I() when we need to pass identity, rather than constructing a new matrix.
https://bugs.webkit.org/show_bug.cgi?id=107016

Reviewed by James Robinson.

No new tests. existing tests exercise this code.

The default constructor is being deprecated, so this change is also part of that effort,
though it is a perf-improvement regardless, since we avoid making a new (temp) matrix.

* platform/graphics/chromium/GraphicsLayerChromium.cpp:
(WebCore::GraphicsLayerChromium::updateLayerPreserves3D):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139894 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Chromium] Remove hardcoded chromium_*.jar in gyp files
https://bugs.webkit.org/show_bug.cgi?id=104049

Patch by Chris Hopman <cjhopman@chromium.org> on 2013-01-16
Reviewed by Eric Seidel.

Targets with dependencies (direct/indirect) on a java target receive
the chromium_*.jar paths in the variable input_jars_paths. Targets
should use that rather than hardcoding where they think the jar will
be. These can be passed directly to ant as INPUT_JARS_PATHS rather
than as --jars to generate_native_test.py.

Source/WebKit/chromium:

* WebKitUnitTests.gyp:

Tools:

* DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
* TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139895 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[gstreamer] Some media tests occasionally crash with gstreamer 1.0 backend
https://bugs.webkit.org/show_bug.cgi?id=106551

Reviewed by Philippe Normand.

ImageGStreamerCairo was passing mapped memory to
cairo_image_surface_create_for_data() and then unmapping it straight
away even though the cairo_surface_t is still used. The cairo
documentation states:
"The output buffer must be kept around until the cairo_surface_t is
destroyed or cairo_surface_finish() is called on the surface."

This patch keeps the GstBuffer memory mapped until the ImageGStreamer
is destroyed so that the internal cairo_surface_t stays valid while
avoiding copying the image data.

No new tests, already covered by existing tests.

* platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
(WTF::adoptGRef):
(WTF):
(WTF::GstBuffer):
* platform/graphics/gstreamer/GRefPtrGStreamer.h:
(WTF): Add support for using GRefPtr with GstBuffer.
* platform/graphics/gstreamer/ImageGStreamer.h:
(ImageGStreamer):
* platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
(ImageGStreamer::ImageGStreamer):
(ImageGStreamer::~ImageGStreamer):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139896 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Chromium] Move WebArrayBufferView and WebSerializedScriptValue out of public/platform/
https://bugs.webkit.org/show_bug.cgi?id=106863

Reviewed by Adam Barth.

These are not being moved into the new top-level Platform
directory, so into public they go.

* WebKit.gyp:
* public/WebArrayBufferView.h: Added.
(v8):
(WebKit):
(WebArrayBufferView):
(WebKit::WebArrayBufferView::~WebArrayBufferView):
(WebKit::WebArrayBufferView::WebArrayBufferView):
* public/WebSerializedScriptValue.h: Added.
(v8):
(WebKit):
(WebSerializedScriptValue):
(WebKit::WebSerializedScriptValue::~WebSerializedScriptValue):
(WebKit::WebSerializedScriptValue::WebSerializedScriptValue):
(WebKit::WebSerializedScriptValue::operator=):
(WebKit::WebSerializedScriptValue::isNull):
* public/platform/WebArrayBufferView.h:
* public/platform/WebSerializedScriptValue.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a Setting to disable QTKit media engine.
https://bugs.webkit.org/show_bug.cgi?id=106972

Reviewed by Eric Carlson.

Source/WebCore:

Allow the MediaPlayerPrivateQTKit engine to be disabled by adding a
runtime setting to Settings. Make the setting 'live' by requerying the
installed media engines when the setting changes.

* WebCore.exp.in: Add new symbols to export list.
* page/Settings.cpp: Add new gQTKitEnabled global.
(WebCore::Settings::setAVFoundationEnabled): Requery media engines.
(WebCore::Settings::setQTKitEnabled): Ditto. Setter for global setting variable.
* page/Settings.h:
(WebCore::Settings::isQTKitEnabled): Getter for same.
* platform/graphics/MediaPlayer.cpp:
(WebCore::installedMediaEngines): Check isQTKitEnabled() before adding
    MediaPlayerPrivateQTKit engine.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::requeryMediaEngines): Pass through to MediaPlayer.
* html/HTMLMediaElement.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::installedMediaEngines): Take an optional requery options parameter.
(WebCore::MediaPlayer::requeryMediaEngines): Pass through to installedMediaEngines().
* platform/graphics/MediaPlayer.h:

Source/WebKit/mac:

Add WebKit API to set QTKit enabled setting from user defaults.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]): Set WebCore settings based on user defaults.
(-[WebPreferences setQTKitEnabled:]): Pass through to WebCore.
(-[WebPreferences isQTKitEnabled]): Ditto.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]): Synchronize WebKit/WebCore settings.

Source/WebKit2:

Add a WebKit2 API to access WebCore QTKitEnabled settings.

* Shared/WebPreferencesStore.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetQTKitEnabled): Pass through to WebCore.
(WKPreferencesGetQTKitEnabled): Ditto.
* UIProcess/API/C/WKPreferences.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Synchronize WebKit2/WebCore settings.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139899 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[V8] Make a creationContext parameter of toV8() mandatory
https://bugs.webkit.org/show_bug.cgi?id=107020

Reviewed by Adam Barth.

Source/WebCore:

Currently a creationContext parameter of toV8() is optional:

  Handle<Value> toV8(..., Handle<Object> creationContext = Handle<Object>(), ...) {
    ...;
  }

On the other hand, looking at the implementation of
V8WrapperInstantiationScope:

    explicit V8WrapperInstantiationScope(v8::Handle<v8::Object> creationContext)
        : m_didEnterContext(false)
        , m_context(v8::Context::GetCurrent())
    {
        if (creationContext.IsEmpty()) // We do nothing for this case!
            return;
        v8::Handle<v8::Context> contextForWrapper = creationContext->CreationContext();
        if (contextForWrapper == m_context)
            return;
        m_context = v8::Local<v8::Context>::New(contextForWrapper);
        m_didEnterContext = true;
        m_context->Enter();
    }

we're assuming that a creationContext parameter is passed
to toV8() when a creationContext exists. In other words,
if we forget to pass a creationContext parameter, we will
end up with creating an object on the current context, which
is wrong. To avoid the mistake, we should make the
creationContext parameter mandatory. When we really do not
have a creationContext, we can pass Handle<Object>() explicitly.

No tests. No change in behavior.

* bindings/scripts/CodeGeneratorV8.pm:
(GenerateHeader):
* bindings/scripts/test/V8/V8Float64Array.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestActiveDOMObject.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestCustomNamedGetter.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestEventConstructor.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestEventTarget.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestException.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestInterface.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestMediaQueryListListener.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestNamedConstructor.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestNode.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestObj.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestOverloadedConstructors.h:
(WebCore::toV8):
* bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h:
(WebCore::toV8):
* bindings/v8/IDBBindingUtilities.cpp:
(WebCore::injectIDBKeyIntoScriptValue):
(WebCore::idbKeyToScriptValue):
* bindings/v8/ScriptController.cpp:
(WebCore::createScriptObject):
(WebCore::ScriptController::createScriptObjectForPluginElement):
* bindings/v8/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::currentCallFrame):
* bindings/v8/ScriptObject.cpp:
(WebCore::ScriptGlobalObject::set):
* bindings/v8/V8AbstractEventListener.cpp:
(WebCore::V8AbstractEventListener::handleEvent):
(WebCore::V8AbstractEventListener::getReceiverObject):
* bindings/v8/V8DOMWindowShell.cpp:
(WebCore::V8DOMWindowShell::updateDocumentProperty):
* bindings/v8/V8LazyEventListener.cpp:
(WebCore::toObjectWrapper):
* bindings/v8/V8MutationCallback.cpp:
(WebCore::V8MutationCallback::handleEvent):
* bindings/v8/V8NodeFilterCondition.cpp:
(WebCore::V8NodeFilterCondition::acceptNode):
* bindings/v8/V8WorkerContextEventListener.cpp:
(WebCore::V8WorkerContextEventListener::handleEvent):
(WebCore::V8WorkerContextEventListener::getReceiverObject):
* bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp:
(WebCore::V8SQLStatementErrorCallback::handleEvent):
* bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
(WebCore::InjectedScriptHost::nodeAsScriptValue):
* css/MediaQueryListListener.cpp:
(WebCore::MediaQueryListListener::queryChanged):
* testing/v8/WebCoreTestSupport.cpp:
(WebCoreTestSupport::injectInternalsObject):

Source/WebKit/chromium:

We pass Handle<Object>() to a creationContext parameter of
toV8() when we do not have a creationContext.

No tests. No change in behavior.

* src/InspectorFrontendClientImpl.cpp:
(WebKit::InspectorFrontendClientImpl::windowObjectCleared):
* src/WebArrayBuffer.cpp:
(WebKit::WebArrayBuffer::toV8Value):
* src/WebBlob.cpp:
(WebKit::WebBlob::toV8Value):
* src/WebFrameImpl.cpp:
(WebKit::WebFrameImpl::createFileSystem):
(WebKit::WebFrameImpl::createSerializableFileSystem):
(WebKit::WebFrameImpl::createFileEntry):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139900 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove webkitpy Visual Studio files, as core developers are not interested in maintaining them
https://bugs.webkit.org/show_bug.cgi?id=106036

Reviewed by Darin Adler.

* Scripts/webkitpy/webkitpy.pyproj: Removed.
* Scripts/webkitpy/webkitpy.sln: Removed.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139901 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove --shark* support from sunspider/run-sunspider now that Shark is dead
https://bugs.webkit.org/show_bug.cgi?id=99512

Reviewed by Darin Adler.

PerformanceTests/SunSpider:

I tried to use --instruments, but that also seems broken (in the same way before/after this patch).

* sunspider:
(runTestsOnce):

Tools:

* Scripts/run-sunspider:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139902 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a missing #if to fix the Mac build sans ENABLE_CSS_FILTERS.

Rubber-stamped by Simon Fraser.

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::cloneLayer):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139903 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LinkHighlight should use touch adjustment to match active state on GestureTapDown.
https://bugs.webkit.org/show_bug.cgi?id=107032

Reviewed by Adam Barth.

Source/WebKit/chromium:

LinkHighlight node selection should produce results that match the node marked
active during GestureTapDown.

* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::bestTouchLinkNode):
* tests/LinkHighlightTest.cpp:
(WebCore::TEST):

LayoutTests:

* platform/chromium-linux/compositing/gestures/gesture-tapHighlight-simple-multi-line.html:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139904 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Allow PaintInfo to carry all PaintBehavior flags
https://bugs.webkit.org/show_bug.cgi?id=106980

Reviewed by Sam Weinig.

PaintInfo has a single boolean for forceBlackText, but I'll be adding additional
paint behaviors that I'd like to access from PaintInfo, so it makes sense for
PaintInfo to just include the set of PaintBehavior flags.

Also add default values in the constructor arguments for rarely used parameters.

No behavior change, no tests.

* rendering/EllipsisBox.cpp:
(WebCore::EllipsisBox::paint): Use the forceBlackText() function.
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paint): Call forceBlackText().
* rendering/PaintInfo.h:
(WebCore::PaintInfo::PaintInfo): Pass PaintBehavior rather than a forceBlackText boolean.
(WebCore::PaintInfo::forceBlackText): Return true if the behavior flags contain PaintBehaviorForceBlackText.
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended): Pass PaintBehaviorForceBlackText instead of 'true'
when painting for background-clip: text.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents): Pass PaintBehaviorNormal where we used to pass 'false',
and omit default 0 parameters.
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::renderSubtreeToImageBuffer): PaintBehaviorNormal and remove default params.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139908 268f45cc-cd09-0410-ab3c-d52691b4dbfc
inconsistency in drawImage with target rect negative dimensions.
https://bugs.webkit.org/show_bug.cgi?id=100026

Patch by Arnaud Renevier <a.renevier@sisa.samsung.com> on 2013-01-16
Reviewed by Dean Jackson.

PerformanceTests:

Create a drawImage performance test. There is no significative change
in performance: 27144.6851528 runs/s without the patch; 27153.517612
runs/s with the patch. Test is currently skipped.

* Canvas/drawimage.html: Added.
* Skipped:

Source/WebCore:

Remove -1, -1 special case in drawImage and drawImageBuffer. Replace
all -1 -1 arguments calls to with the correct rectangle dimensions.

Remove FloatRect(0, 0, -1, -1) default argument for srcRect, and
instead, add new overloaded functions to create a FloatRect from image
size.

Replace -1 -1 arguments calls in FEComposite::platformApplySoftware
with correct rectangle dimensions.

Replace ImageGStreamer rect method (which may return -1 -1 rectangle)
with cropRect method, and make caller check for rectangle emptiness.

* fast/canvas/drawImage-with-negative-source-destination-expected.txt:
* fast/canvas/drawImage-with-negative-source-destination.js:

* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawImage):
(WebCore):
(WebCore::GraphicsContext::drawImageBuffer):
* platform/graphics/GraphicsContext.h:
(GraphicsContext):
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::platformApplySoftware):
* platform/graphics/gstreamer/ImageGStreamer.h:
(WebCore::ImageGStreamer::rect):

LayoutTests:

Add a drawImage check for a destination rectangle with -1px
width/height. When drawing to (1, 1, -1, -1) rectangle, first
(top-left) pixel should have been and been the only one drawn into.

* fast/canvas/drawImage-with-negative-source-destination-expected.txt:
* fast/canvas/drawImage-with-negative-source-destination.js:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139911 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Please reinstate --pixel
https://bugs.webkit.org/show_bug.cgi?id=101995

Patch by Zan Dobersek <zdobersek@igalia.com> on 2013-01-16
Reviewed by Dirk Pranke.

Add the '--pixel' and '--no-pixel' options for NRWT as aliases for
the '--pixel-tests' (or '-p') and '--no-pixel-tests' options respectively.
Some developers are still used to these options that were available in the ORWT.

* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139912 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Delete an extraneous print statement.
https://bugs.webkit.org/show_bug.cgi?id=106562

Delete the extraneous print statement introduced in r139841.

* Scripts/webkitpy/layout_tests/views/printing.py:
(Printer.print_found):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139913 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Simplify validation and data copying in WebGLBuffer
https://bugs.webkit.org/show_bug.cgi?id=106975

Reviewed by Dean Jackson.

No new tests; covered by existing tests. Ran WebGL layout tests and conformance tests.

* html/canvas/WebGLBuffer.cpp:
(WebCore::WebGLBuffer::associateBufferDataImpl):
    Take (void*, int) pair instead of ArrayBuffer and offset. Simplifies code significantly.
(WebCore::WebGLBuffer::associateBufferData):
    Pass down base pointers and sizes rather than ArrayBuffer and optional offset.
(WebCore::WebGLBuffer::associateBufferSubDataImpl):
    Take (void*, int) pair instead of ArrayBuffer and offset. Simplifies code significantly.
(WebCore::WebGLBuffer::associateBufferSubData):
    Pass down base pointers and sizes rather than ArrayBuffer and optional offset.
* html/canvas/WebGLBuffer.h:
(WebGLBuffer):
    Change signatures of associateBufferDataImpl and associateBufferSubDataImpl.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139914 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Chromium] Unreviewed gardening.

Adding results for platform/chromium/compositing/rounded-corners.html.

* platform/chromium-mac/platform/chromium/compositing/rounded-corners-expected.png: Added.
* platform/chromium-win/platform/chromium/compositing/rounded-corners-expected.png: Added.
* platform/chromium/TestExpectations:
* platform/chromium/platform/chromium/compositing/rounded-corners-expected.txt: Renamed from LayoutTests/platform/chromium-linux/platform/chromium/compositing/rounded-corners-expected.txt.

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