2012-11-09  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Deleting all files relating to the deprecated PeerConnection00
        https://bugs.webkit.org/show_bug.cgi?id=101730

        Reviewed by Adam Barth.

        Since RTCPeerConenction has superseeded PeerConnection00 this patch removes all
        files relating to the old API.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        * chromium/public/WebICECandidateDescriptor.h: Removed.
        * chromium/public/WebICEOptions.h: Removed.
        * chromium/public/WebMediaHints.h: Removed.
        * chromium/public/WebMediaStreamCenter.h:
        (WebKit):
        (WebMediaStreamCenter):
        * chromium/public/WebPeerConnection00Handler.h: Removed.
        * chromium/public/WebPeerConnection00HandlerClient.h: Removed.
        * chromium/public/WebPeerConnectionHandler.h: Removed.
        * chromium/public/WebPeerConnectionHandlerClient.h: Removed.
        * chromium/public/WebSessionDescriptionDescriptor.h: Removed.

2012-11-08  Sami Kyostila  <skyostil@chromium.org>

        Introduce WebScreenInfo.deviceScaleFactor
        https://bugs.webkit.org/show_bug.cgi?id=101613

        Reviewed by Adam Barth.

        Introduce the WebScreenInfo.deviceScaleFactor property, which specifies the
        ratio between physical and logical pixels. This is the first step in replacing
        horizontalDPI/verticalDPI in favor of the deviceScaleFactor.

        For now, this value is only initialized on Mac, because the other ports that
        use it initialize the value in Chromium, whereas Windows and X11 default to a
        factor of 1. The value on Mac is truncated to an integer to match the
        expectation in Chromium's RenderWidget.

        * chromium/public/WebScreenInfo.h:
        (WebScreenInfo):
        (WebKit::WebScreenInfo::WebScreenInfo):

2012-11-08  Keishi Hattori  <keishi@webkit.org>

        Add properties for week/month picker in DateTimeChooserImpl::writeDocument
        https://bugs.webkit.org/show_bug.cgi?id=101552

        Reviewed by Kent Tamura.

        * chromium/public/WebLocalizedString.h: Add WeekNumberLabel.

2012-11-08  Robert Kroeger  <rjkroege@chromium.org>

        [chromium] correct coding oversight for clang
        https://bugs.webkit.org/show_bug.cgi?id=101513

        Reviewed by Kent Tamura.

        https://bugs.webkit.org/show_bug.cgi?id=100675 contains an
        incorrect declaration that precludes compiling embedder code
        with clang: patch changes class to struct appropriately.

        * chromium/public/WebGestureCurveTarget.h:
        (WebKit):

2012-11-07  Yusuf Ozuysal  <yusufo@google.com>

        Add API for touchEventHandlerRegion to WebLayer
        https://bugs.webkit.org/show_bug.cgi?id=101406

        Reviewed by James Robinson.

        These will be used to keep track of JavaScript touch event handlers from the compositor thread.

        * chromium/public/WebLayer.h:
        (WebKit::WebLayer::setTouchEventHandlerRegion):
        (WebKit::WebLayer::touchEventHandlerRegion):
        (WebLayer):

2012-10-23  Stephen White  <senorblanco@chromium.org>

        [skia] Implement reference (url) filters on composited layers.
        https://bugs.webkit.org/show_bug.cgi?id=100142

        Reviewed by James Robinson.

        * chromium/public/WebLayer.h:
        Expose Layer::setFilter() to the WebKit API.

2012-11-05  James Robinson  <jamesr@chromium.org>

        [chromium] Use const SkBitmap& parameter for WebLayerTreeView::setFontAtlas
        https://bugs.webkit.org/show_bug.cgi?id=101016

        Reviewed by Adrienne Walker.

        Passing SkBitmap by value requires including SkBitmap.h, which is tricky for some clients to do since it
        requires having the rest of skia's headers on the include path and setting up the correct config to set
        preprocessor defines.  Also shuffles the parameter order around to make rolling easier since you can't override
        just by const ref-ness.

        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::setFontAtlas):

2012-11-05  Alok Priyadarshi  <alokp@chromium.org>

        [chromium] Pass canPaintLCDText to WebContentLayerClient::paintContents
        https://bugs.webkit.org/show_bug.cgi?id=99083

        Reviewed by Stephen White.

        Use LCD text setting passed to WebContentLayerClient::paintContents instead of turning it off for all composited layers.

        * chromium/public/WebContentLayerClient.h:
        (WebContentLayerClient):
        (WebKit::WebContentLayerClient::paintContents):

2012-11-01  Robert Kroeger  <rjkroege@chromium.org>

        [chromium] Provide WebKit API interface for platform gesture curves
        https://bugs.webkit.org/show_bug.cgi?id=100675

        Reviewed by James Robinson.

        Define interfaces to permit the Chromium embedder to provide its own
        implementation of a gesture animation curve and add an entry point
        to Platform.h that permits WebKit to obtain an instance of an embedder-
        provided gesture curve.

        No tests needed in this CL: only interfaces are being added.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createFlingAnimationCurve):
        * chromium/public/WebGestureCurve.h: Added.
        (WebKit):
        (WebGestureCurve):
        (WebKit::WebGestureCurve::~WebGestureCurve):
        * chromium/public/WebGestureCurveTarget.h: Added.
        (WebKit):
        (WebGestureCurveTarget):
        (WebKit::WebGestureCurveTarget::~WebGestureCurveTarget):
        * chromium/src/WebActiveGestureAnimation.cpp: Added.
        (WebKit):
        (WebKit::WebActiveGestureAnimation::createAtAnimationStart):
        (WebKit::WebActiveGestureAnimation::createWithTimeOffset):
        (WebKit::WebActiveGestureAnimation::~WebActiveGestureAnimation):
        (WebKit::WebActiveGestureAnimation::WebActiveGestureAnimation):
        (WebKit::WebActiveGestureAnimation::animate):
        * chromium/src/WebActiveGestureAnimation.h: Added.
        (WebKit):
        (WebActiveGestureAnimation):

2012-11-01  Dana Jansens  <danakj@chromium.org>

        [chromium] Allow implicit conversion between gfx::Vector2d and WebSize
        https://bugs.webkit.org/show_bug.cgi?id=100553

        Reviewed by James Robinson.

        The gfx::Vector2d class is used in chromium for defining distances. The
        IntSize class is used equivalently inside WebCore. This lets us convert
        between vectors and sizes along the API boundary.

        * chromium/public/WebSize.h:
        (WebKit::WebSize::WebSize):
        (WebSize):
        (WebKit::WebSize::operator=):
        (WebKit::WebSize::operator gfx::Vector2d):

2012-11-01  W. James MacLean  <wjmaclean@chromium.org>

        [chromium] Make WebLayerTreeView::adjustEventPointForPinchZoom pure virtual.
        https://bugs.webkit.org/show_bug.cgi?id=100875

        Reviewed by James Robinson.

        This CL removes the default implementation for adjustEventPointForPinchZoom(), which
        was necessary for landing the original patch in https://bugs.webkit.org/show_bug.cgi?id=100542.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-10-31  Stephen White  <senorblanco@chromium.org>

        Unreviewed, rolling out r133122.
        http://trac.webkit.org/changeset/133122
        https://bugs.webkit.org/show_bug.cgi?id=99083

        Broke Chromium Win, Android, ChromeOS builds

        * chromium/public/WebContentLayerClient.h:
        (WebContentLayerClient):

2012-10-31  Alok Priyadarshi  <alokp@chromium.org>

        [chromium] Pass canPaintLCDText to WebContentLayerClient::paintContents
        https://bugs.webkit.org/show_bug.cgi?id=99083

        Reviewed by James Robinson.

        Use LCD text setting passed to WebContentLayerClient::paintContents instead of turning it off for all composited layers.

        * chromium/public/WebContentLayerClient.h:
        (WebContentLayerClient):
        (WebKit::WebContentLayerClient::paintContents):

2012-10-30  W. James MacLean  <wjmaclean@chromium.org>

        [chromium] Transform mouse/gesture event coordinates to account for pinch-zoom in compositor.
        https://bugs.webkit.org/show_bug.cgi?id=100542

        Reviewed by James Robinson.

        Pinch-zoom in the compositor applies a transformation that WebCore does not know about.
        We need to adjust mouse and gesture event coordinates to account for this in order that
        hit testing work properly for these types while zoomed.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):
        (WebKit::WebLayerTreeView::adjustPointForZoom): Adjusts point coordinated to account for zoom in compositor.

2012-10-30  James Robinson  <jamesr@chromium.org>

        [chromium] Forward declare WebGraphicsContext3D in WebLayerTreeViewClient.h
        https://bugs.webkit.org/show_bug.cgi?id=100717

        Reviewed by Adrienne Walker.

        Currently it isn't possible to include WebLayerTreeViewClient by itself.

        * chromium/public/WebLayerTreeViewClient.h:
        (WebKit):

2012-10-26  Christopher Cameron  <ccameron@chromium.org>

        [chromium] Add additional memory management fields to WebGraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=99703

        Reviewed by James Robinson.

        Add new fields to WebGraphicsMemoryAllocation to allow for specifying
        limits for when visible and not, and to allow for specifying priority
        cutoffs (e.g, to allow specifying that backgrounded tabs should
        retain only their visible textures).

        Add sendManagedMemoryStatsCHROMIUM to WebGraphicsContext3D, and
        add WebGraphicsManagedMemoryStats structure, to allow the GPU memory
        manager to make more informed choices.

        * chromium/public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::sendManagedMemoryStatsCHROMIUM):
        * chromium/public/WebGraphicsMemoryAllocation.h:
        (WebGraphicsMemoryAllocation):
        (WebKit::WebGraphicsMemoryAllocation::WebGraphicsMemoryAllocation):
        (WebKit):
        (WebGraphicsManagedMemoryStats):
        (WebKit::WebGraphicsManagedMemoryStats::WebGraphicsManagedMemoryStats):

2012-10-26  Dana Jansens  <danakj@chromium.org>

        [chromium] Add implicit conversions between WebFloatPoint and gfx::PointF
        https://bugs.webkit.org/show_bug.cgi?id=100435

        Reviewed by James Robinson.

        This is similar to other Web geometry types, but the WebFloatPoint is
        missing it.

        * chromium/public/WebFloatPoint.h:
        (WebFloatPoint):
        (WebKit::WebFloatPoint::WebFloatPoint):
        (WebKit::WebFloatPoint::operator=):
        (WebKit::WebFloatPoint::operator gfx::PointF):

2012-10-25  Jonathan Backer  <backer@chromium.org>

        CHROMIUM: Add a method to WebLayerTreeView API
        https://bugs.webkit.org/show_bug.cgi?id=100291

        Reviewed by James Robinson.

        Used to support browser compositor commit locks (crbug.com/136366).

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):
        (WebKit::WebLayerTreeView::setDeferCommits):

2012-10-24  John Sheu  <sheu@google.com>

        [chromium] Add textureWidth() and textureHeight() to WebVideoFrame
        https://bugs.webkit.org/show_bug.cgi?id=100042

        Reviewed by James Robinson.

        It might be the case that the visible portion of a video frame isn't the
        entire texture size, e.g. for cropping.  We'll need accessors in
        WebVideoFrame to be able to query both the underlying texture dimensions
        and the subrect which is supposed to be visible.

        This is presently a no-op change.  Once Chromium changes are in, I will
        remove the superseded parts of the WebVideoFrame interface.

        * chromium/public/WebVideoFrame.h:
        (WebKit::WebVideoFrame::visibleRect);
        (WebKit::WebVideoFrame::textureSize);

2012-10-24  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Remove screen-related functions from PlatformSupport
        https://bugs.webkit.org/show_bug.cgi?id=97474

        Reviewed by Adam Barth.

        Screen-related functions like screenHorizontalDPI that
        used to be on PlatformSupport are now accessed through a new
        PlatformPageClient attached to Widget in WebCore-land, which is
        implemented by ChromeClientImpl in WebKit-land, which proxies
        calls to WebWidgetClient, which is actually implemented in
        Chromium-land.

        * Platform.gypi:
        * chromium/public/WebScreenInfo.h: Added.
        (WebKit):
        (WebScreenInfo):
        (WebKit::WebScreenInfo::WebScreenInfo):

2012-10-23  David Reveman  <reveman@chromium.org>

        [Chromium] Add CHROMIUM_texture_from_image extension support.
        https://bugs.webkit.org/show_bug.cgi?id=99894

        Reviewed by James Robinson.

        Add bindTexImage2DCHROMIUM and releaseTexImage2DCHROMIUM prototypes to
        WebGraphicsContext3D.h.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::bindTexImage2DCHROMIUM):
        (WebKit::WebGraphicsContext3D::releaseTexImage2DCHROMIUM):

2012-10-23  Dana Jansens  <danakj@chromium.org>

        [chromium] Expose setAutomaticallyComputeRasterScale on the WebLayer API
        https://bugs.webkit.org/show_bug.cgi?id=100013

        Reviewed by James Robinson.

        This allows web content to opt-in to having their contentsScale
        determined from their CSS transforms, without having this behaviour
        unconditionally enabled globally.

        Supports http://crbug.com/149943

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-10-22  Keishi Hattori  <keishi@webkit.org>

        Remove monthFormatInLDML
        https://bugs.webkit.org/show_bug.cgi?id=99971

        Reviewed by Kent Tamura.

        * chromium/public/WebLocalizedString.h:

2012-10-22  Keishi Hattori  <keishi@webkit.org>

        [Chromium] Rename WeekFormatInLDML to WeekFormatTemplate
        https://bugs.webkit.org/show_bug.cgi?id=99972

        Reviewed by Kent Tamura.

        Renaming because Chromium won't be returning a week format in LDML.

        * chromium/public/WebLocalizedString.h:

2012-10-19  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r131944.
        http://trac.webkit.org/changeset/131944
        https://bugs.webkit.org/show_bug.cgi?id=99891

        On second thoughts, not such a great idea (Requested by jamesr
        on #webkit).

        * chromium/public/WebCompositorSupport.h:
        (WebCompositorSupport):

2012-10-19  Alexandre Elias  <aelias@chromium.org>

        [chromium] API to pass impl thread via WebLayerTreeView
        https://bugs.webkit.org/show_bug.cgi?id=99863

        Reviewed by James Robinson.

        This adds an API to pass the compositor impl thread via WebView and
        WebLayerTreeView. This is currently a no-op change, but in the future
        this codepath will supercede WebCompositor. The goal is to avoid statics
        in compositor initialization.

        * chromium/public/WebCompositorSupport.h:
        (WebKit::WebCompositorSupport::createLayerTreeView):
        (WebCompositorSupport):
        * chromium/public/WebLayerTreeView.h:
        (WebKit):
        (WebLayerTreeView):

2012-10-18  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Do some cleanup in the chromium WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=99713

        Reviewed by Adam Barth.

        Removing the deprecated version of WebMediaStreamDescriptor::initialize and making
        the two constructSDP functions in WebMediaStreamCenter optional to override.
        This is part of the preparation to remove PeerConnection00.

        * chromium/public/WebMediaStreamCenter.h:
        (WebKit::WebMediaStreamCenter::constructSDP):
        * chromium/public/WebMediaStreamDescriptor.h:
        (WebMediaStreamDescriptor):

2012-10-17  Adrienne Walker  <enne@chromium.org>

        [chromium] Make WebContentLayer include what it uses
        https://bugs.webkit.org/show_bug.cgi?id=99664

        Reviewed by James Robinson.

        * chromium/public/WebContentLayer.h:

2012-10-17  Harald Alvestrand  <hta@google.com>

        Implement the Selector argument to RTCPeerConnection.getStats
        https://bugs.webkit.org/show_bug.cgi?id=99460

        Reviewed by Adam Barth.

        * chromium/public/WebRTCStatsRequest.h:
        (WebKit):
        (WebRTCStatsRequest):

2012-10-16  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add the chromium API for RTCDataChannel
        https://bugs.webkit.org/show_bug.cgi?id=99435

        Reviewed by Adam Barth.

        Adding WebRTCDataChannel.

        * Platform.gypi:
        * chromium/public/WebRTCDataChannel.h: Added.
        (WebCore):
        (WebKit):
        (WebRTCDataChannel):
        (ExtraData):
        (WebKit::WebRTCDataChannel::ExtraData::~ExtraData):
        (WebKit::WebRTCDataChannel::WebRTCDataChannel):
        (WebKit::WebRTCDataChannel::~WebRTCDataChannel):
        (WebKit::WebRTCDataChannel::operator=):
        (WebKit::WebRTCDataChannel::isNull):
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        (WebKit::WebRTCPeerConnectionHandler::openDataChannel):
        (WebKit::WebRTCPeerConnectionHandler::sendStringData):
        (WebKit::WebRTCPeerConnectionHandler::sendRawData):
        (WebKit::WebRTCPeerConnectionHandler::closeDataChannel):

2012-10-13  Chris Rogers  <crogers@google.com>

        WebAudioBus needs support for resizing bus to a smaller size
        https://bugs.webkit.org/show_bug.cgi?id=99215

        Reviewed by Dimitri Glazkov.

        Upgrade AudioBus and WebAudioBus to support resizing to a smaller size, once it has been created.
        This is useful, for example, when decoding VBR formats and the actual length can't be exactly determined
        until the entire file is decoded.

        * chromium/public/WebAudioBus.h:
        (WebAudioBus):

2012-10-10  Scott Violet  <sky@google.com>

        Expose background color in WebLayer https://bugs.webkit.org/show_bug.cgi?id=98707

        Reviewed by James Robinson.

        * chromium/public/WebLayer.h:
        (WebLayer): Adds backgroundColor.

2012-10-10  Antoine Labour  <piman@chromium.org>

        [chromium] Add entrypoints to set frame contents and recycle resources in WebDelegatedRendererLayer
        https://bugs.webkit.org/show_bug.cgi?id=98833

        Reviewed by James Robinson.

        This is needed for https://codereview.chromium.org/10915298

        * chromium/public/WebDelegatedRendererLayer.h:
        (cc):
        (WebKit):
        (WebDelegatedRendererLayer):

2012-10-10  Antoine Labour  <piman@chromium.org>

        [chromium] Add empty WebCompositorFrame/WebCompositorFrameAck
        https://bugs.webkit.org/show_bug.cgi?id=98841

        Reviewed by James Robinson.

        These were used in the WebKit API but never defined.

        * chromium/public/WebCompositorFrame.h: Added.
        (WebKit):
        * chromium/public/WebCompositorFrameAck.h: Added.
        (WebKit):

2012-10-10  John Bauman  <jbauman@chromium.org>

        [chromium] Add attribute for disabling automatic flushes
        https://bugs.webkit.org/show_bug.cgi?id=98834

        Reviewed by Kenneth Russell.

        This attribute allows the compositor context to specify that it wants
        to handle flushing itself.

        * chromium/public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::Attributes::Attributes):
        (Attributes):

2012-10-09  Harald Alvestrand  <hta@google.com>

        Change PeerConnection getStats function to single value local / remote
        elements in RTCStatsReport.
        https://bugs.webkit.org/show_bug.cgi?id=98753

        Reviewed by Adam Barth.

        * chromium/public/WebRTCStatsResponse.h:
        (WebRTCStatsResponse):

2012-10-04  Harald Alvestrand  <hta@google.com>

        Change RTCPeerConnection GetStats to use Date timestamp format
        https://bugs.webkit.org/show_bug.cgi?id=98263

        Reviewed by Yury Semikhatsky.

        * chromium/public/WebRTCStatsResponse.h:
        (WebRTCStatsResponse):

