2011-05-11  Antoine Labour  <piman@chromium.org>

        Reviewed by David Levin.

        Don't buffer data for resources loaded by AssociatedURLLoader.
        https://bugs.webkit.org/show_bug.cgi?id=60656

        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::loadAsynchronously): set shouldBufferData to false in ThreadableLoaderOptions

2011-05-11  Nat Duca  <nduca@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Make throttling of WebGL based on webgl frames, not compositor frames
        https://bugs.webkit.org/show_bug.cgi?id=60508

        Tell LayerRendererChromium when the requestAnimFrame-callbacks are running.

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::rateLimitOffscreenContextCHROMIUM):
        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::rateLimitOffscreenContextCHROMIUM):
        * src/GraphicsContext3DChromium.cpp:
        * src/GraphicsContext3DInternal.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::animate):

2011-05-11  John Bauman  <jbauman@chromium.org>

        Reviewed by Kenneth Russell.

        Don't send zeros in TexImage if GL implementation handles that
        https://bugs.webkit.org/show_bug.cgi?id=60581

        Chromium already handles zeroing textures upon creation, so don't
        bother zeroing them in WebKit, as that causes some unnecessary memcpys
        of zeros.

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3D::create):

2011-05-10  Kent Tamura  <tkent@chromium.org>

        Reviewed by Hajime Morita.

        [Chromium] Fix a bug of WebFrameImpl::forms()
        https://bugs.webkit.org/show_bug.cgi?id=60606

        If document()->forms() contained non-HTML element, the second for
        loop didn't stop.

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::forms): Simplify the function by wtf::Vector().

2011-05-10  Ilya Tikhonovsky  <loislo@chromium.org>

        Unreviewed buildfix for strict OwnPtr patch.

        * src/PlatformBridge.cpp:
        (WebCore::PlatformBridge::loadPlatformAudioResource):
        (WebCore::PlatformBridge::decodeAudioFileData):

2011-05-06  Brett Wilson  <brettw@chromium.org>

        Reviewed by Adam Barth.

        Use a File object to store the downloaded file reference rather than
        just the path. This keeps the file and permissions in scope (using the
        already-existing blob system) so the browser won't delete the file
        when the load is complete. Instead, the file will be cleaned up when
        the request objects are deleted.
        https://bugs.webkit.org/show_bug.cgi?id=60281

        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::downloadFilePath):
        (WebKit::WebURLResponse::setDownloadFilePath):

2011-05-10  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: [Chromium] Drop obsolete test code for the Profiles panel.
        https://bugs.webkit.org/show_bug.cgi?id=60471

        * src/js/Tests.js:

2011-05-10  Adam Barth  <abarth@webkit.org>

        Attempt to fix the clang build.

        * src/WebDevToolsAgentImpl.cpp:

2011-05-09  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r86091.
        http://trac.webkit.org/changeset/86091
        https://bugs.webkit.org/show_bug.cgi?id=60510

        Broke Chromium win release build. (Requested by dave_levin on
        #webkit).

        * WebKit.gyp:
        * features.gypi:
        * public/WebFrame.h:
        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didChangeIcons):
        * public/WebIconURL.h: Removed.
        * src/AssertMatchingEnums.cpp:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeIcons):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::favIconURL):
        * src/WebFrameImpl.h:

2011-05-09  Tao Bai  <michaelbai@chromium.org>

        Reviewed by David Levin.

        Handle the touch icon.
        https://bugs.webkit.org/show_bug.cgi?id=60247

        Added WebIconURL for the corresponding IconURL.
        Added a parameter to favIconURL() to specify the type of icon need to
        return.

        * WebKit.gyp:
        * features.gypi:
        * public/WebFrame.h:
        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didChangeIcons):
        * public/WebIconURL.h: Added.
        (WebKit::WebIconURL::WebIconURL):
        * src/AssertMatchingEnums.cpp:
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeIcons):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::favIconURL):
        * src/WebFrameImpl.h:

2011-05-09  Evan Martin  <evan@chromium.org>

        Reviewed by Tony Chang.

        [chromium] make DumpRenderTree build in components for linux
        https://bugs.webkit.org/show_bug.cgi?id=60491

        * WebKit.gyp: move some code that was in a Windows-only block to be used
        on all platforms.

2011-05-09  Adam Barth  <abarth@webkit.org>

        Reviewed by Tony Gentilcore.

        Make Chromium build with strict PassOwnPtr
        https://bugs.webkit.org/show_bug.cgi?id=60461

        Fixed many, many PassOwnPtr nits.

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::autofill):
        * src/IDBDatabaseBackendProxy.cpp:
        (WebKit::IDBDatabaseBackendProxy::createObjectStore):
        (WebKit::IDBDatabaseBackendProxy::transaction):
        * src/IDBObjectStoreBackendProxy.cpp:
        (WebKit::IDBObjectStoreBackendProxy::createIndex):
        (WebKit::IDBObjectStoreBackendProxy::index):
        * src/IDBTransactionBackendProxy.cpp:
        (WebKit::IDBTransactionBackendProxy::objectStore):
        * src/PlatformMessagePortChannel.cpp:
        (WebCore::MessagePortChannel::create):
        (WebCore::PlatformMessagePortChannel::tryGetMessageFromRemote):
        * src/SharedWorkerRepository.cpp:
        (WebCore::SharedWorkerRepository::connect):
        * src/SocketStreamHandle.cpp:
        (WebCore::SocketStreamHandleInternal::create):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::DebuggerTask::DebuggerTask):
        (WebKit::DebuggerTask::~DebuggerTask):
        (WebKit::DebuggerTask::run):
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        * src/WebDevToolsFrontendImpl.cpp:
        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
        * src/WebIDBCallbacksImpl.cpp:
        (WebKit::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCursorImpl.cpp:
        (WebKit::WebIDBCursorImpl::update):
        (WebKit::WebIDBCursorImpl::continueFunction):
        (WebKit::WebIDBCursorImpl::deleteFunction):
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::setVersion):
        (WebKit::WebIDBDatabaseImpl::open):
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBIndexImpl.cpp:
        (WebKit::WebIDBIndexImpl::openObjectCursor):
        (WebKit::WebIDBIndexImpl::openKeyCursor):
        (WebKit::WebIDBIndexImpl::getObject):
        (WebKit::WebIDBIndexImpl::getKey):
        * src/WebIDBObjectStoreImpl.cpp:
        (WebKit::WebIDBObjectStoreImpl::get):
        (WebKit::WebIDBObjectStoreImpl::put):
        (WebKit::WebIDBObjectStoreImpl::deleteFunction):
        (WebKit::WebIDBObjectStoreImpl::clear):
        (WebKit::WebIDBObjectStoreImpl::openCursor):
        * src/WebIDBTransactionImpl.cpp:
        (WebKit::WebIDBTransactionImpl::setCallbacks):
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::loadFrameRequest):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setDevToolsAgentClient):
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObject):
        * src/WebWorkerImpl.cpp:
        (WebKit::WebWorkerImpl::postMessageToWorkerContext):
        * src/WorkerFileWriterCallbacksBridge.cpp:
        (WebKit::WorkerFileWriterCallbacksBridge::initOnMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::didWrite):
        (WebKit::WorkerFileWriterCallbacksBridge::didFail):
        (WebKit::WorkerFileWriterCallbacksBridge::didTruncate):

2011-05-09  Shishir Agrawal  <shishir@chromium.org>

        Reviewed by Tony Gentilcore.

        Implement Page Visibility API.
        https://bugs.webkit.org/show_bug.cgi?id=54181

        * WebKit.gyp:
        * public/WebPageVisibilityState.h: Added.
        * public/WebView.h:
        (WebKit::WebView::setVisibilityState):
        * public/WebViewClient.h:
        (WebKit::WebViewClient::visibilityState):
        * src/AssertMatchingEnums.cpp:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::setVisibilityState):
        * src/WebViewImpl.h:

2011-05-07  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r85974.
        http://trac.webkit.org/changeset/85974
        https://bugs.webkit.org/show_bug.cgi?id=60444

        broke browser tests (Requested by inferno-sec on #webkit).

        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::downloadFilePath):
        (WebKit::WebURLResponse::setDownloadFilePath):

2011-05-06  Kent Tamura  <tkent@chromium.org>

        Reviewed by Ryosuke Niwa.

        Eliminate WebCore/dom/InputElement.{cpp,h}
        https://bugs.webkit.org/show_bug.cgi?id=60262

        * src/WebInputElement.cpp:
        (WebKit::WebInputElement::defaultMaxLength):
          Replace InputElement::s_maximumLength with HTMLInputElement::maximumLength.
        (WebKit::toWebInputElement):
          Follow the return type change of Node::toInputElement().

2011-05-06  Justin Schuh  <jschuh@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Whitelist input events interpreted as user gestures
        https://bugs.webkit.org/show_bug.cgi?id=60213

        * public/WebInputEvent.h:
        (WebKit::WebInputEvent::isUserGestureEventType):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::handleInputEvent):

2011-05-06  Brett Wilson  <brettw@chromium.org>

        Reviewed by Adam Barth.

        Use a File object to store the downloaded file reference rather than
        just the path. This keeps the file and permissions in scope (using the
        already-existing blob system) so the browser won't delete the file
        when the load is complete. Instead, the file will be cleaned up when
        the request objects are deleted.
        https://bugs.webkit.org/show_bug.cgi?id=60281

        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::downloadFilePath):
        (WebKit::WebURLResponse::setDownloadFilePath):

2011-05-06  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by James Robinson.

        [chromium]: Reland using WebPermissionClient for checking indexed db usage
        https://bugs.webkit.org/show_bug.cgi?id=60386

        * public/WebPermissionClient.h:
        (WebKit::WebPermissionClient::allowIndexedDB):
        * src/IDBFactoryBackendProxy.cpp:
        (WebKit::IDBFactoryBackendProxy::open):

2011-05-06  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r85919.
        http://trac.webkit.org/changeset/85919
        https://bugs.webkit.org/show_bug.cgi?id=60378

        broke chromium database tests (Requested by inferno-sec on
        #webkit).

        * public/WebPermissionClient.h:
        * src/IDBFactoryBackendProxy.cpp:
        (WebKit::IDBFactoryBackendProxy::open):

2011-05-04  Philippe Normand  <pnormand@igalia.com>

        Reviewed by Dimitri Glazkov.

        Implement LayoutTestController::pseudoShadowId()
        https://bugs.webkit.org/show_bug.cgi?id=60034

        * public/WebElement.h:
        * src/WebElement.cpp:
        (WebKit::WebElement::shadowPseudoId):

2011-05-05  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by James Robinson.

        [chromium] Make IndexedDB code use WebPermissionClient API
        https://bugs.webkit.org/show_bug.cgi?id=60340

        * public/WebPermissionClient.h:
        (WebKit::WebPermissionClient::allowIndexedDB):
        * src/IDBFactoryBackendProxy.cpp:
        (WebKit::IDBFactoryBackendProxy::open):

2011-05-05  Adam Barth  <abarth@webkit.org>

        Roll Chromium DEPS.

        * DEPS:

2011-05-05  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Eric Seidel.

        Rename SelectionController to FrameSelection
        https://bugs.webkit.org/show_bug.cgi?id=60234

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::selectWordAroundCaret):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::textInputType):
        (WebKit::WebViewImpl::caretOrSelectionBounds):
        (WebKit::WebViewImpl::caretOrSelectionRange):
        (WebKit::WebViewImpl::clearFocusedNode):

2011-05-03  Hans Wennborg  <hans@chromium.org>

        Reviewed by Steve Block.

        IndexedDB: Unit tests for LevelDB key coding functions
        https://bugs.webkit.org/show_bug.cgi?id=59692

        Add unit tests for the basic key coding functions used by the LevelDB back-end.

        * WebKit.gypi:
        * tests/IDBLevelDBCodingTest.cpp: Added.
        (IDBLevelDBCoding::TEST):

2011-05-04  MORITA Hajime  <morrita@google.com>

        Unreviewed unit test skip (startPostAndWaitOnCondition)
        which fails on Windows 7. See bug 60248 for tracking.
        
        * tests/CCThreadTest.cpp:
        (WebCore::TEST):

2011-05-04  Cris Neckar  <cdn@chromium.org>

        Reviewed by Adam Barth.

        Expose WebView directly through ChromeClient.
        https://bugs.webkit.org/show_bug.cgi?id=49902

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::getWebView):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::webView):
        * src/ChromeClientImpl.h:
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):
        * src/PlatformBridge.cpp:
        (WebCore::toWebWidgetClient):
        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespace::sessionStorageNamespace):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::fromPage):

2011-05-04  Nate Chapin  <japhet@chromium.org>

        Reviewed by Mihai Parparita.

        Ensure we don't overwrite user-specified scroll positions
        on same document HistoryItem navigations.
        https://bugs.webkit.org/show_bug.cgi?id=59877

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::loadHistoryItem):
        (WebKit::WebFrameImpl::currentHistoryItem):
        (WebKit::WebFrameImpl::WebFrameImpl):
        * src/WebFrameImpl.h:

2011-05-04  Tao Bai  <michaelbai@chromium.org>

        Reviewed by David Kilzer.

        Populate touch-icon url to FrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=59143

        Respected the change of FrameLoaderClient.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidChangeIcons):
        * src/FrameLoaderClientImpl.h:

2011-05-04  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Ojan Vafai.

        Send the char events to the select popup if one is showing to fix
        a bug were pressing a letter would not select the matching option.
        https://bugs.webkit.org/show_bug.cgi?id=47769

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::keyEvent):
        (WebKit::WebViewImpl::charEvent):
        * src/WebViewImpl.h:

2011-05-03  Justin Novosad  <junov@chromium.org>

        Reviewed by Kenneth Russell.

        [Chromium] Make accelerated 2d canvas enabled by default with skia
        https://bugs.webkit.org/show_bug.cgi?id=59929
        Added new flag for enabling the legacy accelerated 2d canvas
        The flag is not yet functional with this change.

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setLegacyAccelerated2dCanvasEnabled):
        * src/WebSettingsImpl.h:

2011-05-03  Alpha Lam  <hclam@chromium.org>

        Not reviewed. Build fix.

        More 0 to nullptr.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::pluginLoadObserver):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3D::~GraphicsContext3D):
        * src/WebAudioBus.cpp:
        (WebKit::WebAudioBus::release):
        * src/WebBlobData.cpp:
        (WebKit::WebBlobData::reset):
        * src/WebViewImpl.cpp:
        (WebKit::WebView::addUserScript):
        (WebKit::WebView::addUserStyleSheet):

2011-05-03  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by James Robinson.

        [chromium] Go through WebPermissionClient for local storage access.  Also cleanup left over code from previous WebPermissionClient change.
        https://bugs.webkit.org/show_bug.cgi?id=60066

        * public/WebFrameClient.h:
        * public/WebPermissionClient.h:
        (WebKit::WebPermissionClient::allowLocalStorage):
        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowScriptExtension):
        (WebKit::FrameLoaderClientImpl::allowJavaScript):
        (WebKit::FrameLoaderClientImpl::allowPlugins):
        (WebKit::FrameLoaderClientImpl::allowImages):
        (WebKit::FrameLoaderClientImpl::didNotAllowScript):
        (WebKit::FrameLoaderClientImpl::didNotAllowPlugins):
        * src/StorageAreaProxy.cpp:
        (WebCore::StorageAreaProxy::setItem):

2011-05-03  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling the version of chromium to r83922.

        * DEPS:

2011-05-03  Julien Chaffraix  <jchaffraix@codeaurora.org>

        Reviewed by Dimitri Glazkov.

        Element:shadowRoot & Element::ensureShadowRoot should return ShadowRoot*
        https://bugs.webkit.org/show_bug.cgi?id=58703

        * src/WebElement.cpp: Added #include for ShadowRoot.h.

2011-05-02  Adam Klein  <adamk@chromium.org>

        Reviewed by Tony Chang.

        Roll chromium DEPS to r83722, add new crypto directory to DEPS
        https://bugs.webkit.org/show_bug.cgi?id=59992

        * DEPS:

2011-05-02  Adam Roben  <aroben@apple.com>

        Take advantage of implicit conversion from nullptr_t to PassOwnPtr

        Fixes <http://webkit.org/b/59964> Implicit conversion from std::nullptr_t to PassOwnPtr
        doesn't work, but should

        Reviewed by Adam Barth.

        * src/WebMediaPlayerClientImpl.cpp:

2011-05-03  Pavel Feldman  <pfeldman@google.com>

        Not reviewed: re-applied r85589.

        * src/js/DevTools.js:
        (.WebInspector.InspectorFrontendHostStub.prototype.inspectedURLChanged):

2011-05-03  Pavel Feldman  <pfeldman@google.com>

        Reviewed by Yury Semikhatsky.

        Web Inspector: [remote debugging] use document.title to set window name.
        https://bugs.webkit.org/show_bug.cgi?id=60012

        * src/js/DevTools.js:
        (WebInspector.InspectorFrontendHostStub.prototype.inspectedURLChanged):

2011-05-02  Alok Priyadarshi  <alokp@chromium.org>

        Reviewed by Dimitri Glazkov.

        Chromium windows build is broken due to r85395
        https://bugs.webkit.org/show_bug.cgi?id=59945
        
        Include SecurityOrigin.h in IDBFactoryBackendProxy.cpp

        * src/IDBFactoryBackendProxy.cpp:

2011-04-30  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Eric Seidel.

        V8Proxy.h shouldn't include SecurityOrigin.h
        https://bugs.webkit.org/show_bug.cgi?id=59859

        Add SecurityOrigin.h includes to places that were relying on transitive
        includes.

        * src/ApplicationCacheHost.cpp:
        * src/WebGeolocationPermissionRequest.cpp:

2011-04-29  Chris Evans  <cevans@chromium.org>

        Reviewed by Adam Barth.

        Add WebCore::Setting to block displaying and/or running insecure content on secure pages
        https://bugs.webkit.org/show_bug.cgi?id=58378

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setAllowDisplayOfInsecureContent):
        (WebKit::WebSettingsImpl::setAllowRunningOfInsecureContent):
        * src/WebSettingsImpl.h:
        Simple plumbing for the new boolean settings.

2011-04-29  Kenneth Russell  <kbr@google.com>

        Unreviewed build fix. Skip WebPageNewSerializerTest.cpp in Windows multi-DLL build.

        * WebKit.gyp:

2011-04-28  Evan Martin  <evan@chromium.org>

        Reviewed by Tony Chang.

        [chromium] support components build on Linux
        https://bugs.webkit.org/show_bug.cgi?id=59748

        * WebKit.gyp: adjust tests to not be Windows-specific.
        * public/WebCommon.h: add #defines to support Linux.
        * public/linux/WebFontRenderStyle.h: expose Linux-specific API.
        * tests/RunAllTests.cpp: adjust ifdefs to not be Windows-specific.

2011-04-29  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Chromium DevTools: Fix network panel timing/size/headers tests.
        https://bugs.webkit.org/show_bug.cgi?id=59696

        * src/js/Tests.js:
        (.TestSuite.prototype.testNetworkSize.finishResource):
        (.TestSuite.prototype.testNetworkSyncSize.finishResource):
        (.TestSuite.prototype.testNetworkRawHeadersText.finishResource):
        (.TestSuite.prototype.testNetworkTiming.finishResource):

2011-04-29  Pavel Feldman  <pfeldman@google.com>

        Reviewed by Yury Semikhatsky.

        Web Inspector: add "open link in new tab" action into the network and resources panels.
        https://bugs.webkit.org/show_bug.cgi?id=59788

        This change also distinguishes context menu items case between platforms.

        * src/js/DevTools.js:

2011-04-28  Nat Duca  <nduca@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Add swapBuffersCompleteCallback to Extensions3DChromium
        https://bugs.webkit.org/show_bug.cgi?id=59626

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM::~WebGraphicsSwapBuffersCompleteCallbackCHROMIUM):
        (WebKit::WebGraphicsContext3D::setSwapBuffersCompleteCallbackCHROMIUM):
        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::setSwapBuffersCompleteCallbackCHROMIUM):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::SwapBuffersCompleteCallbackAdapter::~SwapBuffersCompleteCallbackAdapter):
        (WebCore::SwapBuffersCompleteCallbackAdapter::SwapBuffersCompleteCallbackAdapter):
        (WebCore::SwapBuffersCompleteCallbackAdapter::onSwapBuffersComplete):
        (WebCore::SwapBuffersCompleteCallbackAdapter::create):
        (WebCore::GraphicsContext3DInternal::setSwapBuffersCompleteCallbackCHROMIUM):
        * src/GraphicsContext3DInternal.h:
        * src/WebViewImpl.cpp:

2011-04-28  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Fix silly bug with WebPermissionClient
        https://bugs.webkit.org/show_bug.cgi?id=59769

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowJavaScript):
        (WebKit::FrameLoaderClientImpl::allowPlugins):
        (WebKit::FrameLoaderClientImpl::allowImages):

2011-04-28  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Adam Barth.

        Introducing a new API to serialize a WebView back to HTML.
        https://bugs.webkit.org/show_bug.cgi?id=58947

        * WebKit.gyp:
        * public/WebPageSerializer.h:
        * src/WebPageSerializer.cpp:
        (WebKit::WebPageSerializer::serialize):
        * tests/WebPageNewSerializerTest.cpp: Added.
        * tests/data/pageserializer: Added.
        * tests/data/pageserializer/blank_frames.html: Added.
        * tests/data/pageserializer/blue_background.png: Added.
        * tests/data/pageserializer/css_test_page.html: Added.
        * tests/data/pageserializer/green_background.png: Added.
        * tests/data/pageserializer/iframe.html: Added.
        * tests/data/pageserializer/iframe2.html: Added.
        * tests/data/pageserializer/import_style_from_link.css: Added.
        * tests/data/pageserializer/import_styles.css: Added.
        * tests/data/pageserializer/link_styles.css: Added.
        * tests/data/pageserializer/ol-dot.png: Added.
        * tests/data/pageserializer/orange_background.png: Added.
        * tests/data/pageserializer/purple_background.png: Added.
        * tests/data/pageserializer/red_background.png: Added.
        * tests/data/pageserializer/simple.xhtml: Added.
        * tests/data/pageserializer/top_frame.html: Added.
        * tests/data/pageserializer/ul-dot.png: Added.
        * tests/data/pageserializer/yellow_background.png: Added.

2011-04-28  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add a WebPermissionClient to be used for checking permissions of features
        https://bugs.webkit.org/show_bug.cgi?id=59720

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::allowPlugins):
        (WebKit::WebFrameClient::didNotAllowPlugins):
        (WebKit::WebFrameClient::allowImages):
        (WebKit::WebFrameClient::allowScript):
        (WebKit::WebFrameClient::allowDatabase):
        (WebKit::WebFrameClient::didNotAllowScript):
        * public/WebPermissionClient.h: Added.
        (WebKit::WebPermissionClient::allowDatabase):
        (WebKit::WebPermissionClient::allowImages):
        (WebKit::WebPermissionClient::allowPlugins):
        (WebKit::WebPermissionClient::allowScript):
        (WebKit::WebPermissionClient::allowScriptExtension):
        (WebKit::WebPermissionClient::allowReadFromClipboard):
        (WebKit::WebPermissionClient::allowWriteToClipboard):
        (WebKit::WebPermissionClient::didNotAllowPlugins):
        (WebKit::WebPermissionClient::didNotAllowScript):
        (WebKit::WebPermissionClient::~WebPermissionClient):
        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::didEndEditing):
        * src/DatabaseObserver.cpp:
        (WebCore::DatabaseObserver::canEstablishDatabase):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::toggleContinuousSpellChecking):
        (WebKit::EditorClientImpl::canCopyCut):
        (WebKit::EditorClientImpl::canPaste):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::allowScriptExtension):
        (WebKit::FrameLoaderClientImpl::allowJavaScript):
        (WebKit::FrameLoaderClientImpl::allowPlugins):
        (WebKit::FrameLoaderClientImpl::allowImages):
        (WebKit::FrameLoaderClientImpl::didNotAllowScript):
        (WebKit::FrameLoaderClientImpl::didNotAllowPlugins):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::enableContinuousSpellChecking):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setAutoFillClient):
        (WebKit::WebViewImpl::setPermissionClient):
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::permissionClient):