2012-10-04  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r130377.
        http://trac.webkit.org/changeset/130377
        https://bugs.webkit.org/show_bug.cgi?id=98392

        Chromium Win compilation is broken (Requested by yurys on
        #webkit).

        * chromium/public/WebRTCStatsResponse.h:
        (WebRTCStatsResponse):

2012-10-04  Harald Alvestrand  <hta@google.com>

        Change RTCPeerConnection GetStats to use Date timestamp format
        https://bugs.webkit.org/show_bug.cgi?id=98263

        Reviewed by Adam Barth.

        * chromium/public/WebRTCStatsResponse.h:
        (WebRTCStatsResponse):

2012-10-03  Glenn Hartmann  <hartmanng@chromium.org>

        Adding total pixels painted and rasterized stats.
        https://bugs.webkit.org/show_bug.cgi?id=98269

        Reviewed by James Robinson.

        * chromium/public/WebRenderingStats.h:
        (WebRenderingStats):
        (WebKit::WebRenderingStats::WebRenderingStats):
        (WebKit::WebRenderingStats::enumerateFields):

2012-10-03  Jeff Timanus  <twiz@chromium.org>

        [chromium] Expose settings value to conditionally enable pinch-zoom scaling in the Chromium compositor.  The
        flag defaults to disabled, so this change should be a no-op for scaling/scrolling behaviour.
        https://bugs.webkit.org/show_bug.cgi?id=93292

        Reviewed by James Robinson.

        * chromium/public/WebCompositor.h:
        (WebCompositor):
        * chromium/public/WebCompositorSupport.h:
        (WebKit::WebCompositorSupport::setPageScalePinchZoomEnabled):

2012-10-03  Harald Alvestrand  <hta@google.com>

        Add data passing to the GetStats interface of RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=98003

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebRTCStatsRequest.h:
        (WebKit):
        (WebRTCStatsRequest):
        * chromium/public/WebRTCStatsResponse.h: Added.
        (WebCore):
        (WebKit):
        (WebRTCStatsResponse):
        (WebKit::WebRTCStatsResponse::WebRTCStatsResponse):
        (WebKit::WebRTCStatsResponse::~WebRTCStatsResponse):
        (WebKit::WebRTCStatsResponse::operator=):

2012-10-02  Terry Anderson  <tdanderson@chromium.org>

        [chromium] Add field to WebRenderingStats to track if we have impl-thread scrolled
        https://bugs.webkit.org/show_bug.cgi?id=97919

        Reviewed by James Robinson.

        Add two new members |numImplThreadScrolls| and |numMainThreadScrolls| to track
        the total number of times we have impl-thread scrolled and main-thread scrolled,
        respectively.

        * chromium/public/WebRenderingStats.h:
        (WebRenderingStats):
        (WebKit::WebRenderingStats::WebRenderingStats):
        (WebKit::WebRenderingStats::enumerateFields):

2012-09-28  Harald Tveit Alvestrand  <harald@alvestrand.no>

        Implement the GetStats interface on PeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95193

        Reviewed by Adam Barth.

        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        (WebKit::WebRTCPeerConnectionHandler::getStats):
        * chromium/public/WebRTCStatsRequest.h: added.
        (WebCore):
        (WebKit):
        (WebRTCStatsRequest):
        (WebKit::WebRTCStatsRequest::WebRTCStatsRequest):
        (WebKit::WebRTCStatsRequest::~WebRTCStatsRequest):
        (WebKit::WebRTCStatsRequest::operator=):

2012-09-28  Kentaro Hara  <haraken@chromium.org>

        Unreviewed, rolling out r129825.
        http://trac.webkit.org/changeset/129825
        https://bugs.webkit.org/show_bug.cgi?id=97474

        DOMWindow.resizeTo() is broken. Asked by Mark Pilgrim.

        * Platform.gypi:
        * chromium/public/WebScreenInfo.h: Removed.

2012-09-28  Yoshifumi Inoue  <yosin@chromium.org>

        [Forms] Add localized strings for multiple fields date/time input UI
        https://bugs.webkit.org/show_bug.cgi?id=97878

        Reviewed by Kent Tamura.

        This patch introduces following localized string identifier for
        month, time and week pickers:
            - OtherMonthLabel - appeared at the last entry in suggestion list.
            - OtherTimeLabel - ditto
            - OtherWeekLabel - ditto
            - ThisMonthButtonLabel - used in month picker
            - ThisWeekButtonLabel - used in week picker

        * chromium/public/WebLocalizedString.h: Added OtherMonthLabel, OtherTimeLabel, OtherWeekLabel, ThiMonthkButtonLabel, and ThisWeekButtonLabel.

2012-09-27  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Remove screen-related functions from PlatformSupport
        https://bugs.webkit.org/show_bug.cgi?id=97474

        Reviewed by Adam Barth.

        Screen-related functions like screenHorizontalDPI that
        used to be on PlatformSupport are now accessed through a new
        PlatformPageClient attached to Widget in WebCore-land, which is
        implemented by ChromeClientImpl in WebKit-land, which proxies
        calls to WebWidgetClient, which is actually implemented in
        Chromium-land.

        * Platform.gypi:
        * chromium/public/WebScreenInfo.h: Added.
        (WebKit):
        (WebScreenInfo):
        (WebKit::WebScreenInfo::WebScreenInfo):

2012-09-27  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Enhance MediaConstraints to make it easier to get the constraint data
        https://bugs.webkit.org/show_bug.cgi?id=97559

        Reviewed by Adam Barth.

        Refactored to mimic the new MediaConstraints api.

        * chromium/public/WebMediaConstraints.h:
        (WebCore):
        (WebKit::WebMediaConstraint::WebMediaConstraint):
        (WebMediaConstraint):
        (WebKit):
        (WebMediaConstraints):

2012-09-27  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Update getUserMedia to match the latest specification
        https://bugs.webkit.org/show_bug.cgi?id=97540

        Reviewed by Adam Barth.

        * chromium/public/WebMediaConstraints.h:
        (WebMediaConstraints):

2012-09-26  Yoshifumi Inoue  <yosin@chromium.org>

        [Forms] Adding localization texts for multiple fields date/time input UI
        https://bugs.webkit.org/show_bug.cgi?id=97633

        Reviewed by Kent Tamura.

        This patch adds localized string enum fields for getting localized
        strings used in multiple fields date/time input UI.

        * chromium/public/WebLocalizedString.h: Added PlaceholderForDayOfMonthField,
        PlaceholderForMonthField, PlaceholderForYearField, MonthFormatInLDML,
        and WeekFormatInLDML.

2012-09-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r129654.
        http://trac.webkit.org/changeset/129654
        https://bugs.webkit.org/show_bug.cgi?id=97702

        breaks chromium windows build (Requested by schenney on
        #webkit).

        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCStatsRequest.h: Removed.

2012-09-26  Harald Tveit Alvestrand  <harald@alvestrand.no>

        Implement the GetStats interface on PeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95193

        Reviewed by Adam Barth.

        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        (WebKit::WebRTCPeerConnectionHandler::getStats):
        * chromium/public/WebRTCStatsRequest.h: added.
        (WebCore):
        (WebKit):
        (WebRTCStatsRequest):
        (WebKit::WebRTCStatsRequest::WebRTCStatsRequest):
        (WebKit::WebRTCStatsRequest::~WebRTCStatsRequest):
        (WebKit::WebRTCStatsRequest::operator=):

2012-09-25  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r129517.
        http://trac.webkit.org/changeset/129517
        https://bugs.webkit.org/show_bug.cgi?id=97582

        Link errors in chromium (Requested by alecf on #webkit).

        * chromium/public/WebMediaConstraints.h:
        (WebMediaConstraints):

2012-09-25  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Update getUserMedia to match the latest specification
        https://bugs.webkit.org/show_bug.cgi?id=97540

        Reviewed by Adam Barth.

        * chromium/public/WebMediaConstraints.h:
        (WebMediaConstraints):

2012-09-24  Dana Jansens  <danakj@chromium.org>

        [chromium] Add setters to WebFilterOperation for IPC pickling
        https://bugs.webkit.org/show_bug.cgi?id=97147

        Reviewed by James Robinson.

        These methods allow us to restore a WebFilterOperation from a blob
        of opaque data. The pickling code needs to be able to create an
        empty object and then fill in the pieces, so these setters allow it
        to do so.

        Test: WebFilterOperationsTest.saveAndRestore

        * chromium/public/WebFilterOperation.h:
        (WebKit::WebFilterOperation::amount):
        (WebKit::WebFilterOperation::dropShadowOffset):
        (WebKit::WebFilterOperation::matrix):
        (WebKit::WebFilterOperation::zoomRect):
        (WebFilterOperation):
        (WebKit::WebFilterOperation::createEmptyFilter):
        (WebKit::WebFilterOperation::setType):
        (WebKit::WebFilterOperation::setAmount):
        (WebKit::WebFilterOperation::setDropShadowOffset):
        (WebKit::WebFilterOperation::setDropShadowColor):
        (WebKit::WebFilterOperation::setMatrix):
        (WebKit::WebFilterOperation::setZoomRect):
        * chromium/src/WebFilterOperation.cpp:

2012-09-24  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed, rolling out r122243.
        http://trac.webkit.org/changeset/129243
        https://bugs.webkit.org/show_bug.cgi?id=97441

        WebFilterOperationsTest.saveAndRestore added in the change is failing.

        * chromium/public/WebFilterOperation.h:
        (WebKit::WebFilterOperation::amount):
        (WebKit::WebFilterOperation::dropShadowOffset):
        (WebKit::WebFilterOperation::matrix):
        (WebKit::WebFilterOperation::zoomRect):
        (WebFilterOperation):

2012-09-21  Alexandre Elias  <aelias@chromium.org>

        [chromium] Forward-declare WebSize as a struct
        https://bugs.webkit.org/show_bug.cgi?id=97381

        Reviewed by James Robinson.

        The mismatched "class" forward-declaration for WebSize in this file
        will cause a Clang error when it's included in Chromium.

        * chromium/public/WebCompositorSoftwareOutputDevice.h:
        (WebKit):

2012-09-21  Brandon Jones  <bajones@google.com>

        Add support for OES_vertex_array_object in chromium
        https://bugs.webkit.org/show_bug.cgi?id=96578

        Reviewed by Kenneth Russell.

        Added code to allow calls to the OES_vertex_array_object extension to interface
        properly with the chromium WebGL implementation. 

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::createVertexArrayOES):
        (WebKit::WebGraphicsContext3D::deleteVertexArrayOES):
        (WebKit::WebGraphicsContext3D::isVertexArrayOES):
        (WebKit::WebGraphicsContext3D::bindVertexArrayOES):

2012-09-21  Dana Jansens  <danakj@chromium.org>

        [chromium] Add setters to WebFilterOperation for IPC pickling
        https://bugs.webkit.org/show_bug.cgi?id=97147

        Reviewed by James Robinson.

        These methods allow us to restore a WebFilterOperation from a blob
        of opaque data. The pickling code needs to be able to create an
        empty object and then fill in the pieces, so these setters allow it
        to do so.

        Test: WebFilterOperationsTest.saveAndRestore

        * chromium/public/WebFilterOperation.h:
        (WebKit::WebFilterOperation::amount):
        (WebKit::WebFilterOperation::dropShadowOffset):
        (WebKit::WebFilterOperation::matrix):
        (WebKit::WebFilterOperation::zoomRect):
        (WebFilterOperation):
        (WebKit::WebFilterOperation::createEmptyFilter):
        (WebKit::WebFilterOperation::setType):
        (WebKit::WebFilterOperation::setAmount):
        (WebKit::WebFilterOperation::setDropShadowOffset):
        (WebKit::WebFilterOperation::setDropShadowColor):
        (WebKit::WebFilterOperation::setMatrix):
        (WebKit::WebFilterOperation::setZoomRect):
        * chromium/src/WebFilterOperation.cpp:

2012-09-20  Keishi Hattori  <keishi@webkit.org>

        [Chromium ] Add new localized string, OtherDateLabel, to be used in input type=date datalist UI
        https://bugs.webkit.org/show_bug.cgi?id=97200

        Reviewed by Kent Tamura.

        Adding new localized string to be used in the SuggestionPicker for input type=date.

        * chromium/public/WebLocalizedString.h:

2012-09-18  Sailesh Agrawal  <sail@chromium.org>

        Chromium: Scrollbar with tickmarks doesn't respond to clicks
        https://bugs.webkit.org/show_bug.cgi?id=96049

        Reviewed by Beth Dakin.

        Added isAlphaLocked and setIsAlphaLocked.

        * chromium/public/WebScrollbar.h:
        (WebScrollbar):

2012-09-17  Brian Anderson  <brianderson@chromium.org>

        [chromium] Add rendering commit statistics
        https://bugs.webkit.org/show_bug.cgi?id=96938

        Reviewed by James Robinson.

        Adds total commit time and total commit count to WebRenderingStats.
        Allows us to caculate average commit time in performance tests.

        * chromium/public/WebRenderingStats.h:
        (WebRenderingStats):
        (WebKit::WebRenderingStats::WebRenderingStats):
        (WebKit::WebRenderingStats::enumerateFields):

2012-09-17  Antoine Labour  <piman@chromium.org>

        [chromium] Add onSendFrameToParentCompositorAck to WebCompositorOutputSurfaceClient
        https://bugs.webkit.org/show_bug.cgi?id=96850

        Reviewed by James Robinson.

        Hook for the WebCompositorOutputSurface::sendFrameToParent ack.
        Also changes WebCompositorFrame from a class to a struct.

        * chromium/public/WebCompositorOutputSurface.h:
        (WebKit):
        * chromium/public/WebCompositorOutputSurfaceClient.h:
        (WebKit):
        (WebCompositorOutputSurfaceClient):

2012-09-17  Alexandre Elias  <aelias@chromium.org>

        [chromium] WebCompositorOutputSurface software API
        https://bugs.webkit.org/show_bug.cgi?id=96851

        Reviewed by James Robinson.

        This adds a software-based output option to
        WebCompositorOutputSurface, for use with the new software compositor.
        If returns a "tear-off" which provides a WebImage object that can be
        written to or read.

        * Platform.gypi:
        * chromium/public/WebCompositorOutputSurface.h:
        (WebKit):
        (WebCompositorOutputSurface):
        (WebKit::WebCompositorOutputSurface::surfaceSoftware):
        * chromium/public/WebCompositorOutputSurfaceSoftware.h: Added.
        (WebKit):
        (WebCompositorOutputSurfaceSoftware):
        (WebKit::WebCompositorOutputSurfaceSoftware::~WebCompositorOutputSurfaceSoftware):

2012-09-14  Dana Jansens  <danakj@chromium.org>

        [chromium] Add the ubercomp WebDelegatedRendererLayer
        https://bugs.webkit.org/show_bug.cgi?id=94145

        Reviewed by Adrienne Walker.

        Expose a WebDelegatedRendererLayer to allow the browser compositor to
        embed such a layer in its tree. This layer will be connected to IPC
        machinery in the compositor that is yet TBD which will give a set of
        RenderPasses with DrawQuads to the impl copy of the layer.

        * Platform.gypi:
        * chromium/public/WebCompositorSupport.h:
        (WebKit):
        (WebKit::WebCompositorSupport::createDelegatedRendererLayer):
        (WebCompositorSupport):
        * chromium/public/WebDelegatedRendererLayer.h: Added.
        (WebKit):
        (WebDelegatedRendererLayer):
        (WebKit::WebDelegatedRendererLayer::~WebDelegatedRendererLayer):

2012-09-11  Zach Kuznia  <zork@chromium.org>

        Fix FilterTypeZoom to properly call canvas->restore()
        https://bugs.webkit.org/show_bug.cgi?id=96082

        Reviewed by Adrienne Walker.

        Fix zoom filter to properly indicate that it affects pixels.

        * chromium/src/WebFilterOperations.cpp:
        (WebKit::WebFilterOperations::hasFilterThatMovesPixels):
        (WebKit::WebFilterOperations::hasFilterThatAffectsOpacity):

2012-09-11  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: add RTCPeerConnection::onnegotiationneeded
        https://bugs.webkit.org/show_bug.cgi?id=96097

        Reviewed by Adam Barth.

        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
        (WebRTCPeerConnectionHandlerClient):

2012-09-10  Adrienne Walker  <enne@google.com>

        [chromium] Fix deadlock between WebMediaPlayerClientImpl dtor and PutCurrentFrame
        https://bugs.webkit.org/show_bug.cgi?id=96010

        Reviewed by James Robinson.

        Add some additional clarifying comments.

        * chromium/public/WebVideoFrameProvider.h:
        (Client):
        (WebVideoFrameProvider):

2012-09-10  Tommy Widenflycht  <tommyw@google.com>

        [chromium] MediaStream API: Remove the Descriptor postfix
        https://bugs.webkit.org/show_bug.cgi?id=96268

        Reviewed by Adam Barth.

        After consideration I realized that there is no need whatsoever in using the Descriptor prefix
        in the WekKit embedder API. Removed from WebRTCSessionDescription and WebRTCICECandidate to start with.

        (WebCore):
        (WebKit):
        (WebRTCICECandidate):
        (WebKit::WebRTCICECandidate::WebRTCICECandidate):
        (WebKit::WebRTCICECandidate::~WebRTCICECandidate):
        (WebKit::WebRTCICECandidate::operator=):
        (WebKit::WebRTCICECandidate::isNull):
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
        (WebKit):
        (WebRTCPeerConnectionHandlerClient):
        * chromium/public/WebRTCSessionDescription.h: Renamed from Source/Platform/chromium/public/WebRTCSessionDescriptionDescriptor.h.
        (WebCore):
        (WebKit):
        (WebRTCSessionDescription):
        (WebKit::WebRTCSessionDescription::WebRTCSessionDescription):
        (WebKit::WebRTCSessionDescription::~WebRTCSessionDescription):
        (WebKit::WebRTCSessionDescription::operator=):
        (WebKit::WebRTCSessionDescription::isNull):
        * chromium/public/WebRTCSessionDescriptionRequest.h:
        (WebKit):
        (WebRTCSessionDescriptionRequest):

2012-09-09  James Robinson  <jamesr@chromium.org>

        [chromium] Export WebFilterOperation(FilterType, SkScalar[20]) constructor
        https://bugs.webkit.org/show_bug.cgi?id=96215

        Reviewed by Adrienne Walker.

        Unlike the other WebFilterOperation constructors this one is defined out-of-line and so must be exported to be
        usable outside of WebKit.dll

        * chromium/public/WebFilterOperation.h:
        (WebFilterOperation):

2012-09-07  James Robinson  <jamesr@chromium.org>

        [chromium] Remove unused WebScrollbarThemePainter::isNull
        https://bugs.webkit.org/show_bug.cgi?id=96169

        Reviewed by Adrienne Walker.

        This doesn't appear to be used anywhere and triggers MSVS C4800 in any chromium file that #includes this header.

        * chromium/public/WebScrollbarThemePainter.h:

2012-09-07  James Robinson  <jamesr@chromium.org>

        [chromium] Implement WebCompositorInputHandlerImpl on top of exposed API instead of CC internals
        https://bugs.webkit.org/show_bug.cgi?id=96151

        Reviewed by Adrienne Walker.

        This adds public input handling interfaces for the compositor.

        * chromium/public/WebInputHandler.h:
        (WebKit):
        (WebInputHandler):
        (WebKit::WebInputHandler::~WebInputHandler):
        * chromium/public/WebInputHandlerClient.h:
        (WebKit):
        (WebInputHandlerClient):
        (WebKit::WebInputHandlerClient::~WebInputHandlerClient):
        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):
        * chromium/public/WebLayerTreeViewClient.h:
        (WebKit):
        (WebKit::WebLayerTreeViewClient::createInputHandler):
        (WebLayerTreeViewClient):

2012-09-07  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: add RTCPeerConnection::createAnswer
        https://bugs.webkit.org/show_bug.cgi?id=96092

        Reviewed by Adam Barth.

        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebRTCPeerConnectionHandler):

2012-09-07  Ian Vollick  <vollick@chromium.org>

        [chromium] We should accelerate all transformations, except when we must blend matrices that cannot be decomposed.
        https://bugs.webkit.org/show_bug.cgi?id=95855

        Reviewed by James Robinson.

        WebTransformOperations are now able to report if they can successfully blend.
        WebTransformationMatrix::blend now returns a bool if blending would fail.

        * chromium/public/WebTransformOperations.h:
        (WebTransformOperations):
        * chromium/public/WebTransformationMatrix.h:
        (WebTransformationMatrix):

2012-09-07  Nat Duca  <nduca@chromium.org>
        [chromium] Allow enumeration of WebRenderingStats structure
        https://bugs.webkit.org/show_bug.cgi?id=94565

        Reviewed by James Robinson.

        * chromium/public/WebRenderingStats.h:
        (WebRenderingStats):
        (Enumerator):
        (WebKit::WebRenderingStats::Enumerator::~Enumerator):
        (WebKit::WebRenderingStats::enumerateFields):

2012-09-07  Yoshifumi Inoue  <yosin@chromium.org>

        We should have a localized string of empty for date time field
        https://bugs.webkit.org/show_bug.cgi?id=96081

        Reviewed by Kent Tamura.

        This patch adds a localized string enum field for empty field value
        description text for accessibility support in multiple fields date
        time related input types for Chromium ports.

        * chromium/public/WebLocalizedString.h: Added AXDateTimeFieldEmptyValueText
        enum field.

2012-09-06  Hironori Bono  <hbono@chromium.org>

        A build fix for Chromium Windows
        https://bugs.webkit.org/show_bug.cgi?id=96062

        Reviewed by James Robinson.

        This change fixes a build break on Chromium Windows (debug) caused by r127796
        <http://trac.webkit.org/changeset/127796>. It removes a redundant WEBKIT_EXPORT.

        * chromium/public/WebTransformationMatrix.h:
        (WebTransformationMatrix):

2012-09-06  Yoshifumi Inoue  <yosin@chromium.org>

        We should have localized strings of date time fields for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=96050

        Reviewed by Kent Tamura.

        This patch adds localized string enum fields for accessibility support
        in multiple fields date time related input types for Chromium ports.

        * chromium/public/WebLocalizedString.h: Adds AXAMPMFieldText, AXDayOfMonthField,
        AXHourFieldText, AXMillisecondFieldText, AXMinuteFieldText, AXMonthField,
        AXSecondFieldText, AXWeekOfYearFieldText, and AXYearFieldText.

2012-09-06  James Robinson  <jamesr@chromium.org>

        [chromium] Export public functions on WebTransformationMatrix so they can be used outside of WebKit.dll
        https://bugs.webkit.org/show_bug.cgi?id=96025

        Reviewed by Adrienne Walker.

        * chromium/public/WebTransformationMatrix.h:
        (WebTransformationMatrix):

2012-09-06  James Robinson  <jamesr@chromium.org>

        [chromium] Use WebCompositorSupport functions instead of WebCompositor statics
        https://bugs.webkit.org/show_bug.cgi?id=96007

        Reviewed by Adrienne Walker.

        Updates comment to reference WebCompositorSupport instead of WebCompositor.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-09-06  Jeff Timanus  <twiz@chromium.org>

        [Chromium] Remove contentsScale and related logic from GraphicsLayerChromium.
        https://bugs.webkit.org/show_bug.cgi?id=95094

        Reviewed by Adrienne Walker.

        In the short term, the page-scale logic is to be unified in the CCLayerTreeHost class.  This is a first pass to
        try to remove the page-scale logic from GraphicsLayerChromium.  This change should be a no-op in terms of
        contentsScale behaviour.

        * chromium/public/WebContentLayer.h:
        (WebContentLayer):
            Export setBoundsContainPageScale() family of routines.

2012-09-06  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add the local and remote description functionality to RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95839

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCVoidRequest.h: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.
        (WebCore):
        (WebKit):
        (WebRTCVoidRequest):
        (ExtraData):
        (WebKit::WebRTCVoidRequest::ExtraData::~ExtraData):
        (WebKit::WebRTCVoidRequest::WebRTCVoidRequest):
        (WebKit::WebRTCVoidRequest::~WebRTCVoidRequest):
        (WebKit::WebRTCVoidRequest::operator=):
        (WebKit::WebRTCVoidRequest::isNull):

2012-09-05  Kenichi Ishibashi  <bashi@chromium.org>

        Unreviewed, rolling out r127612, r127660, and r127664.
        http://trac.webkit.org/changeset/127612
        http://trac.webkit.org/changeset/127660
        http://trac.webkit.org/changeset/127664
        https://bugs.webkit.org/show_bug.cgi?id=95920

        * Platform.gypi:
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCVoidRequest.h: Removed.

2012-09-05  James Robinson  <jamesr@chromium.org>

        [chromium] Move static WebCompositor functions to WebCompositorSupport
        https://bugs.webkit.org/show_bug.cgi?id=95785

        Reviewed by Darin Fisher.

        The statics on WebCompositor need to be moved to WebCompositorSupport so the embedder can inject an
        implementation for these via PlatformSupport. This adds the interface for the statics to WebCompositorSupport.
        After an implementation of these lands on the chromium side, I'll switch all callers over to use these and
        remove the WebCompositor interface from the API.

        * chromium/public/WebCompositorSupport.h:
        (WebCompositorSupport):
        (WebKit::WebCompositorSupport::initialize):
        (WebKit::WebCompositorSupport::threadingEnabled):
        (WebKit::WebCompositorSupport::shutdown):
        (WebKit::WebCompositorSupport::setPerTilePaintingEnabled):
        (WebKit::WebCompositorSupport::setPartialSwapEnabled):
        (WebKit::WebCompositorSupport::setAcceleratedAnimationEnabled):

2012-09-05  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Remove getRenderStyleForStrike from PlatformSupport
        https://bugs.webkit.org/show_bug.cgi?id=95363

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/linux/WebFontInfo.h: Added.
        (WebKit):
        (WebFontInfo):
        * chromium/public/linux/WebFontRenderStyle.h: Added.
        (WebKit):

2012-09-05  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add the local and remote description functionality to RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95839

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCVoidRequest.h: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.
        (WebCore):
        (WebKit):
        (WebRTCVoidRequest):
        (ExtraData):
        (WebKit::WebRTCVoidRequest::ExtraData::~ExtraData):
        (WebKit::WebRTCVoidRequest::WebRTCVoidRequest):
        (WebKit::WebRTCVoidRequest::~WebRTCVoidRequest):
        (WebKit::WebRTCVoidRequest::operator=):
        (WebKit::WebRTCVoidRequest::isNull):

2012-09-05  Sami Kyostila  <skyostil@chromium.org>

        [chromium] Wire up scrollable sublayers in ScrollingCoordinatorChromium
        https://bugs.webkit.org/show_bug.cgi?id=95679

        Reviewed by James Robinson.

        Introduce WebLayerScrollClient for getting notified about scroll events targeting a WebLayer.

        * Platform.gypi:
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        * chromium/public/WebLayerScrollClient.h:

2012-09-04  Kenichi Ishibashi  <bashi@chromium.org>

        [Chromium] Attempt to fix build failure on Win

        Remove chromium/public/WebOfferAnswerRequest.h from Platform.gypi,
        which was added in r127501, but doesn't exist. Unreviewed.

        * Platform.gypi:

2012-09-04  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add the async createOffer functionality to RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95734

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCSessionDescriptionDescriptor.h: Added.
        (WebCore):
        (WebKit):
        (WebRTCSessionDescriptionDescriptor):
        (WebKit::WebRTCSessionDescriptionDescriptor::WebRTCSessionDescriptionDescriptor):
        (WebKit::WebRTCSessionDescriptionDescriptor::~WebRTCSessionDescriptionDescriptor):
        (WebKit::WebRTCSessionDescriptionDescriptor::operator=):
        (WebKit::WebRTCSessionDescriptionDescriptor::isNull):
        * chromium/public/WebRTCSessionDescriptionRequest.h: Added.
        (WebCore):
        (WebKit):
        (WebRTCSessionDescriptionRequest):
        (ExtraData):
        (WebKit::WebRTCSessionDescriptionRequest::ExtraData::~ExtraData):
        (WebKit::WebRTCSessionDescriptionRequest::WebRTCSessionDescriptionRequest):
        (WebKit::WebRTCSessionDescriptionRequest::~WebRTCSessionDescriptionRequest):
        (WebKit::WebRTCSessionDescriptionRequest::operator=):
        (WebKit::WebRTCSessionDescriptionRequest::isNull):

2012-09-04  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Change the MediaStreamTrackList track added/removed signaling
        https://bugs.webkit.org/show_bug.cgi?id=95721

        Reviewed by Adam Barth.

        Adding the signaling to the WebKit interface.

        * chromium/public/WebMediaStreamCenter.h:
        (WebKit::WebMediaStreamCenter::didAddMediaStreamTrack):
        (WebKit::WebMediaStreamCenter::didRemoveMediaStreamTrack):

2012-09-03  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add Ice-related functionality to RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95565

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebRTCICECandidateDescriptor.h: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h.
        (WebCore):
        (WebKit):
        (WebRTCICECandidateDescriptor):
        (WebKit::WebRTCICECandidateDescriptor::WebRTCICECandidateDescriptor):
        (WebKit::WebRTCICECandidateDescriptor::~WebRTCICECandidateDescriptor):
        (WebKit::WebRTCICECandidateDescriptor::operator=):
        (WebKit::WebRTCICECandidateDescriptor::isNull):
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
        (WebKit):
        (WebRTCPeerConnectionHandlerClient):