2011-04-28  Kenneth Russell  <kbr@google.com>

        Unreviewed fix for Windows multi-DLL build.

        * WebKit.gyp:

2011-04-27  Dmitry Lomov  <dslomov@google.com>

        Reviewed by David Levin.
        
        CrossThreadCopier should not have a default specialization for raw pointers
        https://bugs.webkit.org/show_bug.cgi?id=59234
        Removed the ablity to pass raw pointers cross-thread
        Added and applied annotations for doing that

        * src/WebSharedWorkerImpl.cpp:
        (WebKit::WebSharedWorkerImpl::connect):
        (WebKit::WebSharedWorkerImpl::connectTask):
        * src/WebSharedWorkerImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::postMessageToWorkerObject):
        (WebKit::WebWorkerBase::postExceptionToWorkerObject):
        (WebKit::WebWorkerBase::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerBase::confirmMessageFromWorkerObject):
        (WebKit::WebWorkerBase::reportPendingActivity):
        (WebKit::WebWorkerBase::workerContextClosed):
        (WebKit::WebWorkerBase::workerContextDestroyed):
        * src/WebWorkerClientImpl.cpp:
        (WebKit::WebWorkerClientImpl::startWorkerContext):
        (WebKit::WebWorkerClientImpl::terminateWorkerContext):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerContext):
        (WebKit::WebWorkerClientImpl::workerObjectDestroyed):
        (WebKit::WebWorkerClientImpl::postMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::postExceptionToWorkerObject):
        (WebKit::WebWorkerClientImpl::postConsoleMessageToWorkerObject):
        (WebKit::WebWorkerClientImpl::confirmMessageFromWorkerObject):
        (WebKit::WebWorkerClientImpl::reportPendingActivity):
        * src/WebWorkerImpl.cpp:
        (WebKit::WebWorkerImpl::postMessageToWorkerContext):
        * src/WorkerFileSystemCallbacksBridge.cpp:
        (WebKit::WorkerFileSystemCallbacksBridge::postOpenFileSystemToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postMoveToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postCopyToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postRemoveToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postRemoveRecursivelyToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postReadMetadataToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postCreateFileToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postCreateDirectoryToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postFileExistsToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postDirectoryExistsToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::postReadDirectoryToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didFailOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didOpenFileSystemOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didSucceedOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didReadMetadataOnMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::didReadDirectoryOnMainThread):
        * src/WorkerFileWriterCallbacksBridge.cpp:
        (WebKit::WorkerFileWriterCallbacksBridge::postWriteToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::postTruncateToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::postAbortToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::didWrite):
        (WebKit::WorkerFileWriterCallbacksBridge::didFail):
        (WebKit::WorkerFileWriterCallbacksBridge::didTruncate):
        (WebKit::WorkerFileWriterCallbacksBridge::postInitToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::dispatchTaskToMainThread):
        (WebKit::WorkerFileWriterCallbacksBridge::dispatchTaskToWorkerThread):
        * tests/CCThreadTest.cpp:
        (WebCore::TEST):

2011-04-27  James Robinson  <jamesr@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Ensure compositing layers are up to date before entering doComposite
        https://bugs.webkit.org/show_bug.cgi?id=59159

        Explicitly update and sync the compositing layer data structures for all frames in the tree before entering the
        composite operation so that lazily updated state doesn't mutate the GraphicsLayer tree while compositing.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::composite):

2011-04-27  James Robinson  <jamesr@chromium.org>

        Reviewed by Adam Barth.

        Fix OwnPtr strict issues in chromium linux build
        https://bugs.webkit.org/show_bug.cgi?id=59664

        * src/WebImageDecoder.cpp:
        (WebKit::WebImageDecoder::getFrameAtIndex):
        * src/WebImageSkia.cpp:
        (WebKit::WebImage::fromData):

2011-04-27  Adam Barth  <abarth@webkit.org>

        Reviewed by David Levin.

        Make GraphicsContext3DChromium play nice with strict OwnPtrs
        https://bugs.webkit.org/show_bug.cgi?id=59659

        Attempt #2.  Hopefully this time I won't make everything crash.

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):

2011-04-27  Dirk Pranke  <dpranke@chromium.org>

        Reviewed by Darin Fisher.

        remove unneeded TestWebWidget class
        https://bugs.webkit.org/show_bug.cgi?id=59573

        * tests/PopupMenuTest.cpp:

2011-04-27  Tony Chang  <tony@chromium.org>

        Reviewed by Ojan Vafai.

        [chromium] add a build target to make a zip file with the inspector debug files
        https://bugs.webkit.org/show_bug.cgi?id=56656

        * WebKit.gyp: Add target
        * scripts/concatenate_css_files.py: Pass in a string of html rather
            than a filename
        * scripts/concatenate_js_files.py: Same as above
        * scripts/generate_devtools_html.py: Refactor main into a helper function
        * scripts/generate_devtools_zip.py: Added.

2011-04-27  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Eric Seidel.

        Frame.h shouldn't include Document.h
        https://bugs.webkit.org/show_bug.cgi?id=59560
        
        Add Document.h #includes for files that were relying on transitive
        #includes via Frame.h.

        * src/LocalFileSystemChromium.cpp:
        * src/StorageEventDispatcherImpl.cpp:
        * src/WebFrameImpl.h:
        * src/WebWorkerBase.cpp:

2011-04-26  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by Eric Seidel.

        Typedefing the shared timer function.
        https://bugs.webkit.org/show_bug.cgi?id=59564

        * public/WebKitClient.h:
        (WebKit::WebKitClient::setSharedTimerFiredFunction):

2011-04-26  Dirk Pranke  <dpranke@chromium.org>

        Unreviewed, rolling out r84982.
        http://trac.webkit.org/changeset/84982
        https://bugs.webkit.org/show_bug.cgi?id=59558

        re-land r84951

        * WebKit.gyp:
        * public/WebFrame.h:
        * public/WebWidget.h:
        * public/mac/WebSubstringUtil.h: Added.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::firstRectForCharacterRange):
        (WebKit::WebFrameImpl::characterIndexForPoint):
        * src/WebFrameImpl.h:
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::compositionRange):
        (WebKit::WebPopupMenuImpl::caretOrSelectionRange):
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::compositionRange):
        (WebKit::WebViewImpl::caretOrSelectionRange):
        * src/WebViewImpl.h:
        * src/mac/WebSubstringUtil.mm: Added.
        (WebKit::WebSubstringUtil::attributedSubstringInRange):

2011-04-26  Sam Weinig  <sam@webkit.org>

        Reviewed by David Hyatt.

        Remove Datagrid from the tree
        https://bugs.webkit.org/show_bug.cgi?id=59543

        * features.gypi:
        Remove feature.

2011-04-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r84951.
        http://trac.webkit.org/changeset/84951
        https://bugs.webkit.org/show_bug.cgi?id=59558

        "breaks chromium compile" (Requested by dpranke on #webkit).

        * WebKit.gyp:
        * public/WebFrame.h:
        * public/WebWidget.h:
        * public/mac/WebSubstringUtil.h: Removed.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::firstRectForCharacterRange):
        * src/WebFrameImpl.h:
        * src/WebPopupMenuImpl.cpp:
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:
        * src/mac/WebSubstringUtil.mm: Removed.

2011-04-26  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] Implement EditorClient::canCopyCut and EditorClient::canPaste
        https://bugs.webkit.org/show_bug.cgi?id=59264

        * public/WebViewClient.h:
        (WebKit::WebViewClient::canTriggerClipboardRead):
        (WebKit::WebViewClient::canTriggerClipboardWrite):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::canCopyCut):
        (WebKit::EditorClientImpl::canPaste):

2011-04-26  Evan Martin  <evan@chromium.org>

        Unreviewed, Chrome/Mac build fix.

        * WebKit.gypi: Remove extra file.  (I removed a subtraction, but
        forgot to remove the corresponding addition that the subtraction
        was counteracting.)

2011-04-26  Evan Martin  <evan@chromium.org>

        Reviewed by Tony Chang.

        [chromium] refactor duplicated list of test source files
        https://bugs.webkit.org/show_bug.cgi?id=59478

        The platform-specific unit test files were listed twice in
        WebKit.gyp: once for the components build, once for the normal
        build.  Refactor this into the unified webkit_unittest_files
        variable.  (It appears the omission of WebPageSerializerTest
        in one instance was an oversight.)

        * WebKit.gyp:
        * WebKit.gypi:

2011-04-26  Robert Sesek  <rsesek@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Implement WebKit methods to assist with Cocoa NSTextInput implementation
        https://bugs.webkit.org/show_bug.cgi?id=54969

        * WebKit.gyp:
        * public/WebFrame.h:
        * public/WebWidget.h:
        * public/mac/WebSubstringUtil.h: Added.
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::firstRectForCharacterRange): Return the result rect in window coordinates
        (WebKit::WebFrameImpl::characterIndexForPoint): New method on WebFrame
        * src/WebFrameImpl.h:
        * src/WebPopupMenuImpl.cpp:
        (WebKit::WebPopupMenuImpl::compositionRange): New method on WebWidget; empty impl
        (WebKit::WebPopupMenuImpl::caretOrSelectionRange): New method on WebWidget; empty impl
        * src/WebPopupMenuImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::compositionRange): New method on WebWidget
        (WebKit::WebViewImpl::caretOrSelectionRange): New method on WebWidget
        * src/WebViewImpl.h:
        * src/mac/WebSubstringUtil.mm: Added.
        (WebKit::WebSubstringUtil::attributedSubstringInRange):

2011-04-26  Adam Barth  <abarth@webkit.org>

        Reviewed by David Levin.

        Moar strict OwnPtr fixes for WebKit/chromium
        https://bugs.webkit.org/show_bug.cgi?id=59437

        This patch fixes all but two strict OwnPtr issues in WebKit/chromium.

        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::setExtraData):
        (WebKit::WebDataSourceImpl::setNextPluginLoadObserver):
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        * src/WebDataSourceImpl.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::attach):
        (WebKit::WebDevToolsAgentImpl::detach):
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::printBegin):
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::createWebMediaPlayer):
        (WebKit::WebMediaPlayerClientImpl::loadInternal):
        * src/WebSpeechInputControllerMockImpl.cpp:
        (WebKit::WebSpeechInputControllerMockImpl::WebSpeechInputControllerMockImpl):
        * src/WebStorageEventDispatcherImpl.cpp:
        (WebKit::WebStorageEventDispatcherImpl::WebStorageEventDispatcherImpl):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::settings):
        (WebKit::WebViewImpl::applyAutoFillSuggestions):
        (WebKit::WebView::addUserScript):
        (WebKit::WebView::addUserStyleSheet):

2011-04-26  Ruben  <chromium@hybridsource.org>

        Reviewed by Tony Chang.

        Change linux ifdefs for Chromium to Unix instead, allowing
        new Unix ports to be enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=59297

        * src/PlatformBridge.cpp:
        * src/WebFrameImpl.cpp:
        * src/WebViewImpl.cpp:

2011-04-26  Stephen White  <senorblanco@chromium.org>

        Reviewed by Kenneth Russell.

        Partial revert of http://trac.webkit.org/changeset/84893, since it
        triggered a large number of layout test failures.
        https://bugs.webkit.org/show_bug.cgi?id=59459

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):

2011-04-26  Hans Wennborg  <hans@chromium.org>

        Reviewed by Tony Gentilcore.

        IndexedDB: Enable compile-time flag for LevelDB
        https://bugs.webkit.org/show_bug.cgi?id=59457

        Set ENABLE_LEVELDB=1 in features.gypi.

        * features.gypi:

2011-04-26  Pavel Feldman  <pfeldman@google.com>

        Reviewed by Yury Semikhatsky.

        Chromium DevTools: recognize WebP as a valid mimetype in the Chromium port.
        https://bugs.webkit.org/show_bug.cgi?id=59332

        * src/js/DevTools.js:

2011-04-26  Adam Barth  <abarth@webkit.org>

        Reviewed by David Levin.

        WebKit/chromium should play nice with strict OwnPtrs
        https://bugs.webkit.org/show_bug.cgi?id=59434

        This fixes about half the issues.

        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::maybeLoadMainResource):
        * src/ApplicationCacheHostInternal.h:
        (WebCore::ApplicationCacheHostInternal::ApplicationCacheHostInternal):
        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::initialize):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::initialize):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::start):
        (WebCore::ResourceHandle::ResourceHandle):
        (WebCore::ResourceHandle::loadResourceSynchronously):
        * src/SocketStreamHandle.cpp:
        (WebCore::SocketStreamHandleInternal::connect):

2011-04-25  Dirk Pranke  <dpranke@chromium.org>

        Unreviewed, build fix.

        Change FAILS_ to DISABLED_ in r84813.

        * tests/TransparencyWinTest.cpp:
        (WebCore::TEST):

2011-04-25  Dirk Pranke  <dpranke@chromium.org>

        Reviewed by James Robinson.

        Suppress test failure in Chromium webkit_unit_tests.
        https://bugs.webkit.org/show_bug.cgi?id=59358

        Looks like this started failing after
        http://trac.webkit.org/changeset/84631.

        * tests/TransparencyWinTest.cpp:
        (WebCore::TEST):

2011-04-22  Mikhail Naganov  <mnaganov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Move detailed heap snapshots storage and processing into workers.
        https://bugs.webkit.org/show_bug.cgi?id=59094

        * WebKit.gyp:

2011-04-22  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Extensions API] misc API cleanup
        https://bugs.webkit.org/show_bug.cgi?id=59194

        * src/js/DevTools.js:
        (WebInspector.platformExtensionAPI):

2011-04-21  Chris Fleizach  <cfleizach@apple.com>

        Reviewed by Beth Dakin.

        AX: order AccessibilityRole alphabetically
        https://bugs.webkit.org/show_bug.cgi?id=31524

        * public/WebAccessibilityRole.h:

2011-04-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adam Roben.

        Add a feature define to allow <details> and <summary> to be disabled
        https://bugs.webkit.org/show_bug.cgi?id=59118
        <rdar://problem/9257045>

        * features.gypi:

2011-04-21  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Sam Weinig.

        Add Frame* to the argument lists of canCopyCut and canPaste
        https://bugs.webkit.org/show_bug.cgi?id=59153

        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::canCopyCut):
        (WebKit::EditorClientImpl::canPaste):
        * src/EditorClientImpl.h:

2011-04-21  Roland Steiner  <rolandsteiner@chromium.org>

        Reviewed by Dimitri Glazkov.

        Bug 58704 - Decide on node type for ShadowRoot
        https://bugs.webkit.org/show_bug.cgi?id=58704

        Add a new enum entry to WebNode::NodeType for shadow roots.
        Adapt calling sites for new SHADOW_ROOT_NODE node type.

        * public/WebNode.h:
        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::buildContentForNode):

2011-04-20  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        layoutTestController can create and destroy shadow DOM
        https://bugs.webkit.org/show_bug.cgi?id=59058

        Chromium DRT relies on the Chromium WebKit API

        * public/WebElement.h:
        * src/WebElement.cpp:
        (WebKit::WebElement::shadowRoot): don't steal a zero refcount
        (WebKit::WebElement::ensureShadowRoot): added
        (WebKit::WebElement::removeShadowRoot): added

2011-04-20  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        Check for null m_context in WebGLLayerChromium and add resetting platform layer's context in the destructor of GraphicsContext3D.
        https://bugs.webkit.org/show_bug.cgi?id=59045

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3D::~GraphicsContext3D): call into platform
        layer and unregister itself.

2011-04-20  Yuzhu Shen  <yzshen@chromium.org>

        Reviewed by Tony Chang.

        [chromium] linux chromium doesn't set click count for mouse up events.
        https://bugs.webkit.org/show_bug.cgi?id=58921

        The reason why we need such a fix is that the Pepper API passes this information to plugins,
        and some consumers (e.g., Flash) need it to detect double-clicks.

        * src/gtk/WebInputEventFactory.cpp: set click count for mouse up events.
        * tests/WebInputEventFactoryTestGtk.cpp: added test case MouseUpClickCount.
2011-04-20  Evan Martin  <evan@chromium.org>

        Reviewed by Tony Chang.

        [chromium] expose title text direction on WebDataSource
        https://bugs.webkit.org/show_bug.cgi?id=59010

        * public/WebDataSource.h:
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::pageTitle):
        (WebKit::WebDataSourceImpl::pageTitleDirection):
        * src/WebDataSourceImpl.h:

2011-04-20  Pavel Feldman  <pfeldman@google.com>

        Reviewed by Yury Semikhatsky.

        Web Inspector: add saveAs into the InspectorFrontendHost binding.
        https://bugs.webkit.org/show_bug.cgi?id=58979

        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::saveAs):
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::saveAs):
        * src/InspectorFrontendClientImpl.h:
        * src/js/DevTools.js:

2011-04-19  Naoki Takano  <takano.naoki@gmail.com>

        Reviewed by Kent Tamura.

        [Chromium]UI polishes and tweaks to Autofill dropdown menu.
        https://bugs.webkit.org/show_bug.cgi?id=58505

        * src/AutoFillPopupMenuClient.cpp:
        (WebKit::AutoFillPopupMenuClient::initialize): Set AutofillPopup for menuStyle.

2011-04-19  Dirk Pranke  <dpranke@chromium.org>

        Unreviewed, attempting build fix.

        Disable leveldb to work around
        http://code.google.com/p/leveldb/issues/detail?id=1.

        * features.gypi:

2011-04-19  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Check the type of the wrapper when unwrapping NPObjects to native
        Ranges and Elements
        https://bugs.webkit.org/show_bug.cgi?id=58957

        * src/WebBindings.cpp:
        (WebKit::getRangeImpl): check HasInstance
        (WebKit::getElementImpl): check HasInstance

2011-04-19  Evan Martin  <evan@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] didReceiveTitle API signature should not change
        https://bugs.webkit.org/show_bug.cgi?id=58909

        My previous attempt at a temporary shim was wrong.
        This second try should correctly work with older clients.

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didReceiveTitle):

2011-04-19  Jungshik Shin  <jshin@chromium.org>

        Reviewed by Adam Barth

        Fix the compile failure in UniscribeHelperTest.cpp due to
        a change in UniscribeHelper made by the CL for bug 48860
        (r84264)

        http://bugs.webkit.org/show_bug.cgi?id=48860

        * tests/UniscribeHelperTest.cpp:
        (TEST_F):

2011-04-19  Stuart Morgan  <stuartmorgan@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Clicking on plugin for first time blocks focus shift
        https://bugs.webkit.org/show_bug.cgi?id=58419

        Switched to using FocusController when moving focus to a plugin
        so that cross-frame focus changes are handled correctly.

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::handleMouseEvent):

2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Rename lengthReceived to encodedDataLength/dataLength
        https://bugs.webkit.org/show_bug.cgi?id=58883

        Renamed lengthReceived to encodedDataLength/dataLength.

        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didReceiveData):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveCachedMetadata):
        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveContentLength):
        * src/FrameLoaderClientImpl.h:
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveData):

2011-04-19  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Chromium DevTools: Network panel timing test is flaky
        https://bugs.webkit.org/show_bug.cgi?id=58699

        Fixed network timing test flakiness.

        * src/js/Tests.js:
        (.TestSuite.prototype.testNetworkTiming.finishResource):

2011-04-19  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: add chrome.devTools alias to webInspector namespace for chromium port
        https://bugs.webkit.org/show_bug.cgi?id=58894

        * src/js/DevTools.js:
        (WebInspector.platformExtensionAPI):

2011-04-19  Kinuko Yasuda  <kinuko@chromium.org>

        Not reviewed; another build fix attempt.

        * src/StorageInfoChromium.cpp:
        (WebCore::StorageInfo::queryUsageAndQuota):
        (WebCore::StorageInfo::requestQuota):
        * src/WebStorageQuotaCallbacksImpl.cpp:
        (WebKit::WebStorageQuotaCallbacksImpl::WebStorageQuotaCallbacksImpl):
        * src/WebStorageQuotaCallbacksImpl.h:

2011-04-19  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        [Chromium] Enable QUOTA API at runtime if enable-quota flag is given
        https://bugs.webkit.org/show_bug.cgi?id=58784

        * features.gypi: Added ENABLE_QUOTA=1.
        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableQuota): Added.
        (WebKit::WebRuntimeFeatures::isQuotaEnabled): Added.

2011-04-19  John Gregg  <johnnyg@google.com>

        Reviewed by Darin Fisher.

        Enable folder drag-n-drop when using a "webkitdirectory" file input
        https://bugs.webkit.org/show_bug.cgi?id=58401

        This uses a new ChromeClient API to enumerate the directory and 
        return all the files, as if the user had selected that directory
        by clicking the control in the normal way.

        * public/WebViewClient.h:
        (WebKit::WebViewClient::enumerateChosenDirectory):
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::enumerateChosenDirectory):
        * src/ChromeClientImpl.h:

2011-04-18  Evan Martin  <evan@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] expose title direction to webkit client
        https://bugs.webkit.org/show_bug.cgi?id=58823

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::didReceiveTitle):
        Add new param to API.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveTitle):
        Pass new param in API.

2011-04-17  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Adam Barth.

        Rename PLATFORM(CG) to USE(CG)
        https://bugs.webkit.org/show_bug.cgi?id=58729

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::~GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):
        (WebCore::GraphicsContext3DInternal::reshape):
        * src/GraphicsContext3DInternal.h:
        * src/PlatformBridge.cpp:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas):

2011-04-15  John Bates  <jbates@google.com>

        Reviewed by Kenneth Russell.

        Change WebGraphicsContext3D virtuals to pure virtuals as intended
        https://bugs.webkit.org/show_bug.cgi?id=58479

        * public/WebGraphicsContext3D.h:

2011-04-15  Shishir Agrawal  <shishir@chromium.org>

        Reviewed by James Robinson.

        Add a flag to guard Page Visibility API changes.
        https://bugs.webkit.org/show_bug.cgi?id=58464

        * features.gypi:

2011-04-15  Charlie Reis  <creis@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] fast/events/popup-allowed-from-gesture-initiated-form-submit.html causing debug ASSERT
        https://bugs.webkit.org/show_bug.cgi?id=44079

        Remove an assert whose invariant doesn't hold.

        * src/FrameLoaderClientImpl.cpp:

2011-04-15  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Expose unified Quota API if QUOTA build flag is enabled
        https://bugs.webkit.org/show_bug.cgi?id=58648

        * src/AssertMatchingEnums.cpp: Added enum assertions.
        * src/StorageInfoChromium.cpp: Made a build fix.

2011-04-15  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Rename rawRequestHeadersText and RawResponseHeadersText to requestHeadersText and responseHeadersText
        https://bugs.webkit.org/show_bug.cgi?id=58650

        * public/WebHTTPLoadInfo.h:
        * src/WebHTTPLoadInfo.cpp:
        (WebKit::WebHTTPLoadInfo::requestHeadersText):
        (WebKit::WebHTTPLoadInfo::setRequestHeadersText):
        (WebKit::WebHTTPLoadInfo::responseHeadersText):
        (WebKit::WebHTTPLoadInfo::setResponseHeadersText):