2012-09-01  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add MediaStream management to RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=95543

        Reviewed by Adam Barth.

        * chromium/public/WebMediaStreamCenter.h:
        (WebMediaStreamCenter):
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
        (WebKit):
        (WebRTCPeerConnectionHandlerClient):

2012-08-30  James Robinson  <jamesr@chromium.org>

        [chromium] Revert WebCompositorSupport to raw ptrs, make dtor protected
        https://bugs.webkit.org/show_bug.cgi?id=95520

        Reviewed by Darin Fisher.

        WebPassOwnPtr<T> isn't quite usable from the chromium side - it needs some more work and isn't worth blocking
        WebCompositorSupport for. Also, the d'tor for WebCompositorSupport needs to be protected, not private, so it can
        be implemented.

        * Platform.gypi:
        * chromium/public/WebCompositorSupport.h:
        (WebKit):
        (WebKit::WebCompositorSupport::createLayerTreeView):
        (WebKit::WebCompositorSupport::createLayer):
        (WebKit::WebCompositorSupport::createContentLayer):
        (WebKit::WebCompositorSupport::createExternalTextureLayer):
        (WebKit::WebCompositorSupport::createIOSurfaceLayer):
        (WebKit::WebCompositorSupport::createImageLayer):
        (WebKit::WebCompositorSupport::createSolidColorLayer):
        (WebKit::WebCompositorSupport::createVideoLayer):
        (WebKit::WebCompositorSupport::createScrollbarLayer):
        (WebKit::WebCompositorSupport::createAnimation):
        (WebKit::WebCompositorSupport::createFloatAnimationCurve):
        (WebKit::WebCompositorSupport::createTransformAnimationCurve):
        (WebCompositorSupport):
        * chromium/public/WebPassOwnPtr.h: Removed.

2012-08-30  James Robinson  <jamesr@chromium.org>

        Chromium win build fix - fix typo in gypi

        * Platform.gypi:

2012-08-27  James Robinson  <jamesr@chromium.org>

        [chromium] Add CompositorSupport interface for constructing compositor classes
        https://bugs.webkit.org/show_bug.cgi?id=95040

        Reviewed by Darin Fisher.

        Adds a WebCompositorSupport interface as a tear-off of PlatformSupport so the embedder can handle provide
        implementations of compositor interfaces.

        Adds a new WebPassOwnPtr<> type for use when the caller of an API must take ownership of the provided parameter.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (WebKit::Platform::compositorSupport):
        (Platform):
        * chromium/public/WebCompositorSupport.h: Added.
        (WebKit):
        (WebCompositorSupport):
        (WebKit::WebCompositorSupport::~WebCompositorSupport):

2012-08-30  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Introduce MediaConstraints
        https://bugs.webkit.org/show_bug.cgi?id=95198

        Reviewed by Adam Barth.

        Adds WebMediaConstraints.

        * Platform.gypi:
        * chromium/public/WebMediaConstraints.h: Copied from Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h.
        (WebCore):
        (WebKit):
        (WebMediaConstraints):
        (WebKit::WebMediaConstraints::WebMediaConstraints):
        (WebKit::WebMediaConstraints::~WebMediaConstraints):
        (WebKit::WebMediaConstraints::operator=):
        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebKit):
        (WebRTCPeerConnectionHandler):

2012-08-27  Ian Vollick  <vollick@chromium.org>

        [chromium] Should accelerate rotations of >= 180 degrees
        https://bugs.webkit.org/show_bug.cgi?id=94860

        Reviewed by James Robinson.

        When generalizing the keyframe interpolation, it became useful to append an identity transform operation,
        and to ask a WebTransformOperations object if it isIdentity().

        * chromium/public/WebTransformOperations.h:
        (WebTransformOperations):

2012-08-24  James Robinson  <jamesr@chromium.org>

        [chromium] Clean up dependencies of WebScrollbar and WebScrollbarLayer
        https://bugs.webkit.org/show_bug.cgi?id=94996

        Reviewed by Adrienne Walker.

        This moves the WebScrollbarLayer::create factory out of #if WEBKIT_IMPLEMENTATION and expresses it in API terms
        only so anyone who can get a handle on a WebScrollbar can construct the layer. Also removes the ::create() from
        WebScrollbar, anyone who currently has access to a WebCore::Scrollbar also has access to WebScrollbarImpl.

        * chromium/public/WebScrollbar.h:
        (WebScrollbar):
        * chromium/public/WebScrollbarLayer.h:
        (WebScrollbarLayer):

2012-08-23  James Robinson  <jamesr@chromium.org>

        [chromium] Convert WebLayerTreeView interface into pure virtual
        https://bugs.webkit.org/show_bug.cgi?id=94866

        Reviewed by Adrienne Walker.

        This makes the WebLayerTreeView interface pure virtual to provide better insulation from the implementation.

        * chromium/public/WebLayerTreeView.h:
        (WebKit):
        (Settings):
        (WebLayerTreeView):
        (WebKit::WebLayerTreeView::~WebLayerTreeView):

2012-08-24  James Robinson  <jamesr@chromium.org>

        [chromium] Clean up WebAnimation animationId/groupId generation
        https://bugs.webkit.org/show_bug.cgi?id=94973

        Reviewed by Adrienne Walker.

        This removes the unused groupId from the public interface and makes the implicit animation id generation a bit
        clearer.

        * chromium/public/WebAnimation.h:
        (WebAnimation):

2012-08-24  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add readyState functionality to RTCPeerConnection
        https://bugs.webkit.org/show_bug.cgi?id=94813

        Reviewed by Adam Barth.

        * chromium/public/WebRTCPeerConnectionHandler.h:
        (WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
        (WebRTCPeerConnectionHandlerClient):

2012-08-23  James Robinson  <jamesr@chromium.org>

        [chromium] Convert WebAnimationCurve subtypes into pure virtual
        https://bugs.webkit.org/show_bug.cgi?id=94068

        Reviewed by Adrienne Walker.

        This makes the Web*AnimationCurve interfaces pure virtual to provide better insulation from the implementation
        details of the classes.

        * chromium/public/WebAnimation.h:
        (WebKit::WebAnimation::WebAnimation):
        (WebAnimation):
        * chromium/public/WebAnimationCurve.h:
        * chromium/public/WebFloatAnimationCurve.h:
        (WebFloatAnimationCurve):
        (WebKit::WebFloatAnimationCurve::~WebFloatAnimationCurve):
        * chromium/public/WebTransformAnimationCurve.h:
        (WebTransformAnimationCurve):
        (WebKit::WebTransformAnimationCurve::~WebTransformAnimationCurve):

2012-08-22  James Robinson  <jamesr@chromium.org>

        [chromium] Remove WebLayer::setChildren API
        https://bugs.webkit.org/show_bug.cgi?id=94749

        Reviewed by Adrienne Walker.

        This is redundant with removeAllChildren() / addChild() and less efficient.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-22  James Robinson  <jamesr@chromium.org>

        [chromium] Change WebLayer from a concrete type to a pure virtual interface
        https://bugs.webkit.org/show_bug.cgi?id=94174

        Reviewed by Adrienne Walker.

        This changes WebLayer from a value type to a pure virtual interface and changes Web*Layers from subtypes to
        standalone types that have a WebLayer. This better isolates the implementation from the interface and, since
        it's not possible to re-wrap an existing layer, makes cleanup explicit instead of requiring the caller to
        invoke special cleanup methods before shutdown.

        * chromium/public/WebContentLayer.h:
        (WebContentLayer):
        * chromium/public/WebExternalTextureLayer.h:
        (WebExternalTextureLayer):
        * chromium/public/WebIOSurfaceLayer.h:
        (WebIOSurfaceLayer):
        * chromium/public/WebImageLayer.h:
        (WebImageLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::~WebLayer):
        * chromium/public/WebScrollableLayer.h: Removed.
        * chromium/public/WebScrollbarLayer.h:
        (WebScrollbarLayer):
        * chromium/public/WebSolidColorLayer.h:
        (WebKit):
        (WebSolidColorLayer):
        (WebKit::WebSolidColorLayer::~WebSolidColorLayer):
        * chromium/public/WebVideoLayer.h:
        (WebVideoLayer):

2012-08-21  Benjamin Poulain  <bpoulain@apple.com>

        Store CString data in the CStringBuffer to avoid the double indirection
        https://bugs.webkit.org/show_bug.cgi?id=94562

        Reviewed by Darin Adler.

        * chromium/src/WebCString.cpp:
        (WebKit::WebCString::length): Update the length() computation following the changes
        in CStringBuffer.

2012-08-21  James Robinson  <jamesr@chromium.org>

        Unreviewed, rolling out r126170.
        http://trac.webkit.org/changeset/126170
        https://bugs.webkit.org/show_bug.cgi?id=94614

        I spoke too soon

        * chromium/public/WebContentLayer.h:
        (WebCore):
        (WebKit):
        (WebContentLayer):
        (WebKit::WebContentLayer::WebContentLayer):
        (WebKit::WebContentLayer::operator=):
        * chromium/public/WebExternalTextureLayer.h:
        (WebCore):
        (WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::~WebExternalTextureLayer):
        * chromium/public/WebIOSurfaceLayer.h:
        (WebCore):
        (WebIOSurfaceLayer):
        (WebKit::WebIOSurfaceLayer::WebIOSurfaceLayer):
        * chromium/public/WebImageLayer.h:
        (WebCore):
        (WebImageLayer):
        (WebKit::WebImageLayer::WebImageLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::WebLayer):
        (WebKit::WebLayer::~WebLayer):
        (WebKit::WebLayer::operator=):
        (WebKit::WebLayer::isNull):
        (WebKit::WebLayer::to):
        (WebKit::WebLayer::toConst):
        (WebKit::WebLayer::unwrap):
        (WebKit::WebLayer::constUnwrap):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebScrollableLayer.h: Copied from Source/Platform/chromium/public/WebScrollbarLayer.h.
        (WebKit):
        (WebScrollableLayer):
        (WebKit::WebScrollableLayer::WebScrollableLayer):
        (WebKit::WebScrollableLayer::~WebScrollableLayer):
        (WebKit::WebScrollableLayer::operator=):
        * chromium/public/WebScrollbarLayer.h:
        (WebCore):
        (WebKit::WebScrollbarLayer::WebScrollbarLayer):
        (WebKit::WebScrollbarLayer::operator=):
        (WebScrollbarLayer):
        * chromium/public/WebSolidColorLayer.h:
        (WebKit):
        (WebSolidColorLayer):
        * chromium/public/WebVideoLayer.h:
        (WebCore):
        (WebVideoLayer):
        (WebKit::WebVideoLayer::WebVideoLayer):

2012-08-21  James Robinson  <jamesr@chromium.org>

        Unreviewed, rolling out r126169.
        http://trac.webkit.org/changeset/126169
        https://bugs.webkit.org/show_bug.cgi?id=94614

        Crashes already fixed downstream

        * chromium/public/WebContentLayer.h:
        (WebContentLayer):
        * chromium/public/WebExternalTextureLayer.h:
        (WebExternalTextureLayer):
        * chromium/public/WebIOSurfaceLayer.h:
        (WebIOSurfaceLayer):
        * chromium/public/WebImageLayer.h:
        (WebImageLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::~WebLayer):
        * chromium/public/WebScrollableLayer.h: Removed.
        * chromium/public/WebScrollbarLayer.h:
        (WebScrollbarLayer):
        * chromium/public/WebSolidColorLayer.h:
        (WebKit):
        (WebSolidColorLayer):
        (WebKit::WebSolidColorLayer::~WebSolidColorLayer):
        * chromium/public/WebVideoLayer.h:
        (WebVideoLayer):

2012-08-21  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r126076, r126099, and r126106.
        http://trac.webkit.org/changeset/126076
        http://trac.webkit.org/changeset/126099
        http://trac.webkit.org/changeset/126106
        https://bugs.webkit.org/show_bug.cgi?id=94614

        Caused crashes during compositor shutdown in Aura builds of
        Chromium (Requested by kbr_google on #webkit).

        * chromium/public/WebContentLayer.h:
        (WebCore):
        (WebKit):
        (WebContentLayer):
        (WebKit::WebContentLayer::WebContentLayer):
        (WebKit::WebContentLayer::operator=):
        * chromium/public/WebExternalTextureLayer.h:
        (WebCore):
        (WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::~WebExternalTextureLayer):
        * chromium/public/WebIOSurfaceLayer.h:
        (WebCore):
        (WebIOSurfaceLayer):
        (WebKit::WebIOSurfaceLayer::WebIOSurfaceLayer):
        * chromium/public/WebImageLayer.h:
        (WebCore):
        (WebImageLayer):
        (WebKit::WebImageLayer::WebImageLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::WebLayer):
        (WebKit::WebLayer::~WebLayer):
        (WebKit::WebLayer::operator=):
        (WebKit::WebLayer::isNull):
        (WebKit::WebLayer::to):
        (WebKit::WebLayer::toConst):
        (WebKit::WebLayer::unwrap):
        (WebKit::WebLayer::constUnwrap):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebScrollableLayer.h: Copied from Source/Platform/chromium/public/WebScrollbarLayer.h.
        (WebKit):
        (WebScrollableLayer):
        (WebKit::WebScrollableLayer::WebScrollableLayer):
        (WebKit::WebScrollableLayer::~WebScrollableLayer):
        (WebKit::WebScrollableLayer::operator=):
        * chromium/public/WebScrollbarLayer.h:
        (WebCore):
        (WebKit::WebScrollbarLayer::WebScrollbarLayer):
        (WebKit::WebScrollbarLayer::operator=):
        (WebScrollbarLayer):
        * chromium/public/WebSolidColorLayer.h:
        (WebKit):
        (WebSolidColorLayer):
        * chromium/public/WebVideoLayer.h:
        (WebCore):
        (WebVideoLayer):
        (WebKit::WebVideoLayer::WebVideoLayer):

2012-08-20  James Robinson  <jamesr@chromium.org>

        [chromium] REGRESSION(126076) Should not touch old GraphicsLayerChromium::m_contentsLayer when setting up a new contents layer
        https://bugs.webkit.org/show_bug.cgi?id=94544

        Reviewed by Adrienne Walker.

        Exposes an id so users of the WebLayer API can make identity checks for layers that they do not have ownership
        of.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-16  James Robinson  <jamesr@chromium.org>

        [chromium] Change WebLayer from a concrete type to a pure virtual interface
        https://bugs.webkit.org/show_bug.cgi?id=94174

        Reviewed by Adrienne Walker.

        This changes WebLayer from a value type to a pure virtual interface and changes Web*Layers from subtypes to
        standalone types that have a WebLayer. This better isolates the implementation from the interface and, since
        it's not possible to re-wrap an existing layer, makes cleanup explicit instead of requiring the caller to invoke
        special cleanup methods before shutdown.

        * chromium/public/WebContentLayer.h:
        (WebContentLayer):
        * chromium/public/WebExternalTextureLayer.h:
        (WebExternalTextureLayer):
        * chromium/public/WebIOSurfaceLayer.h:
        (WebIOSurfaceLayer):
        * chromium/public/WebImageLayer.h:
        (WebImageLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::~WebLayer):
        * chromium/public/WebScrollableLayer.h:
        (WebScrollableLayer):
        * chromium/public/WebScrollbarLayer.h:
        (WebScrollbarLayer):
        * chromium/public/WebSolidColorLayer.h:
        (WebKit):
        (WebSolidColorLayer):
        (WebKit::WebSolidColorLayer::~WebSolidColorLayer):
        * chromium/public/WebVideoLayer.h:
        (WebVideoLayer):

2012-08-17  Zach Kuznia  <zork@chromium.org>

        Add support for Skia Magnifier filter to Chromium layers
        https://bugs.webkit.org/show_bug.cgi?id=93939

        Reviewed by James Robinson.

        This is used by Chrome OS for the screen magnifier

        * chromium/public/WebFilterOperation.h:
        (WebKit::WebFilterOperation::zoomRect):
        (WebFilterOperation):
        (WebKit::WebFilterOperation::createZoomFilter):
        (WebKit::WebFilterOperation::WebFilterOperation):

2012-08-16  James Robinson  <jamesr@chromium.org>

        [chromium] Remove unnecessary tree hierarchy inspection APIs from WebLayer
        https://bugs.webkit.org/show_bug.cgi?id=94229

        Reviewed by Adrienne Walker.

        As it turns out, these APIs are needed. Without them, there is no way to re-wrap an existing layer so we can
        know that when all WebLayer wrappers of a given layer go away that layer will never be exposed to the public API
        again and run appropriate cleanup code.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-16  James Robinson  <jamesr@chromium.org>

        [chromium] Remove alwaysReserveTextures code - it doesn't do anything
        https://bugs.webkit.org/show_bug.cgi?id=94183

        Reviewed by Dimitri Glazkov.

        Remove deprecated setAlwaysReserveTextures() call from WebLayer.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-14  Gregg Tavares  <gman@google.com>

        Plumb through EXT_debug_marker entry points
        https://bugs.webkit.org/show_bug.cgi?id=93860

        Reviewed by Kenneth Russell.

        insertEventMarkerEXT, pushGroupMarkerEXT, popGroupMarkerEXT are
        all entry points exposed by the OpenGL ES EXT_debug_marker
        extension.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::insertEventMarkerEXT):
        (WebKit::WebGraphicsContext3D::pushGroupMarkerEXT):
        (WebKit::WebGraphicsContext3D::popGroupMarkerEXT):

2012-08-13  James Robinson  <jamesr@chromium.org>

        [chromium] Make WebAnimation a pure virtual interface to hide implementation and avoid unresolved symbols
        https://bugs.webkit.org/show_bug.cgi?id=93907

        Reviewed by Darin Fisher.

        This makes WebAnimation a pure virtual interface with instances returned by a factory function. Currently the
        factory is a static function on WebAnimation, but it will likely move to a platform support interface. This
        provides better isolation of the implementation from the interface and in particular allows for implementing the
        WebAnimation interface outside of WebKit.dll without having unresolved external symbols in WebKit.dll.

        * chromium/public/WebAnimation.h:
        (WebKit::WebAnimation::~WebAnimation):
        (WebAnimation):
        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-10  James Robinson  <jamesr@chromium.org>

        [chromium] Clean up dependencies for Canvas2DLayerBridgeTest and GraphicsLayerChromiumTest unit tests
        https://bugs.webkit.org/show_bug.cgi?id=93757

        Reviewed by Adrienne Walker.

        Exposes a function to check for active animations on a layer.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-10  Kinuko Yasuda  <kinuko@chromium.org>

        Support creating File object from FileSystem URL for files in FileSystem API
        https://bugs.webkit.org/show_bug.cgi?id=93706

        Reviewed by Darin Fisher.

        * chromium/public/WebBlobData.h:
        * chromium/public/WebHTTPBody.h:
        (WebHTTPBody):

2012-08-09  James Robinson  <jamesr@chromium.org>

        [chromium] Remove forwarding headers for compositor-related WebKit API and update includes
        https://bugs.webkit.org/show_bug.cgi?id=93669

        Reviewed by Adam Barth.

        Removes a no-longer-necessary transitional define.

        * chromium/public/WebCompositor.h:

2012-08-06  Nat Duca  <nduca@chromium.org>

        [chromium] Expose CCGraphicsContext as WebCompositorOutputSurface
        https://bugs.webkit.org/show_bug.cgi?id=92890

        Reviewed by James Robinson.

        The CCGraphicsContext was introduced as a wrapper around the 2D
        and 3D output for the compositor. However, it is a CC only
        concept. We want to be able to make 2D and ubercomp-mode IPCs on
        behalf of the compositor. This patch allows this by pushing this
        abstraction out to the Chrome-visible layer of the compositor,
        changing the name to OutputSurface based on discussions on
        wkb.ug/90736. A future patch will rename the CCGraphicsContext to
        CCOutputSurface.

        * Platform.gypi:
        * chromium/public/WebCompositorOutputSurface.h: Added.
        (WebKit):
        (WebCompositorOutputSurface):
        (WebKit::WebCompositorOutputSurface::~WebCompositorOutputSurface):
        (WebKit::WebCompositorOutputSurface::Capabilities::Capabilities):
        (Capabilities):
        * chromium/public/WebCompositorOutputSurfaceClient.h: Added.
        (WebKit):
        (WebCompositorOutputSurfaceClient):
        (WebKit::WebCompositorOutputSurfaceClient::~WebCompositorOutputSurfaceClient):
        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):
        * chromium/public/WebLayerTreeViewClient.h:
        (WebKit):
        (WebLayerTreeViewClient):
        (WebKit::WebLayerTreeViewClient::createContext3D):
        (WebKit::WebLayerTreeViewClient::createOutputSurface):

2012-08-09  Nat Duca  <nduca@chromium.org>

        Unreviewed, rolling out r125212.
        http://trac.webkit.org/changeset/125212
        https://bugs.webkit.org/show_bug.cgi?id=92890

        Compile failure on mac dbg builder

        * Platform.gypi:
        * chromium/public/WebCompositorOutputSurface.h: Removed.
        * chromium/public/WebCompositorOutputSurfaceClient.h: Removed.
        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):
        * chromium/public/WebLayerTreeViewClient.h:
        (WebKit):
        (WebLayerTreeViewClient):

2012-08-06  Nat Duca  <nduca@chromium.org>

        [chromium] Expose CCGraphicsContext as WebCompositorOutputSurface
        https://bugs.webkit.org/show_bug.cgi?id=92890

        Reviewed by James Robinson.

        The CCGraphicsContext was introduced as a wrapper around the 2D
        and 3D output for the compositor. However, it is a CC only
        concept. We want to be able to make 2D and ubercomp-mode IPCs on
        behalf of the compositor. This patch allows this by pushing this
        abstraction out to the Chrome-visible layer of the compositor,
        changing the name to OutputSurface based on discussions on
        wkb.ug/90736. A future patch will rename the CCGraphicsContext to
        CCOutputSurface.

        * Platform.gypi:
        * chromium/public/WebCompositorOutputSurface.h: Added.
        (WebKit):
        (WebCompositorOutputSurface):
        (WebKit::WebCompositorOutputSurface::~WebCompositorOutputSurface):
        (WebKit::WebCompositorOutputSurface::Capabilities::Capabilities):
        (Capabilities):
        * chromium/public/WebCompositorOutputSurfaceClient.h: Added.
        (WebKit):
        (WebCompositorOutputSurfaceClient):
        (WebKit::WebCompositorOutputSurfaceClient::~WebCompositorOutputSurfaceClient):
        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):
        * chromium/public/WebLayerTreeViewClient.h:
        (WebKit):
        (WebLayerTreeViewClient):
        (WebKit::WebLayerTreeViewClient::createContext3D):
        (WebKit::WebLayerTreeViewClient::createOutputSurface):

2012-08-08  Adrienne Walker  <enne@google.com>

        [chromium] Move scrollbar pointer into WebScrollbarThemePainter
        https://bugs.webkit.org/show_bug.cgi?id=93541

        Reviewed by James Robinson.

        Update WebScrollbarThemePainter to encapsulate a pointer to the
        scrollbar as well. Lion scrollbars and RenderScrollbars are both
        incompatible with wrapping a scrollbar in a WebScrollbar.

        ScrollbarTheme(Chromium)Mac attaches extra data to a scrollbar based
        on the pointer value (via a static map keyed on the pointer) so
        passing an object that returns all the same values for the
        ScrollbarThemeClient interface but has a different pointer will fail
        to paint.

        RenderScrollbar does static casts on the ScrollbarThemeClient pointer
        that it is passed, assuming that it is the same. Therefore, it also
        cannot use a WebScrollbar.

        To fix this, push the real scrollbar pointer into the painter.

        * chromium/public/WebScrollbarThemePainter.h:
        (WebCore):
        (WebKit::WebScrollbarThemePainter::WebScrollbarThemePainter):
        (WebScrollbarThemePainter):

2012-08-07  James Robinson  <jamesr@chromium.org>

        [chromium] Only use public Platform API in NonCompositedContentHost
        https://bugs.webkit.org/show_bug.cgi?id=93423

        Reviewed by Adrienne Walker.

        Adds setters to control text antialiasing and checkerboarding behavior for content layers.

        * chromium/public/WebContentLayer.h:
        (WebContentLayer):

2012-08-08  Nate Chapin  <japhet@chromium.org>

        [chromium] Upstream android's FlingAnimator
        https://bugs.webkit.org/show_bug.cgi?id=92900

        Reviewed by James Robinson.

        No new tests yet, will be added once this code is called.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (WebKit::Platform::createFlingAnimator):
        * chromium/public/WebFlingAnimator.h: Added.
        (WebKit):
        (WebFlingAnimator):
        (WebKit::WebFlingAnimator::~WebFlingAnimator):

2012-08-07  James Robinson  <jamesr@chromium.org>

        [chromium] Switch PlatformLayer typedef to Platform API type for PLATFORM(CHROMIUM)
        https://bugs.webkit.org/show_bug.cgi?id=93335

        Reviewed by Adrienne Walker.

        Add APIs to control scrolling behavior on WebScrollableLayer.

        * chromium/public/WebScrollableLayer.h:
        (WebScrollableLayer):

2012-08-07  James Robinson  <jamesr@chromium.org>

        [chromium] Use WebCompositor interface in Platform API instead of CCProxy to query threaded compositor status
        https://bugs.webkit.org/show_bug.cgi?id=93398

        Reviewed by Adam Barth.

        Adds thread status query interfaces to WebCompositor for WebKit code that wants to know if we are in threaded
        mode.

        * chromium/public/WebCompositor.h:
        (WebCompositor):

2012-08-07  James Robinson  <jamesr@chromium.org>

        [chromium] Move WebCompositor interface into Platform API
        https://bugs.webkit.org/show_bug.cgi?id=93391

        Reviewed by Adam Barth.

        WebCompositor is logically part of the Platform API, along with WebLayerTreeView and the WebLayer types.

        * chromium/public/WebCompositor.h: Renamed from Source/WebKit/chromium/public/WebCompositorClient.h.
        (WebKit):
        (WebCompositor):
        (WebKit::WebCompositor::~WebCompositor):

2012-08-06  James Robinson  <jamesr@chromium.org>

        [chromium] Remove lingering unwrap<>() calls in GraphicsLayerChromium.cpp
        https://bugs.webkit.org/show_bug.cgi?id=93319

        Reviewed by Adrienne Walker.

        Adds a few more entry points to WebLayer that are being used by GraphicsLayerChromium.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-08-06  Antoine Labour  <piman@chromium.org>

        [chromium] add sync points and GL_CHROMIUM_texture_mailbox entrypoints to WebGraphicsContext3D
        https://bugs.webkit.org/show_bug.cgi?id=93313

        Reviewed by James Robinson.

        Sync points already landed chromium-side, mailbos at https://chromiumcodereview.appspot.com/10829209/

        * chromium/public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::insertSyncPoint):
        (WebKit::WebGraphicsContext3D::waitSyncPoint):
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::genMailboxCHROMIUM):
        (WebKit::WebGraphicsContext3D::produceTextureCHROMIUM):
        (WebKit::WebGraphicsContext3D::consumeTextureCHROMIUM):

2012-08-06  Adrienne Walker  <enne@google.com>

        [chromium] Convert WebScrollbarThemeGeometry from a concrete class to an interface
        https://bugs.webkit.org/show_bug.cgi?id=93308

        Reviewed by James Robinson.

        Convert WebScrollbarThemeGeometry to be an interface. Update
        WebScrollbarLayer to take a pointer to this interface.

        * chromium/public/WebScrollbarLayer.h:
        (WebScrollbarLayer):
        * chromium/public/WebScrollbarThemeGeometry.h:
        (WebScrollbarThemeGeometry):

2012-08-06  Adam Barth  <abarth@webkit.org>

        [Chromium] WebTouchCandidatesInfo should be part of the Client API
        https://bugs.webkit.org/show_bug.cgi?id=93088

        Reviewed by Eric Seidel.

        All the input related interfaces are part of the client (rather than
        the platform) part of the API. This patch moves WebTouchCandidatesInfo
        to the client part of the API.

        * Platform.gypi:
        * chromium/public/WebTouchCandidatesInfo.h: Removed.

2012-08-03  Nico Weber  <thakis@chromium.org>

        [chromium] Add API to make it possible to request all variants of a WebImage
        https://bugs.webkit.org/show_bug.cgi?id=92933

        Reviewed by Adam Barth.

        Part of http://crbug.com/138550

        * chromium/public/WebImage.h:
        (WebImage):

2012-08-03  Alexandre Elias  <aelias@google.com>

        [chromium] Move ubercomp quads back into CC
        https://bugs.webkit.org/show_bug.cgi?id=93062

        Reviewed by James Robinson.

        Because GTFO is almost done, we can move back the quad types
        to CC and pickle them there.  This patch moves everything back
        to where it was before and changes types like WebRect to IntRect.

        As a bonus, I also added CCRenderPassDrawQuad and CCYUVVideoDrawQuad
        (which had been left in the CC files) to CCDrawQuad::size(), so now
        every quad type is ready for serialization.

        * Platform.gypi:
        * chromium/public/WebCompositorCheckerboardQuad.h: Removed.
        * chromium/public/WebCompositorDebugBorderQuad.h: Removed.
        * chromium/public/WebCompositorIOSurfaceQuad.h: Removed.
        * chromium/public/WebCompositorQuad.h: Removed.
        * chromium/public/WebCompositorSharedQuadState.h: Removed.
        * chromium/public/WebCompositorSolidColorQuad.h: Removed.
        * chromium/public/WebCompositorStreamVideoQuad.h: Removed.
        * chromium/public/WebCompositorTextureQuad.h: Removed.
        * chromium/public/WebCompositorTileQuad.h: Removed.

2012-08-02  Alexandre Elias  <aelias@google.com>

        [chromium] deviceViewportSize cleanup
        https://bugs.webkit.org/show_bug.cgi?id=92794

        Reviewed by Adrienne Walker.

        In the future, CSS layout size will become increasingly disassociated
        from physical device size, and it will become impossible to infer one
        from the other inside the compositor.  Therefore, this patch allows
        deviceViewportSize to be explicitly passed in by the outside client.

        I also renamed the existing viewportSize field to "layoutViewportSize"
        for clarity, and converted its uses to deviceViewportSize since
        that is more appropriate.

        I had to add some default-value scaffolding to WebLayerTreeView in
        order to avoid breaking ui/compositor.  We can delete it once that's
        updated.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-08-01  James Robinson  <jamesr@chromium.org>

        [chromium] Wrap shared context getters in WebKit API and avoid WebCore::GraphicsContext3D use in compositor internals
        https://bugs.webkit.org/show_bug.cgi?id=92917

        Reviewed by Adrienne Walker.

        This adds Platform API for creating and accessing shared GraphicsContext3D and Ganesh contexts from the main or
        compositor threads. These can be used for evaluating filters or doing accelerated painting. These contexts are
        generally leaked until lost or process exit, the details are documented in WebSharedGraphicsContext3D.h

        * Platform.gypi:
        * chromium/public/WebSharedGraphicsContext3D.h: Added.
        (WebKit):
        (WebSharedGraphicsContext3D):

2012-08-02  Peter Beverloo  <peter@chromium.org>

        [Chromium] Add a stub for WebView::getTouchHighlightQuads()
        https://bugs.webkit.org/show_bug.cgi?id=92997

        Reviewed by Adam Barth.

        Chrome on Android will be using this method for the link preview
        implementation, discussion about which is available in Bug 79150. Since
        that system is fairly big, will require refactoring, and the unavailable
        APIs are blocking API compatibility, add a stub for now.

        Together with the WebView API, also add the "WebTouchCandidatesInfo"
        structure which is being used by it.

        * Platform.gypi: List WebTouchCandidatesInfo.h
        * chromium/public/WebTouchCandidatesInfo.h: Added.
        (WebKit):
        (WebTouchCandidatesInfo):
        (WebKit::WebTouchCandidatesInfo::WebTouchCandidatesInfo):

2012-08-02  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add RTCPeerConnectionHandler infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=92866

        Reviewed by Adam Barth.

        Introducing RTCPeerConnectionHandler & RTCPeerConnectionHandlerClient,
        together with the Chromium WebKit interface, following the pattern of
        the previous PeerConnection00Handler but with the optimizations from MediaStreamCenter.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandler.h: Added.
        (WebKit):
        (WebRTCPeerConnectionHandler):
        (WebKit::WebRTCPeerConnectionHandler::~WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandlerClient.h: Added.
        (WebKit):
        (WebRTCPeerConnectionHandlerClient):
        (WebKit::WebRTCPeerConnectionHandlerClient::~WebRTCPeerConnectionHandlerClient):

2012-08-02  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r124439.
        http://trac.webkit.org/changeset/124439
        https://bugs.webkit.org/show_bug.cgi?id=92980

        Broke Chromium Mac Release compile (Requested by apavlov on
        #webkit).

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandler.h: Removed.
        * chromium/public/WebRTCPeerConnectionHandlerClient.h: Removed.

2012-08-02  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add RTCPeerConnectionHandler infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=92866

        Reviewed by Kentaro Hara.

        Introducing RTCPeerConnectionHandler & RTCPeerConnectionHandlerClient,
        together with the Chromium WebKit interface, following the pattern of
        the previous PeerConnection00Handler but with the optimizations from MediaStreamCenter.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandler.h: Added.
        (WebKit):
        (WebRTCPeerConnectionHandler):
        (WebKit::WebRTCPeerConnectionHandler::~WebRTCPeerConnectionHandler):
        * chromium/public/WebRTCPeerConnectionHandlerClient.h: Added.
        (WebKit):
        (WebRTCPeerConnectionHandlerClient):
        (WebKit::WebRTCPeerConnectionHandlerClient::~WebRTCPeerConnectionHandlerClient):

2012-08-02  Hironori Bono  <hbono@chromium.org>

        [Chromium] Implement hyphenation for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=48610

        Reviewed by Eric Seidel.

        This change adds a couple of methods canHyphenate and computeLastHyphenLocation
        to Platform so Chromium can implement them. Also, this change uses these methods
        to implement the hyphenation methods of WebCore. (This change does not change
        any behaviors until Chromium implements these methods.)

        * chromium/public/Platform.h:
        (Platform):
        (WebKit::Platform::canHyphenate): Added a stub method so Chromium can implement it.
        (WebKit::Platform::computeLastHyphenLocation): ditto.

2012-08-02  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Move RTCConfiguration to its proper place
        https://bugs.webkit.org/show_bug.cgi?id=92867

        Reviewed by Adam Barth.

        This patch moves RTCConfiguration to Source/WebCore/platform/mediastream,
        and adds its WebKit interface for chromium.

        * Platform.gypi:
        * chromium/public/WebRTCConfiguration.h: Added.
        (WebCore):
        (WebKit):
        (WebRTCICEServer):
        (WebKit::WebRTCICEServer::WebRTCICEServer):
        (WebKit::WebRTCICEServer::~WebRTCICEServer):
        (WebKit::WebRTCICEServer::operator=):
        (WebKit::WebRTCICEServer::isNull):
        (WebRTCConfiguration):
        (WebKit::WebRTCConfiguration::WebRTCConfiguration):
        (WebKit::WebRTCConfiguration::~WebRTCConfiguration):
        (WebKit::WebRTCConfiguration::operator=):
        (WebKit::WebRTCConfiguration::isNull):

2012-08-01  James Robinson  <jamesr@chromium.org>

        [chromium] Move compositor HUD font atlas initialization code out of compositor core
        https://bugs.webkit.org/show_bug.cgi?id=92924

        Reviewed by Adrienne Walker.

        The chromium compositor does not have any text rendering capabilities. It generally does not need them, but it
        is helpful for some debugging aids to be able to render at least ASCII text to the screen. This provides an API
        on WebLayerTreeView by which an embedder can provide an ASCII glyph atlas to use for displaying debug
        information.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-08-01  Jian Li  <jianli@chromium.org>

        Unreviewed. Fix build break for chromium.

        * Platform.gypi:

2012-08-01  Jian Li  <jianli@chromium.org>

        [chromium] Make WebKit API support draggable region change update
        https://bugs.webkit.org/show_bug.cgi?id=92813

        Reviewed by Adam Barth.

        Add WebDraggableRegion for chromium's usage.

        * Platform.gypi:

2012-08-01  Antoine Labour  <piman@chromium.org>

        [chromium] factor out the optimization pass in CCRenderSurfaceFilters::apply
        https://bugs.webkit.org/show_bug.cgi?id=92453

        Reviewed by James Robinson.

        This separates the "optimization" pass in CCRenderSurfaceFilters::apply
        to resolve a succession of color matrix filters into a single operation.
        This allows testing of that code.
        This introduces a new generic color matrix WebFilterOperation, which can
        also be used on its own.

        * Platform.gypi:
        * chromium/public/WebFilterOperation.h:
        (WebKit::WebFilterOperation::matrix):
        (WebKit::WebFilterOperation::createColorMatrixFilter):
        (WebFilterOperation):
        (WebKit::WebFilterOperation::WebFilterOperation):
        * chromium/src/WebFilterOperation.cpp: Copied from Source/WebCore/platform/graphics/chromium/cc/CCRenderSurfaceFilters.h.
        (WebKit):
        (WebKit::WebFilterOperation::equals):
        (WebKit::WebFilterOperation::WebFilterOperation):
        * chromium/src/WebFilterOperations.cpp:
        (WebKit::WebFilterOperations::hasFilterThatAffectsOpacity):

2012-08-01  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Add ExtraData capability to MediaStreamSource
        https://bugs.webkit.org/show_bug.cgi?id=92860

        Reviewed by Adam Barth.

        The Chromium port needs to store some related data in MediaStreamSource objects.

        * chromium/public/WebMediaStreamSource.h:
        (ExtraData):
        (WebKit::WebMediaStreamSource::ExtraData::~ExtraData):
        (WebMediaStreamSource):

2012-08-01  Alexei Filippov  <alexeif@chromium.org>

        Web Inspector: count DOM storage cache memory for native snapshot
        https://bugs.webkit.org/show_bug.cgi?id=91617

        Reviewed by Yury Semikhatsky.

        Add memory size used for DOM storage cache reporting interface.

        * chromium/public/WebStorageArea.h:
        (WebStorageArea):
        (WebKit::WebStorageArea::memoryBytesUsedByCache):

2012-07-31  Chris Rogers  <crogers@google.com>

        Allow AudioDestination to support local/live audio input
        https://bugs.webkit.org/show_bug.cgi?id=90318

        Reviewed by Kenneth Russell.

        * chromium/public/WebAudioDevice.h:
        (WebKit::WebAudioDevice::RenderCallback::render):
        (RenderCallback):

2012-07-31  Ian Vollick  <vollick@chromium.org>

        [chromium] Use WebAnimation and related classes in GraphicsLayerChromium and AnimTranslationUtil
        https://bugs.webkit.org/show_bug.cgi?id=90468

        Reviewed by James Robinson.

        * Platform.gypi:
        * chromium/public/WebAnimation.h:
        (WebAnimation):
        (WebKit::WebAnimation::WebAnimation):
        * chromium/public/WebAnimationDelegate.h: Renamed from Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationDelegate.h.
        (WebKit):
        (WebAnimationDelegate):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):

2012-07-30  Keishi Hattori  <keishi@webkit.org>

        Implement datalist UI for input type color for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=92075

        Reviewed by Kent Tamura.

        * chromium/public/WebLocalizedString.h: Added OtherColorLabel.

2012-07-30  Adrienne Walker  <enne@google.com>

        [chromium] Wrap ScrollbarLayerChromium in WebScrollbarLayer
        https://bugs.webkit.org/show_bug.cgi?id=91032

        Reviewed by James Robinson.

        Add WebScrollbarLayer class to the Platform API.

        * Platform.gypi:
        * chromium/public/WebScrollbarLayer.h: Added.
        (WebCore):
        (WebKit):
        (WebScrollbarLayer):
        (WebKit::WebScrollbarLayer::WebScrollbarLayer):
        (WebKit::WebScrollbarLayer::~WebScrollbarLayer):
        (WebKit::WebScrollbarLayer::operator=):

2012-06-29  James Robinson  <jamesr@chromium.org>

        [chromium] Remove WebTransformationMatrix::mapPoint overrides
        https://bugs.webkit.org/show_bug.cgi?id=90329

        Reviewed by Adrienne Walker.

        Remove clipping-unaware mapPoint functions from the WebTransformationMatrix interface.

        * chromium/public/WebTransformationMatrix.h:
        (WebTransformationMatrix):

2012-07-30  John Bates  <jbates@google.com>

        Plumb vsync-enabled flag up to compositor thread and support disable-vsync
        https://bugs.webkit.org/show_bug.cgi?id=92323

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-07-30  Adrienne Walker  <enne@google.com>

        [chromium] Remove dependency on ScrollbarTheme from the compositor
        https://bugs.webkit.org/show_bug.cgi?id=90528

        Reviewed by James Robinson.

        Flesh out WebScrollbar functions enough to be able to implement
        the parts of ScrollbarThemeClient that Chromium uses.

        Wrap ScrollbarThemeComposite in the Platform API via two different
        classes: WebScrollbarThemePainter is the non-threadsafe version that
        is used to paint parts of a scrollbar into a context. This is intended
        to only be used on the main thread. WebScrollbarThemeGeometry is the
        threadsafe version, used to get the location and sizes of scrollbar
        parts on both threads, so they can be painted on the main thread and
        composited on the compositor thread.

        Unfortunately, there is no way to enforce these thread safety issues,
        as other ports use the ScrollbarTheme hierarchy differently than
        Chromium does. On the bright side, other than painting, the
        ScrollbarTheme code is largely functional and we can enforce this
        internally for the Chromium port.

        * Platform.gypi:
        * chromium/public/WebScrollbar.h:
        (WebCore):
        (WebKit):
        (WebScrollbar):
        * chromium/public/WebScrollbarThemeGeometry.h: Added.
        (WebCore):
        (WebKit):
        (WebScrollbarThemeGeometry):
        (WebKit::WebScrollbarThemeGeometry::WebScrollbarThemeGeometry):
        (WebKit::WebScrollbarThemeGeometry::~WebScrollbarThemeGeometry):
        (WebKit::WebScrollbarThemeGeometry::operator=):
        (WebKit::WebScrollbarThemeGeometry::isNull):
        * chromium/public/WebScrollbarThemePainter.h: Added.
        (WebCore):
        (WebKit):
        (WebScrollbarThemePainter):
        (WebKit::WebScrollbarThemePainter::WebScrollbarThemePainter):
        (WebKit::WebScrollbarThemePainter::~WebScrollbarThemePainter):
        (WebKit::WebScrollbarThemePainter::operator=):
        (WebKit::WebScrollbarThemePainter::isNull):

2012-07-30  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r124025.
        http://trac.webkit.org/changeset/124025
        https://bugs.webkit.org/show_bug.cgi?id=92658

        Causes color-suggestion-picker-appearance layout test to time
        out on all Chromium platforms (Requested by tomhudson_ on
        #webkit).

        * chromium/public/WebLocalizedString.h:

2012-07-30  Keishi Hattori  <keishi@webkit.org>

        Implement datalist UI for input type color for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=92075

        Reviewed by Kent Tamura.

        * chromium/public/WebLocalizedString.h: Added OtherColorLabel.

2012-07-30  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r124004.
        http://trac.webkit.org/changeset/124004
        https://bugs.webkit.org/show_bug.cgi?id=92622

        Broke Android build (Requested by keishi on #webkit).

        * chromium/public/WebLocalizedString.h:

2012-07-30  Keishi Hattori  <keishi@webkit.org>

        Implement datalist UI for input type color for Chromium
        https://bugs.webkit.org/show_bug.cgi?id=92075

        Reviewed by Kent Tamura.

        * chromium/public/WebLocalizedString.h: Added OtherColorLabel.

2012-07-25  Min Qin  <qinmin@chromium.org>

        Upstream declaration of WebGraphicsContext3D::createStreamTextureCHROMIUM() for android
        https://bugs.webkit.org/show_bug.cgi?id=92308

        Reviewed by Adam Barth.

        For android, we need 2 calls to create and destroy the stream texture.
        This change adds the interface for these 2 calls.
        The actual implementation will be in webgraphicscontext3d_in_process_impl and webgraphicscontext3d_command_buffer_impl.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::createStreamTextureCHROMIUM):
        (WebKit::WebGraphicsContext3D::destroyStreamTextureCHROMIUM):

2012-07-25  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Update MediaStreamTrack to match the specification
        https://bugs.webkit.org/show_bug.cgi?id=90180

        Reviewed by Adam Barth.

        * chromium/public/WebMediaStreamDescriptor.h:
        (WebMediaStreamDescriptor):
        * chromium/public/WebMediaStreamSource.h:
        (WebMediaStreamSource):

2012-07-24  Dave Tu  <dtu@chromium.org>

        [chromium] Add time spent painting to GPU benchmarking renderingStats() API.
        https://bugs.webkit.org/show_bug.cgi?id=90019

        Reviewed by Adrienne Walker.

        * chromium/public/WebRenderingStats.h:
        (WebRenderingStats):
        (WebKit::WebRenderingStats::WebRenderingStats):

2012-07-24  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r123499.
        http://trac.webkit.org/changeset/123499
        https://bugs.webkit.org/show_bug.cgi?id=92161

        Android fails to compile (Requested by zhenyao on #webkit).

        * chromium/public/WebMediaStreamDescriptor.h:
        (WebMediaStreamDescriptor):
        * chromium/public/WebMediaStreamSource.h:
        (WebMediaStreamSource):

2012-07-24  Leandro Gracia Gil  <leandrogracia@chromium.org>

        [Chromium] Enable conversion between WebFloatRect and gfx::RectF.
        https://bugs.webkit.org/show_bug.cgi?id=92117

        Reviewed by Adam Barth.

        Introduce WebFloatRect <--> gfx::RectF conversion as we already do with WebRect <--> gfx::Rect.

        * chromium/public/WebFloatRect.h:
        (WebKit::WebFloatRect::WebFloatRect):
        (WebFloatRect):
        (WebKit::WebFloatRect::operator=):
        (WebKit::WebFloatRect::operator gfx::RectF):

2012-07-24  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Update MediaStreamTrack to match the specification
        https://bugs.webkit.org/show_bug.cgi?id=90180

        Reviewed by Adam Barth.

        * chromium/public/WebMediaStreamDescriptor.h:
        (WebMediaStreamDescriptor):
        * chromium/public/WebMediaStreamSource.h:
        (WebMediaStreamSource):

2012-07-23  Dave Tu  <dtu@chromium.org>

        [chromium] Add droppedFrameCount to renderingStats.
        https://bugs.webkit.org/show_bug.cgi?id=91694

        Reviewed by Adrienne Walker.

        * chromium/public/WebRenderingStats.h:
        (WebRenderingStats):
        (WebKit::WebRenderingStats::WebRenderingStats):

2012-07-23  Brian Anderson  <brianderson@chromium.org>

        [chromium] Use shallow flushes that don't glFlush
        https://bugs.webkit.org/show_bug.cgi?id=90325

        Reviewed by Kenneth Russell.

        Adds shallowFlushCHROMIUM to WebGraphicsContext3D.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::shallowFlushCHROMIUM):

2012-07-23  Tommy Widenflycht  <tommyw@google.com>

        [chromium] MediaStream API: Clean up the MockWebKitPlatformSupport object at shutdown
        https://bugs.webkit.org/show_bug.cgi?id=91857

        Reviewed by Adam Barth.

        Made Platforms destructor virtual.

        * chromium/public/Platform.h:
        (WebKit::Platform::~Platform):

2012-07-18  Antoine Labour  <piman@chromium.org>

        [chromium] Introduce CCResourceProvider, replacing TextureAllocator and hiding textures from clients to allow transport
        https://bugs.webkit.org/show_bug.cgi?id=91044

        Reviewed by Adrienne Walker.

        This does several things:
        - Add a CCResourceProvider class, that hides textures and the 3D context
        from layers (except those that need it). Instead layers manage
        "resources". In the future, resources are expected to be transportable
        to a "parent" CCResourceProvider to allow flattening of nested
        compositors.
        - Replace texture ids by resource ids in DrawQuads (allowing them to be
        serializable).
        - Replace TextureAllocator uses by the CCResourceProvider class.
        - Upload of data is done through the CCResourceProvider instead of
        explicit GL calls.
        - External textures are wrapped into a resource at draw time (see
        caveat/FIXME in CCTextureLayerImpl).
        - Rendering with the resources is done through an explicit
        beginRenderFrom/endRenderFrom that exposes the texture only between that
        pair.
        - Merge all the LayerTextureSubImage instances (one per layer), into a
        single instance on the CCResourceProvider.

        Added CCResourceProviderTest, the refactoring is covered by existing tests.

        * chromium/public/WebCompositorTextureQuad.h:
        (WebCompositorTextureQuad):
        (WebKit::WebCompositorTextureQuad::resourceId):
        * chromium/public/WebCompositorTileQuad.h:
        (WebCompositorTileQuad):
        (WebKit::WebCompositorTileQuad::resourceId):

2012-07-18  Alexandre Elias  <aelias@google.com>

        [chromium] Ubercomp: add id to SharedQuadState
        https://bugs.webkit.org/show_bug.cgi?id=91670

        Reviewed by Adrienne Walker.

        This assigns an integer ID to SharedQuadState objects and a
        corresponding ID to quads.  This ID is unique only within a
        RenderPass and currently is just set to the index in the shared quad
        state list.  This is redundant with the pointer and exists to
        simplify serialization.

        I found out that pointer rewriting within a pickler is blocked by
        pointers to memory being const there, so the reassignment will have to
        be performed in the application layer anyway.  In that case, it's
        simplest to add some ID integers.

        * chromium/public/WebCompositorQuad.h:
        (WebKit::WebCompositorQuad::sharedQuadStateId):
        (WebCompositorQuad):
        * chromium/public/WebCompositorSharedQuadState.h:
        (WebCompositorSharedQuadState):

2012-07-18  Ryosuke Niwa  <rniwa@webkit.org>

        Another Chromium Windows build fix attempt after r123014.

        * chromium/public/Platform.h:

2012-07-18  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Call SQLiteFileSystem-related functions directly
        https://bugs.webkit.org/show_bug.cgi?id=91631

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.
        
        * chromium/public/Platform.h:
        (Platform):
        (WebKit::Platform::databaseOpenFile):
        (WebKit::Platform::databaseDeleteFile):
        (WebKit::Platform::databaseGetFileAttributes):
        (WebKit::Platform::databaseGetFileSize):
        (WebKit::Platform::databaseGetSpaceAvailableForOrigin):

2012-07-18  Sailesh Agrawal  <sail@chromium.org>

        Chromium Mac: Add TEXTURE_RECTANGLE_ARB support to CCVideoLayerImpl
        https://bugs.webkit.org/show_bug.cgi?id=91169

        Reviewed by Adrienne Walker.

        Added a "orientation" field to WebCompositorIOSurfaceQuad. This is used at draw time to flip the texture if necessary.

        * chromium/public/WebCompositorIOSurfaceQuad.h: Added orientation field to the constructor.
        (WebKit::WebCompositorIOSurfaceQuad::orientation):
        (WebCompositorIOSurfaceQuad): The new orientation field should be set to Flipped if the texture should be flipped when drawing.

2012-07-13  Tony Payne  <tpayne@chromium.org>

        Remove Widget from screenColorProfile
        https://bugs.webkit.org/show_bug.cgi?id=91300

        Reviewed by Adam Barth.

        * chromium/public/Platform.h:
        (Platform): Updated comment to reflect that we no longer have a type param.

2012-07-11  Alexandre Elias  <aelias@google.com>

        [chromium] Move compositor quads to Platform/chromium/public
        https://bugs.webkit.org/show_bug.cgi?id=90582

        Reviewed by Adrienne Walker.

        This moves CCSharedQuadState, CCDrawQuad, and all but two CC*DrawQuad
        classes to the WebKit namespace, as a first step to pushing them
        across the process boundary for the ubercompositor.

        - The intent is to serialize the class hierarchy using the same
        mechanism as WebInputEvent.  In order to do this, there are three
        requirements: pure POD data, a method returning size, and a packing
        pragma.

        - Private data members are fine with this kind of serializer, and a
        default constructor is not needed.  Because of that, we can maintain
        the same encapsulation and convenient APIs (behind
        WEBKIT_IMPLEMENTATION) as the original classes.  To ease the
        transition, the original WebCore headers still exist and typedef to
        the new classes.

        - However, SharedQuadState will be serialized using the normal
        IPC_STRUCT_TRAITS macro, so I made its members public.  A custom
        serializer (on quad lists) will maintain the pointers from quads to
        SharedQuadStates.

        - I converted the Material casting mechanism to materialCast() methods
        living in the derived classes.  That way, the WebCompositorQuad header
        doesn't need to know about all its derived classes.

        - Quad classes not yet transitioned can still be used in
        non-ubercompositor mode.  CCRenderPassDrawQuad and CCYUVVideoDrawQuad
        are currently non-POD and I left them in their original files.

        This approach is the best I've found so far, since it preserves all
        WebCore-facing APIs and avoids unnecessary code duplication (new quad
        types or members can be added by modifying only one place).  There
        also should not be an unreasonable amount of custom serializer code
        required.

        * Platform.gypi:
        * chromium/public/WebCompositorQuad.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h.
        (WebKit):
        (WebCompositorQuad):
        (WebKit::WebCompositorQuad::quadRect):
        (WebKit::WebCompositorQuad::quadTransform):
        (WebKit::WebCompositorQuad::layerTransform):
        (WebKit::WebCompositorQuad::layerRect):
        (WebKit::WebCompositorQuad::scissorRect):
        (WebKit::WebCompositorQuad::opacity):
        (WebKit::WebCompositorQuad::needsBlending):
        (WebKit::WebCompositorQuad::isLayerAxisAlignedIntRect):
        (WebKit::WebCompositorQuad::quadVisibleRect):
        (WebKit::WebCompositorQuad::isDebugQuad):
        (WebKit::WebCompositorQuad::material):
        (WebKit::WebCompositorQuad::sharedQuadState):
        (WebKit::WebCompositorQuad::setSharedQuadState):
        * chromium/public/WebCompositorSharedQuadState.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCSolidColorDrawQuad.h.
        (WebKit):
        (WebCompositorSharedQuadState):
        * chromium/public/WebCompositorSolidColorQuad.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCSolidColorDrawQuad.h.
        (WebKit):
        (WebCompositorSolidColorQuad):
        (WebKit::WebCompositorSolidColorQuad::color):
        * chromium/public/WebCompositorTextureQuad.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h.
        (WebKit):
        (WebCompositorTextureQuad):
        (WebKit::WebCompositorTextureQuad::uvRect):
        (WebKit::WebCompositorTextureQuad::textureId):
        (WebKit::WebCompositorTextureQuad::premultipliedAlpha):
        (WebKit::WebCompositorTextureQuad::flipped):

2012-07-05  Ian Vollick  <vollick@chromium.org>

        [chromium] Create a WebKit::Web* wrapper for the cc animation classes
        https://bugs.webkit.org/show_bug.cgi?id=90303

        Reviewed by James Robinson.

        * Platform.gypi:
        * chromium/public/WebAnimation.h: Added.
        (WebCore):
        (WebKit):
        (WebAnimation):
        (WebKit::WebAnimation::WebAnimation):
        (WebKit::WebAnimation::~WebAnimation):
        * chromium/public/WebAnimationCurve.h: Added.
        (WebCore):
        (WebKit):
        (WebAnimationCurve):
        (WebKit::WebAnimationCurve::~WebAnimationCurve):
        (WebKit::WebAnimationCurve::WebAnimationCurve):
        * chromium/public/WebFloatAnimationCurve.h: Added.
        (WebCore):
        (WebKit):
        (WebFloatAnimationCurve):
        (WebKit::WebFloatAnimationCurve::WebFloatAnimationCurve):
        (WebKit::WebFloatAnimationCurve::~WebFloatAnimationCurve):
        * chromium/public/WebFloatKeyframe.h: Added.
        (WebKit):
        (WebKit::WebFloatKeyframe::WebFloatKeyframe):
        (WebFloatKeyframe):
        * chromium/public/WebTransformAnimationCurve.h: Added.
        (WebCore):
        (WebKit):
        (WebTransformAnimationCurve):
        (WebKit::WebTransformAnimationCurve::WebTransformAnimationCurve):
        (WebKit::WebTransformAnimationCurve::~WebTransformAnimationCurve):
        * chromium/public/WebTransformKeyframe.h: Added.
        (WebKit):
        (WebKit::WebTransformKeyframe::WebTransformKeyframe):
        (WebTransformKeyframe):

2012-07-03  Alex Sakhartchouk  <alexst@chromium.org>

        [chromium] Avoid calling getUniformLocation??() in the compositor startup
        https://bugs.webkit.org/show_bug.cgi?id=90217

        Reviewed by Adrienne Walker.

        Adding an entry point for bindUniformLocationCHROMIUM.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::bindUniformLocationCHROMIUM):

2012-07-03  Tony Chang  <tony@chromium.org>

        [chromium] Unreviewed, update .gitignore to handle VS2010 files.

        * Platform.gyp/.gitignore:

2012-07-02  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Update MediaStreamTrackList to match the specification
        https://bugs.webkit.org/show_bug.cgi?id=90171

        Reviewed by Adam Barth.

        The latest update to the specification added add and remove methods with corresponding callbacks.
        The callbacks can be triggered both from JS and from the platform layer.

        * chromium/public/WebMediaStreamCenterClient.h:
        (WebKit):
        (WebMediaStreamCenterClient):

2012-07-01  Keishi Hattori  <keishi@webkit.org>

        Unreviewed, rolling out r121650.
        http://trac.webkit.org/changeset/121650
        https://bugs.webkit.org/show_bug.cgi?id=90303

        runhooks is failing for chromium win bots and
        WebAnimationTest.DefaultSettings is crashing

        * Platform.gypi:
        * chromium/public/WebAnimation.h: Removed.
        * chromium/public/WebAnimationCurve.h: Removed.
        * chromium/public/WebFloatAnimationCurve.h: Removed.
        * chromium/public/WebFloatKeyframe.h: Removed.
        * chromium/public/WebTransformAnimationCurve.h: Removed.
        * chromium/public/WebTransformKeyframe.h: Removed.

2012-07-01  Ian Vollick  <vollick@chromium.org>

        [chromium] Create a WebKit::Web* wrapper for the cc animation classes
        https://bugs.webkit.org/show_bug.cgi?id=90303

        Reviewed by James Robinson.

        * Platform.gypi:
        * chromium/public/WebAnimation.h: Added.
        (WebCore):
        (WebKit):
        (WebAnimation):
        (WebKit::WebAnimation::WebAnimation):
        (WebKit::WebAnimation::~WebAnimation):
        * chromium/public/WebAnimationCurve.h: Added.
        (WebCore):
        (WebKit):
        (WebAnimationCurve):
        (WebKit::WebAnimationCurve::~WebAnimationCurve):
        (WebKit::WebAnimationCurve::WebAnimationCurve):
        * chromium/public/WebFloatAnimationCurve.h: Added.
        (WebCore):
        (WebKit):
        (WebFloatAnimationCurve):
        (WebKit::WebFloatAnimationCurve::WebFloatAnimationCurve):
        (WebKit::WebFloatAnimationCurve::~WebFloatAnimationCurve):
        * chromium/public/WebFloatKeyframe.h: Added.
        (WebKit):
        (WebKit::WebFloatKeyframe::WebFloatKeyframe):
        (WebFloatKeyframe):
        * chromium/public/WebTransformAnimationCurve.h: Added.
        (WebCore):
        (WebKit):
        (WebTransformAnimationCurve):
        (WebKit::WebTransformAnimationCurve::WebTransformAnimationCurve):
        (WebKit::WebTransformAnimationCurve::~WebTransformAnimationCurve):
        * chromium/public/WebTransformKeyframe.h: Added.
        (WebKit):
        (WebKit::WebTransformKeyframe::WebTransformKeyframe):
        (WebTransformKeyframe):

2012-06-30  Ian Vollick  <vollick@chromium.org>

        [chromium] CanvasLayerTextureUpdater needs to convert opaque rects back to content space.
        https://bugs.webkit.org/show_bug.cgi?id=90092

        The CanvasLayerTextureUpdater currently receives its opaque rects in
        layer space, but is expected to return them in content space and does
        not convert them. This patch adds this conversion. To avoid numerical
        errors, this patch also switches to using float rects to store opaque
        rects where appropriate.

        Reviewed by Adrienne Walker.

        * chromium/public/WebContentLayerClient.h:
        (WebKit):
        (WebContentLayerClient):

2012-06-29  Tony Payne  <tpayne@chromium.org>

        Remove type from screenColorProfile API
        https://bugs.webkit.org/show_bug.cgi?id=90299

        Reviewed by Adam Barth.

        * chromium/public/Platform.h:
        (WebKit::Platform::screenColorProfile): Removed type from chromium
        public API's version of screenColorProfile().

2012-06-28  James Robinson  <jamesr@chromium.org>

        [chromium] Remove mapRect and mapQuad from WebTransformationMatrix
        https://bugs.webkit.org/show_bug.cgi?id=90230

        Reviewed by Adrienne Walker.

        Removes clipping-unaware mapRect, mapQuad and projectPoint functions from the WebTransformationMatrix interface.

        * chromium/public/WebTransformationMatrix.h:
        (WebTransformationMatrix):

2012-06-28  Adrienne Walker  <enne@google.com>

        [chromium] Split WebScrollbar into WebPluginScrollbar and WebScrollbar
        https://bugs.webkit.org/show_bug.cgi?id=90117

        Reviewed by James Robinson.

        Move WebScrollbar from client API to Platform.

        * Platform.gypi:
        * chromium/public/WebScrollbar.h: Copied from Source/WebKit/chromium/public/WebPluginScrollbarClient.h.
        (WebKit):
        (WebScrollbar):
        (WebKit::WebScrollbar::~WebScrollbar):

2012-06-26  James Robinson  <jamesr@chromium.org>

        [chromium] Remove WebView::graphicsContext3D getter
        https://bugs.webkit.org/show_bug.cgi?id=89916

        Reviewed by Adrienne Walker.

        Remove unused getter.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-06-26  Dave Tu  <dtu@chromium.org>

        [chromium] Expose rendering statistics to WebWidget.
        https://bugs.webkit.org/show_bug.cgi?id=88268

        Reviewed by James Robinson.

        The WebKit side of a basic framework for exposing rendering statistics
        to Chromium's --enable-benchmarking extension.

        * chromium/public/WebLayerTreeView.h:
        (WebRenderingStatistics):
        (WebKit):
        (WebLayerTreeView):

2012-06-25  James Robinson  <jamesr@chromium.org>

        [chromium] Add WebLayer API for scrolling
        https://bugs.webkit.org/show_bug.cgi?id=89913

        Reviewed by Adrienne Walker.

        Adds WebScrollableLayer type to represent a layer that can be scrolled by the user. Currently WebContentLayers
        are scrollable and no other layer types are, although this might change in the future.

        * chromium/public/WebContentLayer.h:
        (WebKit::WebContentLayer::WebContentLayer):
        * chromium/public/WebLayer.h:
        (WebLayer):
        * chromium/public/WebScrollableLayer.h:
        (WebKit):
        (WebScrollableLayer):
        (WebKit::WebScrollableLayer::WebScrollableLayer):
        (WebKit::WebScrollableLayer::~WebScrollableLayer):
        (WebKit::WebScrollableLayer::operator=):

2012-06-25  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r121176.
        http://trac.webkit.org/changeset/121176
        https://bugs.webkit.org/show_bug.cgi?id=89934

        [chromium] browser_tests assert failed:
        FATAL:native_theme_win.cc(1541)] Check failed: false. Invalid
        part: 16 (Requested by ukai on #webkit).

        * chromium/public/win/WebThemeEngine.h:
        (WebKit::WebThemeEngine::paintProgressBar):

2012-06-25  James Robinson  <jamesr@chromium.org>

        [chromium] Use WebGraphicsContext3D in compositor implementation
        https://bugs.webkit.org/show_bug.cgi?id=89700

        Reviewed by Adrienne Walker.

        Puts all callback destructors in protected section and removes obsolete memory callback signature.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContextLostCallback):
        (WebGraphicsErrorMessageCallback):
        (WebGraphicsSwapBuffersCompleteCallbackCHROMIUM):
        (WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):