2011-04-15  Zelidrag Hornung  <zelidrag@chromium.org>

        Reviewed by Darin Fisher.

        Added enums for external file system type and exposed factory function
        for creating File- and DirectoryEntry objects from Chromium side.
        https://bugs.webkit.org/show_bug.cgi?id=58456

        * public/WebFileSystem.h:
        * public/WebFrame.h:
        * src/AssertMatchingEnums.cpp:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::createFileSystem):
        (WebKit::WebFrameImpl::createFileEntry):
        * src/WebFrameImpl.h:

2011-04-15  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Create tests for network panel timing, size and raw headers text
        https://bugs.webkit.org/show_bug.cgi?id=58566

        Added network timing, size and raw headers tests for Inspector
        Since chromium used different version of network stack for layout
        tests, these are interactive ui tests (DevToolsSanityTest.TestNetwork*)

        * src/js/Tests.js:
        (.TestSuite.prototype.testNetworkSize.finishResource):
        (.TestSuite.prototype.testNetworkSyncSize.finishResource):
        (.TestSuite.prototype.testNetworkRawHeadersText.finishResource):
        (.TestSuite.prototype.testNetworkTiming.finishResource):

2011-04-14  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Enable raw HTTP headers support
        https://bugs.webkit.org/show_bug.cgi?id=58259

        Added raw headers text support to inspector.

        * public/WebHTTPLoadInfo.h:
        * src/WebHTTPLoadInfo.cpp:
        (WebKit::WebHTTPLoadInfo::rawRequestHeadersText):
        (WebKit::WebHTTPLoadInfo::setRawRequestHeadersText):
        (WebKit::WebHTTPLoadInfo::rawResponseHeadersText):
        (WebKit::WebHTTPLoadInfo::setRawResponseHeadersText):

2011-04-14  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: ResourceResponse should have encodedDataLength field for synchronous requests transfer size
        https://bugs.webkit.org/show_bug.cgi?id=58447

        FrameLoader now takes encoded data length for synchronous requests from the field with the same name.

        * public/WebHTTPLoadInfo.h:
        * src/WebHTTPLoadInfo.cpp:
        (WebKit::WebHTTPLoadInfo::encodedDataLength):
        (WebKit::WebHTTPLoadInfo::setEncodedDataLength):

2011-04-14  Alok Priyadarshi  <alokp@chromium.org>

        Reviewed by James Robinson.

        Remove dependency on chromium skia::PlatformCanvas
        https://bugs.webkit.org/show_bug.cgi?id=57563

        * public/WebCanvas.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::printPage):
        * tests/TransparencyWinTest.cpp:
        (WebCore::drawNativeRect):
        (WebCore::getPixelAt):
        (WebCore::clearTopLayerAlphaChannel):
        (WebCore::clearTopLayerAlphaPixel):
        (WebCore::TEST):

2011-04-14  Brian Salomon  <bsalomon@google.com>

        Reviewed by Kenneth Russell.

        In skia platform call SkBitmap::notifyPixelsChanged on WebGL readback
        https://bugs.webkit.org/show_bug.cgi?id=58543

        No new tests. Tested by fast/canvas/webgl/canvas-test.html

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):

2011-04-14  Adrienne Walker  <enne@google.com>

        Reviewed by James Robinson.

        [chromium] TilingData should return 1 tile if tile size is texture size.
        https://bugs.webkit.org/show_bug.cgi?id=58364

        Update test to properly handle this case.

        * tests/TilingDataTest.cpp:
        (WebCore::TEST):

2011-04-14  Bill Budge  <bbudge@chromium.org>

        Reviewed by Darin Fisher.

        Make WebURLLoaderOptions disallow cross origin requests by default.
        https://bugs.webkit.org/show_bug.cgi?id=58475

        No new tests. Exposes no new functionality.

        * public/WebURLLoaderOptions.h:
        (WebKit::WebURLLoaderOptions::WebURLLoaderOptions):

2011-04-13  James Robinson  <jamesr@chromium.org>

        Reviewed by Simon Fraser.

        Allow setting composited backing stores for scrollbars and scroll corners
        https://bugs.webkit.org/show_bug.cgi?id=57202

        Remove a lot of scrollbar hacks from the chromium compositor implementation now that
        scrollbars go to real layers.

        * src/WebScrollbarImpl.cpp:
        (WebKit::WebScrollbarImpl::invalidateScrollCornerRect):
        (WebKit::WebScrollbarImpl::scrollCornerPresent):
        * src/WebScrollbarImpl.h:
        (WebKit::WebScrollbarImpl::scrollCornerRect):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::reallocateRenderer):

2011-04-13  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Jian Li.

        [chromium] Remove unnecessary #define now that chrome has rolled to the latest WebKit
        https://bugs.webkit.org/show_bug.cgi?id=58474

        * DEPS:
        * public/WebSpellCheckClient.h:

2011-04-13  Zhenyao Mo  <zmo@google.com>

        Reviewed by Kenneth Russell.

        Extension3D needs to provide a way to check if an extension is enabled
        https://bugs.webkit.org/show_bug.cgi?id=58410

        Implement isEnabled() in chromium port.

        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::isEnabled):
        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::isExtensionEnabled):
        * src/GraphicsContext3DInternal.h:

2011-04-13  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Add mock implementation and plumbing code for unified Quota API
        https://bugs.webkit.org/show_bug.cgi?id=57927

        Added plumbing code for the quota API, that is based on the
        discussion on public-webapps:
        http://lists.w3.org/Archives/Public/public-webapps/2011JanMar/0346.html

        * WebKit.gyp: Added new file entries.
        * src/StorageInfoChromium.cpp: Added.
        * src/WebStorageQuotaCallbacksImpl.cpp: Added. An implementation of
        WebStorageQuotaCallbacks.
        * src/WebStorageQuotaCallbacksImpl.h: Added.

2011-04-12  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        Chromium: Set ENABLE_LEVELDB=1 and add leveldb and snappy to DEPS
        https://bugs.webkit.org/show_bug.cgi?id=58343

        Set ENABLE_LEVELDB=1 so that code gets compiled by the EWS bots.
        Add the necessary dependencies to the DEPS file.

        * DEPS:
        * features.gypi:

2011-04-12  Kent Tamura  <tkent@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] Add WebSettings::setValidationMessageTimerMagnification()
        https://bugs.webkit.org/show_bug.cgi?id=57426

        * public/WebSettings.h: Declare new function.
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setValidationMessageTimerMagnification):
         Passing the specified value to WebCore::Settings.
        * src/WebSettingsImpl.h: Declare new function.

2011-04-12  Antoine Labour  <piman@chromium.org>

        Reviewed by Kenneth Russell.

        Allow WebView users to recreate dependent contexts after a context lost
        event. Similarly to the startup case, a temporary context gets created,
        that gets used by the layer renderer once it itself gets recreated.
        https://bugs.webkit.org/show_bug.cgi?id=58385

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::reallocateRenderer): use the temporary context to
        recreate the layer renderer if it's valid.
        (WebKit::WebViewImpl::graphicsContext3D): create a temporary context if
        the layer renderer's context is lost.

2011-04-12  Adrienne Walker  <enne@google.com>

        Reviewed by James Robinson.

        [chromium] TilingData mishandles very small texture sizes
        https://bugs.webkit.org/show_bug.cgi?id=58364

        Update test to properly handle texture sizes of 0-3.

        * tests/TilingDataTest.cpp:
        (WebCore::TEST):

2011-04-12  Jian Li  <jianli@chromium.org>

        Unreviewed, rolling out r83649.
        http://trac.webkit.org/changeset/83649
        https://bugs.webkit.org/show_bug.cgi?id=57563

        This patch causes compiling errors for chromium

        * public/WebCanvas.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::printPage):
        * tests/TransparencyWinTest.cpp:
        (WebCore::drawNativeRect):
        (WebCore::getPixelAt):
        (WebCore::clearTopLayerAlphaChannel):
        (WebCore::clearTopLayerAlphaPixel):
        (WebCore::TEST):

2011-04-12  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Jian Li.

        [chromium] Fix spellcheck regression in context menus
        https://bugs.webkit.org/show_bug.cgi?id=58386

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2011-04-12  Noel Gordon  <noel.gordon@gmail.com>

        Reviewed by Tony Chang.

        [chromium] Use new dragTargetDragEnter() function signature
        https://bugs.webkit.org/show_bug.cgi?id=58303

        After WebKit/chromium/DEPS rolls to chromium r80907, the drag identity
        based version of dragTargetDragEnter() is no longer used; remove it.

        * public/WebView.h:
        * src/WebViewImpl.cpp:
        * src/WebViewImpl.h:

2011-04-12  Alok Priyadarshi  <alokp@chromium.org>

        Reviewed by James Robinson.

        Remove dependency on chromium skia::PlatformCanvas
        https://bugs.webkit.org/show_bug.cgi?id=57563

        * public/WebCanvas.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::printPage):
        * tests/TransparencyWinTest.cpp:
        (WebCore::drawNativeRect):
        (WebCore::getPixelAt):
        (WebCore::clearTopLayerAlphaChannel):
        (WebCore::clearTopLayerAlphaPixel):
        (WebCore::TEST):

2011-04-12  Adam Barth  <abarth@webkit.org>

        Revert unintentional changes to WebKit.

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        * src/WebSettingsImpl.h:

2011-04-11  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Darin Fisher.

        [chromium]: Get the list of misspelled words in the WebKit code insetad of in chromium's RenderView
        https://bugs.webkit.org/show_bug.cgi?id=58260

        * public/WebContextMenuData.h:
        * public/WebSpellCheckClient.h:
        (WebKit::WebSpellCheckClient::spellCheck):
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::checkSpellingOfString):

2011-04-12  Bill Budge  <bbudge@chromium.org>

        Reviewed by Darin Fisher.

        Move the WebURLLoaderOptions struct into its own file and rename the CrossOriginRequestPolicy enum to conform to the WebKit coding standard.
        https://bugs.webkit.org/show_bug.cgi?id=58287

        No new tests. No new functionality exposed.

        * WebKit.gyp:
        * public/WebURLLoader.h:
        * public/WebURLLoaderOptions.h: Added.
        (WebKit::WebURLLoaderOptions::WebURLLoaderOptions):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        * src/AssociatedURLLoader.h:

2011-04-11  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [chromium] script formatting doesn't work when chromium is built with debug_devtools=1.
        https://bugs.webkit.org/show_bug.cgi?id=58232

        * WebKit.gyp:

2011-04-11  John Bates  <jbates@google.com>

        Reviewed by Kenneth Russell.

        chromium support for glSetLatch and glWaitLatch between 3D contexts
        https://bugs.webkit.org/show_bug.cgi?id=58003

        * public/WebGraphicsContext3D.h:
        (WebKit::WebGraphicsContext3D::getParentToChildLatchCHROMIUM):
        (WebKit::WebGraphicsContext3D::getChildToParentLatchCHROMIUM):
        (WebKit::WebGraphicsContext3D::waitLatchCHROMIUM):
        (WebKit::WebGraphicsContext3D::setLatchCHROMIUM):
        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::waitLatchCHROMIUM):
        (WebCore::Extensions3DChromium::setLatchCHROMIUM):
        * src/GraphicsContext3DChromium.cpp:
        * src/GraphicsContext3DInternal.h:

2011-04-11  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Tony Chang.

        [chromium] Crash in WebViewImpl::caretOrSelectionBounds
        https://bugs.webkit.org/show_bug.cgi?id=58269

        The bug was caused by caretOrSelectionBounds's incorrectly assuming
        SelectionController::toNormalizedRange to always return a non-null Range.

        Fixed the bug by adding a null pointer check. Also replaced calls to deprecatedNode
        by containerNode() and calls to SelectionController::start() and SelectionController::end()
        by calls to SelectionController::base() and SelectionController::extent() because
        selection extends from base to extent, not from start to end.

        Test: editing/selection/extend-over-file-input-by-drag-crash.html

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::caretOrSelectionBounds):

2011-04-11  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by Eric Carlson.

        Rename MediaControls to MediaControlRootElement.
        https://bugs.webkit.org/show_bug.cgi?id=58250

        Mechanical move using do-webcore-rename.

2011-04-11  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Dmitry Titov.

        [chromium] Implement image/png support in DataTransferItems
        https://bugs.webkit.org/show_bug.cgi?id=58106

        Add glue for reading image data from clipboard.

        * DEPS:
        * src/PlatformBridge.cpp:
        (WebCore::PlatformBridge::clipboardReadImage):

2011-04-05  Hans Wennborg  <hans@chromium.org>

        Reviewed by Steve Block.

        IndexedDB: Introduce skeleton for LevelDB backend
        https://bugs.webkit.org/show_bug.cgi?id=57827

        * features.gypi:
            Add ENABLE_LEVELDB=0.
        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
            Remove pre-roll open() function.

2011-04-10  Kent Tamura  <tkent@chromium.org>

        [Chromium] Fix build errors on "Win Shared Builder (dbg)"

        * WebKit.gyp: Exclude WebFrameTest.cpp for WEBKIT_DLL.

2011-04-10  Kent Tamura  <tkent@chromium.org>

        Unreviewed, rolling out r83353.
        http://trac.webkit.org/changeset/83353
        https://bugs.webkit.org/show_bug.cgi?id=58106

        The new test doesn't pass on all Chromium platforms.

        * DEPS:
        * src/PlatformBridge.cpp:

2011-04-09  Sreeram Ramachandran  <sreeram@google.com>

        Reviewed by Ryosuke Niwa.

        Gather data on modal dialogs shown during unload events
        https://bugs.webkit.org/show_bug.cgi?id=58115

        Implementation of the new API to receive notifications of modal dialogs
        dispatched during unload events. Count the notifications through a histogram.

        No tests because it's not clear how to test chromium histograms from webkit.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::willRunModalDialogDuringPageDismissal):
        * src/ChromeClientImpl.h:

2011-04-08  Aaron Boodman  <aa@chromium.org>

        Reviewed by Dmitry Titov.

        Re-land http://trac.webkit.org/changeset/83007. This works
        without changes after https://bugs.webkit.org/show_bug.cgi?id=58110.

        https://bugs.webkit.org/show_bug.cgi?id=58096

        * WebKit.gyp:
        * WebKit.gypi:
        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrame::frameForContext):
        * tests/WebFrameTest.cpp:
        (WebKit::WebFrameTest::WebFrameTest):
        (WebKit::WebFrameTest::registerMockedURLLoad):
        (WebKit::WebFrameTest::loadFrame):
        (WebKit::TEST_F):

2011-04-08  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Dmitry Titov.

        [chromium] Implement image/png support in DataTransferItems
        https://bugs.webkit.org/show_bug.cgi?id=58106

        Add glue for reading image data from clipboard.

        * DEPS:
        * src/PlatformBridge.cpp:
        (WebCore::PlatformBridge::clipboardReadImage):

2011-04-08  Alpha Lam  <hclam@chromium.org>

        Unreviewed, rolling out r83335.
        http://trac.webkit.org/changeset/83335
        https://bugs.webkit.org/show_bug.cgi?id=53556

        GTK and QT bots are broken

        * features.gypi:

2011-04-07  Anna Cavender  <annacc@chromium.org>

        Reviewed by Eric Carlson.

        Setup ENABLE(TRACK) feature define
        https://bugs.webkit.org/show_bug.cgi?id=53556

        * features.gypi:

2011-04-08  Dmitry Titov  <dimich@chromium.org>

        Reviewed by Adam Barth.

        [Chromium] Remove unneeded usage of V8::Lockers in IDB tests.
        https://bugs.webkit.org/show_bug.cgi?id=58110
        Since they are simple one-thread tests.
        This code parallels the code in Chromium's idb bindings that uses v8 Lockers in utility process,
        which is equally not needed since there is only one thread running v8 in that process.

        * tests/IDBBindingUtilitiesTest.cpp:

2011-04-07  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: add test for script formatter worker.
        https://bugs.webkit.org/show_bug.cgi?id=57447

        * WebKit.gyp:

2011-04-08  Kent Tamura  <tkent@chromium.org>

        [Chromium] The second attempt of fixing for Windows (dbg)(shared) build.

        * WebKit.gyp: webkit should not depend on webkit_support.

2011-04-08  Kent Tamura  <tkent@chromium.org>

        [Chromium] Build fix for Windows (dbg)(shared).

        * WebKit.gyp: Add webkit_support dependency, which is required for webkit_unittest_files.

2011-04-07  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by Darin Fisher.

        [Chromium] Add WebKit API to query and request unified offline-storage quota
        https://bugs.webkit.org/show_bug.cgi?id=57849
        Just adding the API, this does not do anything yet.

        The API is based on the public discussion for unified quota API:
        http://lists.w3.org/Archives/Public/public-webapps/2011JanMar/0346.html
        (The detail is not yet fully specified and might be subject to change.)

        * public/WebFrameClient.h:
        (WebKit::WebFrameClient::queryStorageUsageAndQuota): Added.
        (WebKit::WebFrameClient::requestStorageQuota): Added.
        * public/WebStorageQuotaCallbacks.h: Added.
        (WebKit::WebStorageQuotaCallbacks::~WebStorageQuotaCallbacks):
        * public/WebStorageQuotaType.h: Added.

2011-04-07  Dominic Cooney  <dominicc@google.com>

        Reviewed by Dimitri Glazkov.

        Let shadow DOM have a list of nodes at the top level of a shadow.
        https://bugs.webkit.org/show_bug.cgi?id=57813

        * src/WebElement.cpp:
        (WebKit::WebElement::shadowRoot): shadow roots are ContainerNodes now

2011-04-07  Magnus Danielsson  <public@fuzzac.com>

        Reviewed by Darin Fisher.

        [chromium] WebPageSerializerImpl doesn't serialize sub-frames correctly
        https://bugs.webkit.org/show_bug.cgi?id=53897

        When serializing a web page using 'save page as', sub-frames and resources gets
        saved in a sub-directory. However, frame elements didn't get updated to reference
        these saved sub-frames, but were still referencing the original url. So when opening
        a saved web page, any sub-frames would get pulled in from the original url rather than 
        what was saved.

        In addition to this, sub-frames in the sub-directory erroneously had the name of the
        sub-directory prepended to the path of resources located in the same sub-directory.

        * src/WebPageSerializerImpl.cpp:
        (WebKit::WebPageSerializerImpl::openTagToStrne: Fixed resource paths in sub-frames. 
        Also made sure sub-frames are referenced correctly from parent frame.
        (WebKit::WebPageSerializerImpl::endTagToString): Removed constness from argument.
        (WebKit::WebPageSerializerImpl::buildContentForNode): Ditto.
        * src/WebPageSerializerImpl.h:

2011-04-07  Nat Duca  <nduca@chromium.org>

        Reviewed by David Levin.

        [chromium] Compositor thread infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=56131

        Tests for chrome compositor thread and related infrastructure.

        * WebKit.gyp:
        * WebKit.gypi:
        * tests/CCThreadTaskTest.cpp: Added.
        (WebCore::TEST):
        * tests/CCThreadTest.cpp: Added.
        (WebCore::TEST):
        (WebCore::PingPongUsingCondition::ping):
        (WebCore::PingPongTestUsingTasks::ping):
        (WebCore::PingPongTestUsingTasks::pong):
        * tests/RunAllTests.cpp:
        (main):

2011-04-07  Andrew Scherkus  <scherkus@chromium.org>

        Revert ENABLE_TRACK patch due to compile failures.

        * features.gypi:

2011-04-07  Pavel Feldman  <pfeldman@google.com>

        Not reviewed: rolling chromium DEPS 80421:80767.

        * DEPS:

2011-04-07  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Rename didReceiveData2 to didReceiveData as part of enabling transfer size support.
        https://bugs.webkit.org/show_bug.cgi?id=58036

        Renamed didReceiveData2 to didReceiveData.

        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didReceiveData):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveData):

2011-04-07  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Migrate didReceiveData in upstream for plugins as part of enabling transfer size support.
        https://bugs.webkit.org/show_bug.cgi?id=58034

        Migrated didReceiveData to support new lengthReceived parameter.

        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):

2011-04-06  Asanka Herath  <asanka@chromium.org>

        Reviewed by Darin Fisher.

        Add new TargetType: TargetIsFavicon

        https://bugs.webkit.org/show_bug.cgi?id=57659

        * public/WebURLRequest.h:

2011-04-06  Alok Priyadarshi  <alokp@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] Add settings API to enable accelerated drawing
        https://bugs.webkit.org/show_bug.cgi?id=57863
        
        If accelerated drawing is enabled we try to render content and
        root layers using GPU. Please note that this setting is ignored if
        accelerated compositing is disabled.

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setAcceleratedDrawingEnabled):
        * src/WebSettingsImpl.h:

2011-04-05  Zelidrag Hornung  <zelidrag@chromium.org>

        Reviewed by David Levin.

        Added MediaTypeFile enum value to WebContextMenuData::MediaType.
        https://bugs.webkit.org/show_bug.cgi?id=57566

        * public/WebContextMenuData.h:

2011-04-05  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r83007.
        http://trac.webkit.org/changeset/83007
        https://bugs.webkit.org/show_bug.cgi?id=57920

        Broke WebFrameTest.FrameForEnteredContext on Chromium-win and
        Chromium-mac (Requested by tkent on #webkit).

        * WebKit.gyp:
        * WebKit.gypi:
        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        * tests/WebFrameTest.cpp:
        (WebKit::WebFrameTest::WebFrameTest):
        (WebKit::WebFrameTest::registerMockedURLLoad):
        (WebKit::WebFrameTest::serveRequests):
        (WebKit::TEST_F):

2011-04-05  James Kozianski  <koz@chromium.org>

        Unreviewed, rolling out r82976.
        http://trac.webkit.org/changeset/82976
        https://bugs.webkit.org/show_bug.cgi?id=57566

        Breaks chromium canary build

        * public/WebContextMenuData.h:

2011-04-05  Aaron Boodman  <aa@chromium.org>

        Reviewed by Adam Barth.

        Add ability to get frame from v8 context to chromium WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=57516

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrame::frameForV8Context):

2011-04-05  Nico Weber  <thakis@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Don't have 'using namespace' declarations in header files
        https://bugs.webkit.org/show_bug.cgi?id=57882

        * src/EventListenerWrapper.cpp:
        * src/EventListenerWrapper.h:
        * src/VideoFrameChromiumImpl.h:
        * src/WebDOMEventListener.cpp:
        * src/WebDOMEventListenerPrivate.cpp:
        * src/WebDOMEventListenerPrivate.h:
        (WebKit::WebDOMEventListenerPrivate::ListenerInfo::ListenerInfo):

2011-04-05  Zelidrag Hornung  <zelidrag@chromium.org>

        Reviewed by David Levin.

        Added MediaTypeFile enum value to WebContextMenuData::MediaType.
        https://bugs.webkit.org/show_bug.cgi?id=57566

        * public/WebContextMenuData.h:

2011-04-04  MORITA Hajime  <morrita@google.com>

        Reviewed by Ryosuke Niwa.

        [Refactoring] SpellCheckingResult should be replaced with TextCheckingResult
        https://bugs.webkit.org/show_bug.cgi?id=56085

        Followed the signature change.
        
        * src/EditorClientImpl.h:
        * src/EditorClientImpl.cpp:
        * src/WebTextCheckingCompletionImpl.cpp