2012-06-25  Scott Graham  <scottmg@chromium.org>

        Plumb Scrollbar button dimensions through WebThemeEngine
        https://bugs.webkit.org/show_bug.cgi?id=89264

        Reviewed by James Robinson.

        Rather than making the height of the scrollbar buttons the same as the
        width of the scrollbar, delegate to the WebThemeEngine. This allows
        matching the Aura theme rather than the standard Windows theme.

        * chromium/public/win/WebThemeEngine.h:
        (WebKit):
        (WebThemeEngine):

2012-06-22  Kenneth Russell  <kbr@google.com>

        Unreviewed, rolling out r121064.
        http://trac.webkit.org/changeset/121064
        https://bugs.webkit.org/show_bug.cgi?id=88268

        Broke Chromium Mac build.

        * Platform.gypi:
        * chromium/public/WebLayerTreeView.h:
        (WebKit):
        (WebLayerTreeView):
        * chromium/public/WebRenderingStats.h: Removed.

2012-06-22  Dave Tu  <dtu@chromium.org>

        [chromium] Expose rendering statistics to WebWidget.
        https://bugs.webkit.org/show_bug.cgi?id=88268

        Reviewed by James Robinson.

        The WebKit side of a basic framework for exposing rendering statistics
        to Chromium's --enable-benchmarking extension.

        * chromium/public/WebLayerTreeView.h:
        (WebRenderingStatistics):
        (WebKit):
        (WebLayerTreeView):

2012-06-22  Jeff Timanus  <twiz@chromium.org>

        [Chromium] Change implementing a fast-path for copying GPU-accelerated Canvas2D instances to WebGL textures.
        https://bugs.webkit.org/show_bug.cgi?id=86275

        This change adds the necessary plumbing to the various rendering contexts to copy the backing store texture of
        a Canvas2D instance to be copied to a WebGL texture.  The GL_CHROMIUM_copy_texture extension is necessary
        because the backing-store for a GPU-accelerated skia Canvas2D is normally in BGRA format, which is not supported
        by glCopyTexImage.

        Reviewed by Kenneth Russell.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::copyTextureCHROMIUM):

2012-06-20  Christopher Cameron  <ccameron@chromium.org>

        [chromium] webkit-backface-visibility doesn't work with video
        https://bugs.webkit.org/show_bug.cgi?id=88908

        When determining a contents layer's backface culling, use the parent
        layer's transform and backface-visibility properties. Track which
        layers need this special treatment with useParentBackfaceVisibility
        and setUseParentBackfaceVisibility functions in WebCore::LayerChromium,
        WebKit::WebLayer, and WebCore::CCLayerImpl.

        Reviewed by Adrienne Walker.

        * chromium/public/WebLayer.h:
            (WebLayer):
                Add an accessor to specify that a layer should use its parent's
                backface culling behavior.

2012-06-19  Tony Payne  <tpayne@chromium.org>

        Add monitor profile support for Win
        https://bugs.webkit.org/show_bug.cgi?id=88565

        Reviewed by Eric Seidel.

        * chromium/public/Platform.h:
        (Platform):
        (WebKit::Platform::screenColorProfile):

2012-06-14  James Robinson  <jamesr@chromium.org>

        [chromium] Use WebImageLayer in GraphicsLayerChromium for image layers
        https://bugs.webkit.org/show_bug.cgi?id=89150

        Reviewed by Adrienne Walker.

        Adds a WebImageLayer type to represent layers backed by (guess what) Images.

        * Platform.gypi:
        * chromium/public/WebImageLayer.h: Added.
        (WebCore):
        (WebKit):
        (WebImageLayer):
        (WebKit::WebImageLayer::WebImageLayer):
        (WebKit::WebImageLayer::~WebImageLayer):

2012-06-14  James Robinson  <jamesr@chromium.org>

        [chromium] GraphicsLayerChromium should use WebContentLayer directly
        https://bugs.webkit.org/show_bug.cgi?id=89145

        Reviewed by Adrienne Walker.

        Add an opaque rect parameter to WebContentLayerClient::paintContents() for a client to (optionally) provide
        information about opaque portions of the painted region for culling optimizations.

        * chromium/public/WebContentLayerClient.h:
        (WebContentLayerClient):

2012-06-16  Robert Kroeger  <rjkroege@chromium.org>

        [chromium] Make the deviceScaleFactor dynamically adjustable.
        https://bugs.webkit.org/show_bug.cgi?id=88916

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h: Plumb setDeviceScaleFactor and
        deviceScaleFactor functions.
        (WebKit::WebLayerTreeView::Settings::Settings): Remove deviceScaleFactor from
        settings as it is now dynamic.
        (Settings):
        (WebLayerTreeView):

2012-06-14  Ian Vollick  <vollick@chromium.org>

        [chromium] Certain settings in CCSettings could be global
        https://bugs.webkit.org/show_bug.cgi?id=88384

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h:
        (WebCore):
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-06-14  Eugene Klyuchnikov  <eustas.bug@gmail.com>

        Web Inspector: Refactor message loop instrumentation.
        https://bugs.webkit.org/show_bug.cgi?id=88978

        Reviewed by Pavel Feldman.

        1) Remove "messageLoop" term
        2) Reuse WebThread::TaskObserver interface
        3) Move implementation (from embedder) to platform code.

        * chromium/public/WebThread.h:
        (TaskObserver): add "willProcessTask" method.

2012-06-13  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r120268.
        http://trac.webkit.org/changeset/120268
        https://bugs.webkit.org/show_bug.cgi?id=89060

        WebCompositor::setPerTilePaintingEnabled hits an assertion in
        DEBUG (Requested by dominicc|work on #webkit).

        * chromium/public/WebLayerTreeView.h:
        (WebCore):
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-06-13  Ian Vollick  <vollick@chromium.org>

        [chromium] Certain settings in CCSettings could be global
        https://bugs.webkit.org/show_bug.cgi?id=88384

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h:
        (WebCore):
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-06-12  James Robinson  <jamesr@chromium.org>

        [chromium] Port Canvas2DLayerBridge over to WebExternalTextureLayer
        https://bugs.webkit.org/show_bug.cgi?id=88597

        Reviewed by Adrienne Walker.

        This adds two new APIs to WebExternalTextureLayer that are used by the accelerated 2d canvas path:
        - willModifyTexture() is called to indicate that a system outside the compositor's control is about to modify
        the texture backing the WebExternalTextureLayer. This indicates to the compositor that it needs to avoid
        producing more frames using this texture until it can do a full commit - either by double buffering or
        appropriate flow control.

        - setRateLimitContext() is called to enable rate limiting for this texture. The rate limiting logic blocks if
        too many invalidate() or invalidateRect() calls are made on the texture outside of the context of a
        WebLayerTreeViewClient::updateAnimations() call to prevent a non-vsynced producer from getting too far ahead of
        the compositor.

        * chromium/public/WebExternalTextureLayer.h:
        (WebKit::WebExternalTextureLayer::WebExternalTextureLayer):
        (WebExternalTextureLayer):

2012-06-11  James Robinson  <jamesr@chromium.org>

        [chromium] Port DrawingBufferChromium from TextureLayerChromium over to WebExternalTextureLayer
        https://bugs.webkit.org/show_bug.cgi?id=86273

        Reviewed by Adrienne Walker.

        * Platform.gypi:
        * chromium/public/WebExternalTextureLayer.h:
        (WebKit):
        (WebExternalTextureLayer):
        * chromium/public/WebExternalTextureLayerClient.h: Copied from Source/WebKit/chromium/src/WebExternalTextureLayer.cpp.
        (WebKit):
        (WebTextureUpdater):
        (WebKit::WebTextureUpdater::~WebTextureUpdater):
        (WebExternalTextureLayerClient):
        (WebKit::WebExternalTextureLayerClient::~WebExternalTextureLayerClient):

2012-06-11  Dana Jansens  <danakj@chromium.org>

        [chromium] Separate CCVideoDrawQuad and from the layer tree and video provider by removing ManagedTexture and WebVideoFrame pointers from the quad
        https://bugs.webkit.org/show_bug.cgi?id=88363

        Reviewed by Adrienne Walker.

        * Platform.gypi:
        * chromium/public/WebVideoFrame.h:
        * chromium/src/WebVideoFrame.cpp: Removed.

2012-06-08  David Reveman  <reveman@chromium.org>

        [Chromium] Compositor doesn't support translucent root layers.
        https://bugs.webkit.org/show_bug.cgi?id=87821

        Reviewed by James Robinson.

        * chromium/public/WebLayer.h:
        (WebLayer):
        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-06-06  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move createMessagePortChannel to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85764

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createMessagePortChannel):
        * chromium/public/WebMessagePortChannel.h: Added.
        (WebKit):
        (WebMessagePortChannel):
        (WebKit::WebMessagePortChannel::~WebMessagePortChannel):
        * chromium/public/WebMessagePortChannelClient.h: Added.
        (WebKit):
        (WebMessagePortChannelClient):
        (WebKit::WebMessagePortChannelClient::~WebMessagePortChannelClient):

2012-06-05  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move createLocalStorageNamespace to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85766

        Reviewed by James Robinson.

        Part of a refactoring series. See tracking bug 82948.
        
        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createLocalStorageNamespace):
        * chromium/public/WebStorageArea.h: Added.
        (WebKit):
        (WebStorageArea):
        (WebKit::WebStorageArea::~WebStorageArea):
        (WebKit::WebStorageArea::setItem):
        (WebKit::WebStorageArea::removeItem):
        (WebKit::WebStorageArea::clear):
        * chromium/public/WebStorageNamespace.h: Added.
        (WebKit):
        (WebStorageNamespace):
        (WebKit::WebStorageNamespace::~WebStorageNamespace):
        (WebKit::WebStorageNamespace::isSameNamespace):

2012-06-01  Alexandre Elias  <aelias@google.com>

        [chromium] Software compositor initialization and base classes
        https://bugs.webkit.org/show_bug.cgi?id=87920

        Reviewed by James Robinson.

        Add a new setting to force software compositing.  In this mode,
        no GraphicsContext3D should ever be created.

        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-06-01  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Call clipboard methods directly
        https://bugs.webkit.org/show_bug.cgi?id=88038

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * chromium/public/WebClipboard.h:
        (WebKit::WebClipboard::sequenceNumber):

2012-05-31  Shawn Singh  <shawnsingh@chromium.org>

        [chromium] Migrate to WebTransformationMatrix
        https://bugs.webkit.org/show_bug.cgi?id=87788

        Reviewed by James Robinson.

        * chromium/public/WebTransformationMatrix.h:
        (WebTransformationMatrix):

2012-05-31  Dana Jansens  <danakj@chromium.org>

        [chromium] Add copy constructor to WebFilterOperations
        https://bugs.webkit.org/show_bug.cgi?id=87970

        Reviewed by James Robinson.

        * chromium/public/WebFilterOperations.h:
        (WebKit::WebFilterOperations::WebFilterOperations):

2012-05-31  Ian Vollick  <vollick@chromium.org>

        [chromium] create WebTransformOperation interface for chromium platform
        https://bugs.webkit.org/show_bug.cgi?id=87510

        Reviewed by James Robinson.

        * Platform.gypi:
        * chromium/public/WebTransformOperations.h: Added.
        (WebKit):
        (WebTransformOperations):
        (WebKit::WebTransformOperations::~WebTransformOperations):
        (WebKit::WebTransformOperations::WebTransformOperations):
        (WebKit::WebTransformOperations::operator=):

2012-05-30  Yury Semikhatsky  <yurys@chromium.org>

        Web Inspector: add MemoryUsageSupport::processMemorySizesInBytes
        https://bugs.webkit.org/show_bug.cgi?id=87830

        Reviewed by James Robinson.

        * chromium/public/Platform.h:
        (Platform):
        (WebKit::Platform::processMemorySizesInBytes): moved this method from
        Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h, also
        removed 'get' prefix.

2012-05-29  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move fileExists to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=87531

        Reviewed by Adam Barth.

        Call fileExists through fileUtilities(), not directly.

        * chromium/public/Platform.h:
        (Platform):

2012-05-29  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move fileExists to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=87531

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * chromium/public/Platform.h:
        (WebKit::Platform::fileExists):
        (Platform):

2012-05-29  Shawn Singh  <shawnsingh@chromium.org>

        [chromium] make WebTransformationMatrix object usable by non-webkit code
        https://bugs.webkit.org/show_bug.cgi?id=87315

        Reviewed by James Robinson.

        * chromium/public/WebTransformationMatrix.h:
        (WebKit::WebTransformationMatrix::~WebTransformationMatrix):
        (WebTransformationMatrix):

2012-05-25  Kinuko Yasuda  <kinuko@chromium.org>

        [chromium] Deprecate FileUtilities::getFileSize and getFileModifiedTime in favor of getFileMetadata
        https://bugs.webkit.org/show_bug.cgi?id=87492

        Reviewed by Adam Barth.

        * chromium/public/WebFileUtilities.h:

2012-05-25  Mark Pilgrim  <pilgrim@chromium.org>

        [Chomium] Move sandboxSupport to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=87518

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::sandboxSupport):
        * chromium/public/android/WebSandboxSupport.h: Added.
        (WebKit):
        (WebSandboxSupport):
        * chromium/public/linux/WebFontFamily.h: Added.
        (WebKit):
        (WebFontFamily):
        * chromium/public/linux/WebSandboxSupport.h: Added.
        (WebKit):
        (WebSandboxSupport):
        * chromium/public/mac/WebSandboxSupport.h: Added.
        (WebKit):
        (WebSandboxSupport):
        * chromium/public/win/WebSandboxSupport.h: Added.
        (WebKit):
        (WebSandboxSupport):

2012-05-17  Andrey Kosyakov  <caseq@chromium.org>

        [chromium] add instrumentation for compositing
        https://bugs.webkit.org/show_bug.cgi?id=83928

        Reviewed by James Robinson.

        - added willCommit() and didBeginFrame() methods for instrumentation of compositing.

        * chromium/public/WebLayerTreeViewClient.h:
        (WebLayerTreeViewClient):

2012-05-21  Kinuko Yasuda  <kinuko@chromium.org>

        Cleanup: add a file system call which captures the file metadata at once.
        https://bugs.webkit.org/show_bug.cgi?id=86995

        Reviewed by David Levin.

        * Platform.gypi: Added an entry for WebFileInfo.h.
        * chromium/public/WebFileInfo.h: Renamed from Source/WebKit/chromium/public/WebFileInfo.h.
        (WebKit::WebFileInfo::WebFileInfo):
        * chromium/public/WebFileUtilities.h:
        (WebKit):
        (WebKit::WebFileUtilities::getFileInfo): Added.

2012-05-24  Antoine Labour  <piman@chromium.org>

        [chromium] Add a setForceRenderSurface to WebLayer for test/bench purpose
        https://bugs.webkit.org/show_bug.cgi?id=87436

        Reviewed by James Robinson.

        * chromium/public/WebLayer.h:
        (WebLayer):

2012-05-24  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move queryLocalizedString to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85762

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::queryLocalizedString):
        * chromium/public/WebLocalizedString.h: Added.
        (WebKit):

2012-05-23  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r118218.
        http://trac.webkit.org/changeset/118218
        https://bugs.webkit.org/show_bug.cgi?id=87299

        breaks webkit win builder (Requested by pilgrim_google__ on
        #webkit).

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        * chromium/public/WebLocalizedString.h: Removed.

2012-05-23  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move themeEngine to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=87268

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::themeEngine):
        * chromium/public/android: Added.
        * chromium/public/android/WebThemeEngine.h: Added.
        (WebKit):
        (WebThemeEngine):
        (ScrollbarTrackExtraParams):
        (ButtonExtraParams):
        (TextFieldExtraParams):
        (MenuListExtraParams):
        (SliderExtraParams):
        (InnerSpinButtonExtraParams):
        (ProgressBarExtraParams):
        (WebKit::WebThemeEngine::getSize):
        (WebKit::WebThemeEngine::paint):
        * chromium/public/linux: Added.
        * chromium/public/linux/WebThemeEngine.h: Added.
        (WebKit):
        (WebThemeEngine):
        (ScrollbarTrackExtraParams):
        (ButtonExtraParams):
        (TextFieldExtraParams):
        (MenuListExtraParams):
        (SliderExtraParams):
        (InnerSpinButtonExtraParams):
        (ProgressBarExtraParams):
        (WebKit::WebThemeEngine::getSize):
        (WebKit::WebThemeEngine::paint):
        * chromium/public/mac: Added.
        * chromium/public/mac/WebThemeEngine.h: Added.
        (WebKit):
        (WebThemeEngine):
        (ScrollbarInfo):
        (WebKit::WebThemeEngine::paintScrollbarThumb):
        * chromium/public/win: Added.
        * chromium/public/win/WebThemeEngine.h: Added.
        (WebKit):
        (WebThemeEngine):
        (WebKit::WebThemeEngine::paintSpinButton):
        (WebKit::WebThemeEngine::paintProgressBar):

2012-05-23  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move queryLocalizedString to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85762

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::queryLocalizedString):
        * chromium/public/WebLocalizedString.h: Added.
        (WebKit):

2012-05-22  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Call canAccelerate2dCanvas directly
        https://bugs.webkit.org/show_bug.cgi?id=86893

        Reviewed by James Robinson.

        Part of a refactoring series. See tracking bug 82948.

        * chromium/public/Platform.h:
        (Platform):
        (WebKit::Platform::canAccelerate2dCanvas):

2012-05-22  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move cookieJar to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=86755

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::cookieJar):
        * chromium/public/WebCookie.h: Added.
        (WebKit):
        (WebKit::WebCookie::WebCookie):
        (WebCookie):
        * chromium/public/WebCookieJar.h: Added.
        (WebKit):
        (WebCookieJar):
        (WebKit::WebCookieJar::setCookie):
        (WebKit::WebCookieJar::cookies):
        (WebKit::WebCookieJar::cookieRequestHeaderFieldValue):
        (WebKit::WebCookieJar::rawCookies):
        (WebKit::WebCookieJar::deleteCookie):
        (WebKit::WebCookieJar::cookiesEnabled):
        (WebKit::WebCookieJar::~WebCookieJar):

2012-05-22  Gavin Peters  <gavinp@chromium.org>

        [Chromium] Remove old staging enum value WebURLRequest::TargetType::TargetIsPrerender
        https://bugs.webkit.org/show_bug.cgi?id=85021

        Reviewed by Adam Barth.

        * chromium/public/WebURLRequest.h:

2012-05-21  James Robinson  <jamesr@chromium.org>

        [chromium] Port chromium compositor to use WebFilterOperation(s)
        https://bugs.webkit.org/show_bug.cgi?id=87046

        Reviewed by Adrienne Walker.

        This changes WebFilterOperation / WebFilterOperations from being simple wrappers over WebCore types to being
        standalone. WebFilterOperation is a plain old data struct with some convenience constuctors and type
        assertions. Each WebFilterOperation contains a type tag and the parameters needed for each filter.
        WebFilterOperations represents an ordered list of WebFilterOperation instances and can be copied around as
        needed. It also exposes a few convenience functions about how the filters will modify pixels.

        * Platform.gypi:
        * chromium/public/WebFilterOperation.h:
        (WebFilterOperation):
        (WebKit::WebFilterOperation::type):
        (WebKit::WebFilterOperation::amount):
        (WebKit::WebFilterOperation::dropShadowOffset):
        (WebKit::WebFilterOperation::dropShadowColor):
        (WebKit::WebFilterOperation::createGrayscaleFilter):
        (WebKit::WebFilterOperation::createSepiaFilter):
        (WebKit::WebFilterOperation::createSaturateFilter):
        (WebKit::WebFilterOperation::createHueRotateFilter):
        (WebKit::WebFilterOperation::createInvertFilter):
        (WebKit::WebFilterOperation::createBrightnessFilter):
        (WebKit::WebFilterOperation::createContrastFilter):
        (WebKit::WebFilterOperation::createOpacityFilter):
        (WebKit::WebFilterOperation::createBlurFilter):
        (WebKit::WebFilterOperation::createDropShadowFilter):
        (WebKit::WebFilterOperation::equals):
        (WebKit::WebFilterOperation::WebFilterOperation):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebFilterOperations.h:
        (WebKit):
        (WebKit::WebFilterOperations::WebFilterOperations):
        (WebKit::WebFilterOperations::operator=):
        (WebFilterOperations):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/src/WebFilterOperations.cpp: Added.
        (WebKit):
        (WebFilterOperationsPrivate):
        (WebKit::WebFilterOperations::initialize):
        (WebKit::WebFilterOperations::destroy):
        (WebKit::WebFilterOperations::assign):
        (WebKit::WebFilterOperations::equals):
        (WebKit::WebFilterOperations::append):
        (WebKit::WebFilterOperations::clear):
        (WebKit::WebFilterOperations::isEmpty):
        (WebKit::spreadForStdDeviation):
        (WebKit::WebFilterOperations::getOutsets):
        (WebKit::WebFilterOperations::hasFilterThatMovesPixels):
        (WebKit::WebFilterOperations::hasFilterThatAffectsOpacity):
        (WebKit::WebFilterOperations::size):
        (WebKit::WebFilterOperations::at):

2012-05-17  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move Web Workers methods to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=86799

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::didStartWorkerRunLoop):
        (WebKit::Platform::didStopWorkerRunLoop):
        * chromium/public/WebWorkerRunLoop.h: Added.
        (WebCore):
        (WebKit):
        (WebWorkerRunLoop):
        (Task):
        (WebKit::WebWorkerRunLoop::Task::~Task):
        (WebKit::operator==):
        (WebKit::operator<):

2012-05-17  Dana Jansens  <danakj@chromium.org>

        [chromium] Scale all compositor output by the defaultDeviceScaleFactor
        https://bugs.webkit.org/show_bug.cgi?id=86051

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-05-17  Ami Fischman  <fischman@chromium.org>

        [Chromium] Store HTTP version in WebURLResponse
        https://bugs.webkit.org/show_bug.cgi?id=86522

        Reviewed by Adam Barth.

        * chromium/public/WebURLResponse.h:
        (WebURLResponse):

2012-05-17  Vangelis Kokkevis  <vangelis@chromium.org>

        [chromium] Expose layer tiling size options to WebSettings
        https://bugs.webkit.org/show_bug.cgi?id=86425

        Adding entries for tile size and max untiled layer size.
        
        Reviewed by Adrienne Walker.

        * chromium/public/WebLayerTreeView.h:
        (WebKit):
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-05-17  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move fileUtilities to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=86777

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::fileUtilities):
        * chromium/public/WebFileUtilities.h: Added.
        (WebKit):
        (WebFileUtilities):
        (WebKit::WebFileUtilities::revealFolderInOS):
        (WebKit::WebFileUtilities::fileExists):
        (WebKit::WebFileUtilities::deleteFile):
        (WebKit::WebFileUtilities::deleteEmptyDirectory):
        (WebKit::WebFileUtilities::getFileSize):
        (WebKit::WebFileUtilities::getFileModificationTime):
        (WebKit::WebFileUtilities::directoryName):
        (WebKit::WebFileUtilities::pathByAppendingComponent):
        (WebKit::WebFileUtilities::makeAllDirectories):
        (WebKit::WebFileUtilities::getAbsolutePath):
        (WebKit::WebFileUtilities::isDirectory):
        (WebKit::WebFileUtilities::filePathToURL):
        (WebKit::WebFileUtilities::openFile):
        (WebKit::WebFileUtilities::closeFile):
        (WebKit::WebFileUtilities::seekFile):
        (WebKit::WebFileUtilities::truncateFile):
        (WebKit::WebFileUtilities::readFromFile):
        (WebKit::WebFileUtilities::writeToFile):
        (WebKit::WebFileUtilities::~WebFileUtilities):

2012-05-11  James Robinson  <jamesr@chromium.org>

        [chromium] Convert GraphicsLayerChromium to use WebLayer types
        https://bugs.webkit.org/show_bug.cgi?id=86269

        Reviewed by Adrienne Walker.

        Adds some new WebLayer / WebContentLayer APIs that WebCore::GraphicsLayerChromium needs.

        * chromium/public/WebContentLayer.h:
        (WebCore):
        (WebKit):
        (WebContentLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebKit::WebLayer::isNull):
        (WebLayer):
        * chromium/public/WebTransformationMatrix.h:
        (WebKit::WebTransformationMatrix::~WebTransformationMatrix):
            Fix a memory leak - WebPrivateOwnPtr<>s have to be explicitly cleared.
        (WebTransformationMatrix):

2012-05-16  Dana Jansens  <danakj@chromium.org>

        [chromium] Clear the m_private pointer when destroying WebFilterOperations to avoid assert in WebPrivateOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=86654

        Reviewed by James Robinson.

        * chromium/public/WebFilterOperations.h:
        (WebKit::WebFilterOperations::~WebFilterOperations):
        (WebFilterOperations):

2012-05-16  Kenichi Ishibashi  <bashi@chromium.org>

        [Chromium] WebTransformationMatrixTest.verifyDefaultConstructorCreatesIdentityMatrix is failing
        https://bugs.webkit.org/show_bug.cgi?id=86589

        Reviewed by Kent Tamura.

        * chromium/public/WebTransformationMatrix.h: Added destructor.
        (WebTransformationMatrix):

2012-05-15  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r117204.
        http://trac.webkit.org/changeset/117204
        https://bugs.webkit.org/show_bug.cgi?id=86559

        causing win compilation failures (Requested by pilgrim_google_
        on #webkit).

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        * chromium/public/WebMessagePortChannel.h: Removed.
        * chromium/public/WebMessagePortChannelClient.h: Removed.

2012-05-15  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move createMessagePortChannel to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85764

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createMessagePortChannel):
        * chromium/public/WebMessagePortChannel.h: Added.
        (WebKit):
        (WebMessagePortChannel):
        (WebKit::WebMessagePortChannel::~WebMessagePortChannel):
        * chromium/public/WebMessagePortChannelClient.h: Added.
        (WebKit):
        (WebMessagePortChannelClient):
        (WebKit::WebMessagePortChannelClient::~WebMessagePortChannelClient):

2012-05-15  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move blobRegistry to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85765

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::blobRegistry):
        * chromium/public/WebBlobData.h: Added.
        (WebKit):
        (WebBlobData):
        (WebKit::WebBlobData::~WebBlobData):
        (WebKit::WebBlobData::WebBlobData):
        (WebKit::WebBlobData::isNull):
        * chromium/public/WebBlobRegistry.h: Added.
        (WebKit):
        (WebBlobRegistry):
        (WebKit::WebBlobRegistry::~WebBlobRegistry):

2012-05-15  James Robinson  <jamesr@chromium.org>

        [chromium] Remove WEBKIT_USING_(SKIA|CG) #defines
        https://bugs.webkit.org/show_bug.cgi?id=86536

        Reviewed by Adam Barth.

        The Chromium port always using Skia, so WEBKIT_USING_CG has been dead code for many moons.

        * chromium/public/WebCommon.h:

2012-05-15  James Robinson  <jamesr@chromium.org>

        [chromium] Move createOffscreenGraphicsContext3D() from WebKitPlatformSupport to Platform
        https://bugs.webkit.org/show_bug.cgi?id=86524

        Reviewed by Adam Barth.

        Moves createOffscreenGraphicsContext3D(), previously on WebKitPlatformSupport, to WebKit::Platform.

        * chromium/public/Platform.h:
        (Platform):
        (WebKit::Platform::createOffscreenGraphicsContext3D):

2012-05-14  Gavin Peters  <gavinp@chromium.org>

        Add Prerenderer, PrerenderHandle and a chromium interface for Prerendering.
        https://bugs.webkit.org/show_bug.cgi?id=85005

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebPrerender.h:
        (WebKit::WebPrerender::referrer):
        (WebCore):
        (WebPrerender):
        * chromium/public/WebPrerenderingSupport.h:
        (WebKit):
        (WebPrerenderingSupport):
        * chromium/public/WebURLRequest.h:
        * chromium/src/WebPrerenderingSupport.cpp: Added.
        (WebKit):
        (WebKit::WebPrerenderingSupport::initialize):
        (WebKit::WebPrerenderingSupport::shutdown):
        (WebKit::WebPrerenderingSupport::current):

2012-05-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r116812.
        http://trac.webkit.org/changeset/116812
        https://bugs.webkit.org/show_bug.cgi?id=86313

        Appears to be causing a top crash (Requested by abarth on
        #webkit).

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        * chromium/public/WebStorageArea.h: Removed.
        * chromium/public/WebStorageNamespace.h: Removed.

2012-05-11  Shawn Singh  <shawnsingh@chromium.org>

        [chromium] Plumb --show-paint-rects to accelerated compositor
        https://bugs.webkit.org/show_bug.cgi?id=86255

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-05-11  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move createLocalStorageNamespace to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85766

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createLocalStorageNamespace):
        * chromium/public/WebStorageArea.h: Added.
        (WebKit):
        (WebStorageArea):
        (WebKit::WebStorageArea::~WebStorageArea):
        (WebKit::WebStorageArea::setItem):
        (WebKit::WebStorageArea::removeItem):
        (WebKit::WebStorageArea::clear):
        * chromium/public/WebStorageNamespace.h: Added.
        (WebKit):
        (WebStorageNamespace):
        (WebKit::WebStorageNamespace::~WebStorageNamespace):
        (WebKit::WebStorageNamespace::isSameNamespace):

2012-05-11  Shawn Singh  <shawnsingh@chromium.org>

        [chromium] Create WebTransformationMatrix interface for chromium platform
        https://bugs.webkit.org/show_bug.cgi?id=86049

        Reviewed by James Robinson.

        * Platform.gyp/Platform.gyp:
        * Platform.gypi:
        * chromium/public/WebTransformationMatrix.h: Added.
        (WebCore):
        (WebKit):
        (WebTransformationMatrix):

2012-05-10  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Remove WEBKIT_USING_SKIA ifdefs that are always true
        https://bugs.webkit.org/show_bug.cgi?id=86121

        Reviewed by Adam Barth.

        Chromium always uses Skia now, so this just removes the barriers
        around code that was previously #if'd.

        * chromium/public/WebCanvas.h:
        (WebKit):
        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::onCreateGrGLInterface):
        * chromium/public/WebImage.h:
        (WebImage):

2012-05-10  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Remove dead code behind unused WEBKIT_USING_CG
        https://bugs.webkit.org/show_bug.cgi?id=86018

        Reviewed by Adam Barth.

        We never use CoreGraphics as the backend for GraphicsContext in
        Chromium, so this is all dead code.

        * chromium/public/WebCanvas.h:
        (WebKit):
        * chromium/public/WebImage.h:
        (WebImage):

2012-05-09  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move clipboard to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85758

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::clipboard):
        * chromium/public/WebClipboard.h: Added.
        (WebKit):
        (WebClipboard):
        (WebKit::WebClipboard::sequenceNumber):
        (WebKit::WebClipboard::isFormatAvailable):
        (WebKit::WebClipboard::readAvailableTypes):
        (WebKit::WebClipboard::readPlainText):
        (WebKit::WebClipboard::readHTML):
        (WebKit::WebClipboard::readImage):
        (WebKit::WebClipboard::readCustomData):
        (WebKit::WebClipboard::writePlainText):
        (WebKit::WebClipboard::writeHTML):
        (WebKit::WebClipboard::writeURL):
        (WebKit::WebClipboard::writeImage):
        (WebKit::WebClipboard::writeDataObject):
        (WebKit::WebClipboard::~WebClipboard):
        * chromium/public/WebDragData.h: Added.
        (WebKit):
        (WebDragData):
        (WebKit::WebDragData::~WebDragData):
        (WebKit::WebDragData::WebDragData):
        (WebKit::WebDragData::operator=):
        (WebKit::WebDragData::isNull):
        * chromium/public/WebImage.h: Added.
        (WebKit):
        (WebImage):
        (WebKit::WebImage::~WebImage):
        (WebKit::WebImage::WebImage):
        (WebKit::WebImage::operator=):
        (WebKit::WebImage::getSkBitmap):
        (WebKit::WebImage::init):
        (WebKit::WebImage::getCGImageRef):

2012-05-09  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Adding the possibility of port specific information in MediaStreamDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=85794

        Reviewed by Adam Barth.

        To facilitate for ports I have added an ExtraData field that can be used for whatever purpose is needed.

        * chromium/public/WebMediaStreamDescriptor.h:
        (ExtraData):
        (WebKit::WebMediaStreamDescriptor::ExtraData::~ExtraData):
        (WebMediaStreamDescriptor):

2012-05-07  Mark Pilgrim  <pilgrim@chromium.org>

        [Chromium] Move fileSystem to Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=85760

        Reviewed by Adam Barth.

        Part of a refactoring series. See tracking bug 82948.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::fileSystem):
        * chromium/public/WebFileSystem.h: Added.
        (WebKit):
        (WebFileSystem):
        (WebKit::WebFileSystem::move):
        (WebKit::WebFileSystem::copy):
        (WebKit::WebFileSystem::remove):
        (WebKit::WebFileSystem::removeRecursively):
        (WebKit::WebFileSystem::readMetadata):
        (WebKit::WebFileSystem::createFile):
        (WebKit::WebFileSystem::createDirectory):
        (WebKit::WebFileSystem::fileExists):
        (WebKit::WebFileSystem::directoryExists):
        (WebKit::WebFileSystem::readDirectory):
        (WebKit::WebFileSystem::createFileWriter):
        (WebKit::WebFileSystem::createSnapshotFileAndReadMetadata):
        (WebKit::WebFileSystem::~WebFileSystem):