2011-04-05  Hans Wennborg  <hans@chromium.org>

        Reviewed by Adam Barth

        Clean up IndexedDB WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=57507

        Rename the backend proxy files that didn't have Backend in their name.
        Everything in WebKit should be in the WebKit namespace.
        Put everything behind the feature flag so we're consistient.
        Put the feature flag #if above includes.

        * WebKit.gyp:
        * src/IDBCallbacksProxy.cpp:
        (WebKit::IDBCallbacksProxy::create):
        (WebKit::IDBCallbacksProxy::IDBCallbacksProxy):
        (WebKit::IDBCallbacksProxy::onError):
        (WebKit::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBCursorBackendProxy.cpp:
        (WebKit::IDBCursorBackendProxy::create):
        (WebKit::IDBCursorBackendProxy::IDBCursorBackendProxy):
        * src/IDBCursorBackendProxy.h:
        * src/IDBDatabaseBackendProxy.cpp:
        (WebKit::IDBDatabaseBackendProxy::create):
        (WebKit::IDBDatabaseBackendProxy::IDBDatabaseBackendProxy):
        (WebKit::IDBDatabaseBackendProxy::~IDBDatabaseBackendProxy):
        (WebKit::IDBDatabaseBackendProxy::name):
        (WebKit::IDBDatabaseBackendProxy::version):
        (WebKit::IDBDatabaseBackendProxy::objectStoreNames):
        (WebKit::IDBDatabaseBackendProxy::createObjectStore):
        (WebKit::IDBDatabaseBackendProxy::deleteObjectStore):
        (WebKit::IDBDatabaseBackendProxy::setVersion):
        (WebKit::IDBDatabaseBackendProxy::transaction):
        (WebKit::IDBDatabaseBackendProxy::close):
        (WebKit::IDBDatabaseBackendProxy::open):
        * src/IDBDatabaseCallbacksProxy.cpp:
        (WebKit::IDBDatabaseCallbacksProxy::create):
        (WebKit::IDBDatabaseCallbacksProxy::IDBDatabaseCallbacksProxy):
        * src/IDBDatabaseCallbacksProxy.h:
        * src/IDBFactoryBackendProxy.cpp:
        (WebKit::IDBFactoryBackendProxy::IDBFactoryBackendProxy):
        (WebKit::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/IDBIndexBackendProxy.cpp:
        (WebKit::IDBIndexBackendProxy::create):
        (WebKit::IDBIndexBackendProxy::IDBIndexBackendProxy):
        * src/IDBIndexBackendProxy.h:
        * src/IDBObjectStoreBackendProxy.cpp:
        (WebKit::IDBObjectStoreBackendProxy::create):
        (WebKit::IDBObjectStoreBackendProxy::IDBObjectStoreBackendProxy):
        (WebKit::IDBObjectStoreBackendProxy::~IDBObjectStoreBackendProxy):
        (WebKit::IDBObjectStoreBackendProxy::name):
        (WebKit::IDBObjectStoreBackendProxy::keyPath):
        (WebKit::IDBObjectStoreBackendProxy::indexNames):
        (WebKit::IDBObjectStoreBackendProxy::get):
        (WebKit::IDBObjectStoreBackendProxy::put):
        (WebKit::IDBObjectStoreBackendProxy::deleteFunction):
        (WebKit::IDBObjectStoreBackendProxy::clear):
        (WebKit::IDBObjectStoreBackendProxy::createIndex):
        (WebKit::IDBObjectStoreBackendProxy::index):
        (WebKit::IDBObjectStoreBackendProxy::deleteIndex):
        (WebKit::IDBObjectStoreBackendProxy::openCursor):
        * src/IDBObjectStoreBackendProxy.h: Added.
        * src/IDBObjectStoreProxy.h: Removed.
        * src/IDBTransactionBackendProxy.cpp:
        (WebKit::IDBTransactionBackendProxy::create):
        (WebKit::IDBTransactionBackendProxy::IDBTransactionBackendProxy):
        (WebKit::IDBTransactionBackendProxy::objectStore):
        * src/IDBTransactionBackendProxy.h:
        (WebKit::IDBTransactionBackendProxy::getWebIDBTransaction):
        * src/IDBTransactionCallbacksProxy.cpp:
        (WebKit::IDBTransactionCallbacksProxy::create):
        (WebKit::IDBTransactionCallbacksProxy::IDBTransactionCallbacksProxy):
        * src/IDBTransactionCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebKit::WebIDBCallbacksImpl::onError):
        (WebKit::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBCursorImpl.cpp:
        * src/WebIDBCursorImpl.h:
        * src/WebIDBDatabaseCallbacksImpl.cpp:
        (WebKit::WebIDBDatabaseCallbacksImpl::onVersionChange):
        * src/WebIDBDatabaseCallbacksImpl.h:
        * src/WebIDBDatabaseError.cpp:
        * src/WebIDBDatabaseImpl.cpp:
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::WebIDBFactoryImpl):
        * src/WebIDBFactoryImpl.h:
        * src/WebIDBIndexImpl.cpp:
        * src/WebIDBIndexImpl.h:
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::createFromValueAndKeyPath):
        (WebKit::WebIDBKey::injectIDBKeyIntoSerializedValue):
        * src/WebIDBKeyPath.cpp:
        (WebKit::WebIDBKeyPath::operator const WTF::Vector<IDBKeyPathElement, 0>&):
        * src/WebIDBKeyRange.cpp:
        * src/WebIDBObjectStoreImpl.cpp:
        * src/WebIDBObjectStoreImpl.h:
        * src/WebIDBTransactionCallbacksImpl.cpp:
        * src/WebIDBTransactionCallbacksImpl.h:
        * src/WebIDBTransactionImpl.cpp:
        * src/WebIDBTransactionImpl.h:

2011-04-05  Sailesh Agrawal  <sail@chromium.org>

        Reviewed by Darin Fisher.

        Don't clear existing files if the user cancels the file chooser dialog.
        https://bugs.webkit.org/show_bug.cgi?id=55200

        * src/WebFileChooserCompletionImpl.cpp:
        (WebKit::WebFileChooserCompletionImpl::didChooseFile):

2011-04-05  John Mellor  <johnme@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Minor cleanup: simplify WebFrameImpl by using contentsToWindow instead of convertToContainingWindow.
        https://bugs.webkit.org/show_bug.cgi?id=55681

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::find):
        (WebKit::WebFrameImpl::scopeStringMatches):

2011-04-05  Adam Barth  <abarth@webkit.org>

        Roll Chromium DEPS.

        * DEPS: Rolled!

2011-04-04  Chang Shu  <cshu@webkit.org>

        Reviewed by Ryosuke Niwa.

        setContentEditable with true/false/inherit string is not working properly
        https://bugs.webkit.org/show_bug.cgi?id=52058

        Move isContentEditable from HTMLElement to Node. WebKit should only access isContentEditable
        as rendererIsEditable is for WebCore internal use.

        * src/WebNode.cpp:
        (WebKit::WebNode::isContentEditable):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::setComposition):
        (WebKit::WebViewImpl::confirmComposition):

2011-04-04  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Dan Bernstein.

        REGRESSION (WebKit2): Caps-Lock indicator sometimes doesn't appear in WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=51230
        <rdar://problem/8780989>

        * src/WebViewImpl.cpp: (WebKit::WebViewImpl::keyEvent): Moved Caps Lock handling from
        WebKits to WebCore, because WebKit shouldn't be smart.

2011-04-01  Adam Barth  <abarth@webkit.org>

        Attempt to fix the Chromium build using the great and powerful git.
        This patch should be the remaining part of reverting Jeremy's ill-fated
        refactoring.

        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::create):
        (WebCore::IDBDatabaseProxy::IDBDatabaseProxy):
        (WebCore::IDBDatabaseProxy::~IDBDatabaseProxy):
        (WebCore::IDBDatabaseProxy::name):
        (WebCore::IDBDatabaseProxy::version):
        (WebCore::IDBDatabaseProxy::objectStoreNames):
        (WebCore::IDBDatabaseProxy::createObjectStore):
        (WebCore::IDBDatabaseProxy::deleteObjectStore):
        (WebCore::IDBDatabaseProxy::setVersion):
        (WebCore::IDBDatabaseProxy::transaction):
        (WebCore::IDBDatabaseProxy::close):
        (WebCore::IDBDatabaseProxy::open):
        * src/IDBDatabaseProxy.h:
        * src/IDBObjectStoreProxy.cpp:
        (WebCore::IDBObjectStoreProxy::create):
        (WebCore::IDBObjectStoreProxy::IDBObjectStoreProxy):
        (WebCore::IDBObjectStoreProxy::~IDBObjectStoreProxy):
        (WebCore::IDBObjectStoreProxy::name):
        (WebCore::IDBObjectStoreProxy::keyPath):
        (WebCore::IDBObjectStoreProxy::indexNames):
        (WebCore::IDBObjectStoreProxy::get):
        (WebCore::IDBObjectStoreProxy::put):
        (WebCore::IDBObjectStoreProxy::deleteFunction):
        (WebCore::IDBObjectStoreProxy::clear):
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::index):
        (WebCore::IDBObjectStoreProxy::deleteIndex):
        (WebCore::IDBObjectStoreProxy::openCursor):

2011-04-01  Adam Barth  <abarth@webkit.org>

        Move these files back to their old locations.  I'm not sure why the
        rollout didn't move them properly.

        * src/IDBDatabaseBackendProxy.cpp: Removed.
        * src/IDBDatabaseBackendProxy.h: Removed.
        * src/IDBDatabaseProxy.cpp: Copied from Source/WebKit/chromium/src/IDBDatabaseBackendProxy.cpp.
        * src/IDBDatabaseProxy.h: Copied from Source/WebKit/chromium/src/IDBDatabaseBackendProxy.h.
        * src/IDBObjectStoreBackendProxy.cpp: Removed.
        * src/IDBObjectStoreProxy.cpp: Copied from Source/WebKit/chromium/src/IDBObjectStoreBackendProxy.cpp.

2011-04-01  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r82738.
        http://trac.webkit.org/changeset/82738
        https://bugs.webkit.org/show_bug.cgi?id=57684

        Broke storage/indexeddb/objectstore-autoincrement.html and
        InjectIDBKey (Requested by abarth|gardening on #webkit).

        * WebKit.gyp:
        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::create):
        (WebCore::IDBCallbacksProxy::IDBCallbacksProxy):
        (WebCore::IDBCallbacksProxy::onError):
        (WebCore::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBCursorBackendProxy.cpp:
        (WebCore::IDBCursorBackendProxy::create):
        (WebCore::IDBCursorBackendProxy::IDBCursorBackendProxy):
        * src/IDBCursorBackendProxy.h:
        * src/IDBDatabaseCallbacksProxy.cpp:
        (WebCore::IDBDatabaseCallbacksProxy::create):
        (WebCore::IDBDatabaseCallbacksProxy::IDBDatabaseCallbacksProxy):
        * src/IDBDatabaseCallbacksProxy.h:
        * src/IDBDatabaseProxy.cpp: Renamed from Source/WebKit/chromium/src/IDBDatabaseBackendProxy.cpp.
        (WebCore::IDBDatabaseProxy::create):
        (WebCore::IDBDatabaseProxy::IDBDatabaseProxy):
        (WebCore::IDBDatabaseProxy::~IDBDatabaseProxy):
        (WebCore::IDBDatabaseProxy::name):
        (WebCore::IDBDatabaseProxy::version):
        (WebCore::IDBDatabaseProxy::objectStoreNames):
        (WebCore::IDBDatabaseProxy::createObjectStore):
        (WebCore::IDBDatabaseProxy::deleteObjectStore):
        (WebCore::IDBDatabaseProxy::setVersion):
        (WebCore::IDBDatabaseProxy::transaction):
        (WebCore::IDBDatabaseProxy::close):
        (WebCore::IDBDatabaseProxy::open):
        * src/IDBDatabaseProxy.h: Renamed from Source/WebKit/chromium/src/IDBDatabaseBackendProxy.h.
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::IDBFactoryBackendProxy):
        (WebCore::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/IDBIndexBackendProxy.cpp:
        (WebCore::IDBIndexBackendProxy::create):
        (WebCore::IDBIndexBackendProxy::IDBIndexBackendProxy):
        * src/IDBIndexBackendProxy.h:
        * src/IDBObjectStoreBackendProxy.h: Removed.
        * src/IDBObjectStoreProxy.cpp: Renamed from Source/WebKit/chromium/src/IDBObjectStoreBackendProxy.cpp.
        (WebCore::IDBObjectStoreProxy::create):
        (WebCore::IDBObjectStoreProxy::IDBObjectStoreProxy):
        (WebCore::IDBObjectStoreProxy::~IDBObjectStoreProxy):
        (WebCore::IDBObjectStoreProxy::name):
        (WebCore::IDBObjectStoreProxy::keyPath):
        (WebCore::IDBObjectStoreProxy::indexNames):
        (WebCore::IDBObjectStoreProxy::get):
        (WebCore::IDBObjectStoreProxy::put):
        (WebCore::IDBObjectStoreProxy::deleteFunction):
        (WebCore::IDBObjectStoreProxy::clear):
        (WebCore::IDBObjectStoreProxy::createIndex):
        (WebCore::IDBObjectStoreProxy::index):
        (WebCore::IDBObjectStoreProxy::deleteIndex):
        (WebCore::IDBObjectStoreProxy::openCursor):
        * src/IDBObjectStoreProxy.h: Added.
        * src/IDBTransactionBackendProxy.cpp:
        (WebCore::IDBTransactionBackendProxy::create):
        (WebCore::IDBTransactionBackendProxy::IDBTransactionBackendProxy):
        (WebCore::IDBTransactionBackendProxy::objectStore):
        * src/IDBTransactionBackendProxy.h:
        (WebCore::IDBTransactionBackendProxy::getWebIDBTransaction):
        * src/IDBTransactionCallbacksProxy.cpp:
        (WebCore::IDBTransactionCallbacksProxy::create):
        (WebCore::IDBTransactionCallbacksProxy::IDBTransactionCallbacksProxy):
        * src/IDBTransactionCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onError):
        (WebCore::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBCursorImpl.cpp:
        * src/WebIDBCursorImpl.h:
        * src/WebIDBDatabaseCallbacksImpl.cpp:
        (WebCore::WebIDBDatabaseCallbacksImpl::onVersionChange):
        * src/WebIDBDatabaseCallbacksImpl.h:
        * src/WebIDBDatabaseError.cpp:
        * src/WebIDBDatabaseImpl.cpp:
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::WebIDBFactoryImpl):
        * src/WebIDBFactoryImpl.h:
        * src/WebIDBIndexImpl.cpp:
        * src/WebIDBIndexImpl.h:
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::createFromValueAndKeyPath):
        (WebKit::WebIDBKey::injectIDBKeyIntoSerializedValue):
        * src/WebIDBKeyPath.cpp:
        (WebKit::WebIDBKeyPath::operator const WTF::Vector<WebCore::IDBKeyPathElement, 0>&):
        * src/WebIDBKeyRange.cpp:
        * src/WebIDBObjectStoreImpl.cpp:
        * src/WebIDBObjectStoreImpl.h:
        * src/WebIDBTransactionCallbacksImpl.cpp:
        * src/WebIDBTransactionCallbacksImpl.h:
        * src/WebIDBTransactionImpl.cpp:
        * src/WebIDBTransactionImpl.h:

2011-03-30  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Nate Chapin.

        Clean up IndexedDB WebKit API
        https://bugs.webkit.org/show_bug.cgi?id=57507

        Rename the backend proxy files that didn't have Backend in their name.
        Everything in WebKit should be in the WebKit namespace.
        Put everything behind the feature flag so we're consistient.
        Put the feature flag #if above includes.

        * WebKit.gyp:
        * src/IDBCallbacksProxy.cpp:
        (WebKit::IDBCallbacksProxy::create):
        (WebKit::IDBCallbacksProxy::IDBCallbacksProxy):
        (WebKit::IDBCallbacksProxy::onError):
        (WebKit::IDBCallbacksProxy::onSuccess):
        * src/IDBCallbacksProxy.h:
        * src/IDBCursorBackendProxy.cpp:
        (WebKit::IDBCursorBackendProxy::create):
        (WebKit::IDBCursorBackendProxy::IDBCursorBackendProxy):
        * src/IDBCursorBackendProxy.h:
        * src/IDBDatabaseBackendProxy.cpp:
        (WebKit::IDBDatabaseBackendProxy::create):
        (WebKit::IDBDatabaseBackendProxy::IDBDatabaseBackendProxy):
        (WebKit::IDBDatabaseBackendProxy::~IDBDatabaseBackendProxy):
        (WebKit::IDBDatabaseBackendProxy::name):
        (WebKit::IDBDatabaseBackendProxy::version):
        (WebKit::IDBDatabaseBackendProxy::objectStoreNames):
        (WebKit::IDBDatabaseBackendProxy::createObjectStore):
        (WebKit::IDBDatabaseBackendProxy::deleteObjectStore):
        (WebKit::IDBDatabaseBackendProxy::setVersion):
        (WebKit::IDBDatabaseBackendProxy::transaction):
        (WebKit::IDBDatabaseBackendProxy::close):
        (WebKit::IDBDatabaseBackendProxy::open):
        * src/IDBDatabaseCallbacksProxy.cpp:
        (WebKit::IDBDatabaseCallbacksProxy::create):
        (WebKit::IDBDatabaseCallbacksProxy::IDBDatabaseCallbacksProxy):
        * src/IDBDatabaseCallbacksProxy.h:
        * src/IDBFactoryBackendProxy.cpp:
        (WebKit::IDBFactoryBackendProxy::IDBFactoryBackendProxy):
        (WebKit::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/IDBIndexBackendProxy.cpp:
        (WebKit::IDBIndexBackendProxy::create):
        (WebKit::IDBIndexBackendProxy::IDBIndexBackendProxy):
        * src/IDBIndexBackendProxy.h:
        * src/IDBObjectStoreBackendProxy.cpp:
        (WebKit::IDBObjectStoreBackendProxy::create):
        (WebKit::IDBObjectStoreBackendProxy::IDBObjectStoreBackendProxy):
        (WebKit::IDBObjectStoreBackendProxy::~IDBObjectStoreBackendProxy):
        (WebKit::IDBObjectStoreBackendProxy::name):
        (WebKit::IDBObjectStoreBackendProxy::keyPath):
        (WebKit::IDBObjectStoreBackendProxy::indexNames):
        (WebKit::IDBObjectStoreBackendProxy::get):
        (WebKit::IDBObjectStoreBackendProxy::put):
        (WebKit::IDBObjectStoreBackendProxy::deleteFunction):
        (WebKit::IDBObjectStoreBackendProxy::clear):
        (WebKit::IDBObjectStoreBackendProxy::createIndex):
        (WebKit::IDBObjectStoreBackendProxy::index):
        (WebKit::IDBObjectStoreBackendProxy::deleteIndex):
        (WebKit::IDBObjectStoreBackendProxy::openCursor):
        * src/IDBObjectStoreBackendProxy.h: Added.
        * src/IDBObjectStoreProxy.h: Removed.
        * src/IDBTransactionBackendProxy.cpp:
        (WebKit::IDBTransactionBackendProxy::create):
        (WebKit::IDBTransactionBackendProxy::IDBTransactionBackendProxy):
        (WebKit::IDBTransactionBackendProxy::objectStore):
        * src/IDBTransactionBackendProxy.h:
        (WebKit::IDBTransactionBackendProxy::getWebIDBTransaction):
        * src/IDBTransactionCallbacksProxy.cpp:
        (WebKit::IDBTransactionCallbacksProxy::create):
        (WebKit::IDBTransactionCallbacksProxy::IDBTransactionCallbacksProxy):
        * src/IDBTransactionCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebKit::WebIDBCallbacksImpl::onError):
        (WebKit::WebIDBCallbacksImpl::onSuccess):
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBCursorImpl.cpp:
        * src/WebIDBCursorImpl.h:
        * src/WebIDBDatabaseCallbacksImpl.cpp:
        (WebKit::WebIDBDatabaseCallbacksImpl::onVersionChange):
        * src/WebIDBDatabaseCallbacksImpl.h:
        * src/WebIDBDatabaseError.cpp:
        * src/WebIDBDatabaseImpl.cpp:
        * src/WebIDBDatabaseImpl.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::WebIDBFactoryImpl):
        * src/WebIDBFactoryImpl.h:
        * src/WebIDBIndexImpl.cpp:
        * src/WebIDBIndexImpl.h:
        * src/WebIDBKey.cpp:
        (WebKit::WebIDBKey::createFromValueAndKeyPath):
        (WebKit::WebIDBKey::injectIDBKeyIntoSerializedValue):
        * src/WebIDBKeyPath.cpp:
        (WebKit::WebIDBKeyPath::operator const WTF::Vector<IDBKeyPathElement, 0>&):
        * src/WebIDBKeyRange.cpp:
        * src/WebIDBObjectStoreImpl.cpp:
        * src/WebIDBObjectStoreImpl.h:
        * src/WebIDBTransactionCallbacksImpl.cpp:
        * src/WebIDBTransactionCallbacksImpl.h:
        * src/WebIDBTransactionImpl.cpp:
        * src/WebIDBTransactionImpl.h:

2011-03-30  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [chromium] script formatting doesn't work when all scripts are concatenated.
        https://bugs.webkit.org/show_bug.cgi?id=57446

        * WebKit.gyp:
        * scripts/inline_js_imports.py: Added.

2011-03-31  Victoria Kirst  <vrk@google.com>

        Reviewed by Eric Carlson.

        [chromium] Implement preload=none, setPreload hooks to media player
        https://bugs.webkit.org/show_bug.cgi?id=56983

        This patch implements preload=none in Chromium. It also replaces
        the now-deprecated setAutobuffer method with setPreload.

        * public/WebMediaPlayer.h:
        (WebKit::WebMediaPlayer::setPreload):
        * public/WebMediaPlayerClient.h:
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::preload):
        (WebKit::WebMediaPlayerClientImpl::load):
        (WebKit::WebMediaPlayerClientImpl::loadInternal):
        (WebKit::WebMediaPlayerClientImpl::prepareToPlay):
        (WebKit::WebMediaPlayerClientImpl::setPreload):
        (WebKit::WebMediaPlayerClientImpl::startDelayedLoad):
        (WebKit::WebMediaPlayerClientImpl::WebMediaPlayerClientImpl):
        * src/WebMediaPlayerClientImpl.h:

2011-03-31  Evan Martin  <evan@chromium.org>

        Reviewed by Eric Seidel.

        <title> should support dir attribute
        https://bugs.webkit.org/show_bug.cgi?id=50961

        Update to new FrameLoaderClient interface.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDidReceiveTitle):
        (WebKit::FrameLoaderClientImpl::setTitle):
        * src/FrameLoaderClientImpl.h:
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::pageTitle):

2011-03-30  David Levin  <levin@chromium.org>

        Reviewed by Dmitry Titov.

        UnlockNonLocked condition reached in WorkerFileSystemsCallbackBridge::mayPostTaskToWorker
        https://bugs.webkit.org/show_bug.cgi?id=57382

        There were two issues to address:
        1. The use of a non-thread safe class (RefPtr) in a ThreadSafeRefCounted class.
           The problem was that this RefPtr could be changed on either thread.
        2. Keeping WorkerFileSystemCallbacksBridge alive for while it was being used
           including while its mutex was in use.

        * src/WorkerFileSystemCallbacksBridge.cpp:
        (WebKit::WorkerFileSystemCallbacksBridge::runTaskOnMainThread):
        Changed to take a PassRefPtr and leak the ref count as opposed to relying on
        dispatchTaskToMainThread to store the pointer in m_selfRef.
        (WebKit::WorkerFileSystemCallbacksBridge::dispatchTaskToMainThread): Remove the
        m_selfRef and hand off a PassRefPtr instead.
        (WebKit::WorkerFileSystemCallbacksBridge::mayPostTaskToWorker): Balance out the leaked ref
        and ensure that WorkerFileSystemCallbacksBridge stays alive while the mutex is held.
        * src/WorkerFileSystemCallbacksBridge.h: Removed m_selfRef and derefIfWorkerIsStopped which
          was simply due to m_selfRef.