2012-05-07  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Rename MediaStreamCenter::didConstructMediaStream
        https://bugs.webkit.org/show_bug.cgi?id=85796

        Reviewed by Adam Barth.

        Renamed WebMediaStreamCenter::didConstructMediaStream to didCreateMediaStream,
        and change so that it is only called for MediaStreams created from JS.
        Also send out the WebMediaStreamDescriptor non-const instead.

        * chromium/public/WebMediaStreamCenter.h:
        (WebKit::WebMediaStreamCenter::didCreateMediaStream):
        (WebMediaStreamCenter):
        (WebKit::WebMediaStreamCenter::didConstructMediaStream):

2012-05-07  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Allow UserMediaRequest::succeed to take an MediaStreamDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=85798

        Reviewed by Adam Barth.

        Adding another UserMediaRequest::succeed function that takes an MediaStreamDescriptor
        instead of the two MediaStreamSource arrays.

        * chromium/public/WebMediaStreamCenter.h:
        (WebMediaStreamCenter):
        (WebKit::WebMediaStreamCenter::constructSDP):

2012-05-04  Tommy Widenflycht  <tommyw@google.com>

        MediaStream API: Make PeerConnection00's API fully compliant with the draft
        https://bugs.webkit.org/show_bug.cgi?id=85491

        Reviewed by Adam Barth.

        * chromium/public/WebPeerConnection00HandlerClient.h:

2012-05-02  Dana Jansens  <danakj@chromium.org>

        [chromium] Don't occlude pixels in a surface that are needed for a background filter blur
        https://bugs.webkit.org/show_bug.cgi?id=84317

        Reviewed by Adrienne Walker.

        * chromium/public/WebFilterOperation.h:

2012-05-01  Gavin Peters  <gavinp@chromium.org>

        [Chromium] Fix WebPrerender::referrer() thunk.
        https://bugs.webkit.org/show_bug.cgi?id=85290

        Reviewed by Dimitri Glazkov.

        * chromium/public/WebPrerender.h:
        (WebKit::WebPrerender::referrer):

2012-04-30  Gavin Peters  <gavinp@chromium.org>

        [Chromium] Add thunk headers for staging Prerendering API.
        https://bugs.webkit.org/show_bug.cgi?id=84880

        Reviewed by Adam Barth.

        These empty headers will be replaced by the actual API when Bug 85005 is commited.

        * Platform.gypi:
        * chromium/public/WebPrerender.h: Added.
        (WebKit):
        (WebPrerender):
        (ExtraData):
        (WebKit::WebPrerender::ExtraData::~ExtraData):
        (WebKit::WebPrerender::url):
        (WebKit::WebPrerender::referrer):
        (WebKit::WebPrerender::referrerPolicy):
        (WebKit::WebPrerender::setExtraData):
        (WebKit::WebPrerender::extraData):
        (WebKit::WebPrerender::WebPrerender):
        (WebKit::WebPrerender::~WebPrerender):
        * chromium/public/WebPrerenderingSupport.h: Added.
        (WebKit):
        (WebPrerenderingSupport):
        (WebKit::WebPrerenderingSupport::initialize):
        (WebKit::WebPrerenderingSupport::shutdown):
        (WebKit::WebPrerenderingSupport::current):
        (WebKit::WebPrerenderingSupport::add):
        (WebKit::WebPrerenderingSupport::cancel):
        (WebKit::WebPrerenderingSupport::abandon):
        (WebKit::WebPrerenderingSupport::WebPrerenderingSupport):
        (WebKit::WebPrerenderingSupport::~WebPrerenderingSupport):

2012-04-26  James Robinson  <jamesr@chromium.org>

        [chromium] Separate IOSurface layer type from texture layers
        https://bugs.webkit.org/show_bug.cgi?id=85030

        Reviewed by Adrienne Walker.

        Adds a new layer type for IOSurface backed layers, instead of sharing that functionality in
        WebExternalTextureLayer. IOSurface backed layers do not share any other properties with external texture layers.

        * Platform.gypi:
        * chromium/public/WebExternalTextureLayer.h:
        (WebExternalTextureLayer):
        * chromium/public/WebIOSurfaceLayer.h:
        (WebCore):
        (WebKit):
        (WebIOSurfaceLayer):
        (WebKit::WebIOSurfaceLayer::WebIOSurfaceLayer):
        (WebKit::WebIOSurfaceLayer::~WebIOSurfaceLayer):

2012-04-25  Dana Jansens  <danakj@chromium.org>

        [chromium] Remove guarded virtual methods from WebFilterOperation API
        https://bugs.webkit.org/show_bug.cgi?id=84926

        Reviewed by James Robinson.

        We remove the virtual methods from the WebFilterOperation class,
        and use an enum in the base class to distinguish which subclass
        the object is. Then WebFilterOperations can access the correct
        subclass to get the filter operation's data and construct a
        WebCore::FilterOperation to store internally.

        * chromium/public/WebFilterOperation.h:
        (WebKit::WebFilterOperation::WebFilterOperation):
        (WebKit::WebBasicColorMatrixFilterOperation::WebBasicColorMatrixFilterOperation):
        (WebBasicColorMatrixFilterOperation):
        (WebKit::WebBasicComponentTransferFilterOperation::WebBasicComponentTransferFilterOperation):
        (WebBasicComponentTransferFilterOperation):
        (WebKit::WebBlurFilterOperation::WebBlurFilterOperation):
        (WebKit::WebDropShadowFilterOperation::WebDropShadowFilterOperation):

2012-04-25  Gavin Peters  <gavinp@chromium.org>

        [Chromium] Fix some conditional compilation logic in Platform
        https://bugs.webkit.org/show_bug.cgi?id=83798

        Reviewed by Darin Fisher.

        * chromium/public/WebURLError.h:
        (WebURLError):
        * chromium/public/WebURLRequest.h:
        (WebURLRequest):
        * chromium/public/WebURLResponse.h:
        (WebURLResponse):

2012-04-25  Gavin Peters  <gavinp@chromium.org>

        Move WebReferrerPolicy.h from WebKit to Platform
        https://bugs.webkit.org/show_bug.cgi?id=84539

        Reviewed by Adam Barth.

        * Platform.gypi:
        * chromium/public/WebReferrerPolicy.h: Copied from Source/WebKit/chromium/public/WebReferrerPolicy.h.
        (WebKit):

2012-04-24  Yuzhu Shen  <yzshen@chromium.org>

        [chromium] Add a description field in WebURLError and show failure description in the inspector network tab.
        https://bugs.webkit.org/show_bug.cgi?id=84566

        Reviewed by Pavel Feldman.

        * chromium/public/WebURLError.h:
        (WebURLError):

2012-04-18  James Robinson  <jamesr@chromium.org>

        [chromium] Use TextureLayerChromium for WebGL content instead of a dedicated layer type
        https://bugs.webkit.org/show_bug.cgi?id=84311

        Reviewed by Adrienne Walker.

        Remove some unused getters.

        * chromium/public/WebExternalTextureLayer.h:
        (WebExternalTextureLayer):

2012-04-20  Dana Jansens  <danakj@chromium.org>

        [chromium] WebFilterOperations API does not compile or dynamically link
        https://bugs.webkit.org/show_bug.cgi?id=84506

        Reviewed by James Robinson.

        Non-inline functions need WEBKIT_EXPORT in their declarations,
        and the type used in the WebPrivateOwnPtr needs to be forward-
        declared even when WEBKIT_IMPLEMENTATION is not defined.

        * chromium/public/WebFilterOperations.h:
        (WebKit::WebFilterOperations::WebFilterOperations):
        (WebFilterOperations):

2012-04-20  James Robinson  <jamesr@chromium.org>

        [chromium] Plumb a compositor surface ready notification through to the threaded compositor
        https://bugs.webkit.org/show_bug.cgi?id=84305

        Reviewed by Adrienne Walker.

        Add a notification for when the compositor surface associated with a given view is ready to use.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-04-16  James Robinson  <jamesr@chromium.org>

        [chromium] Convert WebPluginContainerImpl over to use WebExternalTextureLayer
        https://bugs.webkit.org/show_bug.cgi?id=84120

        Reviewed by Adrienne Walker.

        This adds support for IO surface backed WebExternalTextureLayer, used by CoreAnimation plugins on OS X and moves
        some functionality used by multiple WebLayer subclasses up to the base class.

        * chromium/public/WebContentLayer.h:
        (WebContentLayer):
        * chromium/public/WebExternalTextureLayer.h:
        (WebCore):
        (WebExternalTextureLayer):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::unwrap):

2012-04-17  Dana Jansens  <danakj@chromium.org>

        [chromium] Fix gyp for WebFilterOperation.h and WebFilterOperations.h
        https://bugs.webkit.org/show_bug.cgi?id=84182

        Reviewed by James Robinson.

        * Platform.gypi:

2012-04-16  Kent Tamura  <tkent@chromium.org>

        [Chromium] Fix Chromium-Mac build
        https://bugs.webkit.org/show_bug.cgi?id=80054

        * chromium/public/WebFilterOperations.h:
        (WebKit): WebFilterOperation is a struct, not a class.

2012-04-16  Dana Jansens  <danakj@chromium.org>

        [chromium] Expose compositor filters to Aura through WebLayer
        https://bugs.webkit.org/show_bug.cgi?id=80054

        Reviewed by James Robinson.

        * chromium/public/WebFilterOperation.h: Added.
        (WebKit):
        (WebFilterOperation):
        (WebKit::WebFilterOperation::WebFilterOperation):
        (WebBasicColorMatrixFilterOperation):
        (WebKit::WebBasicColorMatrixFilterOperation::WebBasicColorMatrixFilterOperation):
        (WebBasicComponentTransferFilterOperation):
        (WebKit::WebBasicComponentTransferFilterOperation::WebBasicComponentTransferFilterOperation):
        (WebBlurFilterOperation):
        (WebKit::WebBlurFilterOperation::WebBlurFilterOperation):
        (WebDropShadowFilterOperation):
        (WebKit::WebDropShadowFilterOperation::WebDropShadowFilterOperation):
        * chromium/public/WebFilterOperations.h: Added.
        (WebKit):
        (WebFilterOperations):
        * chromium/public/WebLayer.h:
        (WebKit):
        (WebLayer):

2012-04-13  James Robinson  <jamesr@chromium.org>

        [chromium] Expose WebVideoLayer to Platform API and port WebMediaPlayerClientImpl to using it
        https://bugs.webkit.org/show_bug.cgi?id=83963

        Reviewed by Adrienne Walker.

        Adds a compositor layer type for video, WebVideoLayer, and a WebVideoProvider interface.

        * Platform.gypi:
        * chromium/public/WebContentLayer.h:
        (WebContentLayer):
        * chromium/public/WebLayer.h:
        (WebLayer):
        (WebKit::WebLayer::unwrap):
        * chromium/public/WebVideoFrameProvider.h: Renamed from Source/WebCore/platform/graphics/chromium/VideoFrameProvider.h.
        (WebKit):
        (WebVideoFrameProvider):
        (WebKit::WebVideoFrameProvider::~WebVideoFrameProvider):
        (Client):
        * chromium/public/WebVideoLayer.h: Copied from Source/WebKit/chromium/src/WebContentLayer.cpp.
        (WebCore):
        (WebKit):
        (WebVideoLayer):
        (WebKit::WebVideoLayer::WebVideoLayer):
        (WebKit::WebVideoLayer::~WebVideoLayer):

2012-04-11  James Robinson  <jamesr@chromium.org>

        [chromium] Remove unused compositeToTexture / compositeOffscreen setting
        https://bugs.webkit.org/show_bug.cgi?id=83733

        Reviewed by Adrienne Walker.

        Remove compositeOffscreen setting. This was an experiment that is no longer needed.

        * chromium/public/WebLayerTreeView.h:
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):

2012-04-13  James Robinson  <jamesr@chromium.org>

        [chromium] Move WebVideoFrame into Platform and remove WebCore::VideoFrameChromium wrapper API
        https://bugs.webkit.org/show_bug.cgi?id=83851

        Reviewed by Adam Barth.

        Move WebVideoFrame API into Platform.

        * Platform.gypi:
        * chromium/public/WebVideoFrame.h: Renamed from Source/WebCore/platform/graphics/chromium/VideoFrameChromium.h.
        (WebKit):
        (WebVideoFrame):
        (WebKit::WebVideoFrame::~WebVideoFrame):
        (WebKit::WebVideoFrame::format):
        (WebKit::WebVideoFrame::width):
        (WebKit::WebVideoFrame::height):
        (WebKit::WebVideoFrame::planes):
        (WebKit::WebVideoFrame::stride):
        (WebKit::WebVideoFrame::data):
        (WebKit::WebVideoFrame::textureId):
        (WebKit::WebVideoFrame::textureTarget):
        * chromium/src/WebVideoFrame.cpp: Renamed from Source/WebCore/platform/graphics/chromium/VideoFrameChromium.cpp.
        (WebKit):

2012-04-12  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r114075.
        http://trac.webkit.org/changeset/114075
        https://bugs.webkit.org/show_bug.cgi?id=83857

        Breaks compile (Requested by jamesr on #webkit).

        * Platform.gypi:

2012-04-12  James Robinson  <jamesr@chromium.org>

        [chromium] Move WebVideoFrame into Platform and remove WebCore::VideoFrameChromium wrapper API
        https://bugs.webkit.org/show_bug.cgi?id=83851

        Reviewed by Adam Barth.

        Move WebVideoFrame API into Platform.

        * Platform.gypi:
        * chromium/public/WebVideoFrame.h: Renamed from Source/WebCore/platform/graphics/chromium/VideoFrameChromium.h.
        (WebKit):
        (WebVideoFrame):
        (WebKit::WebVideoFrame::~WebVideoFrame):
        (WebKit::WebVideoFrame::format):
        (WebKit::WebVideoFrame::width):
        (WebKit::WebVideoFrame::height):
        (WebKit::WebVideoFrame::planes):
        (WebKit::WebVideoFrame::stride):
        (WebKit::WebVideoFrame::data):
        (WebKit::WebVideoFrame::textureId):
        (WebKit::WebVideoFrame::textureTarget):
        * chromium/src/WebVideoFrame.cpp: Renamed from Source/WebCore/platform/graphics/chromium/VideoFrameChromium.cpp.
        (WebKit):

2012-04-11  David Dorwin  <ddorwin@chromium.org>

        Add keySystem attribute to canPlayType() for Encrypted Media Extensions
        https://bugs.webkit.org/show_bug.cgi?id=82973

        Reviewed by Adam Barth.

        The new attribute is behind the ENABLE(ENCRYPTED_MEDIA) feature define.
        Implementation is based on v0.1 of the draft proposal at
        http://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/encrypted-media.html#extensions.

        * chromium/public/WebMimeRegistry.h:
        (WebKit::WebMimeRegistry::supportsMediaMIMEType):

2012-04-09  Dana Jansens  <danakj@chromium.org>

        [chromium] Viewport is not filled when out of texture memory on mac
        https://bugs.webkit.org/show_bug.cgi?id=83351

        Reviewed by Adrienne Walker.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):

2012-04-09  James Robinson  <jamesr@chromium.org>

        [chromium] CCLayerTreeHost / WebLayerTreeView should be single ownership, not RefCounted
        https://bugs.webkit.org/show_bug.cgi?id=83413

        Reviewed by Adrienne Walker.

        This makes WebLayerTreeView noncopyable to better match the underlying semantics. There is no code currently
        that attempts to copy WebLayerTreeView instances.

        * chromium/public/WebLayerTreeView.h:
        (WebKit):
        (WebLayerTreeView):

2012-04-04  Adam Barth  <abarth@webkit.org>

        figure out how to export webcore symbols from webkit.dll properly
        https://bugs.webkit.org/show_bug.cgi?id=83105

        Reviewed by Dimitri Glazkov.

        Unwind our ugly, ugly hack to make the Windows component build work.

        * chromium/public/WebMediaStreamSourcesRequest.h:
        (WebMediaStreamSourcesRequest):

2012-04-03  Adam Barth  <abarth@webkit.org>

        Unreviewed. This patch adds an ugly, ugly hack to bandaid over the
        Windows component build. See comments in the code for details.

        * chromium/public/WebMediaStreamSourcesRequest.h:
        (WebMediaStreamSourcesRequest):

2012-04-02  Zhenyao Mo  <zmo@google.com>

        Implement WebGLShaderPrecisionFormat
        https://bugs.webkit.org/show_bug.cgi?id=75925

        Reviewed by Kenneth Russell.

        * chromium/public/WebGraphicsContext3D.h: Add getShaderPrecisionFormat().
        (WebGraphicsContext3D):

2012-04-03  Adam Barth  <abarth@webkit.org>

        Attempt to fix the Windows component build by including these headers
        rather than forward declaring these objects.

        * chromium/public/WebMediaStreamSourcesRequest.h:
        (WebKit):

2012-04-02  Adam Barth  <abarth@webkit.org>

        [Chromium] Move a number of virtual functions from WebKitPlatformSupport.h into Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=82865

        Reviewed by Kent Tamura.

        Moving these functions into Platform.h allows them to be called from
        Platform (aka WebCore/platform), as discussed in 
        https://lists.webkit.org/pipermail/webkit-dev/2012-March/020166.html

        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::mimeRegistry):
        (WebKit::Platform::audioHardwareSampleRate):
        (WebKit::Platform::audioHardwareBufferSize):
        (WebKit::Platform::createAudioDevice):
        (WebKit::Platform::sampleGamepads):
        (WebKit::Platform::visitedLinkHash):
        (WebKit::Platform::isLinkVisited):
        (WebKit::Platform::signedPublicKeyAndChallengeString):
        (WebKit::Platform::memoryUsageMB):
        (WebKit::Platform::actualMemoryUsageMB):
        (WebKit::Platform::lowMemoryUsageMB):
        (WebKit::Platform::highMemoryUsageMB):
        (WebKit::Platform::highUsageDeltaMB):
        (WebKit::Platform::prefetchHostName):
        (WebKit::Platform::createSocketStreamHandle):
        (WebKit::Platform::userAgent):
        (WebKit::Platform::cacheMetadata):
        (WebKit::Platform::createThread):
        (WebKit::Platform::currentThread):
        (WebKit::Platform::decrementStatsCounter):
        (WebKit::Platform::incrementStatsCounter):
        (WebKit::Platform::loadResource):
        (WebKit::Platform::loadAudioResource):
        (WebKit::Platform::sandboxEnabled):
        (WebKit::Platform::suddenTerminationChanged):
        (WebKit::Platform::defaultLocale):
        (WebKit::Platform::currentTime):
        (WebKit::Platform::monotonicallyIncreasingTime):
        (WebKit::Platform::setSharedTimerFiredFunction):
        (WebKit::Platform::setSharedTimerFireInterval):
        (WebKit::Platform::stopSharedTimer):
        (WebKit::Platform::callOnMainThread):
        (WebKit::Platform::getTraceCategoryEnabledFlag):
        (WebKit::Platform::addTraceEvent):
        (WebKit::Platform::histogramCustomCounts):
        (WebKit::Platform::histogramEnumeration):

2012-04-02  Adam Barth  <abarth@webkit.org>

        [Chromium] Move another block of headers from WebKit/chromium/public/platform to Platform/chromium/public
        https://bugs.webkit.org/show_bug.cgi?id=82862

        Rubber-stamped by Eric Seidel.

        * Platform.gypi:
        * chromium/public/WebAudioBus.h: Copied from Source/WebKit/chromium/public/platform/WebAudioBus.h.
        * chromium/public/WebAudioDevice.h: Copied from Source/WebKit/chromium/public/platform/WebAudioDevice.h.
        * chromium/public/WebGamepad.h: Copied from Source/WebKit/chromium/public/platform/WebGamepad.h.
        * chromium/public/WebGamepads.h: Copied from Source/WebKit/chromium/public/platform/WebGamepads.h.
        * chromium/public/WebSocketStreamError.h: Copied from Source/WebKit/chromium/public/platform/WebSocketStreamError.h.
        * chromium/public/WebSocketStreamHandle.h: Copied from Source/WebKit/chromium/public/platform/WebSocketStreamHandle.h.
        * chromium/public/WebSocketStreamHandleClient.h: Copied from Source/WebKit/chromium/public/platform/WebSocketStreamHandleClient.h.

2012-04-01  Adam Barth  <abarth@webkit.org>

        [Chromium] Move thread-related APIs from WebKit into Platform
        https://bugs.webkit.org/show_bug.cgi?id=82858

        Reviewed by Eric Seidel.

        * Platform.gypi:
        * chromium/public/WebThread.h: Copied from Source/WebKit/chromium/public/platform/WebThread.h.
        * chromium/public/WebThreadSafeData.h: Copied from Source/WebKit/chromium/public/platform/WebThreadSafeData.h.

2012-03-29  Adam Barth  <abarth@webkit.org>

        [Chromium] Delete WebKit/chromium/bridge
        https://bugs.webkit.org/show_bug.cgi?id=82677

        Reviewed by James Robinson.

        This patch moves all the MediaStream-related platform APIs from
        WebKit/chromium/public/platform into Platform/chromium/public. This is
        part of a larger project to more clearly separate the platform and
        client portions of the Chromium WebKit API.

        * Platform.gypi:
        * chromium/public/Platform.h:
        (WebKit):
        (Platform):
        (WebKit::Platform::createPeerConnectionHandler):
        (WebKit::Platform::createPeerConnection00Handler):
        (WebKit::Platform::createMediaStreamCenter):
        * chromium/public/WebICECandidateDescriptor.h: Copied from Source/WebKit/chromium/public/platform/WebICECandidateDescriptor.h.
        * chromium/public/WebICEOptions.h: Copied from Source/WebKit/chromium/public/platform/WebICEOptions.h.
        * chromium/public/WebMediaHints.h: Copied from Source/WebKit/chromium/public/platform/WebMediaHints.h.
        * chromium/public/WebMediaStreamCenter.h: Copied from Source/WebKit/chromium/public/platform/WebMediaStreamCenter.h.
        * chromium/public/WebMediaStreamCenterClient.h: Copied from Source/WebKit/chromium/public/platform/WebMediaStreamCenterClient.h.
        * chromium/public/WebMediaStreamComponent.h: Copied from Source/WebKit/chromium/public/platform/WebMediaStreamComponent.h.
        * chromium/public/WebMediaStreamDescriptor.h: Copied from Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h.
        * chromium/public/WebMediaStreamSource.h: Copied from Source/WebKit/chromium/public/platform/WebMediaStreamSource.h.
        * chromium/public/WebMediaStreamSourcesRequest.h: Copied from Source/WebKit/chromium/public/platform/WebMediaStreamSourcesRequest.h.
        * chromium/public/WebPeerConnection00Handler.h: Copied from Source/WebKit/chromium/public/platform/WebPeerConnection00Handler.h.
        * chromium/public/WebPeerConnection00HandlerClient.h: Copied from Source/WebKit/chromium/public/platform/WebPeerConnection00HandlerClient.h.
        * chromium/public/WebPeerConnectionHandler.h: Copied from Source/WebKit/chromium/public/platform/WebPeerConnectionHandler.h.
        (WebPeerConnectionHandler):
        * chromium/public/WebPeerConnectionHandlerClient.h: Copied from Source/WebKit/chromium/public/platform/WebPeerConnectionHandlerClient.h.
        * chromium/public/WebSessionDescriptionDescriptor.h: Copied from Source/WebKit/chromium/public/platform/WebSessionDescriptionDescriptor.h.
        * chromium/public/WebVector.h: Copied from Source/WebKit/chromium/public/platform/WebVector.h.

2012-03-30  David Barr  <davidbarr@chromium.org>

        Split up top-level .gitignore and .gitattributes
        https://bugs.webkit.org/show_bug.cgi?id=82687

        Reviewed by Tor Arne Vestbø.

        * Platform.gyp/.gitignore: Added.

2012-03-29  Adam Barth  <abarth@webkit.org>

        [Chromium] Move createURLLoader() into Platform
        https://bugs.webkit.org/show_bug.cgi?id=82587

        Reviewed by James Robinson.

        This patch introduces a base class for WebKitPlatformSupport that we
        can use to incrementally more APIs from WebKit/chromium/public/platform
        into Platform/chromium/public. Using this technique lets us avoid
        making changes in the embedder during the transition.

        This patch moves createURLLoader() because it's necessary for
        ResourceHandle.  This is the third patch in this sequence:
        https://github.com/abarth/webkit/compare/master...webcore-platform

        * Platform.gypi:
        * chromium/public/Platform.h: Added.
        (WebKit):
        (Platform):
        (WebKit::Platform::createURLLoader):
        (WebKit::Platform::~Platform):
        * chromium/src/Platform.cpp: Added.
        (WebKit):
        (WebKit::Platform::initialize):
        (WebKit::Platform::shutdown):
        (WebKit::Platform::current):