2011-03-29  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Tony Chang.

        [chromium]: Remove the code that called WebViewClient for spelling now that chromium is updated
        https://bugs.webkit.org/show_bug.cgi?id=57396

        * DEPS:
        * public/WebFrame.h:
        * public/WebView.h:
        * public/WebViewClient.h:
        (WebKit::WebViewClient::handleCurrentKeyboardEvent):
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::checkSpellingOfString):
        (WebKit::EditorClientImpl::requestCheckingOfString):
        (WebKit::EditorClientImpl::getAutoCorrectSuggestionForMisspelledWord):
        (WebKit::EditorClientImpl::updateSpellingUIWithMisspelledWord):
        (WebKit::EditorClientImpl::showSpellingUI):
        (WebKit::EditorClientImpl::spellingUIIsShowing):
        * src/WebViewImpl.cpp:
        (WebKit::WebView::create):
        * src/WebViewImpl.h:
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::initializeLoader):
        * tests/PopupMenuTest.cpp:
        (WebKit::SelectPopupMenuTest::SetUp):
        * tests/WebFrameTest.cpp:
        (WebKit::TEST_F):
        * tests/WebPageSerializerTest.cpp:
        (WebKit::WebPageSerializerTest::SetUp):

2011-03-30  MORITA Hajime  <morrita@google.com>

        Reviewed by Dimitri Glazkov.

        [Chromium] Expose the shadow DOM to DumpRenderTree JS tests.
        https://bugs.webkit.org/show_bug.cgi?id=56573

        Added:
        - WebBindins::makeNode() to convert WebNode to a JS object, and
        - WebElement::shadowRoot().

        * public/WebBindings.h:
        * public/WebElement.h:
        * src/WebBindings.cpp:
        (WebKit::makeNodeImpl):
        (WebKit::WebBindings::makeNode):
        * src/WebElement.cpp:
        (WebKit::WebElement::shadowRoot):

2011-03-30  Mario Sanchez Prada  <msanchez@igalia.com>

        Reviewed by Chris Fleizach.

        AX: GTK: ARIA role is not respected on <p> <label> <div> and <form>
        https://bugs.webkit.org/show_bug.cgi?id=47636

        Duplicate new internal WebCore roles in the Chromium port.

        * public/WebAccessibilityRole.h: Update enumeration
        WebAccessibilityRole to reflect newly added roles in WebCore.
        * src/AssertMatchingEnums.cpp: Added new assertions.

2011-03-30  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: split debugger agent into Page and Worker-specific ones
        https://bugs.webkit.org/show_bug.cgi?id=57345

        ScriptDebugServer and InspectorDebuggerAgent contain only functionality common
        for Worker and Page debugger. All specifics is moved into Page/WorkerScriptDebugServer
        and Page/WorkerDebuggerAgent.

        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        (WebKit::WebDevToolsAgent::processPendingMessages):

2011-03-30  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Rollout r82438 and r82436.

        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        (WebKit::WebDevToolsAgent::processPendingMessages):

2011-03-30  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: split debugger agent into Page and Worker-specific ones
        https://bugs.webkit.org/show_bug.cgi?id=57345

        ScriptDebugServer and InspectorDebuggerAgent contain only functionality common
        for Worker and Page debugger. All specifics is moved into Page/WorkerScriptDebugServer
        and Page/WorkerDebuggerAgent.

        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgent::interruptAndDispatch):
        (WebKit::WebDevToolsAgent::processPendingMessages):

2011-03-29  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r82293.
        http://trac.webkit.org/changeset/82293
        https://bugs.webkit.org/show_bug.cgi?id=57390

        Breaks RetrieveCSSResources (Requested by abarth|gardener on
        #webkit).

        * WebKit.gyp:
        * src/WebPageSerializer.cpp:
        (WebCore::getSubResourceURLFromElement):
        (WebCore::retrieveResourcesForElement):
        (WebCore::retrieveResourcesForFrame):
        (WebKit::WebPageSerializer::retrieveAllResources):
        * tests/WebPageSerializerTest.cpp:
        * tests/data/pageserialization/css_test_page.html: Removed.
        * tests/data/pageserialization/import_style_from_link.css: Removed.
        * tests/data/pageserialization/import_styles.css: Removed.
        * tests/data/pageserialization/link_styles.css: Removed.

2011-03-29  Tony Chang  <tony@chromium.org>

        Roll chromium version to r79710 to pick up libpng changes.

        * DEPS:

2011-03-29  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r82295 and r82300.
        http://trac.webkit.org/changeset/82295
        http://trac.webkit.org/changeset/82300
        https://bugs.webkit.org/show_bug.cgi?id=57380

        This patch breaks compile on Chromium (Requested by
        abarth|gardener on #webkit).

        * public/WebAccessibilityRole.h:
        * src/AssertMatchingEnums.cpp:

2011-03-29  Mario Sanchez Prada  <msanchez@igalia.com>

        Reviewed by Adam Barth.

        REGRESSION(r82295): This patch does not compile on Chromium (Requested by abarth|gardener on #webkit).
        https://bugs.webkit.org/show_bug.cgi?id=57377

        Fix build errors on Chromium bots.

        * public/WebAccessibilityRole.h: Update to reflect newly added roles in WebCore.
        * src/AssertMatchingEnums.cpp: Ditto.

2011-03-29  Adam Barth  <abarth@webkit.org>

        Roll Chromium DEPS
        https://bugs.webkit.org/show_bug.cgi?id=57361

        * DEPS:

2011-03-29  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Adding retrieval off CSS resources to WebPageSerializer::retrieveAllResources.
        https://bugs.webkit.org/show_bug.cgi?id=56650

        * WebKit.gyp:
        * src/WebPageSerializer.cpp:
        (WebCore::getResourceAttributeForElement):
        (WebCore::retrieveStyleSheetForElement):
        (WebCore::retrieveResourcesForElement):
        (WebCore::retrieveResourcesForFrame):
        (WebCore::retrieveResourcesForCSSRule):
        (WebCore::retrieveResourcesForCSSStyleDeclaration):
        (WebCore::retrieveResourcesForCSSStyleSheet):
        (WebKit::WebPageSerializer::retrieveAllResources):
        * tests/WebPageSerializerTest.cpp:
        (WebKit::TestWebFrameClient::TestWebFrameClient):
        (WebKit::TestWebFrameClient::allowScript):
        (WebKit::WebPageSerializerTest::enableJS):
        (WebKit::WebPageSerializerTest::runOnLoad):
        (WebKit::TEST_F):
        * tests/data/pageserialization/css_test_page.html: Added.
        * tests/data/pageserialization/import_style_from_link.css: Added.
        (#divOrange):
        * tests/data/pageserialization/import_styles.css: Added.
        (#divYellow):
        * tests/data/pageserialization/link_styles.css: Added.
        (#divRed):

2011-03-29  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Inspector does not always shows transferred size correctly (e.g. gzipped/chunked content)
        https://bugs.webkit.org/show_bug.cgi?id=56602

        Added new methods to interface while keeping the old ones to keep
        chromium working until it is also patched.

        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didReceiveData2):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveData):
        (WebCore::ResourceHandleInternal::didReceiveData2):

2011-03-29  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] DevTools shows two resources for each plugin resource loaded
        https://bugs.webkit.org/show_bug.cgi?id=57101

        Remove DevToolsAgent network callbacks as this information is now available through ResourceLoader

        * public/WebDevToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsAgentImpl.h:

2011-03-29  Emil A Eklund  <eae@chromium.org>

        Reviewed by Dimitri Glazkov.

        Relative mouse coordinates recalculated for each target
        https://bugs.webkit.org/show_bug.cgi?id=57130

        * public/WebDOMMouseEvent.h:
        * src/WebDOMMouseEvent.cpp:
        (WebKit::WebDOMMouseEvent::layerX):
        (WebKit::WebDOMMouseEvent::layerY):
        (WebKit::WebDOMMouseEvent::offsetX):
        (WebKit::WebDOMMouseEvent::offsetY):

2011-03-29  Yuta Kitamura  <yutak@chromium.org>

        Unreviewed, rolling out r82195.
        http://trac.webkit.org/changeset/82195
        https://bugs.webkit.org/show_bug.cgi?id=56602

        Broke Chromium Clang builds.

        * public/WebDevToolsAgent.h:
        * public/WebURLLoaderClient.h:
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveData):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didReceiveData):
        * src/WebDevToolsAgentImpl.h:

2011-03-29  Yuta Kitamura  <yutak@chromium.org>

        Unreviewed. Another build fix. The last fix was incorrect.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::supportsFullscreenForNode):
        (WebKit::ChromeClientImpl::supportsFullScreenForElement):
        * src/ChromeClientImpl.h:

2011-03-29  Yuta Kitamura  <yutak@chromium.org>

        Unreviewed. Build fix for Chromium Clang bot.

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::supportsFullscreenForNode):
        * src/ChromeClientImpl.h:

2011-03-28  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Inspector does not always shows transferred size correctly (e.g. gzipped/chunked content)
        https://bugs.webkit.org/show_bug.cgi?id=56602

        Added new methods to interface while keeping the old ones to keep
        chromium working until it is also patched.

        * public/WebDevToolsAgent.h:
        * public/WebURLLoaderClient.h:
        (WebKit::WebURLLoaderClient::didReceiveData):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveData):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didReceiveData):
        * src/WebDevToolsAgentImpl.h:

2011-03-28  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        [chromium] have DRT write the png checksum into a png comment
        https://bugs.webkit.org/show_bug.cgi?id=57255

        * DEPS: Pull in version of chromium with comment writing

2011-03-28  Adele Peterson  <adele@apple.com>

        Build fix.

        * src/WebFrameImpl.cpp: (WebKit::WebFrameImpl::selectionStartHasSpellingMarkerFor):
        Call new selectionStartHasMarkerFor method instead of selectionStartHasSpellingMarkerFor.

2011-03-28  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: fixed chromium build.

        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgent::shouldInterruptForMessage):

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

        Reviewed by Adele Peterson.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::objectContentType):
        * src/FrameLoaderClientImpl.h:

2011-03-25  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Data race between ~WorkerFileSystemCallbacksBridge and runTasksOnWorkerThread
        https://bugs.webkit.org/show_bug.cgi?id=56138
        Stopped passing the WorkerFileSystemCallbacksBridge's reference to
        MainThreadFileSystemCallbacks so that in most cases (in normal cases)
        its reference is only maintained by WorkerThread.

        * src/WorkerFileSystemCallbacksBridge.cpp:
        (WebKit::MainThreadFileSystemCallbacks::createLeakedPtr):
        (WebKit::MainThreadFileSystemCallbacks::MainThreadFileSystemCallbacks):
        (WebKit::WorkerFileSystemCallbacksBridge::mayPostTaskToWorker):
        * src/WorkerFileSystemCallbacksBridge.h:

2011-03-24  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Add setters for various client interfaces, and add WebSpellCheckClient
        https://bugs.webkit.org/show_bug.cgi?id=57070

        * public/WebSpellCheckClient.h: Added.
        (WebKit::WebSpellCheckClient::spellCheck):
        (WebKit::WebSpellCheckClient::requestCheckingOfText):
        (WebKit::WebSpellCheckClient::autoCorrectWord):
        (WebKit::WebSpellCheckClient::showSpellingUI):
        (WebKit::WebSpellCheckClient::isShowingSpellingUI):
        (WebKit::WebSpellCheckClient::updateSpellingUIWithMisspelledWord):
        (WebKit::WebSpellCheckClient::~WebSpellCheckClient):
        * public/WebView.h:
        * public/WebViewClient.h:
        * src/EditorClientImpl.cpp:
        (WebKit::EditorClientImpl::checkSpellingOfString):
        (WebKit::EditorClientImpl::requestCheckingOfString):
        (WebKit::EditorClientImpl::getAutoCorrectSuggestionForMisspelledWord):
        (WebKit::EditorClientImpl::updateSpellingUIWithMisspelledWord):
        (WebKit::EditorClientImpl::showSpellingUI):
        (WebKit::EditorClientImpl::spellingUIIsShowing):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setWebDevToolsAgentClient):
        (WebKit::WebViewImpl::setWebAutoFillClient):
        (WebKit::WebViewImpl::setWebSpellCheckClient):
        (WebKit::WebViewImpl::WebViewImpl):
        * src/WebViewImpl.h:
        (WebKit::WebViewImpl::spellCheckClient):

2011-03-25  Cary Clark  <caryclark@google.com>

        Reviewed by Dimitri Glazkov.

        Add CGBitmapContext.h include to WebViewImpl.cpp
        https://bugs.webkit.org/show_bug.cgi?id=57097
        
        No tests. Exposes no new functionality.

        * src/WebViewImpl.cpp:

2011-03-25  Adam Klein  <adamk@chromium.org>

        Reviewed by David Levin.

        [chromium] Remove deprecated overload of openFileSystem for workers
        https://bugs.webkit.org/show_bug.cgi?id=57062

        * public/WebCommonWorkerClient.h:

2011-03-25  Chang Shu  <cshu@webkit.org>

        Reviewed by Ryosuke Niwa.

        rename Node::isContentEditable and all call sites to rendererIsEditable
        https://bugs.webkit.org/show_bug.cgi?id=54290

        This is part of the effort to separate JS API HTMLElement isContentEditable from
        internal Node::rendererIsEditable.

        * src/WebNode.cpp:
        (WebKit::WebNode::isContentEditable):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setFocus):
        (WebKit::WebViewImpl::setComposition):
        (WebKit::WebViewImpl::confirmComposition):

2011-03-25  Mikhail Naganov  <mnaganov@chromium.org>

        Roll forward Chromium deps to r79379 to pick up V8 3.2.4.2.

        * DEPS:

2011-03-24  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81916 and r81917.
        http://trac.webkit.org/changeset/81916
        http://trac.webkit.org/changeset/81917
        https://bugs.webkit.org/show_bug.cgi?id=57071

        broke a test on platforms that do not have QuickTime installed
        (Requested by estes on #webkit).

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::objectContentType):
        * src/FrameLoaderClientImpl.h:

2011-03-24  Min Qin  <qinmin@google.com>

        Reviewed by James Robinson.

        Allow WebMediaPlayerClient to notify MediaPlayer that the playback state has changed

        https://bugs.webkit.org/show_bug.cgi?id=56837

        * public/WebMediaPlayerClient.h:
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::playbackStateChanged):
        * src/WebMediaPlayerClientImpl.h:

2011-03-23  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Get rid of WEB_TEXT_CHECKING_RESULT_IS_A_STRUCT since it&apos;s not needed anymore
        https://bugs.webkit.org/show_bug.cgi?id=56955

        * DEPS:
        * public/WebTextCheckingResult.h:

2011-03-24  Bill Budge  <bbudge@chromium.org>

        Reviewed by Eric Seidel.

        Change a forward declaration of WebURLLoaderOptions to struct to prevent a build break in Chromium.
        https://bugs.webkit.org/show_bug.cgi?id=57064

        No tests. Exposes no new functionality.

        * public/WebFrame.h:

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

        Fix the chromium build.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::objectContentType):

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

        Reviewed by Darin Adler.

        REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
        https://bugs.webkit.org/show_bug.cgi?id=49016

        Update objectContentType() implementation to handle the
        shouldPreferPlugInsForImages flag.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::objectContentType):
        * src/FrameLoaderClientImpl.h:

2011-03-24  Bill Budge  <bbudge@chromium.org>

        Reviewed by Dmitry Titov.

        Add an overloaded WebFrame::createAssociatedURLLoader method that takes WebURLLoaderOptions, so clients can specify CORS options to allow cross-origin requests.
        https://bugs.webkit.org/show_bug.cgi?id=56885

        No new tests. Exposes no new functionality.

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::createAssociatedURLLoader):
        * src/WebFrameImpl.h:

2011-03-24  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Remove legacy version of findPlainText.
        https://bugs.webkit.org/show_bug.cgi?id=57056

        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::scopeStringMatches):
        Replace use of legacy findPlainText with a version that
        takes an options parameter.

2011-03-24  Nat Duca  <nduca@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Add traceEvents to compositor
        https://bugs.webkit.org/show_bug.cgi?id=56965

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::composite):

2011-03-24  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Dimitri Glazkov.

        Add accessibilityObject accessor to WebDocument (needed for
        building an accessibility tree that includes iframes).
        https://bugs.webkit.org/show_bug.cgi?id=56984

        * public/WebDocument.h:
        * src/WebDocument.cpp:
        (WebKit::WebDocument::accessibilityObject):

2011-03-24  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Dimitri Glazkov.

        Expose Node::isFocusable() in the Chromium WebKit API
        In service of https://code.google.com/p/chromium/issues/detail?id=72918
        https://bugs.webkit.org/show_bug.cgi?id=56809

        * public/WebNode.h:
        * src/WebNode.cpp:
        (WebKit::WebNode::isFocusable):

2011-03-24  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: fix chromium compilation.

        * public/WebDevToolsAgent.h:

2011-03-24  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: brush up Network agent API.
        https://bugs.webkit.org/show_bug.cgi?id=57001

        * public/WebDevToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::identifierForInitialRequest):
        (WebKit::WebDevToolsAgentImpl::willSendRequest):
        * src/WebDevToolsAgentImpl.h:

2011-03-24  Noel Gordon  <noel.gordon@gmail.com>

        Reviewed by Ojan Vafai.

        [chromium] WebBindings::getRangeImpl() should NULL check its NPObject argument
        https://bugs.webkit.org/show_bug.cgi?id=56996

        * src/WebBindings.cpp:
        (WebKit::getRangeImpl):

2011-03-23  Noel Gordon  <noel.gordon@gmail.com>

        Reviewed by Ojan Vafai.

        [chromium] WebBindings{.h,.cpp}: should use consistent argument naming
        https://bugs.webkit.org/show_bug.cgi?id=56898

        Address FIXME I noted/added in r81676.  Wanted to just copy/paste the checking
        code from elsewhere in the file, but inconsistent argument naming made it more
        difficult than it need be, so first step: use consistent naming.

        * public/WebBindings.h:
        * src/WebBindings.cpp:
        (WebKit::WebBindings::construct):
        (WebKit::WebBindings::enumerate):
        (WebKit::WebBindings::evaluate):
        (WebKit::WebBindings::evaluateHelper):
        (WebKit::WebBindings::getProperty):
        (WebKit::WebBindings::hasMethod):
        (WebKit::WebBindings::hasProperty):
        (WebKit::WebBindings::invoke):
        (WebKit::WebBindings::invokeDefault):
        (WebKit::WebBindings::releaseObject):
        (WebKit::WebBindings::removeProperty):
        (WebKit::WebBindings::retainObject):
        (WebKit::WebBindings::setException):
        (WebKit::WebBindings::setProperty):
        (WebKit::WebBindings::unregisterObject):
        (WebKit::WebBindings::extractIdentifierData):
        (WebKit::getRangeImpl):
        (WebKit::getElementImpl):
        (WebKit::makeIntArrayImpl):
        (WebKit::WebBindings::getRange):
        (WebKit::WebBindings::makeIntArray):

2011-03-23  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Relanding:
        Moving the method that is used to retrieve all the resources in
        a page from the Chromium code (dom_operations.cc) to WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=55859

        * WebKit.gyp:
        * public/WebPageSerializer.h:
        * public/WebURL.h:
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebVector.h:
        (WebKit::WebVector::contains):
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        * src/WebPageSerializer.cpp:
        (WebCore::getSubResourceURLFromElement):
        (WebCore::retrieveResourcesForElement):
        (WebCore::retrieveResourcesForFrame):
        (WebKit::WebPageSerializer::retrieveAllResources):
        * tests/WebFrameTest.cpp:
        * tests/WebPageSerializerTest.cpp: Added.
        * tests/data/pageserialization/awesome.png: Added.
        * tests/data/pageserialization/embed_iframe.html: Added.
        * tests/data/pageserialization/object_iframe.html: Added.
        * tests/data/pageserialization/simple_iframe.html: Added.
        * tests/data/pageserialization/simple_page.html: Added.
        * tests/data/pageserialization/top_frame.html: Added.

2011-03-23  Kenneth Russell  <kbr@google.com>

        Rolled forward Chromium DEPS again to fix DumpRenderTree build
        failure caused by r81821.

        * DEPS:

2011-03-23  Kenneth Russell  <kbr@google.com>

        Rolled forward Chromium DEPS to fix build breakage after r81821.

        * DEPS:

2011-03-23  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] WebGLRenderingContext and other DOMWindow properties should remain if WebGL is disabled
        https://bugs.webkit.org/show_bug.cgi?id=56947

        Removed the WebRuntimeFeatures setting for WebGL. WebGL support is
        now controlled exclusively through the page's Settings.

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:

2011-03-23  Chris Rogers  <crogers@google.com>

        Reviewed by Kenneth Russell.

        Add API to retrieve the audio hardware sample-rate
        https://bugs.webkit.org/show_bug.cgi?id=56882

        * public/WebAudioDevice.h:
        * public/WebKitClient.h:
        (WebKit::WebKitClient::audioHardwareSampleRate):
        * src/AudioDestinationChromium.cpp:
        (WebCore::AudioDestination::hardwareSampleRate):

2011-03-23  Cris Neckar  <cdn@chromium.org>

        Reviewed by Eric Seidel.

        Add refptr for widget. Mutations can happen within the event handler.
        https://bugs.webkit.org/show_bug.cgi?id=56774

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::handleEvent):

2011-03-23  Viet-Trung Luu  <viettrungluu@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Add FormatPlainText to WebClipboard::Format enumeration.
        https://bugs.webkit.org/show_bug.cgi?id=56868

        Chromium's WebClipboard::isFormatAvailable() will be correspondingly
        extended.

        * public/WebClipboard.h:
        * src/AssertMatchingEnums.cpp:

2011-03-23  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Web Inspector: Remove DebuggerScript.js from Chromium resource bundle.
        https://bugs.webkit.org/show_bug.cgi?id=56916

        * DEPS: bump up Chromium dependency to the revision where no references to the DebuggerScript.js resource are left.
        * WebKit.grd:

2011-03-23  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Web Inspector: remove inspectNode method from WebDevToolsAgent
        https://bugs.webkit.org/show_bug.cgi?id=56926

        * public/WebDevToolsAgent.h:
        * src/WebDevToolsAgentImpl.cpp:
        * src/WebDevToolsAgentImpl.h:

2011-03-23  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81686.
        http://trac.webkit.org/changeset/81686
        https://bugs.webkit.org/show_bug.cgi?id=56914

        Breaks webkit_tests in Chromium again. (Requested by pfeldman
        on #webkit).

        * WebKit.gyp:
        * public/WebPageSerializer.h:
        * public/WebURL.h:
        * public/WebVector.h:
        (WebKit::WebVector::operator[]):
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        * src/WebPageSerializer.cpp:
        * tests/WebFrameTest.cpp:
        * tests/WebPageSerializerTest.cpp: Removed.
        * tests/data/pageserialization/awesome.png: Removed.
        * tests/data/pageserialization/embed_iframe.html: Removed.
        * tests/data/pageserialization/object_iframe.html: Removed.
        * tests/data/pageserialization/simple_iframe.html: Removed.
        * tests/data/pageserialization/simple_page.html: Removed.
        * tests/data/pageserialization/top_frame.html: Removed.

2011-03-22  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [V8] Web Inspector: compile DebuggerScript.js into DebuggerScriptSource.h
        https://bugs.webkit.org/show_bug.cgi?id=56843

        * public/WebDevToolsAgentClient.h: the script source is now compiled along with the inspector code.
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::attach):

2011-03-22  Yury Semikhatsky  <yurys@chromium.org>

        Reviewed by Pavel Feldman.

        [Chromium] Web Inspector: remove obsolete methods from WebDevToolsAgentClient.h
        https://bugs.webkit.org/show_bug.cgi?id=56897

        * public/WebDevToolsAgentClient.h:

2011-03-22  Noel Gordon  <noel.gordon@gmail.com>

        Reviewed by Tony Chang.

        [chromium] Remove identity from dragTargetDragEnter() function signature
        https://bugs.webkit.org/show_bug.cgi?id=56875

        First part of 3-sided patch.  Add new function signature sans identity.

        * public/WebView.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dragTargetDragEnter):
        * src/WebViewImpl.h:

2011-03-22  John Bauman  <jbauman@chromium.org>

        Reviewed by Kenneth Russell.

        Add support for preserveDrawingBuffer context creation attribute
        https://bugs.webkit.org/show_bug.cgi?id=56431

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::markContextChanged):
        (WebCore::GraphicsContext3DInternal::markLayerComposited):
        (WebCore::GraphicsContext3DInternal::layerComposited):
        (WebCore::GraphicsContext3D::layerComposited):
        * src/GraphicsContext3DInternal.h:

2011-03-22  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Make WebTextCheckingResult&apos;s members be public in preparation for converting it to a struct
        https://bugs.webkit.org/show_bug.cgi?id=56857

        * DEPS:
        * public/WebTextCheckingResult.h:

2011-03-22  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Relanding:
        Moving the method that is used to retrieve all the resources in
        a page from the Chromium code (dom_operations.cc) to WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=55859


        * WebKit.gyp:
        * public/WebPageSerializer.h:
        * public/WebURL.h:
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebVector.h:
        (WebKit::WebVector::contains):
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        * src/WebPageSerializer.cpp:
        (WebCore::getSubResourceURLFromElement):
        (WebCore::retrieveResourcesForElement):
        (WebCore::retrieveResourcesForFrame):
        (WebKit::WebPageSerializer::retrieveAllResources):
        * tests/WebFrameTest.cpp:
        * tests/WebPageSerializerTest.cpp: Added.
        * tests/data/pageserialization/awesome.png: Added.
        * tests/data/pageserialization/embed_iframe.html: Added.
        * tests/data/pageserialization/object_iframe.html: Added.
        * tests/data/pageserialization/simple_iframe.html: Added.
        * tests/data/pageserialization/simple_page.html: Added.
        * tests/data/pageserialization/top_frame.html: Added.

2011-03-22  Noel Gordon  <noel.gordon@gmail.com>

        Reviewed by Tony Chang.

        [chromium] Remove Gears from Chromium WebKit
        https://bugs.webkit.org/show_bug.cgi?id=56808

        Gears has been removed from Chromium 12. Remove Gears drag drop support
        from WebKit. That work lead to http://webkit.org/b/25916, a proposal to
        add native file drag drop, and its subsequent standardization in HTML5.

        * public/WebBindings.h:
        * public/WebView.h:
        * src/WebBindings.cpp:
        (WebKit::getRangeImpl): FIXME note added.
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::dragTargetDragEnter):
        (WebKit::WebViewImpl::dragTargetDragLeave):
        (WebKit::WebViewImpl::dragTargetDrop):
        (WebKit::WebViewImpl::dragTargetDragEnterOrOver):
        * src/WebViewImpl.h:

2011-03-21  Adam Klein  <adamk@chromium.org>

        Reviewed by David Levin.

        [fileapi] Add URI resolution support to WorkerContext
        https://bugs.webkit.org/show_bug.cgi?id=55644

        Pass "create" bool through to allow opening
        a filesystem without allowing creation.

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::readFileSystem):
        (WebCore::LocalFileSystem::requestFileSystem):
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::openFileSystemForWorker):
        * src/WebWorkerBase.h:
        * src/WorkerFileSystemCallbacksBridge.cpp:
        (WebKit::WorkerFileSystemCallbacksBridge::postOpenFileSystemToMainThread):
        (WebKit::WorkerFileSystemCallbacksBridge::openFileSystemOnMainThread):
        * src/WorkerFileSystemCallbacksBridge.h:

2011-03-21  Ilya Sherman  <isherman@chromium.org>

        Reviewed by James Robinson.

        Remove WebInputElement::isEnabledFormControl() from Chromium WebKit API
        Clients should instead call into WebFormControlElement::isEnabled().
        https://bugs.webkit.org/show_bug.cgi?id=56364

        * public/WebInputElement.h: Removed isEnabledFormControl().
        * src/WebInputElement.cpp: Removed isEnabledFormControl().

2011-03-21  Robert Kroeger  <rjkroege@chromium.org>

        Reviewed by Antonio Gomes.

        Flag to enable a platform specific GestureReocognizer framework in Chromium.

        https://bugs.webkit.org/show_bug.cgi?id=49345

        * features.gypi:

2011-03-21  Tony Chang  <tony@chromium.org>

        Reviewed by Pavel Feldman.

        [chromium] remove devtools_html's dependency on WebKit.gypi
        https://bugs.webkit.org/show_bug.cgi?id=56661

        We want to depend on the values in the gypi file, not the gypi file
        itself.  Actually, if someone edits a gypi file, s/he should re-run
        gyp to pick up the new dependencies.

        It turns out that this doesn't matter much for this target anymore
        since we pull the .js dependencies from the inspector html file.

        * WebKit.gyp: cleanup dependencies
        * scripts/generate_devtools_html.py: remove unused param

2011-03-21  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81377.
        http://trac.webkit.org/changeset/81377
        https://bugs.webkit.org/show_bug.cgi?id=56765

        WebPageSerializerTest.MultipleFrames is broken (Requested by
        simonjam on #webkit).

        * WebKit.gyp:
        * public/WebPageSerializer.h:
        * public/WebURL.h:
        * public/WebVector.h:
        (WebKit::WebVector::operator[]):
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        * src/WebPageSerializer.cpp:
        * tests/WebFrameTest.cpp:
        * tests/WebPageSerializerTest.cpp: Removed.
        * tests/data/pageserialization/awesome.png: Removed.
        * tests/data/pageserialization/embed_iframe.html: Removed.
        * tests/data/pageserialization/object_iframe.html: Removed.
        * tests/data/pageserialization/simple_iframe.html: Removed.
        * tests/data/pageserialization/simple_page.html: Removed.
        * tests/data/pageserialization/top_frame.html: Removed.

2011-03-21  Daniel Sievers  <sievers@google.com>

        Reviewed by Simon Fraser.

        [Chromium] Make RenderAsTextBehavior and LayerTreeAsTextBehavior tweakable from the DumpRenderTree commandline
        https://bugs.webkit.org/show_bug.cgi?id=56139

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::renderTreeAsText):
        (WebKit::WebFrameImpl::layerTreeAsText):
        * src/WebFrameImpl.h:

2011-03-21  Eric Uhrhane <ericu@chromium.org>

        Reviewed by David Levin.

        [fileapi/chromium] Fetch platform path using GetMetadata before creating File from FileEntry*
        https://bugs.webkit.org/show_bug.cgi?id=56704

        * src/WebFileSystemCallbacksImpl.cpp:
        (WebFileSystemCallbacksImpl::didReadMetadata)
        Pass new platformPath member through.

        * src/WorkerFileSystemCallbacksBridge.cpp:
        (CrossThreadCopierBase)
        Copy new platformPath member.

        * public/WebFileInfo.h:
        (struct WebFileInfo)
        Add new platformPath member.

2011-03-21  Leandro Gracia Gil  <leandrogracia@chromium.org>

        Reviewed by Steve Block.

        Media Stream API patch 0: adding compilation guards.
        https://bugs.webkit.org/show_bug.cgi?id=56458

        Enabling the feature by default for chromium builds.

        * features.gypi:

2011-03-21  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Inspector does not always show correct transfer size (for compressed/chunked data)
        https://bugs.webkit.org/show_bug.cgi?id=56691

        Added transfer size support in inspector for compressed data.

        * src/ResourceHandle.cpp:
        (WebCore::ResourceHandleInternal::didReceiveData):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::didReceiveData):

2011-03-20  Bill Budge  <bbudge@chromium.org>

        Reviewed by Adam Barth.

        Rename ThreadSafeShared to ThreadSafeRefCounted
        https://bugs.webkit.org/show_bug.cgi?id=56714

        No new tests. Exposes no new functionality.

        * src/PlatformMessagePortChannel.h:
        * src/WebWorkerBase.cpp:
        * src/WorkerFileSystemCallbacksBridge.h:
        * src/WorkerFileWriterCallbacksBridge.h:

2011-03-18  Tony Chang  <tony@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] make devtool concatenation targets conditional based on debug_devtools
        https://bugs.webkit.org/show_bug.cgi?id=56667

        We don't want to run these targets when debug_devtools=1 because it
        will overwrite the devtools.js and devtools.css files copied by
        inspector_resources.  On Linux, this triggers a warning because
        there are two commands that target the same output file when
        debug_devtools=1.

        I also removed the 'sources' lines since I don't think they do
        anything for actions.

        * WebKit.gyp:

2011-03-17  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        chromium: uninitialized field in WebViewImpl
        https://bugs.webkit.org/show_bug.cgi?id=56620

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::WebViewImpl):

2011-03-17  Adrienne Walker  <enne@google.com>

        Reviewed by James Robinson.

        [chromium] Turn off accelerated compositing for RTL style pages.
        https://bugs.webkit.org/show_bug.cgi?id=56585

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::layout):
        (WebKit::WebViewImpl::pageHasRTLStyle):
        (WebKit::WebViewImpl::setRootGraphicsLayer):
        * src/WebViewImpl.h:

2011-03-17  Jay Civelli  <jcivelli@chromium.org>

        Reviewed by David Levin.

        Moving the method that is used to retrieve all the resources in
        a page from the Chromium code (dom_operations.cc) to WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=55859

        * WebKit.gyp:
        * public/WebPageSerializer.h:
        * public/WebURL.h:
        (WebKit::operator==):
        (WebKit::operator!=):
        * public/WebVector.h:
        (WebKit::WebVector::contains):
        * src/WebDataSourceImpl.cpp:
        (WebKit::WebDataSourceImpl::WebDataSourceImpl):
        * src/WebPageSerializer.cpp:
        (WebCore::getSubResourceURLFromElement):
        (WebCore::retrieveResourcesForElement):
        (WebCore::retrieveResourcesForFrame):
        (WebKit::WebPageSerializer::retrieveAllResources):
        * tests/WebFrameTest.cpp:
        * tests/WebPageSerializerTest.cpp: Added.
        * tests/data/pageserialization: Added.
        * tests/data/pageserialization/awesome.png: Added.
        * tests/data/pageserialization/embed_iframe.html: Added.
        * tests/data/pageserialization/object_iframe.html: Added.
        * tests/data/pageserialization/simple_iframe.html: Added.
        * tests/data/pageserialization/simple_page.html: Added.
        * tests/data/pageserialization/top_frame.html: Added.

2011-03-17  Tony Chang  <tony@chromium.org>

        Reviewed by Pavel Feldman.

        [chromium] don't concatenate devtools files when debug_devtools=1
        https://bugs.webkit.org/show_bug.cgi?id=56572

        * WebKit.gyp:

2011-03-17  Tony Chang  <tony@chromium.org>

        Reviewed by Eric Seidel.

        [chromium] minor cleanup of devtools_files variable in WebKit.gyp
        https://bugs.webkit.org/show_bug.cgi?id=56503

        * WebKit.gyp: Moving duplicate variables out of a condition.

2011-03-16  Adam Barth  <abarth@webkit.org>

        Reviewed by James Robinson.

        Remove USE(BUILTIN_UTF8_CODEC)
        https://bugs.webkit.org/show_bug.cgi?id=56508

        * features.gypi:

2011-03-16  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        [chromium] include inspector gif files in the list of resources
        https://bugs.webkit.org/show_bug.cgi?id=56504

        * scripts/generate_devtools_grd.py:

2011-03-16  Bill Budge  <bbudge@chromium.org>

        Reviewed by David Levin.

        AssociatedURLLoader does not support Cross Origin Requests
        https://bugs.webkit.org/show_bug.cgi?id=53925

        No new tests. Exposes no new functionality.

        * public/WebURLLoader.h:
        (WebKit::WebURLLoaderOptions::WebURLLoaderOptions):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::isDocumentThreadableLoaderClient):
        (WebKit::AssociatedURLLoader::ClientAdapter::clearClient):
        (WebKit::AssociatedURLLoader::ClientAdapter::create):
        (WebKit::AssociatedURLLoader::ClientAdapter::ClientAdapter):
        (WebKit::AssociatedURLLoader::ClientAdapter::willSendRequest):
        (WebKit::AssociatedURLLoader::ClientAdapter::didSendData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveResponse):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFinishLoading):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFail):
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        * src/AssociatedURLLoader.h:

2011-03-16  Adam Barth  <abarth@webkit.org>

        Roll Chromium DEPS.

        * DEPS:

2011-03-16  Daniel Sievers  <sievers@google.com>

        Reviewed by James Robinson.

        Add setting to always force compositing mode
        https://bugs.webkit.org/show_bug.cgi?id=56156

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setForceCompositingMode):
        * src/WebSettingsImpl.h:

2011-03-16  Sreeram Ramachandran  <sreeram@google.com>

        Reviewed by Dimitri Glazkov.

        Revert of r80451. Decided to do this in WebCore instead.
        https://bugs.webkit.org/show_bug.cgi?id=55844

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        * src/WebFrameImpl.h:

2011-03-15  Ilya Sherman  <isherman@chromium.org>

        Reviewed by Darin Fisher.

        Move isReadOnly() from WebInputElement to WebFormControlElement
        https://bugs.webkit.org/show_bug.cgi?id=55760

        * public/WebFormControlElement.h:
        * public/WebInputElement.h:
        * src/WebFormControlElement.cpp:
        (WebKit::WebFormControlElement::isReadOnly):
        * src/WebInputElement.cpp:

2011-03-15  John Bauman  <jbauman@chromium.org>

        Reviewed by Kenneth Russell.

        Non-premultiplied-alpha canvas attribute is ignore for toDataURL, drawImage, texImage2D
        https://bugs.webkit.org/show_bug.cgi?id=56238

        Add support for reading a webgl context into an ImageData.

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToImageData):
        * src/GraphicsContext3DInternal.h:

2011-03-15  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81144.
        http://trac.webkit.org/changeset/81144
        https://bugs.webkit.org/show_bug.cgi?id=56432

        It broke the ui test
        NPAPITesterBase.GetURLRedirectNotification. (Requested by
        dave_levin on #webkit).

        * public/WebURLLoader.h:
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        (WebKit::AssociatedURLLoader::prepareRequest):
        (WebKit::AssociatedURLLoader::willSendRequest):
        (WebKit::AssociatedURLLoader::didSendData):
        (WebKit::AssociatedURLLoader::didReceiveResponse):
        (WebKit::AssociatedURLLoader::didDownloadData):
        (WebKit::AssociatedURLLoader::didReceiveData):
        (WebKit::AssociatedURLLoader::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::didFinishLoading):
        (WebKit::AssociatedURLLoader::didFail):
        * src/AssociatedURLLoader.h:

2011-03-15  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        pngcrush images used by inspector
        https://bugs.webkit.org/show_bug.cgi?id=56426

        This saves 120k in WebCore and 8k in WebKit/chromium.  I ran
        pngcrush -brute, so none of the meta data (ancillary chunks)
        are modified.

        * src/js/Images/segmentChromium.png:
        * src/js/Images/segmentHoverChromium.png:
        * src/js/Images/segmentHoverEndChromium.png:
        * src/js/Images/segmentSelectedChromium.png:
        * src/js/Images/segmentSelectedEndChromium.png:
        * src/js/Images/statusbarBackgroundChromium.png:
        * src/js/Images/statusbarBottomBackgroundChromium.png:
        * src/js/Images/statusbarMenuButtonChromium.png:
        * src/js/Images/statusbarMenuButtonSelectedChromium.png:

2011-03-15  Michael Nordman  <michaeln@google.com>

        Reviewed by Alexey Proskuryakov.

        When initiating a main resource load, let the application cache
        know which frame the load is being conducted for. This patch doesn't
        resolve the following bug, but the additional WebFrame parameter
        should provide the chromium port with enough info to pick the
        "most appropiate" cached resource.
        https://bugs.webkit.org/show_bug.cgi?id=55505

        Also fixup a stale comment in stopLoadingInFrame.

        * public/WebApplicationCacheHost.h:
        (WebKit::WebApplicationCacheHost::willStartMainResourceRequest):
        * src/ApplicationCacheHost.cpp:
        (WebCore::ApplicationCacheHost::maybeLoadMainResource):
        (WebCore::ApplicationCacheHost::stopLoadingInFrame):

2011-03-15  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        [chromium] add a build target to create a grd file with devtool resources
        https://bugs.webkit.org/show_bug.cgi?id=56335

        Reland with a fix to avoid really long command lines on Windows.

        * WebKit.gyp:
        * scripts/generate_devtools_grd.py: Added.

2011-03-15  Alok priyadarshi  <alokp@chromium.org>

        Reviewed by James Robinson.

        Valgrind error due to uninitialized PluginLayerChromium::m_textureId
        https://bugs.webkit.org/show_bug.cgi?id=56390

        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::setBackingTextureId):
        (WebKit::WebPluginContainerImpl::platformLayer):

2011-03-15  Brett Wilson  <brettw@chromium.org>

        Reviewed by Adam Barth.

        Make WebConsoleMessage properly respect the log level.
        https://bugs.webkit.org/show_bug.cgi?id=56386

        * public/WebConsoleMessage.h:
        (WebKit::WebConsoleMessage::WebConsoleMessage):

2011-03-15  Tony Chang  <tony@chromium.org>

        Revert r81147 and r81149, broke the chromium win build.

        * WebKit.gyp:
        * scripts/generate_devtools_grd.py: Removed.

2011-03-15  Tony Chang  <tony@chromium.org>

        Fix chromium build using python 2.5 (with statement).

        * scripts/generate_devtools_grd.py:

2011-03-15  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        [chromium] add a build target to create a grd file with devtool resources
        https://bugs.webkit.org/show_bug.cgi?id=56335

        This is the webkit side of the fix for
        http://code.google.com/p/chromium/issues/detail?id=35793

        * WebKit.gyp:
        * scripts/generate_devtools_grd.py: Added.

2011-03-15  Bill Budge  <bbudge@chromium.org>

        Reviewed by David Levin.

        AssociatedURLLoader does not support Cross Origin Requests
        https://bugs.webkit.org/show_bug.cgi?id=53925

        No new tests. No new functionality exposed.

        * public/WebURLLoader.h:
        (WebKit::WebURLLoaderOptions::WebURLLoaderOptions):
        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::clearClient):
        (WebKit::AssociatedURLLoader::ClientAdapter::create):
        (WebKit::AssociatedURLLoader::ClientAdapter::ClientAdapter):
        (WebKit::AssociatedURLLoader::ClientAdapter::willSendRequest):
        (WebKit::AssociatedURLLoader::ClientAdapter::didSendData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveResponse):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFinishLoading):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFail):
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        * src/AssociatedURLLoader.h:

2011-03-15  Alok priyadarshi  <alokp@chromium.org>

        Reviewed by James Robinson.

        Remove unnecessary function WebPlugin::getBackingTextureId
        https://bugs.webkit.org/show_bug.cgi?id=56122

        It will be tested by Pepper2D and Pepper3D layout/smoke tests
        on the Chromium side.

        * public/WebPlugin.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::platformLayer):

2011-03-15  Mikhail Naganov  <mnaganov@chromium.org>

        Unreviewed. Update chromium deps to pick up the latest V8.

        * DEPS:

2011-03-14  Alexey Marinichev  <amarinichev@chromium.org>

        Reviewed by Kenneth Russell.

        Graphics Context is not properly recovered if the GPU process dies.
        https://bugs.webkit.org/show_bug.cgi?id=56148

        Split context recreation into two steps.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::composite):
        (WebKit::WebViewImpl::doComposite):
        (WebKit::WebViewImpl::reallocateRenderer):
        * src/WebViewImpl.h:

2011-03-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81094.
        http://trac.webkit.org/changeset/81094
        https://bugs.webkit.org/show_bug.cgi?id=56355

        Broke the chromium DRT related build. (Requested by dave_levin
        on #webkit).

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::renderTreeAsText):
        (WebKit::WebFrameImpl::layerTreeAsText):
        * src/WebFrameImpl.h:

2011-03-14  Daniel Sievers  <sievers@google.com>

        Reviewed by Simon Fraser.

        [Chromium] Make RenderAsTextBehavior and LayerTreeAsTextBehavior tweakable from the DumpRenderTree commandline
        https://bugs.webkit.org/show_bug.cgi?id=56139

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::renderTreeAsText):
        (WebKit::WebFrameImpl::layerTreeAsText):
        * src/WebFrameImpl.h:

2011-03-14  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Steve Block.

        Detach Geolocation from Frame when Page destroyed.
        https://bugs.webkit.org/show_bug.cgi?id=52877

        Add accessors to the WebGeolocationClientMock to allow the number of
        pending geolocation permission requests to be queried.

        * public/WebGeolocationClientMock.h:
        * src/WebGeolocationClientMock.cpp:
        (WebKit::WebGeolocationClientMock::numberOfPendingPermissionRequests):

2011-03-11  David Levin  <levin@chromium.org>

        Rollout the chromium deps roll as it adds a dependency on a header
        that the bots building for WebKit don't seem to have.

        Specifically gfx\gl\gl_context_egl.cc depends on d3dcompiler.h

        * DEPS:

2011-03-11  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        [chromium] Correct return type of WebClipboard::readImage.
        https://bugs.webkit.org/show_bug.cgi?id=56234

        Update the return type to reflect that we are returning a blob of PNG
        data, not a bitmap.

        * public/WebClipboard.h:
        (WebKit::WebClipboard::readImage):

2011-03-11  David Levin  <levin@chromium.org>

        Update chromium deps to pick up the skia roll.

        * DEPS:

2011-03-11  Adrienne Walker  <enne@google.com>

        Reviewed by Kenneth Russell.

        Add missing unit tests to TilingData.
        https://bugs.webkit.org/show_bug.cgi?id=54143

        * tests/TilingDataTest.cpp:
        (WebCore::TEST):

2011-03-11  Anton D'Auria  <adauria@apple.com>

        Reviewed and landed by Brady Eidson.

        Add WebKit1 API to view and delete local storage
        https://bugs.webkit.org/show_bug.cgi?id=51878

        * src/StorageNamespaceProxy.cpp:
        (WebCore::StorageNamespaceProxy::clearOriginForDeletion):
        (WebCore::StorageNamespaceProxy::clearAllOriginsForDeletion):
        (WebCore::StorageNamespaceProxy::sync):
        * src/StorageNamespaceProxy.h:

2011-03-11  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Dimitri Glazkov.

        Add an accessibilityIsIgnored method to WebAccessibilityObject.
        https://bugs.webkit.org/show_bug.cgi?id=50969

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::accessibilityIsIgnored):

2011-03-11  Avi Drissman  <avi@google.com>

        Reviewed by Tony Chang.

        Fix missing initialization of new member variables.
        https://bugs.webkit.org/show_bug.cgi?id=50969

        * public/WebMenuItemInfo.h:
        (WebKit::WebMenuItemInfo::WebMenuItemInfo):

2011-03-11  Roland Steiner  <rolandsteiner@chromium.org>

        Reviewed by Ryosuke Niwa.

        Bug 55570 - Remove dependency of dom/InputElement.cpp on html/ and wml/
        https://bugs.webkit.org/show_bug.cgi?id=55570

        Add a virtual function toInputElement() to Node that has a default
        implementation of returning 0.
        For HTMLInputElement and WMLInputElement (which derive from InputElement)
        override this to return the object.
        Change all calling sites of the old toInputElement to use the new member
        function. This also allows us to save some casts.

        No new tests (refactoring).

        * src/WebInputElement.cpp:
        (WebKit::toWebInputElement):