2012-03-28  Adam Barth  <abarth@webkit.org>

        [Chromium] Move APIs related to ResourceHandle into Platform
        https://bugs.webkit.org/show_bug.cgi?id=82553

        Reviewed by James Robinson.

        This patch is the first patch in this series:
        https://github.com/abarth/webkit/compare/master...webcore-platform

        The goal of these patches is to move WebCore::ResourceHandle out of
        Chromium's WebKit layer and into WebCore/platform, where it belongs.

        This patch moves the Chromium-WebKit APIs used by ResourceHandle out of
        the WebKit layer and into the Plaform layer. These are APIs that WebKit
        uses to call "down" to manipulate the underlying platform (rather than
        "up" to the client to make decisions). The long-term plan is to move
        all of the headers in WebKit/chromium/public/platform into
        Platform/chromium/public (although we'll likely need to clean up some
        layering violations as we go).

        * Platform.gypi:
        * chromium/public/WebData.h: Added.
        (WebKit):
        (WebData):
        (WebKit::WebData::~WebData):
        (WebKit::WebData::WebData):
        (WebKit::WebData::operator=):
        (WebKit::WebData::isEmpty):
        (WebKit::WebData::isNull):
        * chromium/public/WebHTTPBody.h: Added.
        (WebKit):
        (WebHTTPBody):
        (WebKit::WebHTTPBody::~WebHTTPBody):
        (WebKit::WebHTTPBody::WebHTTPBody):
        (WebKit::WebHTTPBody::operator=):
        (WebKit::WebHTTPBody::isNull):
        * chromium/public/WebHTTPHeaderVisitor.h: Added.
        (WebKit):
        (WebHTTPHeaderVisitor):
        (WebKit::WebHTTPHeaderVisitor::~WebHTTPHeaderVisitor):
        * chromium/public/WebHTTPLoadInfo.h: Added.
        (WebCore):
        (WebKit):
        (WebHTTPLoadInfo):
        (WebKit::WebHTTPLoadInfo::WebHTTPLoadInfo):
        (WebKit::WebHTTPLoadInfo::~WebHTTPLoadInfo):
        (WebKit::WebHTTPLoadInfo::operator =):
        * chromium/public/WebPrivateOwnPtr.h: Added.
        (WebKit):
        (WebPrivateOwnPtr):
        (WebKit::WebPrivateOwnPtr::WebPrivateOwnPtr):
        (WebKit::WebPrivateOwnPtr::~WebPrivateOwnPtr):
        (WebKit::WebPrivateOwnPtr::reset):
        (WebKit::WebPrivateOwnPtr::get):
        (WebKit::WebPrivateOwnPtr::operator->):
        * chromium/public/WebURL.h: Added.
        (WebKit):
        (WebURL):
        (WebKit::WebURL::~WebURL):
        (WebKit::WebURL::WebURL):
        (WebKit::WebURL::operator=):
        (WebKit::WebURL::assign):
        (WebKit::WebURL::spec):
        (WebKit::WebURL::parsed):
        (WebKit::WebURL::isValid):
        (WebKit::WebURL::isEmpty):
        (WebKit::WebURL::isNull):
        (WebKit::WebURL::operator GURL):
        (WebKit::operator<):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebURLError.h: Added.
        (WebKit):
        (WebURLError):
        (WebKit::WebURLError::WebURLError):
        * chromium/public/WebURLLoadTiming.h: Added.
        (WebKit):
        (WebURLLoadTiming):
        (WebKit::WebURLLoadTiming::~WebURLLoadTiming):
        (WebKit::WebURLLoadTiming::WebURLLoadTiming):
        (WebKit::WebURLLoadTiming::operator=):
        (WebKit::WebURLLoadTiming::isNull):
        * chromium/public/WebURLLoader.h: Added.
        (WebKit):
        (WebURLLoader):
        (WebKit::WebURLLoader::~WebURLLoader):
        * chromium/public/WebURLLoaderClient.h: Added.
        (WebKit):
        (WebURLLoaderClient):
        (WebKit::WebURLLoaderClient::willSendRequest):
        (WebKit::WebURLLoaderClient::didSendData):
        (WebKit::WebURLLoaderClient::didReceiveResponse):
        (WebKit::WebURLLoaderClient::didDownloadData):
        (WebKit::WebURLLoaderClient::didReceiveData):
        (WebKit::WebURLLoaderClient::didReceiveCachedMetadata):
        (WebKit::WebURLLoaderClient::didFinishLoading):
        (WebKit::WebURLLoaderClient::didFail):
        (WebKit::WebURLLoaderClient::~WebURLLoaderClient):
        * chromium/public/WebURLRequest.h: Added.
        (WebKit):
        (WebURLRequest):
        (ExtraData):
        (WebKit::WebURLRequest::ExtraData::~ExtraData):
        (WebKit::WebURLRequest::~WebURLRequest):
        (WebKit::WebURLRequest::WebURLRequest):
        (WebKit::WebURLRequest::operator=):
        * chromium/public/WebURLResponse.h: Added.
        (WebKit):
        (WebURLResponse):
        (ExtraData):
        (WebKit::WebURLResponse::ExtraData::~ExtraData):
        (WebKit::WebURLResponse::~WebURLResponse):
        (WebKit::WebURLResponse::WebURLResponse):
        (WebKit::WebURLResponse::operator=):

2012-03-27  Nat Duca  <nduca@chromium.org>

        [chromium] Route monotonic clock up from compositor
        https://bugs.webkit.org/show_bug.cgi?id=82154

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeViewClient.h:
        (WebLayerTreeViewClient):

2012-03-26  Nat Duca  <nduca@chromium.org>

        [chromium] Add isInputThrottled/didBecomeReadyForAdditionalInput to WebWidget
        https://bugs.webkit.org/show_bug.cgi?id=82265

        Reviewed by James Robinson.

        * chromium/public/WebLayerTreeView.h:
        (WebLayerTreeView):
        * chromium/public/WebLayerTreeViewClient.h:
        (WebLayerTreeViewClient):
        (WebKit::WebLayerTreeViewClient::didCommit):

2012-03-25  Nat Duca  <nduca@chromium.org>

        [chromium] Route willBeginFrame from compositor to WebWidget
        https://bugs.webkit.org/show_bug.cgi?id=82171

        Reviewed by Darin Fisher.

        * chromium/public/WebLayerTreeViewClient.h:
        (WebLayerTreeViewClient):
        (WebKit::WebLayerTreeViewClient::willBeginFrame):

2012-03-23  Tony Chang  <tony@chromium.org>

        [chromium] rename newwtf target back to wtf
        https://bugs.webkit.org/show_bug.cgi?id=82064

        Reviewed by Adam Barth.

        * Platform.gyp/Platform.gyp:

2012-03-22  Tony Chang  <tony@chromium.org>

        Unreviewed, fix chromium build after wtf move.

        Only use newwtf, remove references to wtf.

        * Platform.gyp/Platform.gyp:

2012-03-21  Ryosuke Niwa  <rniwa@webkit.org>

        Touch a file to make Chromium Windows bots happy.

        * chromium/public/WebGraphicsContext3D.h:

2012-03-21  David Reveman  <reveman@chromium.org>

        [Chromium] GL_EXT_occlusion_query_boolean and GL_CHROMIUM_command_buffer_query support.
        https://bugs.webkit.org/show_bug.cgi?id=80988

        Reviewed by Adrienne Walker.

        Add EXT_occlusion_query API to WebGraphicsContext3D.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::createQueryEXT):
        (WebKit::WebGraphicsContext3D::deleteQueryEXT):
        (WebKit::WebGraphicsContext3D::isQueryEXT):
        (WebKit::WebGraphicsContext3D::beginQueryEXT):
        (WebKit::WebGraphicsContext3D::endQueryEXT):
        (WebKit::WebGraphicsContext3D::getQueryivEXT):
        (WebKit::WebGraphicsContext3D::getQueryObjectuivEXT):

2012-03-19  Michal Mocny  <mmocny@google.com>

        [chromium] Adding support for GL_EXT_discard_framebuffer.
        https://bugs.webkit.org/show_bug.cgi?id=81383

        Reviewed by James Robinson.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::discardFramebufferEXT):
        (WebKit::WebGraphicsContext3D::ensureFramebufferCHROMIUM):

2012-03-19  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r111207.
        http://trac.webkit.org/changeset/111207
        https://bugs.webkit.org/show_bug.cgi?id=81561

        Causing chromium unit test failure (Requested by reveman on
        #webkit).

        * chromium/public/WebGraphicsContext3D.h:

2012-03-19  Michal Mocny  <mmocny@google.com>

        [chromium] Updating WebGraphicsContext3D MemoryAllocation callback to accept a struct with have backbuffer suggestion.
        https://bugs.webkit.org/show_bug.cgi?id=81279

        Reviewed by James Robinson.

        Adding a suggestHaveBackbuffer hint to the WebGraphicsContext3D memory allocation callback.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM::onMemoryAllocationChanged):
        * chromium/public/WebGraphicsMemoryAllocation.h: Added.
        (WebKit):
        (WebGraphicsMemoryAllocation):
        (WebKit::WebGraphicsMemoryAllocation::WebGraphicsMemoryAllocation):

2012-03-19  David Reveman  <reveman@chromium.org>

        [Chromium] GL_EXT_occlusion_query_boolean and GL_CHROMIUM_command_buffer_query support.
        https://bugs.webkit.org/show_bug.cgi?id=80988

        Reviewed by Adrienne Walker.

        Add EXT_occlusion_query API to WebGraphicsContext3D.

        * chromium/public/WebGraphicsContext3D.h:
        (WebGraphicsContext3D):

2012-03-08  James Robinson  <jamesr@chromium.org>

        Use an explicit attribute to signal that a context prefers to use a discrete GPU
        https://bugs.webkit.org/show_bug.cgi?id=80639

        Reviewed by Stephen White.

        Adds preferDiscreteGPU attribute to WebGraphicsContext3D::Attributes. Also remove the forUseOnAnotherThread
        attribute, this has been dead code for a while now.

        * chromium/public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::Attributes::Attributes):
        (Attributes):

2012-02-24  James Robinson  <jamesr@chromium.org>

        [chromium] WebKit::setColorNames is a client API
        https://bugs.webkit.org/show_bug.cgi?id=79539

        Reviewed by Darin Fisher.

        * Platform.gypi:
        * chromium/public/WebColor.h:
        (WebKit):

2012-02-24  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r108860.
        http://trac.webkit.org/changeset/108860
        https://bugs.webkit.org/show_bug.cgi?id=79544

        "Breaks Linux compile" (Requested by enne on #webkit).

        * Platform.gypi:
        * chromium/public/WebColor.h:
        (WebKit):
        * chromium/public/WebColorName.h: Renamed from Source/WebKit/chromium/public/WebColorName.h.
        (WebKit):

2012-02-24  James Robinson  <jamesr@chromium.org>

        [chromium] WebKit::setColorNames is a client API
        https://bugs.webkit.org/show_bug.cgi?id=79539

        Reviewed by Darin Fisher.

        * Platform.gypi:
        * chromium/public/WebColor.h:
        (WebKit):

2012-02-22  James Robinson  <jamesr@chromium.org>

        [chromium] Move WebGraphicsContext3D header into the Platform directory
        https://bugs.webkit.org/show_bug.cgi?id=79301

        Reviewed by Adam Barth.

        Moves WebGraphicsContext3D and WebNonCopyable (which WGC3D depends on).

        * Platform.gypi:
        * chromium/public/WebGraphicsContext3D.h: Copied from Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h.
        (WebKit):
        (WebGraphicsContext3D):
        (ActiveInfo):
        (WebKit::WebGraphicsContext3D::Attributes::Attributes):
        (Attributes):
        (WebGraphicsContextLostCallback):
        (WebKit::WebGraphicsContext3D::WebGraphicsContextLostCallback::~WebGraphicsContextLostCallback):
        (WebGraphicsErrorMessageCallback):
        (WebKit::WebGraphicsContext3D::WebGraphicsErrorMessageCallback::~WebGraphicsErrorMessageCallback):
        (WebGraphicsSwapBuffersCompleteCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM::~WebGraphicsSwapBuffersCompleteCallbackCHROMIUM):
        (WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM::~WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::~WebGraphicsContext3D):
        (WebKit::WebGraphicsContext3D::setMemoryAllocationChangedCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::setParentContext):
        (WebKit::WebGraphicsContext3D::setSwapBuffersCompleteCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::rateLimitOffscreenContextCHROMIUM):
        (WebKit::WebGraphicsContext3D::setContextLostCallback):
        (WebKit::WebGraphicsContext3D::setErrorMessageCallback):
        (WebKit::WebGraphicsContext3D::getGraphicsResetStatusARB):
        (WebKit::WebGraphicsContext3D::getTranslatedShaderSourceANGLE):
        (WebKit::WebGraphicsContext3D::texImageIOSurface2DCHROMIUM):
        (WebKit::WebGraphicsContext3D::texStorage2DEXT):
        (WebKit::WebGraphicsContext3D::onCreateGrGLInterface):
        * chromium/public/WebNonCopyable.h: Copied from Source/WebKit/chromium/public/platform/WebNonCopyable.h.
        (WebKit):
        (WebNonCopyable):
        (WebKit::WebNonCopyable::WebNonCopyable):
        (WebKit::WebNonCopyable::~WebNonCopyable):

2012-02-23  James Robinson  <jamesr@chromium.org>

        [chromium] Move Web*Layer* headers into Platform
        https://bugs.webkit.org/show_bug.cgi?id=79425

        Reviewed by Adam Barth.

        This moves the Web*Layer* headers and their dependencies from WebKit/chromium/public/platform/ into
        Platform/chromium/public.

        * Platform.gypi:
        * chromium/public/WebCanvas.h: Copied from Source/WebKit/chromium/public/platform/WebCanvas.h.
        (WebKit):
        * chromium/public/WebColor.h: Copied from Source/WebKit/chromium/public/platform/WebColor.h.
        (WebKit):
        * chromium/public/WebColorName.h: Copied from Source/WebKit/chromium/public/platform/WebColorName.h.
        (WebKit):
        * chromium/public/WebContentLayer.h: Copied from Source/WebKit/chromium/public/platform/WebContentLayer.h.
        (WebKit):
        (WebContentLayer):
        (WebKit::WebContentLayer::WebContentLayer):
        (WebKit::WebContentLayer::~WebContentLayer):
        (WebKit::WebContentLayer::operator=):
        * chromium/public/WebContentLayerClient.h: Copied from Source/WebKit/chromium/public/platform/WebContentLayerClient.h.
        (WebKit):
        (WebContentLayerClient):
        (WebKit::WebContentLayerClient::~WebContentLayerClient):
        * chromium/public/WebExternalTextureLayer.h: Copied from Source/WebKit/chromium/public/platform/WebExternalTextureLayer.h.
        (WebKit):
        (WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::~WebExternalTextureLayer):
        (WebKit::WebExternalTextureLayer::operator=):
        * chromium/public/WebLayer.h: Copied from Source/WebKit/chromium/public/platform/WebLayer.h.
        (WebKit):
        (WebLayer):
        (WebKit::WebLayer::WebLayer):
        (WebKit::WebLayer::~WebLayer):
        (WebKit::WebLayer::operator=):
        (WebKit::WebLayer::isNull):
        (WebKit::WebLayer::to):
        (WebKit::WebLayer::toConst):
        (WebKit::WebLayer::unwrap):
        (WebKit::WebLayer::constUnwrap):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebLayerTreeView.h: Copied from Source/WebKit/chromium/public/platform/WebLayerTreeView.h.
        (WebCore):
        (WebKit):
        (WebLayerTreeView):
        (WebKit::WebLayerTreeView::Settings::Settings):
        (Settings):
        (WebKit::WebLayerTreeView::WebLayerTreeView):
        (WebKit::WebLayerTreeView::~WebLayerTreeView):
        (WebKit::WebLayerTreeView::operator=):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebLayerTreeViewClient.h: Copied from Source/WebKit/chromium/public/platform/WebLayerTreeViewClient.h.
        (WebKit):
        (WebLayerTreeViewClient):
        (WebKit::WebLayerTreeViewClient::~WebLayerTreeViewClient):
        * chromium/public/WebPrivatePtr.h: Copied from Source/WebKit/chromium/public/platform/WebPrivatePtr.h.
        (WebKit):
        (WebPrivatePtr):
        (WebKit::WebPrivatePtr::WebPrivatePtr):
        (WebKit::WebPrivatePtr::~WebPrivatePtr):
        (WebKit::WebPrivatePtr::isNull):
        (WebKit::WebPrivatePtr::reset):
        (WebKit::WebPrivatePtr::operator=):
        (WebKit::WebPrivatePtr::get):
        (WebKit::WebPrivatePtr::operator->):
        (WebKit::WebPrivatePtr::assign):
        * chromium/public/WebSolidColorLayer.h: Copied from Source/WebKit/chromium/public/platform/WebSolidColorLayer.h.
        (WebKit):
        (WebSolidColorLayer):

2012-02-08  James Robinson  <jamesr@chromium.org>

        r107042 caused compile breakages on chromium try bots
        https://bugs.webkit.org/show_bug.cgi?id=78125

        Reviewed by Adam Barth.

        Replace the copy script with a copies GYP action since the MSVS generator tracks dependencies on a per-file
        basis.

        * Platform.gyp/Platform.gyp:
        * Platform.gyp/copy_webcore_headers.py: Removed.

2012-02-07  James Robinson  <jamesr@chromium.org>

        [chromium] Move geometry headers in Platform API to Platform directory
        https://bugs.webkit.org/show_bug.cgi?id=78067

        Reviewed by Adam Barth.

        This moves several geometry-related headers in the chromium WebKit platform API to Platform/chromium/public.
        These require a bit of extra work since when WEBKIT_IMPLEMENTATION is set they #include headers from
        WebCore/platform such as IntPoint so that the implementations of several functions can be inlined. Since we do
        not want to add anything in WebCore to the include path of projects that depend on the Platform API this poses a
        bit of an issue. I've added an extra build step to copy the specific headers used into the
        SHARED_INTERMEDIATE_DIR to preserve this inlining.
        
        Eventually we'll move the cross-platform code, including these headers, into somewhere under Platform/, but doing
        that requires non-trivial modifications to every build system in WebKit.

        * Platform.gyp/Platform.gyp:
        * Platform.gyp/copy_webcore_headers.py: Added.
        (CopyHeaders):
        (Main):
        * chromium/public/WebFloatPoint.h: Copied from Source/WebKit/chromium/public/platform/WebFloatPoint.h.
        (WebKit):
        (WebFloatPoint):
        (WebKit::WebFloatPoint::WebFloatPoint):
        (WebKit::WebFloatPoint::operator=):
        (WebKit::WebFloatPoint::operator WebCore::FloatPoint):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebFloatQuad.h: Copied from Source/WebKit/chromium/public/platform/WebFloatQuad.h.
        (WebKit):
        (WebFloatQuad):
        (WebKit::WebFloatQuad::WebFloatQuad):
        (WebKit::WebFloatQuad::operator=):
        * chromium/public/WebFloatRect.h: Copied from Source/WebKit/chromium/public/platform/WebFloatRect.h.
        (WebKit):
        (WebFloatRect):
        (WebKit::WebFloatRect::isEmpty):
        (WebKit::WebFloatRect::WebFloatRect):
        (WebKit::WebFloatRect::operator=):
        (WebKit::WebFloatRect::operator WebCore::FloatRect):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebPoint.h: Copied from Source/WebKit/chromium/public/platform/WebPoint.h.
        (WebKit):
        (WebPoint):
        (WebKit::WebPoint::WebPoint):
        (WebKit::WebPoint::operator=):
        (WebKit::WebPoint::operator WebCore::IntPoint):
        (WebKit::WebPoint::operator gfx::Point):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebRect.h: Copied from Source/WebKit/chromium/public/platform/WebRect.h.
        (WebKit):
        (WebRect):
        (WebKit::WebRect::isEmpty):
        (WebKit::WebRect::WebRect):
        (WebKit::WebRect::operator=):
        (WebKit::WebRect::operator WebCore::IntRect):
        (WebKit::WebRect::operator gfx::Rect):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/public/WebSize.h: Copied from Source/WebKit/chromium/public/platform/WebSize.h.
        (WebKit):
        (WebSize):
        (WebKit::WebSize::isEmpty):
        (WebKit::WebSize::WebSize):
        (WebKit::WebSize::operator=):
        (WebKit::WebSize::operator WebCore::IntSize):
        (WebKit::WebSize::operator gfx::Size):
        (WebKit::operator==):
        (WebKit::operator!=):

2012-01-19  Joi Sigurdsson  <joi@chromium.org>

        Enable use of precompiled headers in Chromium port on Windows.

        Bug 76381 - Use precompiled headers in Chromium port on Windows
        https://bugs.webkit.org/show_bug.cgi?id=76381

        Reviewed by Tony Chang.

        * Platform.gyp/Platform.gyp: Include WinPrecompile.gypi.

2012-01-04  James Robinson  <jamesr@chromium.org>

        [chromium] Compile fix, rename libplatform.a to libwebkit_platform.a to avoid collision with nacl

        * Platform.gyp/Platform.gyp:

2012-01-04  James Robinson  <jamesr@chromium.org>

        [chromium] Move WebMimeRegistry and dependencies to Source/Platform
        https://bugs.webkit.org/show_bug.cgi?id=74583

        Reviewed by Darin Fisher.

        This creates a skeleton directory structure for the chromium WebKit platform API and moves WebMimeRegistry.h
        along with its dependencies (WebString and WebCString) to their final location.

        * Platform.gyp/Platform.gyp: Added.
        * Platform.gypi: Added.
        * chromium/platform/WebCString.h: Copied from Source/WebKit/chromium/public/platform/WebCString.h.
        (WebKit::WebCString::~WebCString):
        (WebKit::WebCString::WebCString):
        (WebKit::WebCString::operator=):
        (WebKit::WebCString::isEmpty):
        (WebKit::WebCString::isNull):
        (WebKit::WebCString::operator std::string):
        (WebKit::WebCString::fromUTF16):
        (WebKit::operator<):
        * chromium/platform/WebCommon.h: Copied from Source/WebKit/chromium/public/platform/WebCommon.h.
        * chromium/platform/WebMimeRegistry.h: Copied from Source/WebKit/chromium/public/platform/WebMimeRegistry.h.
        (WebKit::WebMimeRegistry::~WebMimeRegistry):
        * chromium/platform/WebString.h: Copied from Source/WebKit/chromium/public/platform/WebString.h.
        (WebKit::WebString::~WebString):
        (WebKit::WebString::WebString):
        (WebKit::WebString::operator=):
        (WebKit::WebString::isEmpty):
        (WebKit::WebString::isNull):
        (WebKit::WebString::operator string16):
        (WebKit::WebString::operator NullableString16):
        (WebKit::WebString::fromUTF8):
        (WebKit::operator==):
        (WebKit::operator!=):
        * chromium/src/WebCString.cpp: Renamed from Source/WebKit/chromium/src/WebCString.cpp.
        (WebKit::WebCString::compare):
        (WebKit::WebCString::reset):
        (WebKit::WebCString::assign):
        (WebKit::WebCString::length):
        (WebKit::WebCString::data):
        (WebKit::WebCString::utf16):
        (WebKit::WebCString::fromUTF16):
        (WebKit::WebCString::WebCString):
        (WebKit::WebCString::operator=):
        (WebKit::WebCString::operator WTF::CString):
        * chromium/src/WebString.cpp: Renamed from Source/WebKit/chromium/src/WebString.cpp.
        (WebKit::WebString::reset):
        (WebKit::WebString::assign):
        (WebKit::WebString::length):
        (WebKit::WebString::data):
        (WebKit::WebString::utf8):
        (WebKit::WebString::fromUTF8):
        (WebKit::WebString::equals):
        (WebKit::WebString::WebString):
        (WebKit::WebString::operator=):
        (WebKit::WebString::operator WTF::String):
        (WebKit::WebString::operator WTF::AtomicString):

2011-11-02  Adam Barth  <abarth@webkit.org>

        Add stubs for WTF and Platform
        https://bugs.webkit.org/show_bug.cgi?id=71492

        Reviewed by Eric Seidel.

        This patch creates the Platform directory, which begins the process of
        moving Platform out of WebCore.