2011-03-10  Takayoshi Kochi  <kochi@chromium.org>

        Reviewed by Tony Chang.

        Remove default parameter declaration for familiForChars(), which is no longer necessary.

        * public/gtk/WebFontInfo.h:

2011-03-10  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] Make updateAndDrawLayers argumentless.
        https://bugs.webkit.org/show_bug.cgi?id=55985

        Made the TilePainters and viewport parameters for
        LayerRendererChromium member variables instead of arguments on
        updateAndDrawLayers. In a future change, this will allows us to
        draw the layer tree without the WebView's assistance.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::resize):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::scrollRootLayerRect):
        (WebKit::WebViewImpl::invalidateRootLayerRect):
        (WebKit::WebViewImplContentPainter::create):
        (WebKit::WebViewImplContentPainter::paint):
        (WebKit::WebViewImplContentPainter::WebViewImplContentPainter):
        (WebKit::WebViewImplScrollbarPainter::create):
        (WebKit::WebViewImplScrollbarPainter::paint):
        (WebKit::WebViewImplScrollbarPainter::WebViewImplScrollbarPainter):
        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
        (WebKit::WebViewImpl::doComposite):
        (WebKit::WebViewImpl::reallocateRenderer):
        (WebKit::WebViewImpl::updateLayerRendererViewport):
        * src/WebViewImpl.h:

2011-03-10  Tony Chang  <tony@chromium.org>

        Unreviewed, roll chromium version to r77259 to pick up
        webfontinfo api change.

        * DEPS:

2011-03-10  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r80701.
        http://trac.webkit.org/changeset/80701
        https://bugs.webkit.org/show_bug.cgi?id=56126

        fast/dom/Geolocation/window-close-crash.html fails on Snow
        Leopard release builds (Requested by mihaip on #webkit).

        * public/WebGeolocationClientMock.h:
        * src/WebGeolocationClientMock.cpp:

2011-03-10  Andrey Kosyakov  <caseq@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: better names for HAR export commands
        https://bugs.webkit.org/show_bug.cgi?id=56097

        Rename Export to HAR to Copy entry/network log as HAR
        Expose Copy as HAR unconditionally, remove related settings entry.

        * src/js/DevTools.js: removed override for resourceExportEnabled

2011-01-26  John Knottenbelt  <jknotten@chromium.org>

        Reviewed by Dmitry Titov.

        Detach Geolocation from Frame when Page destroyed.
        https://bugs.webkit.org/show_bug.cgi?id=52877

        Add accessors to the WebGeolocationClientMock to allow the number of
        pending geolocation permission requests to be queried.

        * public/WebGeolocationClientMock.h:
        * src/WebGeolocationClientMock.cpp:
        (WebKit::WebGeolocationClientMock::numberOfPendingPermissionRequests):

2011-03-08  Hans Wennborg  <hans@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: Add BackingStoreType parameter to IDBFactoryBackendInterface::open
        https://bugs.webkit.org/show_bug.cgi?id=55948

        Add a parameter that allows for selection of alternative backing store
        implementations.

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * src/AssertMatchingEnums.cpp:
        * src/IDBFactoryBackendProxy.cpp:
        (WebCore::IDBFactoryBackendProxy::open):
        * src/IDBFactoryBackendProxy.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBFactoryImpl.h:

2011-03-08  Kinuko Yasuda  <kinuko@chromium.org>

        Reviewed by David Levin.

        Destroying WorkerFileSystemCallbacksBridge on main thread results in ASSERT in WorkerContext::Observer::~Observer
        https://bugs.webkit.org/show_bug.cgi?id=55895

        * src/WorkerFileSystemCallbacksBridge.cpp:
        (WebKit::WorkerFileSystemCallbacksBridge::runTaskOnWorkerThread):
        Added stopObserving() so that releasing the bridge on the main thread
        (this could happen before or after the runTaskOnWorkerThread) does
        not cause the assertion error.

2011-03-08  Alok priyadarshi  <alokp@chromium.org>

        Reviewed by Dimitri Glazkov.

        Plugins needs a way to trigger style recalc
        https://bugs.webkit.org/show_bug.cgi?id=55242

        It will be tested by Pepper2D and Pepper3D layout/smoke tests
        on the Chromium side.
        
        * public/WebPluginContainer.h:
        * src/WebPluginContainerImpl.cpp:
        (WebKit::WebPluginContainerImpl::setBackingTextureId):
        * src/WebPluginContainerImpl.h:

2011-03-08  Andrei Popescu  <andreip@google.com>

        Reviewed by Steve Block.

        IDBCallbacks::onsuccess(IDBIndex*) is unused and should be removed.
        https://bugs.webkit.org/show_bug.cgi?id=55938

        * public/WebIDBCallbacks.h:
        * src/IDBCallbacksProxy.cpp:
        * src/IDBCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        * src/WebIDBCallbacksImpl.h:
        * src/WebIDBObjectStoreImpl.cpp:

2011-03-07  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by David Levin.

        Add support for DataTransferItems
        https://bugs.webkit.org/show_bug.cgi?id=55115

        Add new runtime enabled flag for data transfer items feature.

        * public/WebRuntimeFeatures.h:
        * src/WebRuntimeFeatures.cpp:
        (WebKit::WebRuntimeFeatures::enableDataTransferItems):
        (WebKit::WebRuntimeFeatures::isDataTransferItemsEnabled):

2011-03-07  Ryosuke Niwa  <rniwa@webkit.org>

        Chromium build fix.

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2011-03-07  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Darin Adler.

        selectionHasStyle and selectionStartHasStyle should use EditingStyle
        https://bugs.webkit.org/show_bug.cgi?id=55902

        selectionHasStyle now takes a property id and a value instead of a CSSMutableStyleDeclaration.

        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems): Calls selectionHasStyle.

2011-03-07  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Tony Chang.

        Add plumbing for paste support to ChromiumDataObject::types()
        https://bugs.webkit.org/show_bug.cgi?id=55792

        This requires a DEPS roll for a Chromium-side change to support DRT testing of
        event.dataTransfer.types.

        * DEPS:

2011-03-07  Takayoshi Kochi  <kochi@chromium.org>

        Reviewed by Tony Chang.

        Use preferred locale information when choosing fallback font using
        fontconfig on Linux platform.
        https://bugs.webkit.org/show_bug.cgi?id=55453

        Tests will be covered by Chromium side.

        * public/gtk/WebFontInfo.h:
        (WebKit::WebFontInfo::familyForChars): added 3rd parameter |preferredLocale|
        * public/linux/WebSandboxSupport.h:
        (WebKit::WebSandboxSupport::getFontFamilyForCharacters): added 3rd parameter |preferredLocale|
        * src/PlatformBridge.cpp:
        * src/gtk/WebFontInfo.cpp:

2011-03-07  James Robinson  <jamesr@chromium.org>

        Reviewed by Kenneth Russell.

        [chromium] Separate the &quot;update&quot; and &quot;draw&quot; portions of LayerRendererChromium&apos;s drawLayers function
        https://bugs.webkit.org/show_bug.cgi?id=54047

        Call updated LayerRendererChromium APIs.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas):
        (WebKit::WebViewImpl::paint):
        (WebKit::WebViewImpl::doComposite):

2011-03-07  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Replace WebKit2's decidePolicyForMIMEType with decidePolicyForResponse
        https://bugs.webkit.org/show_bug.cgi?id=55827

        Renamed FrameLoaderClient::dispatchDecidePolicyForMIMEType to dispatchDecidePolicyForResponse
        and pass the entire response, instead of just the MIMEType.

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::dispatchDecidePolicyForResponse):
        * src/FrameLoaderClientImpl.h:

2011-03-07  Marcus Bulach  <bulach@chromium.org>

        Reviewed by Dan Bernstein.

        WebViewImpl::focusedWebCoreFrame() should be const.
        https://bugs.webkit.org/show_bug.cgi?id=55870

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::focusedWebCoreFrame):
        * src/WebViewImpl.h:

2011-03-07  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Darin Adler.

        Add API to enumerate/delete files downloaded for <audio> and <video>
        https://bugs.webkit.org/show_bug.cgi?id=55267

        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::registerSelf): Update for MediaEngineRegistrar change.

2011-03-07  Andrei Popescu  <andreip@google.com>

        Reviewed by Steve Block.

        IDBRequest::onSuccess(IDBObjectStore*) should be removed as it is unused.
        https://bugs.webkit.org/show_bug.cgi?id=55777

        * src/IDBCallbacksProxy.cpp:
        * src/IDBCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        * src/WebIDBCallbacksImpl.h:

2011-03-07  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r80458.
        http://trac.webkit.org/changeset/80458
        https://bugs.webkit.org/show_bug.cgi?id=55863

        caused tests to crash on several chromium bots (Requested by
        ukai on #webkit).

        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        (WebKit::AssociatedURLLoader::prepareRequest):
        (WebKit::AssociatedURLLoader::willSendRequest):
        (WebKit::AssociatedURLLoader::didSendData):
        (WebKit::AssociatedURLLoader::didReceiveResponse):
        (WebKit::AssociatedURLLoader::didDownloadData):
        (WebKit::AssociatedURLLoader::didReceiveData):
        (WebKit::AssociatedURLLoader::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::didFinishLoading):
        (WebKit::AssociatedURLLoader::didFail):
        * src/AssociatedURLLoader.h:

2011-03-07  Bill Budge  <bbudge@chromium.org>

        Reviewed by David Levin.

        AssociatedURLLoader does not support Cross Origin Requests
        https://bugs.webkit.org/show_bug.cgi?id=53925

        No tests needed. Exposes no new functionality.

        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::create):
        (WebKit::AssociatedURLLoader::ClientAdapter::ClientAdapter):
        (WebKit::AssociatedURLLoader::ClientAdapter::willSendRequest):
        (WebKit::AssociatedURLLoader::ClientAdapter::didSendData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveResponse):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFinishLoading):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFail):
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        * src/AssociatedURLLoader.h:
        (WebKit::AssociatedURLLoaderOptions::AssociatedURLLoaderOptions):

2011-03-06  Sreeram Ramachandran  <sreeram@google.com>

        Reviewed by Dimitri Glazkov.

        Expose page dismissal event status through the WebKit API for chromium.
        https://bugs.webkit.org/show_bug.cgi?id=55844

        Chromium will find it useful to know the page dismissal status (i.e.,
        whether a frame is in the midst of executing a beforeunload or unload
        handler), so expose that information through the chromium port in the
        WebKit API.
     
        This is my second attempt at this patch. The previous one broke
        downstream Chromium builds of some unit tests which had classes derived
        from WebFrame (and thus became uninstantiable because of this new pure
        virtual method). Those have now been fixed (http://crrev.com/77101).

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::pageDismissalEventBeingDispatched):
        * src/WebFrameImpl.h:

2011-03-06  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r80436.
        http://trac.webkit.org/changeset/80436
        https://bugs.webkit.org/show_bug.cgi?id=55849

        Broke Chromium compile across the board (Requested by dglazkov
        on #webkit).

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        * src/WebFrameImpl.h:

2011-03-06  Sreeram Ramachandran  <sreeram@google.com>

        Reviewed by Dimitri Glazkov.

        Expose page dismissal event status through the WebKit API for chromium
        https://bugs.webkit.org/show_bug.cgi?id=55844

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::pageDismissalEventBeingDispatched):
        * src/WebFrameImpl.h:

2011-03-05  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by Dmitry Titov.

        [chromium] Add method to WebClipboard to read images from the clipboard.
        https://bugs.webkit.org/show_bug.cgi?id=55814

        * public/WebClipboard.h:
        (WebKit::WebClipboard::readImage):

2011-03-04  Adam Barth  <abarth@webkit.org>

        Reviewed by Dimitri Glazkov.

        Remove unneeded round-trips through ../Source in the Chromium GYP build
        https://bugs.webkit.org/show_bug.cgi?id=55795

        * WebKit.gyp:

2011-03-03  John Abd-El-Malek  <jam@chromium.org>

        Reviewed by Dimitri Glazkov.

        [chromium] Get rid of IsContentFiltered flags since they&apos;re not used anymore
        https://bugs.webkit.org/show_bug.cgi?id=55748

        * DEPS:
        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:

2011-03-04  James Su <suzhe@chromium.org>

        Reviewed by Dimitri Glazkov.

        [Chromium] keycode is always 0 when using non-Latin keyboard layout.
        https://bugs.webkit.org/show_bug.cgi?id=54939

        No intended functionality change.

        * src/mac/WebInputEventFactory.mm:
        (WebKit::windowsKeyCodeForKeyEvent): Use the same implementation
        provided in WebCore/platform/mac/KeyEventMac.mm.

2011-03-04  Zelidrag Hornung  <zelidrag@chromium.org>

        Reviewed by David Levin

        Expose ability to create instance of DOMFileSystem from Chromium side.
        https://bugs.webkit.org/show_bug.cgi?id=55618

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::createFileSystem):
        * src/WebFrameImpl.h:

2011-03-03  Nat Duca  <nduca@chromium.org>

        Reviewed by James Robinson.

        [chromium] Create a LayerChromium layerTreeAsText. Add HUD to
        LayerRendererChromium that draws compositor FPS and, optionally,
        the layer tree.
        https://bugs.webkit.org/show_bug.cgi?id=54710

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::WebSettingsImpl):
        (WebKit::WebSettingsImpl::setShowFPSCounter):
        (WebKit::WebSettingsImpl::setShowPlatformLayerTree):
        * src/WebSettingsImpl.h:
        (WebKit::WebSettingsImpl::showFPSCounter):
        (WebKit::WebSettingsImpl::showPlatformLayerTree):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doComposite):

2011-03-03  Alexey Proskuryakov  <ap@apple.com>

        Removing an include of WebCoreKeyboardUIMode.h that Ive just added. It's already included
        via ChromeClient.h

        * src/ChromeClientImpl.h:

2011-03-02  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Darin Adler.

        REGRESSION (WebKit2): Tab keys no longer observe Full Keyboard Access
        https://bugs.webkit.org/show_bug.cgi?id=55633
        <rdar://problem/8963023>

        * src/ChromeClientImpl.cpp: (WebKit::ChromeClientImpl::keyboardUIMode):
        * src/ChromeClientImpl.h:
        Implement keyboardUIMode() instead of tabsToLinks(). No change in functionality, since
        this platform doesn't observe or have full keyboard access state.

2011-03-03  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r80219.
        http://trac.webkit.org/changeset/80219
        https://bugs.webkit.org/show_bug.cgi?id=55680

        "Causes several media test crashes" (Requested by tonyg-cr on
        #webkit).

        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        (WebKit::AssociatedURLLoader::prepareRequest):
        (WebKit::AssociatedURLLoader::willSendRequest):
        (WebKit::AssociatedURLLoader::didSendData):
        (WebKit::AssociatedURLLoader::didReceiveResponse):
        (WebKit::AssociatedURLLoader::didDownloadData):
        (WebKit::AssociatedURLLoader::didReceiveData):
        (WebKit::AssociatedURLLoader::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::didFinishLoading):
        (WebKit::AssociatedURLLoader::didFail):
        * src/AssociatedURLLoader.h:

2011-03-03  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Dimitri Glazkov.

        Add an equals() method to WebAccessibilityObject.
        https://bugs.webkit.org/show_bug.cgi?id=55631

        * public/WebAccessibilityObject.h:
        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::equals):

2011-03-03  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Yury Semikhatsky.

        Web Inspector: make selected call frame debugger presentation model property.
        https://bugs.webkit.org/show_bug.cgi?id=55582

        * src/js/Tests.js:

2011-03-03  Bill Budge  <bbudge@chromium.org>

        Reviewed by David Levin.

        AssociatedURLLoader does not support Cross Origin Requests
        https://bugs.webkit.org/show_bug.cgi?id=53925

        No tests needed. Exposes no new functionality.

        * src/AssociatedURLLoader.cpp:
        (WebKit::AssociatedURLLoader::ClientAdapter::create):
        (WebKit::AssociatedURLLoader::ClientAdapter::ClientAdapter):
        (WebKit::AssociatedURLLoader::ClientAdapter::willSendRequest):
        (WebKit::AssociatedURLLoader::ClientAdapter::didSendData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveResponse):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveData):
        (WebKit::AssociatedURLLoader::ClientAdapter::didReceiveCachedMetadata):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFinishLoading):
        (WebKit::AssociatedURLLoader::ClientAdapter::didFail):
        (WebKit::AssociatedURLLoader::AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::~AssociatedURLLoader):
        (WebKit::AssociatedURLLoader::loadSynchronously):
        (WebKit::AssociatedURLLoader::loadAsynchronously):
        (WebKit::AssociatedURLLoader::cancel):
        (WebKit::AssociatedURLLoader::setDefersLoading):
        * src/AssociatedURLLoader.h:
        (WebKit::AssociatedURLLoaderOptions::AssociatedURLLoaderOptions):

2011-03-03  Steve Lacey  <sjl@chromium.org>

        Reviewed by Darin Fisher.

        Wire up webkit metrics changes to chromium changes.
        https://bugs.webkit.org/show_bug.cgi?id=54580

        * features.gypi:
        * public/WebMediaPlayer.h:
        * src/WebMediaPlayerClientImpl.cpp:
        (WebKit::WebMediaPlayerClientImpl::decodedFrameCount):
        (WebKit::WebMediaPlayerClientImpl::droppedFrameCount):
        (WebKit::WebMediaPlayerClientImpl::audioDecodedByteCount):
        (WebKit::WebMediaPlayerClientImpl::videoDecodedByteCount):
        * src/WebMediaPlayerClientImpl.h:

2011-03-02  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by David Levin.

        Manually revert ChromiumDataObject changes.
        https://bugs.webkit.org/show_bug.cgi?id=55627

        * public/WebView.h:
        * src/WebDragData.cpp:
        (WebKit::WebDragData::initialize):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dragTargetDragEnter):
        * src/WebViewImpl.h:

2011-03-02  David Grogan  <dgrogan@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: fire versionchange events when calling setVersion
        https://bugs.webkit.org/show_bug.cgi?id=55095

        * WebKit.gyp:
        * src/IDBDatabaseCallbacksProxy.cpp: Copied from Source/WebCore/storage/IDBVersionChangeEvent.h.
        (WebCore::IDBDatabaseCallbacksProxy::create):
        (WebCore::IDBDatabaseCallbacksProxy::IDBDatabaseCallbacksProxy):
        (WebCore::IDBDatabaseCallbacksProxy::~IDBDatabaseCallbacksProxy):
        (WebCore::IDBDatabaseCallbacksProxy::onVersionChange):
        * src/IDBDatabaseCallbacksProxy.h: Copied from Source/WebCore/storage/IDBVersionChangeEvent.h.
        * src/IDBDatabaseProxy.cpp:
        (WebCore::IDBDatabaseProxy::setVersion):
        (WebCore::IDBDatabaseProxy::close):
        (WebCore::IDBDatabaseProxy::open):
        * src/IDBDatabaseProxy.h:
        * src/WebIDBDatabaseCallbacksImpl.cpp: Copied from Source/WebCore/storage/IDBVersionChangeEvent.cpp.
        (WebCore::WebIDBDatabaseCallbacksImpl::WebIDBDatabaseCallbacksImpl):
        (WebCore::WebIDBDatabaseCallbacksImpl::~WebIDBDatabaseCallbacksImpl):
        (WebCore::WebIDBDatabaseCallbacksImpl::onVersionChange):
        * src/WebIDBDatabaseCallbacksImpl.h: Copied from Source/WebCore/storage/IDBVersionChangeEvent.h.
        * src/WebIDBDatabaseImpl.cpp:
        (WebKit::WebIDBDatabaseImpl::setVersion):
        (WebKit::WebIDBDatabaseImpl::close):
        (WebKit::WebIDBDatabaseImpl::open):
        * src/WebIDBDatabaseImpl.h:

2011-03-02  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r80139.
        http://trac.webkit.org/changeset/80139
        https://bugs.webkit.org/show_bug.cgi?id=55620

        failing and crashing tests on Snow Leopard bot (Requested by
        mihaip1 on #webkit).

        * public/WebGeolocationClientMock.h:
        * src/WebGeolocationClientMock.cpp:

2011-03-02  Daniel Cheng  <dcheng@chromium.org>

        Revert frame-specific WebClipboard changes
        https://bugs.webkit.org/show_bug.cgi?id=55617

        This code is no longer needed since we've decided to use the original
        approach to copy/paste drag/drop handling in ClipboardChromium.

        * public/WebFrameClient.h:
        * src/PlatformBridge.cpp:
        (WebCore::PlatformBridge::clipboardReadAvailableTypes):
        (WebCore::PlatformBridge::clipboardReadData):
        (WebCore::PlatformBridge::clipboardReadFilenames):
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::fromFrame):
        * src/WebFrameImpl.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::dragTargetDragEnterNew):

2011-03-02  Tony Chang  <tony@chromium.org>

        Unreviewed, rolling chromium DEPS to r76362.

        https://bugs.webkit.org/show_bug.cgi?id=55564

        * DEPS:

2011-02-28  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by James Robinson.

        Split IDBCursor.value into IDBCursor.primaryKey and IDBCursor.value
        https://bugs.webkit.org/show_bug.cgi?id=55443

        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::primaryKey):
        (WebKit::WebIDBCursor::value):
        * src/IDBCursorBackendProxy.cpp:
        (WebCore::IDBCursorBackendProxy::primaryKey):
        (WebCore::IDBCursorBackendProxy::value):
        * src/IDBCursorBackendProxy.h:
        * src/WebIDBCursorImpl.cpp:
        (WebKit::WebIDBCursorImpl::key):
        (WebKit::WebIDBCursorImpl::primaryKey):
        (WebKit::WebIDBCursorImpl::value):
        * src/WebIDBCursorImpl.h:

2011-03-02  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by David Levin.

        Add feature define for data transfer items
        https://bugs.webkit.org/show_bug.cgi?id=55510

        * features.gypi:

2011-01-26  John Knottenbelt  <jknotten@chromium.org>

        Detach Geolocation from Frame when Page destroyed.
        https://bugs.webkit.org/show_bug.cgi?id=52877

        Add accessors to the WebGeolocationClientMock to allow the number of
        pending geolocation permission requests to be queried.

        * public/WebGeolocationClientMock.h:
        * src/WebGeolocationClientMock.cpp:
        (WebKit::WebGeolocationClientMock::numberOfPendingPermissionRequests):

2011-03-01  David Grogan  <dgrogan@chromium.org>

        Reviewed by Jeremy Orlow.

        IndexedDB: public webkit interfaces for firing versionchange events to IDBDatabase objects
        https://bugs.webkit.org/show_bug.cgi?id=55548

        * WebKit.gyp:
        * public/WebIDBDatabase.h:
        (WebKit::WebIDBDatabase::createObjectStore):
        (WebKit::WebIDBDatabase::open):
        * public/WebIDBDatabaseCallbacks.h: Added.
        (WebKit::WebIDBDatabaseCallbacks::~WebIDBDatabaseCallbacks):
        (WebKit::WebIDBDatabaseCallbacks::onVersionChange):

2011-03-01  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r80079.
        http://trac.webkit.org/changeset/80079
        https://bugs.webkit.org/show_bug.cgi?id=55547

        "Broke the Win debug build?" (Requested by dcheng on #webkit).

        * features.gypi:

2011-03-01  Daniel Cheng  <dcheng@chromium.org>

        Reviewed by David Levin.

        Add feature define for data transfer items
        https://bugs.webkit.org/show_bug.cgi?id=55510

        * features.gypi:

2011-03-01  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by James Robinson.

        Add a primaryKey method to IDBCursor
        https://bugs.webkit.org/show_bug.cgi?id=55518

        In prep for https://bugs.webkit.org/show_bug.cgi?id=55443

        * public/WebIDBCursor.h:
        (WebKit::WebIDBCursor::primaryKey):

2011-02-28  Chang Shu  <cshu@webkit.org>

        Reviewed by Ryosuke Niwa.

        Remove the support of Frame::isContentEditable and its dependencies.
        https://bugs.webkit.org/show_bug.cgi?id=54292

        Remove the WebKit side implementation.

        * src/EditorClientImpl.cpp:
        * src/EditorClientImpl.h:

2011-02-28  Avi Drissman  <avi@google.com>

        Reviewed by James Robinson.

        WebCursorInfo needs to match enums in platform/Cursor.h
        https://bugs.webkit.org/show_bug.cgi?id=55094

        * public/WebCursorInfo.h:
        * src/AssertMatchingEnums.cpp:

2011-02-28  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r78789.
        http://trac.webkit.org/changeset/78789
        https://bugs.webkit.org/show_bug.cgi?id=55409

        Incorrect canvas fallback implementation (Requested by
        inferno-sec on #webkit).

        * public/WebAccessibilityRole.h:
        * src/AssertMatchingEnums.cpp:

2011-02-28  Adam Klein  <adamk@chromium.org>

        Reviewed by Adam Barth.

        [fileapi] Implement LocalFileSystem.resolveLocalFileSystemURI
        https://bugs.webkit.org/show_bug.cgi?id=54774

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::readFileSystem):
        Removed size argument to readFileSystem()

2011-02-27  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Darin Fisher.

        Pass frame history state in the context menu parameters.
        https://bugs.webkit.org/show_bug.cgi?id=55232

        * public/WebContextMenuData.h:
        * src/ContextMenuClientImpl.cpp:
        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):

2011-02-26  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        DumpRenderTree should reset frame opener between tests.
        https://bugs.webkit.org/show_bug.cgi?id=54874

        Added clearOpener method to WebFrame.

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::clearOpener):
        * src/WebFrameImpl.h:

2011-02-26  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: rolling chromium DEPS.

        * DEPS:

2011-02-26  Bill Budge  <bbudge@chromium.org>

        Reviewed by David Levin.

        WebURLRequest, WebURLResponse properties should be passed to WebCore Layer
        https://bugs.webkit.org/show_bug.cgi?id=54489

        No tests needed. This is already tested by ui_tests, nacl_ui_tests, and nacl_sandbox_tests

        * src/WebURLRequest.cpp:
        (WebKit::WebURLRequestPrivateImpl::WebURLRequestPrivateImpl):
        (WebKit::WebURLRequest::downloadToFile):
        (WebKit::WebURLRequest::setDownloadToFile):
        * src/WebURLRequestPrivate.h:
        (WebKit::WebURLRequestPrivate::WebURLRequestPrivate):
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponsePrivateImpl::WebURLResponsePrivateImpl):
        (WebKit::WebURLResponse::downloadFilePath):
        (WebKit::WebURLResponse::setDownloadFilePath):
        * src/WebURLResponsePrivate.h:

2011-02-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r79764.
        http://trac.webkit.org/changeset/79764
        https://bugs.webkit.org/show_bug.cgi?id=55295

        "broke Chromium builds" (Requested by rniwa on #webkit).

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        * src/WebFrameImpl.h:

2011-02-26  David Dorwin  <ddorwin@chromium.org>

        Reviewed by Darin Fisher.

        Enable WebKit Full Screen API in Chromium. The element becomes the full size of the window, but the window is not yet full screen. Support is disabled by default.

        fullscreen javascript bindings not implemented for v8
        https://bugs.webkit.org/show_bug.cgi?id=44797

        * features.gypi:
        * public/WebSettings.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::supportsFullScreenForElement):
        (WebKit::ChromeClientImpl::enterFullScreenForElement):
        (WebKit::ChromeClientImpl::exitFullScreenForElement):
        (WebKit::ChromeClientImpl::fullScreenRendererChanged):
        * src/ChromeClientImpl.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setFullScreenEnabled):
        * src/WebSettingsImpl.h:

2011-02-26  John Mellor  <johnme@chromium.org>

        Reviewed by Antonio Gomes.

        [chromium] WebFrameImpl::m_totalMatchCount should be an int
        https://bugs.webkit.org/show_bug.cgi?id=55134

        WebFrameImpl::m_totalMatchCount should be an int instead of a size_t since it can be -1.

        * src/WebFrameImpl.h:

2011-02-26  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Pavel Feldman.

        DumpRenderTree should reset frame opener between tests.
        https://bugs.webkit.org/show_bug.cgi?id=54874

        Added clearOpener method to WebFrame.

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::clearOpener):
        * src/WebFrameImpl.h:

2011-02-25  Tony Chang  <tony@chromium.org>

        Roll chromium deps to include RBGToHSL fix and ICU update.

        * DEPS:

2011-02-15  Brett Wilson  <brettw@chromium.org>

        Reviewed by Darin Fisher.

        Recover the mouse capture state when we recieve a mouse event where there is no longer a button down.
        https://bugs.webkit.org/show_bug.cgi?id=54503

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::handleInputEvent):

2011-02-24  James Robinson  <jamesr@chromium.org>

        Reviewed by Darin Fisher.

        Add a USE() macro to control use of the built-in UTF8 codec
        https://bugs.webkit.org/show_bug.cgi?id=55189

        Defaults USE(BUILTIN_UTF8_CODEC) to true for the Chromium port.

        * features.gypi:

2011-02-24  James Kozianski  <koz@chromium.org>

        Reviewed by Ojan Vafai.

        Add missing plumbing for registerProtocolHandler in ChromeClientImpl.
        https://bugs.webkit.org/show_bug.cgi?id=55112

        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::registerProtocolHandler):

2011-02-24  James Robinson  <jamesr@chromium.org>

        Unreviewed, rolling out r79584.
        http://trac.webkit.org/changeset/79584
        https://bugs.webkit.org/show_bug.cgi?id=44797

        [chromium] Patch does not compile if ENABLE_FULLSCREEN_API is
        not set

        * features.gypi:
        * public/WebSettings.h:
        * src/ChromeClientImpl.cpp:
        * src/ChromeClientImpl.h:
        * src/WebSettingsImpl.cpp:
        * src/WebSettingsImpl.h:

2011-02-24  Andrew Wilson  <atwilson@chromium.org>

        Unreviewed, rolling out r79570.
        http://trac.webkit.org/changeset/79570
        https://bugs.webkit.org/show_bug.cgi?id=54874

        Breaks chromium build because glue/mocks/mock_web_frame.h/cc
        was not updated

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        * src/WebFrameImpl.h:

2011-02-24  David Dorwin  <ddorwin@chromium.org>

        Reviewed by Eric Seidel.

        Enable WebKit Full Screen API in Chromium. The element becomes the full size of the window, but the window is not yet full screen. Support is disabled by default.

        fullscreen javascript bindings not implemented for v8
        https://bugs.webkit.org/show_bug.cgi?id=44797

        * features.gypi:
        * public/WebSettings.h:
        * src/ChromeClientImpl.cpp:
        (WebKit::ChromeClientImpl::supportsFullScreenForElement):
        (WebKit::ChromeClientImpl::enterFullScreenForElement):
        (WebKit::ChromeClientImpl::exitFullScreenForElement):
        (WebKit::ChromeClientImpl::fullScreenRendererChanged):
        * src/ChromeClientImpl.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::setFullScreenEnabled):
        * src/WebSettingsImpl.h:

2011-02-24  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Eric Seidel.

        Rename PLATFORM(SKIA) to USE(SKIA)
        https://bugs.webkit.org/show_bug.cgi?id=55090

        * src/GraphicsContext3DChromium.cpp:
        (WebCore::GraphicsContext3DInternal::GraphicsContext3DInternal):
        (WebCore::GraphicsContext3DInternal::paintRenderingResultsToCanvas):
        * src/GraphicsContext3DInternal.h:
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doPixelReadbackToCanvas):

2011-02-24  Vsevolod Vlasov  <vsevik@chromium.org>

        Reviewed by Alexey Proskuryakov.

        DumpRenderTree should reset frame opener between tests.
        https://bugs.webkit.org/show_bug.cgi?id=54874

        Added clearOpener method to WebFrame.

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::clearOpener):
        * src/WebFrameImpl.h:

2011-02-24  Adam Klein  <adamk@chromium.org>

        Reviewed by Darin Fisher.

        [chromium] Add code to WebKit Chromium to allow access to NetworkStateNotifier
        https://bugs.webkit.org/show_bug.cgi?id=54516

        Add a new WebNetworkStateNotifier class with a single static method,
        setOnLine(), which dispatches to WebCore's singleton NetworkStateNotifier.

        * WebKit.gyp:
        * public/WebNetworkStateNotifier.h: Added.
        * src/WebNetworkStateNotifier.cpp: Added.
        (WebKit::WebNetworkStateNotifier::setOnLine):

2011-02-24  Robert Kroeger <rjkroege@chromium.org>

        Reviewed by Darin Fisher.

        Added timestamps to PlatformTouchEvent etc.

        PlatformTouchEvent doesn't have a timestamp and so
        eventSender.leapForward cannot be used for touchevent based tests.
        This change constructs PlatformTouchEvents with timestamps
        provided from a WebTouchEvent on chromium. It also adds an enum
        to make code referring to specific WebTouchPoints easier to read.

        [chromium] [WebCore] [android] Touch events are missing time stamps
        https://bugs.webkit.org/show_bug.cgi?id=53510

        * public/WebTouchPoint.h:
        (WebKit::WebTouchPoint::WebTouchPoint):
        * src/WebInputEventConversion.cpp:
        (WebKit::PlatformTouchEventBuilder::PlatformTouchEventBuilder):

2011-02-23  Adam Barth  <abarth@webkit.org>

        Reviewed by James Robinson.

        [Chromium] Use WebKitClient for OSRandomSource instead of trying to talk to the file system in the sandbox
        https://bugs.webkit.org/show_bug.cgi?id=55093

        We need to get OS randomness from the WebKit client rather than try to
        get it from /dev/urandom directly because WebKit doesn't have access to
        the file system when running inside the Chromium sandbox.

        * WebKit.gyp:
        * src/ChromiumOSRandomSource.cpp: Added.

2011-02-23  Adam Barth  <abarth@webkit.org>

        Reviewed by James Robinson.

        Roll Chromium DEPS
        https://bugs.webkit.org/show_bug.cgi?id=55096

        Rolling to the future, like a truck.

        * DEPS:

2011-02-23  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Fisher.

        [Chromium] Add WebKitClient::cryptographicallyRandomValues
        https://bugs.webkit.org/show_bug.cgi?id=55073

        This patch adds a WebKit client API to get cryptographic randomness.
        We'll use this API to gather seed randomness while inside the sandbox.

        * public/WebKitClient.h:
        (WebKit::WebKitClient::cryptographicallyRandomValues):

2011-02-23  Kenneth Russell  <kbr@google.com>

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

        Reapply the code changes from r79038 since they weren't the root
        cause of the test timeouts.

        * src/WebKit.cpp:
        (WebKit::initialize):

2011-02-23  Takashi Toyoshima  <toyoshim@chromium.org>

        Reviewed by Shinichiro Hamaji.

        [chromium] Control-Up/Down should be PageUp/Down on Mac.
        https://bugs.webkit.org/show_bug.cgi?id=54606

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::scrollViewWithKeyboard):

2011-02-22  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        Many tests started timing out on the chrome mac canaries around r79035
        https://bugs.webkit.org/show_bug.cgi?id=54885

        Revert the code changes, but not the Chromium DEPS roll, from
        r79038 to see whether this clears up the timing-out tests. Was not
        able to reproduce the timeouts locally with a Release mode build
        of DRT (on Snow Leopard).

        * src/WebKit.cpp:
        (WebKit::initialize):

2011-02-21  Nico Weber  <thakis@chromium.org>

        Reviewed by James Robinson.

        [chromium] WebWorkerBase::openFileSystem confuses clang's -Woverloaded-virtual
        https://bugs.webkit.org/show_bug.cgi?id=54920

        Rename WebWorkerBase::openFileSystem() to openFileSystemForWorker() to
        make it obvious it's not an override of
        WebFrameClient::openFileSystem().

        Remove a failed attempt to override it in WebWorkerClientImpl (the
        override didn't change the behavior).

        No intended functionality change.

        * src/LocalFileSystemChromium.cpp:
        (WebCore::LocalFileSystem::requestFileSystem):
        Call new name.
        * src/WebWorkerBase.cpp:
        (WebKit::WebWorkerBase::openFileSystemForWorker):
        Rename openFileSystem() to openFileSystemForWorker().
        * src/WebWorkerBase.h:
        Rename openFileSystem() to openFileSystemForWorker().
        * src/WebWorkerClientImpl.h:
        (WebKit::WebWorkerClientImpl::allowDatabase):
        Remove unsuccessful (and pointless) override.

2011-02-22  Ilya Tikhonovsky  <loislo@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: flakyness of inspector tests.
        https://bugs.webkit.org/show_bug.cgi?id=54729

        As far as we have the protocol with sequence numbers we can simplify test harness support
        and drop out chomium specific methods.

        * src/js/DevTools.js:

2011-02-21  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: move source mapping from SourceFrame to ScriptsPanel.
        https://bugs.webkit.org/show_bug.cgi?id=54645

        * src/js/Tests.js:
        (.TestSuite.prototype._checkExecutionLine):

2011-02-21  Nico Weber  <thakis@chromium.org>

        Reviewed by James Robinson.

        [chromium] PopupContainer::show() confuses clang's -Woverloaded-virtual
        https://bugs.webkit.org/show_bug.cgi?id=54923

        Rename PopupContainer::show() to showInRect(), to make it obvious it's
        not an override of ScrollView::show().

        No intended functionality change.

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::applyAutoFillSuggestions):

2011-02-21  Nico Weber  <thakis@chromium.org>

        Reviewed by Kent Tamura.

        [chromium] ChromePluginPrintContext::begin() fails to override superclass method
        https://bugs.webkit.org/show_bug.cgi?id=54914

        Update subclass method signature to match superclass again. This
        regressed in http://trac.webkit.org/changeset/71964

        * src/WebFrameImpl.cpp:
        (WebKit::ChromePluginPrintContext::begin):

2011-02-17  Ryosuke Niwa  <rniwa@webkit.org>

        Reviewed by Kent Tamura.

        Rename Position::node() to Position::deprecatedNode()
        https://bugs.webkit.org/show_bug.cgi?id=54622

        Done the rename. All calls to node() are replaced by calls to deprecatedNode().

        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::setComposition): Check the nullity of startContainer() instead of startPosition()->node().
        (WebKit::WebViewImpl::confirmComposition): Ditto.
        (WebKit::WebViewImpl::textInputType):
        (WebKit::WebViewImpl::caretOrSelectionBounds):

2011-02-19  Brian Ryner  <bryner@chromium.org>

        Reviewed by Adam Barth.

        Add missing #includes of DocumentLoader.h, needed since the transitive
        include through Document.h is removed.
        https://bugs.webkit.org/show_bug.cgi?id=50489

        * src/WebPageSerializerImpl.cpp:
        * src/WebSearchableFormData.cpp:

2011-02-19  Charlie Reis  <creis@chromium.org>

        Reviewed by Mihai Parparita.

        Ensure loading has stopped in HistoryController::goToItem
        https://bugs.webkit.org/show_bug.cgi?id=54517

        Call Page::goToItem instead of HistoryController::goToItem, so that
        FrameLoader::stopAllLoaders is called first.  Also adds a callback in
        FrameLoaderClient for checking for pseudo-back-forward URLs.

        Test: http/tests/navigation/forward-to-fragment-fires-onload.html

        * src/FrameLoaderClientImpl.cpp:
        (WebKit::FrameLoaderClientImpl::shouldStopLoadingForHistoryItem): Added.
        * src/FrameLoaderClientImpl.h:
        * src/WebFrameImpl.cpp:

2011-02-18  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Dimitri Glazkov.

        Marks any actions triggered by performDefaultAction as a user
        gesture, so that a user with a screen reader isn't prevented from
        performing operations that must be triggered by a user gesture.
        https://bugs.webkit.org/show_bug.cgi?id=54759

        * src/WebAccessibilityObject.cpp:
        (WebKit::WebAccessibilityObject::performDefaultAction):

2011-02-18  Kenneth Russell  <kbr@google.com>

        Reviewed by James Robinson.

        [chromium] Clean up initialization of minimum timer interval
        https://bugs.webkit.org/show_bug.cgi?id=54772

        Rolled forward Chromium DEPS to pick up new webkit_support entry
        point. Removed setting of default minimum timer interval, as this
        is now done every time WebPreferences are applied.

        Tested with Chromium DRT port built from WebKit workspace; ran
        fast/dom/ layout tests.

        * DEPS:
        * src/WebKit.cpp:
        (WebKit::initialize):

2011-02-18  Ben Vanik  <benvanik@google.com>

        Reviewed by Kenneth Russell.

        Bug 53940: Implement the OES_vertex_array_object WebGL extension
        https://bugs.webkit.org/show_bug.cgi?id=53940

        Stubbed out methods for the new OES_vertex_array_object methods.

        * src/Extensions3DChromium.cpp:
        (WebCore::Extensions3DChromium::createVertexArrayOES):
        (WebCore::Extensions3DChromium::deleteVertexArrayOES):
        (WebCore::Extensions3DChromium::isVertexArrayOES):
        (WebCore::Extensions3DChromium::bindVertexArrayOES):

2011-02-17  Yuzo Fujishima  <yuzo@google.com>

        Reviewed by Shinichiro Hamaji.

        Retry landing after fixing Chromium side.
        Fix for Bug 54632 - [chromium] Printing causes view to scroll
        https://bugs.webkit.org/show_bug.cgi?id=54632

        Expose setScrollOffset such that Chromium can restore the scroll offset
        after printing the document. The bug will be fixed when the counterpart
        patch http://codereview.chromium.org/6539011/ is landed for Chromium.

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setScrollOffset):
        * src/WebFrameImpl.h:

2011-02-17  Andrew Wilson  <atwilson@chromium.org>

        Unreviewed, rolling out r78936.
        http://trac.webkit.org/changeset/78936
        https://bugs.webkit.org/show_bug.cgi?id=54632

        Breaks chromium build

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        * src/WebFrameImpl.h:

2011-02-17  Yuzo Fujishima  <yuzo@google.com>

        Reviewed by Shinichiro Hamaji.

        Fix for Bug 54632 - [chromium] Printing causes view to scroll
        https://bugs.webkit.org/show_bug.cgi?id=54632

        Expose setScrollOffset such that Chromium can restore the scroll offset
        after printing the document. The bug will be fixed when the counterpart
        patch http://codereview.chromium.org/6539011/ is landed for Chromium.

        * public/WebFrame.h:
        * src/WebFrameImpl.cpp:
        (WebKit::WebFrameImpl::setScrollOffset):
        * src/WebFrameImpl.h:

2011-02-17  W. James MacLean  <wjmaclean@chromium.org>

        Reviewed by James Robinson.

        [chromium] Add command-line flag to enable composite to offscreen texture.
        https://bugs.webkit.org/show_bug.cgi?id=52311

        Add plumbing to allow command-line switch to enable offscreen compositing. Function
        LayerRendererChromium::copyOffscreenTextureToDisplay used for now to mimic
        normal renderer operation.

        * public/WebSettings.h:
        * src/WebSettingsImpl.cpp:
        (WebKit::WebSettingsImpl::WebSettingsImpl):
        (WebKit::WebSettingsImpl::setCompositeToTextureEnabled):
        * src/WebSettingsImpl.h:
        (WebKit::WebSettingsImpl::compositeToTextureEnabled):
        * src/WebViewImpl.cpp:
        (WebKit::WebViewImpl::doComposite):

2011-02-10  Luiz Agostini  <luiz.agostini@openbossa.org>

        Reviewed by Adam Roben.

        HTML5 <details> and <summary>: localized text
        https://bugs.webkit.org/show_bug.cgi?id=54260

        The method defaultDetailsSummaryText was added to LocalizedStrings. It is used to provide
        the default label to be used by a <details> tag that has no <summary> child.

        * src/LocalizedStrings.cpp:
        (WebCore::defaultDetailsSummaryText):

2011-02-17  Steve Lacey  <sjl@chromium.org>

        Reviewed by Darin Fisher.

        Roll chromium deps to 75190. Includes new dependency
        on libjingle.

        https://bugs.webkit.org/show_bug.cgi?id=54588

        * DEPS:

2011-02-17  Pavel Podivilov  <podivilov@chromium.org>

        Unreviewed, interactive ui test fix for r78808.

        * src/js/Tests.js:
        (.TestSuite.prototype._waitUntilScriptsAreParsed.waitForAllScripts):
        (.TestSuite.prototype._waitUntilScriptsAreParsed):

2011-02-16  Brian Ryner  <bryner@chromium.org>

        Reviewed by Darin Fisher.

        Split the socket address field into separate IP address and port fields.
        This will make the field less error-prone to parse, for example when
        dealing with IPv6 literals.
        https://bugs.webkit.org/show_bug.cgi?id=54607

        * public/WebURLResponse.h:
        * src/WebURLResponse.cpp:
        (WebKit::WebURLResponse::remoteIPAddress):
        (WebKit::WebURLResponse::setRemoteIPAddress):
        (WebKit::WebURLResponse::remotePort):
        (WebKit::WebURLResponse::setRemotePort):

2011-02-16  Dominic Mazzoni  <dmazzoni@google.com>

        Reviewed by Chris Fleizach.

        Add new role for canvas elements.

        https://bugs.webkit.org/show_bug.cgi?id=50126

        * public/WebAccessibilityRole.h:
        * src/AssertMatchingEnums.cpp:

2011-02-16  Victoria Kirst  <vrk@google.com>

        Reviewed by Kenneth Russell.

        [chromium] Fix green pixels at edge of certain GPU-accelerated videos
        https://bugs.webkit.org/show_bug.cgi?id=54559

        * src/VideoFrameChromiumImpl.cpp:
        (WebKit::VideoFrameChromiumImpl::width):
        (WebKit::VideoFrameChromiumImpl::height):
        (WebKit::VideoFrameChromiumImpl::requiredTextureSize):
        (WebKit::VideoFrameChromiumImpl::hasPaddingBytes):
        * src/VideoFrameChromiumImpl.h:

2011-02-16  Jeremy Orlow  <jorlow@chromium.org>

        Back out IndexedDB change thats no longer necessary
        https://bugs.webkit.org/show_bug.cgi?id=54603

        Backing out 78645 as it turns out that it's not necessary.

        * public/WebIDBFactory.h:
        (WebKit::WebIDBFactory::open):
        * src/AssertMatchingEnums.cpp:
        * src/IDBFactoryBackendProxy.cpp:
        * src/IDBFactoryBackendProxy.h:
        * src/WebIDBFactoryImpl.cpp:
        (WebKit::WebIDBFactoryImpl::open):
        * src/WebIDBFactoryImpl.h:

2011-02-16  David Grogan  <dgrogan@chromium.org>

        Reviewed by Jeremy Orlow.

        indexeddb: make setVersion fire blocked event if other connections are open
        https://bugs.webkit.org/show_bug.cgi?id=53728

        * src/IDBCallbacksProxy.cpp:
        (WebCore::IDBCallbacksProxy::onBlocked):
        * src/IDBCallbacksProxy.h:
        * src/WebIDBCallbacksImpl.cpp:
        (WebCore::WebIDBCallbacksImpl::onBlocked):
        * src/WebIDBCallbacksImpl.h:

== Rolled over to ChangeLog-2011-02-16 ==
